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.
Python: 3.7.6
pandas: 1.0.1
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))
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)
En un mot, pour Dict https://qiita.com/siruku6/items/4846431198769b38bb41
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