Который быстрее загружается: pickle или hdf5 в python

Данный представляет собой список фреймов pandas размером 1,5 ГБ.

Мне интересно, какой метод лучше всего подходит для загрузки этих данных: pickle (через cPickle), hdf5 или что-то еще в python?

Во-первых, "сброс" данных в порядке, чтобы занять много времени, я делаю это только один раз.

Я также не, связанный с размером файла на диске.

Вопрос: Меня волнует скорость загрузки данных в память как можно быстрее.

Ответ 1

Я бы рассмотрел только два формата хранения: HDF5 (PyTables) и Feather

Вот результаты моего сравнения для DF (форма: 4000000 x 6, размер в памяти 183,1 МБ, размер несжатого CSV - 492 МБ).

Сравнение для следующих форматов хранения: (CSV, CSV.gzip, Pickle, HDF5 [различное сжатие]):

                  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

Но это может быть иначе для вас, потому что все мои данные относятся к типу datetime dtype, поэтому всегда лучше делать такое сравнение с вашими реальными данными или, по крайней мере, с подобными данными...