web-dev-qa-db-fra.com

qui est plus rapide pour la charge: pickle ou hdf5 dans python

É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.

28
denvar

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 ...

57
MaxU