Erstellen und Füllen eines leeren Pandas-DataFrames
Konzeptionell könnte man damit beginnen, einen leeren DataFrame zu erstellen und ihn dann schrittweise mit Werten zu füllen . Dieser Ansatz ist jedoch ineffizient und kann zu Leistungsproblemen führen.
Die Fallstricke beim zeilenweisen Erweitern eines DataFrames
Das iterative Anhängen von Zeilen an einen leeren DataFrame ist rechenintensiv . Aufgrund der erforderlichen dynamischen Speicherzuweisung und -neuzuweisung führt dies zu quadratischen Komplexitätsoperationen. Dies kann die Leistung erheblich beeinträchtigen, insbesondere beim Umgang mit großen Datensätzen.
Ein alternativer Ansatz: Sammeln von Daten in einer Liste
Anstatt einen DataFrame zeilenweise zu vergrößern, ist dies der Fall Es wird empfohlen, die Daten in einer Liste zusammenzufassen. Dies hat mehrere Vorteile:
Erstellen eines DataFrames aus einer Liste
Sobald Daten in einer Liste gesammelt wurden, kann ein DataFrame einfach durch Konvertieren der Liste mit pd erstellt werden .DataFrame(). Dies stellt eine ordnungsgemäße Datentypinferenz sicher und automatisiert das Festlegen eines RangeIndex für den DataFrame.
Beispiel
Betrachten Sie das in der Frage beschriebene Szenario. Der folgende Code zeigt, wie man Daten in einer Liste sammelt und dann einen DataFrame erstellt:
import pandas as pd data = [] dates = [pd.to_datetime(f"2023-08-{day}") for day in range(10, 0, -1)] valdict = {'A': [], 'B': [], 'C': []} # Initialize symbol value lists for date in dates: for symbol in valdict: if date == dates[0]: valdict[symbol].append(0) else: valdict[symbol].append(1 + valdict[symbol][-1]) # Create a DataFrame from the accumulated data df = pd.DataFrame(valdict, index=dates)
Dieser Ansatz gewährleistet eine effiziente Datenakkumulation und eine nahtlose DataFrame-Erstellung ohne Leistungsaufwand oder Bedenken hinsichtlich Objektspalten.
Das obige ist der detaillierte Inhalt vonWarum ist das zeilenweise Auffüllen eines Pandas-DataFrames ineffizient und was ist ein besserer Ansatz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!