高效地将大型 Pandas 数据帧读取到磁盘
Posted
技术标签:
【中文标题】高效地将大型 Pandas 数据帧读取到磁盘【英文标题】:Efficiently writing large Pandas data frames to disk 【发布时间】:2013-11-07 12:12:27 【问题描述】:我正在尝试找到使用 Python/Pandas 将大型数据帧 (250MB+) 高效写入磁盘和从磁盘写入的最佳方法。 Python for Data Analysis中的所有方法我都试过了,但性能非常令人失望。
这是探索将我们当前的分析/数据管理环境从 Stata 迁移到 Python 的大型项目的一部分。当我将测试中的读/写时间与我在 Stata 中获得的时间进行比较时,Python 和 Pandas 通常需要 20 倍以上的时间。
我强烈怀疑我是问题所在,而不是 Python 或 Pandas。
有什么建议吗?
【问题讨论】:
您可以重新阅读书中的HDF5段落,使用此存储获得持久存储非常有效。如果您解释并显示您为该方法测试的代码,它可能会有所帮助,您可能会效率低下。 是什么让你怀疑自己是问题所在? store = HDFStore('myfile.h5') store['df'] = df 请发帖:df.head()
和 df.info()
【参考方案1】:
使用HDFStore
是你最好的选择(书中没有详细介绍,并且变化很大)。您会发现性能比任何其他序列化方法都要好。
How to write/read various forms of HDF5
Some recipes using HDF5
Comparing performance of various writing/reading methods
【讨论】:
确实,HDF5 运行良好,尤其是在使用正确的选项集的情况下。使用 blosc 压缩,chunksize=4 和 complevel=3 被证明是最快的。 很大程度上取决于您的存储方式(例如,一次全部追加通常是最好的),您是否需要追加和压缩。我的2c;该块大小非常小,默认为 50k 行。以上是关于高效地将大型 Pandas 数据帧读取到磁盘的主要内容,如果未能解决你的问题,请参考以下文章
许多数据帧上的高效 Python Pandas 股票 Beta 计算
有效地将Pandas数据帧写入Google BigQuery