加载速度更快:python中的pickle或hdf5

时间:2016-06-20 17:51:24

标签: python pandas numpy dataframe hdf5

鉴于是1.5 Gb的pandas数据帧列表。

我想知道哪种方法可以更好地处理加载这些数据: pickle(通过cPickle),hdf5,还是python中的其他东西?

首先,“倾销”数据可以花很长时间,我只做一次。

我也关注磁盘上的文件大小。

问题: 我关心的是尽可能快地将数据加载到内存中的速度。

1 个答案:

答案 0 :(得分:53)

我只考虑两种存储格式:HDF5(PyTables)和Feather

以下是DF的read and write comparison结果(形状:4000000 x 6,内存大小183.1 MB,未压缩CSV大小 - 492 MB)。

以下存储格式的比较:(CSVCSV.gzipPickleHDF5 [各种压缩]):

                  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,因此与您的实际数据进行比较总是更好至少有类似的数据...