[PYTHON] Kombinieren Sie mehrere CSVs und Datenrahmen mit hoher Geschwindigkeit zu einem Datenrahmen [60x Geschwindigkeit]

df.append () ist langsam. .. ..

Früher hat das Kombinieren von Datenrahmen lange gedauert, aber ich möchte eine gute Methode vorstellen. In meiner Umgebung war ich mehr als 60 Mal schneller erfolgreich! Es kann verwendet werden, um CSV-Dateien desselben Formats zu kombinieren und zu lesen.

Umgebung

Python: 3.7.6
pandas: 1.0.1

Die Methode, die ich verwendet habe

Ich habe die CSV gelesen und sie einfach angehängt. Das Lesen und Kombinieren von ca. 2500 CSVs (jeweils ca. 1000 Zeilen) dauerte ** 12 Minuten 42 Sekunden **.

csvs = glob.glob('./data/csv/*.csv')
df = pd.DataFrame()
for csv in csvs:
    df = df.append(pd.read_csv(csv))

Der schnelle Weg

Ich konnte das Lesen und Kombinieren derselben CSV in ** 11,6 Sekunden ** abschließen. Ich konnte die gleiche Arbeit mit ** 65,6x Geschwindigkeit ** erledigen!

from itertools import chain

def fast_concat(dfs):
    def fast_flatten(input_list):
        return list(chain.from_iterable(input_list))
    
    col_names = dfs[0].columns
    df_dict = dict.fromkeys(col_names, [])
    for col in col_names:
        extracted = (d[col] for d in dfs)
        df_dict[col] = fast_flatten(extracted)

    df = pd.DataFrame.from_dict(df_dict)[col_names]
    return df

dfs = []
for csv in csvs:
    dfs += [pd.read_csv(csv)]
df = fast_concat(dfs)

Warum schnell?

Mit einem Wort, um zu diktieren https://qiita.com/siruku6/items/4846431198769b38bb41

Schließlich

Dieser Artikel basiert auf einem Beitrag von hier. Die Aufgabe, eine CSV zusammenzustellen, war weit verbreitet und daher sehr hilfreich. Sie können es einfach verwenden, indem Sie eine Liste von Datenrahmen erstellen. Es ist also sehr vielseitig!

Recommended Posts

Kombinieren Sie mehrere CSVs und Datenrahmen mit hoher Geschwindigkeit zu einem Datenrahmen [60x Geschwindigkeit]
[Große Abfrage] Laden Sie einen Teil der BQ-Daten mit hoher Geschwindigkeit in Pandas
Kombinieren Sie mehrere Python-Dateien zu einer Python-Datei
[Python & Unix] Kombinieren Sie mehrere PDF-Dateien zu einer.
Kombinieren Sie mehrere mit Pandas geladene Excel-Dateien zu einer
Berechnung der impliziten Volatilität mit hoher Geschwindigkeit durchführen (Marktdatenverarbeitung)