Der inplace
Parameter:
df.dropna(axis='index', how='all', inplace=True)
in Pandas
und allgemein bedeutet:
1. Pandas erstellt eine Kopie der Originaldaten
2. ... berechnet es
3. ... ordnet die Ergebnisse den Originaldaten zu.
4. ... löscht die Kopie.
Wie Sie in den Rest meiner Antwort ist weiter unten lesen können, noch wir können guten Grund haben , diesen Parameter , dh die zu verwenden inplace operations
, aber wir sollten es vermeiden , wenn wir können, da es mehr Probleme erzeugen, wie:
1. Ihr Code ist schwerer zu debuggen (Tatsächlich bedeutet SettingwithCopyWarning, Sie vor diesem möglichen Problem zu warnen).
2. Konflikt mit der Methodenverkettung
Es gibt also sogar einen Fall, in dem wir es noch verwenden sollten?
Definitiv Ja. Wenn wir Pandas oder ein anderes Tool zum Behandeln großer Datenmengen verwenden, können wir uns leicht der Situation stellen, in der einige große Datenmengen unseren gesamten Speicher belegen können. Um diesen unerwünschten Effekt zu vermeiden, können wir einige Techniken wie die Verkettung von Methoden verwenden :
(
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"]]
)
Dies macht unseren Code kompakter (obwohl auch schwieriger zu interpretieren und zu debuggen) und verbraucht weniger Speicher, da die verketteten Methoden mit den zurückgegebenen Werten der anderen Methode arbeiten und somit nur eine Kopie der Eingabedaten erhalten. Wir können deutlich sehen, dass wir nach diesen Vorgängen 2 x ursprünglichen Datenspeicherverbrauch haben werden.
Oder wir können inplace
Parameter verwenden (obwohl dies auch schwieriger zu interpretieren und zu debuggen ist). Unser Speicherverbrauch beträgt 2 x Originaldaten , aber unser Speicherverbrauch nach diesem Vorgang bleibt 1 x Originaldaten. Wenn jemand mit riesigen Datenmengen genau arbeitet, kann dies ein sein großer Vorteil.
Schlußfolgerung:
Vermeiden Sie die Verwendung von inplace
Parametern, es sei denn, Sie arbeiten nicht mit großen Datenmengen und sind sich der möglichen Probleme bewusst, falls diese weiterhin verwendet werden.
inplace=True
returnNone
inplace=False
gibt eine Kopie des Objekts mit der ausgeführten Operation zurück. Die Dokumente sind diesbezüglich ziemlich klar. Gibt es etwas, das mit einem bestimmten Teil verwirrt? SpeficallyIf True, do operation inplace and return None.