鉴于是1.5 Gb的pandas数据帧列表。
我想知道哪种方法可以更好地处理加载这些数据: pickle(通过cPickle),hdf5,还是python中的其他东西?
首先,“倾销”数据可以花很长时间,我只做一次。
我也不关注磁盘上的文件大小。
问题: 我关心的是尽可能快地将数据加载到内存中的速度。
答案 0 :(得分:53)
我只考虑两种存储格式:HDF5(PyTables)和Feather
以下是DF的read and write comparison结果(形状:4000000 x 6,内存大小183.1 MB,未压缩CSV大小 - 492 MB)。
以下存储格式的比较:(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,因此与您的实际数据进行比较总是更好至少有类似的数据...