web-dev-qa-db-ja.com

ロードの方が高速です:pythonのpickleまたはhdf5

pandasデータフレームの1.5 Gbリストが与えられます。

このデータのロードを処理するためのより良いアプローチはどれですか:pickle(cPickle経由)、hdf5、またはPythonの何か?

まず、データを「ダンプ」するのに時間がかかりますが、これは1回だけです。

私もnotディスク上のファイルサイズに関心があります。

質問:私が心配しているのは、できるだけ早くデータをメモリにロードする速度です

28
denvar

私は、HDF5(PyTables)と Feather の2つのストレージ形式のみを検討します。

ここに私の 読み取りと書き込みの比較 の結果をDF(形状: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であるため、異なる場合があります。したがって、your実際のデータまたは少なくとも同様のデータで...

57
MaxU