如何以“pickle”以外的 PANDAS-LOADABLE 二进制格式存储“pandas.DataFrame”

Posted

技术标签:

【中文标题】如何以“pickle”以外的 PANDAS-LOADABLE 二进制格式存储“pandas.DataFrame”【英文标题】:How to store `pandas.DataFrame` in a PANDAS-LOADABLE binary format other than `pickle` 【发布时间】:2017-11-13 14:55:35 【问题描述】:

我在保存 pandas.DataFrame(1 440 000 000 行)时遇到问题。

据我在 API 中看到的,存储(然后加载)数组的唯一可用选项是 CSV 或 pickle。

以 pickle 格式保存会以一个神秘的异常结束 (SystemError: error return without exception set),而以 CSV 格式保存即使压缩也是浪费空间(2 字节长 np.float16 比 ASCII 编码的值效率高得多)。

如何以可加载、内存高效(包括磁盘空间)的格式存储我的数据帧?

【问题讨论】:

【参考方案1】:

我猜你的数据框太大了。泡菜有一些限制。您最好保存在数据库中或使用 to_hdf(或许多其他 IO 例程,to_msgpack 也可以工作)。

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_hdf.html

【讨论】:

我正在考虑使用.to_hdf(),但我找不到将数据加载回DataFrame 的函数。这种可能性对我来说至关重要,因为我需要分析数据。 read_hdf 呢? pandas.pydata.org/pandas-docs/stable/generated/… 哦,这似乎是我需要的。 Pandas 的 API 不是很直观 - 我期待 pandas.DataFrame.from_hdf() 方法 -_-。 @abukaj 我想你可以选择我的答案作为最终答案,谢谢 @Paddy 我要去 - 只要我的代码完成其存储/读取周期:)

以上是关于如何以“pickle”以外的 PANDAS-LOADABLE 二进制格式存储“pandas.DataFrame”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pyqt5 环境中使用 Pickle 保存 Matplotlib 图?

pickle模块以特殊的二进制格式保存和恢复数据对象

如何仅获取以“1”开头的文件中的第一行。后跟除数字以外的任何字符?

如何注册用户的 ios 设备以接收来自 AppDelegate 以外的地方的推送消息?

Python:如何以通道,行,cols格式保存图像?

如何获取 Spring Boot 和 OAuth2 示例以使用默认密码授予凭据以外的其他凭据