[PYTHON] Combinez plusieurs CSV et trames de données en une seule trame de données à grande vitesse [vitesse 60x]

df.append () est lent. .. ..

Auparavant, la combinaison de trames de données prenait beaucoup de temps, mais j'aimerais vous présenter une bonne méthode. Dans mon environnement, j'ai réussi plus de 60 fois plus vite! Il peut être utilisé pour combiner et lire des fichiers CSV du même format.

environnement

Python: 3.7.6
pandas: 1.0.1

La méthode que j'utilisais

J'avais l'habitude de lire le CSV et de simplement l'ajouter. Il a fallu ** 12 minutes 42 secondes ** pour lire et combiner environ 2500 CSV (environ 1000 lignes chacun).

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

Voie rapide

J'ai pu terminer la lecture et la combinaison du même CSV en ** 11,6 secondes **. J'ai pu terminer le même travail à ** 65,6x vitesse **!

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)

Pourquoi vite

En un mot, pour Dict https://qiita.com/siruku6/items/4846431198769b38bb41

finalement

Cet article est basé sur une publication de ici. La tâche de créer un fichier CSV était courante, c'est donc très utile. Vous pouvez l'utiliser simplement en créant une liste de blocs de données, il est donc très polyvalent!

Recommended Posts

Combinez plusieurs CSV et trames de données en une seule trame de données à grande vitesse [vitesse 60x]
[Big Query] Chargez une partie des données BQ dans les pandas à grande vitesse
Combinez plusieurs fichiers python en un seul fichier python
[Python & Unix] Combinez plusieurs fichiers PDF en un seul.
Combinez plusieurs fichiers Excel chargés à l'aide de pandas en un seul
Effectuer des calculs de volatilité implicite à grande vitesse (traitement des données de marché)