Was ist die Richtlinie für die Verwendung von inplace
?Richtlinien zur Verwendung von Pandas inplace Schlüsselwort Argument
Zum Beispiel
df = df.reset_index()
oder
df.reset_index(inplace=True)
Same same but different?
Was ist die Richtlinie für die Verwendung von inplace
?Richtlinien zur Verwendung von Pandas inplace Schlüsselwort Argument
Zum Beispiel
df = df.reset_index()
oder
df.reset_index(inplace=True)
Same same but different?
In Bezug auf die resultierende DataFrame df
, die beiden Ansätze sind die gleichen. Der Unterschied liegt in der (maximalen) Speichernutzung, da die In-Place-Version keine Kopie des DataFrame erstellt.
Betrachten Sie diese Einstellung:
import numpy as np
import pandas as pd
def make_data():
return pd.DataFrame(np.random.rand(1000000, 100))
def func_copy():
df = make_data()
df = df.reset_index()
def func_inplace():
df = make_data()
df.reset_index(inplace=True)
Wir haben die memory_profile
Bibliothek verwenden können einige Benchmarking für die Speicherauslastung auszuführen:
%load_ext memory_profiler
%memit func_copy()
# peak memory: 1602.66 MiB, increment: 1548.66 MiB
%memit func_inplace()
# peak memory: 817.02 MiB, increment: 762.94 MiB
Wie erwartet, die in-Place-Version mehr Speicher effizient ist.
Auf der anderen Seite scheint es auch zwischen den Ansätzen in Laufzeit ein nicht-trivialer Unterschied zu sein, wenn die Datengröße groß genug ist (zB in dem obigen Beispiel) ist:
%timeit func_copy()
1 loops, best of 3: 2.56 s per loop
%timeit func_inplace()
1 loops, best of 3: 1.35 s per loop
kann diese Unterschiede oder je nach Anwendungsfall (z. B. Adhoc-Explorationsanalyse vs. Produktionscode), Datengröße und verfügbare Hardware-Ressource nicht signifikant. Im Allgemeinen kann es sinnvoll sein, die In-Place-Version nach Möglichkeit zu verwenden, um die Speicher- und Laufzeiteffizienz zu verbessern.
'df.reset_index (inplace = True)' gibt zurück Keine fyi - – user3659451
Richtig, danke für das Hinzeigen. –
Das Gleiche. Ich bevorzuge den ersten Weg für die Leichtigkeit des Lesens neben anderen Zeilen, die nicht auf einen Dataframe einwirken. – itzy