2017-10-07 2 views
2

J'ai un jeu de données trop volumineux pour être directement lu dans la mémoire. Et je ne veux pas mettre à niveau la machine. De mes lectures, HDF5 peut être une solution appropriée à mon problème. Mais je ne suis pas sûr comment écrire itérativement la trame de données dans le fichier HDF5 puisque je ne peux pas charger le fichier csv en tant qu'objet de données. Donc, ma question est de savoir comment écrire un gros fichier CSV dans un fichier HDF5 avec des pythons pandas.Comment écrire un gros fichier csv sur hdf5 en python?

Répondre

4

Vous pouvez lire le fichier CSV en morceaux à l'aide de paramètres chunksize et ajoutez chaque morceau dans le fichier HDF:

hdf_key = 'hdf_key' 
df_cols_to_index = [...] # list of columns (labels) that should be indexed 
store = pd.HDFStore(hdf_filename) 

for chunk in pd.read_csv(csv_filename, chunksize=500000): 
    # don't index data columns in each iteration - we'll do it later ... 
    store.append(hdf_key, chunk, data_columns=df_cols_to_index, index=False) 
    # index data columns in HDFStore 

store.create_table_index(hdf_key, columns=df_cols_to_index, optlevel=9, kind='full') 
store.close() 
+0

Merci pour la réponse. Je ne suis pas familier avec le paquet pytables. Est-il possible d'utiliser h5py? –

+0

Pandas implémente sa propre API HDF basée sur 'pytables' - nous devrions utiliser cette API pour des raisons de compatibilité ... – MaxU

+0

Donc, il n'est pas possible d'utiliser h5py? –