Étant donné est une liste de 1,5 Go de pandas dataframes.
Je me demande quelle est la meilleure approche pour gérer le chargement de ces données: pickle (via cPickle), hdf5 ou autre chose en python?
Tout d'abord, "vider" les données est OK pour prendre longtemps, je ne le fais qu'une fois.
Je suis également pas préoccupé par la taille du fichier sur le disque.
Question: Ce qui m'inquiète, c'est la vitesse de chargement des données en mémoire le plus rapidement possible.
Je considérerais seulement deux formats de stockage: HDF5 (PyTables) et Feather
Voici les résultats de ma comparaison en lecture et en écriture pour le DF (forme: 4000000 x 6, taille en mémoire 183,1 Mo, taille du CSV non compressé - 492 Mo).
Comparaison pour les formats de stockage suivants: (CSV
, CSV.gzip
, Pickle
, HDF5
[diverses compressions]):
read_s write_s size_ratio_to_CSV
storage
CSV 17.900 69.00 1.000
CSV.gzip 18.900 186.00 0.047
Pickle 0.173 1.77 0.374
HDF_fixed 0.196 2.03 0.435
HDF_tab 0.230 2.60 0.437
HDF_tab_zlib_c5 0.845 5.44 0.035
HDF_tab_zlib_c9 0.860 5.95 0.035
HDF_tab_bzip2_c5 2.500 36.50 0.011
HDF_tab_bzip2_c9 2.500 36.50 0.011
Mais cela pourrait être différent pour vous, car toutes mes données étaient du type datetime
, il est donc toujours préférable de faire une telle comparaison avec votre des données réelles ou au moins avec des données similaires ...