Heim >Backend-Entwicklung >Python-Tutorial >Warum ist die Verkettung vieler Pandas-DataFrames exponentiell langsam und wie kann ich dies vermeiden?

Warum ist die Verkettung vieler Pandas-DataFrames exponentiell langsam und wie kann ich dies vermeiden?

DDD
DDDOriginal
2024-12-20 03:38:13811Durchsuche

Why is Concatenating Many Pandas DataFrames Exponentially Slow, and How Can I Avoid It?

Exponentiell langsame Verkettung von DataFrames

Bei der Arbeit mit großen Datensätzen ist es üblich, die Daten zur effizienten Verarbeitung in kleinere Teile zu unterteilen. Das erneute Verketten dieser Blöcke kann jedoch exponentiell langsamer werden, wenn die Anzahl der Blöcke zunimmt.

Ursache der Verlangsamung

Die Verlangsamung wird darauf zurückgeführt, wie pd.concat() umgesetzt wird. Beim Aufruf innerhalb einer Schleife wird für jede Verkettung ein neuer DataFrame erstellt, was zu erheblichen Datenkopien führt. Diese Kopierkosten steigen quadratisch mit der Anzahl der Iterationen, was zu dem beobachteten exponentiellen Anstieg der Verarbeitungszeit führt.

Verlangsamung vermeiden

Diesen Leistungsengpass zu umgehen, ist von entscheidender Bedeutung um den Aufruf von pd.concat() innerhalb einer for-Schleife zu vermeiden. Speichern Sie stattdessen die Blöcke in einer Liste und verketten Sie sie nach der Verarbeitung alle auf einmal:

super_x = []
for i, df_chunk in enumerate(df_list):
    [x, y] = preprocess_data(df_chunk)
    super_x.append(x)
super_x = pd.concat(super_x, axis=0)

Bei diesem Ansatz erfolgt das Kopieren nur einmal, was die Gesamtverarbeitungszeit erheblich verkürzt.

Das obige ist der detaillierte Inhalt vonWarum ist die Verkettung vieler Pandas-DataFrames exponentiell langsam und wie kann ich dies vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn