inplace
Параметр:
df.dropna(axis='index', how='all', inplace=True)
в Pandas
и вообще означает:
1. Pandas создает копию исходных данных.
2. ... выполняет на нем некоторые вычисления
3. ... присваивает результаты исходным данным.
4. ... удаляет копию.
Как вы можете прочитать в оставшейся части моего ответа ниже, у нас все еще может быть веская причина использовать этот параметр, то есть inplace operations
, но мы должны избегать его, если можем, поскольку он создает больше проблем, например:
1. Ваш код будет труднее отлаживать (на самом деле SettingwithCopyWarning предупреждает вас об этой возможной проблеме)
2. Конфликт с цепочкой методов
Значит, есть даже случай, когда его еще стоит использовать?
Определенно да. Если мы используем pandas или какой-либо инструмент для обработки огромного набора данных, мы легко можем столкнуться с ситуацией, когда некоторые большие данные могут потреблять всю нашу память. Чтобы избежать этого нежелательного эффекта, мы можем использовать некоторые приемы, такие как объединение методов :
(
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
возвращаетNone
inplace=False
возвращает копию объекта с выполненной операцией. В документации довольно ясно сказано, есть ли что-то, что сбивает с толку с какой-то конкретной частью? СпециальноIf True, do operation inplace and return None.