【发布时间】:2013-06-03 00:50:03
【问题描述】:
有没有一种快速的方法来对 DataFrame 进行序列化?
我有一个可以并行运行 pandas 分析的网格系统。最后,我想从每个网格作业中收集所有结果(作为 DataFrame)并将它们聚合成一个巨大的 DataFrame。
如何将数据帧保存为可以快速加载的二进制格式?
【问题讨论】:
-
Nice blog post 有不同 I/O 选项的计时/讨论
有没有一种快速的方法来对 DataFrame 进行序列化?
我有一个可以并行运行 pandas 分析的网格系统。最后,我想从每个网格作业中收集所有结果(作为 DataFrame)并将它们聚合成一个巨大的 DataFrame。
如何将数据帧保存为可以快速加载的二进制格式?
【问题讨论】:
DataFrame.to_msgpack 是实验性的,并非没有一些问题,例如使用 Unicode,但它比酸洗快得多。它序列化了一个包含 500 万行的数据帧,在大约 2 秒内占用了 2-3 Gb 的内存,生成的文件大约为 750 Mb。加载速度稍慢,但仍比 unpickling 快。
【讨论】:
最简单的方法就是使用to_pickle(作为pickle),见pickling from the docs api page:
df.to_pickle(file_name)
另一种选择是使用HDF5,上手工作量稍大,但查询的内容要丰富得多。
【讨论】:
必须为可用的io functions 计时?二进制不会自动更快,据我所知 HDF5 应该很快。
【讨论】: