inplace
параметр:
df.dropna(axis='index', how='all', inplace=True)
в Pandas
і в цілому означає:
1. Pandas створює копію вихідних даних
2. ... робить деякі обчислення на ньому
3. ... присвоює результати вихідним даним.
4. ... видаляє копію.
Як ви можете прочитати в подальшій частині моєї відповіді нижче, ми все ще можемо мати вагомі причини використовувати цей параметр, тобто inplace operations
, але ми повинні уникати його, якщо зможемо, оскільки це породжує більше проблем, як:
1. Ваш код буде важче налагодити (фактично SettingwithCopyWarning означає попередження про цю можливу проблему)
2. Конфлікт із ланцюжком методів
Тож є навіть випадок, коли ми мали б ним уже скористатися?
Безумовно, так. Якщо ми використовуємо панди або будь-який інструмент для обробки величезного набору даних, ми можемо легко зіткнутися з ситуацією, коли деякі великі дані можуть споживати всю нашу пам’ять. Щоб уникнути цього небажаного ефекту, ми можемо скористатися деякими методами, такими як ланцюжок методів :
(
wine.rename(columns={"color_intensity": "ci"})
.assign(color_filter=lambda x: np.where((x.hue > 1) & (x.ci > 7), 1, 0))
.query("alcohol > 14 and color_filter == 1")
.sort_values("alcohol", ascending=False)
.reset_index(drop=True)
.loc[:, ["alcohol", "ci", "hue"]]
)
які роблять наш код більш компактним (хоча його також важче інтерпретувати та налагоджувати) і споживають менше пам'яті, оскільки ланцюгові методи працюють із повернутими значеннями іншого методу, що призводить до отримання лише однієї копії вхідних даних. Ми чітко бачимо, що після цієї операції у нас буде 2 рази споживання оригінальної пам'яті.
Або ми можемо використовувати inplace
параметр (хоча його теж важче інтерпретувати та налагоджувати). Наше споживання пам’яті становитиме 2 х вихідних даних , але споживання пам'яті після цієї операції залишається 1 х вихідних даних , що, якщо хтось, коли б працював з величезними наборами даних, точно знає, це може бути велика вигода.
Остаточний висновок:
Уникайте використання inplace
параметра, якщо ви не працюєте з величезними даними та не знаєте про можливі проблеми у разі його використання.
inplace=True
функція returnNone
inplace=False
повертає копію об’єкта з виконаною операцією. Документи з цим досить чіткі, чи є щось, що плутає з конкретною частиною? ЗокремаIf True, do operation inplace and return None.