【问题标题】:Pandas memory error when saving DataFrame to file将 DataFrame 保存到文件时出现 Pandas 内存错误
【发布时间】:2018-11-30 20:12:59
【问题描述】:

我终于设法在我学校的一台大机器(512G 内存)上加入了两个大 DataFrame。目前我们是两个人在使用同一台机器,另一个人使用了大约 120G 的内存,我调用垃圾收集器后,我们达到了 420G。

我想将 DataFrame 保存到内存中,这样我就可以轻松地重复使用它并将其移动到另一台机器上,我尝试将它导出到 parquet 文件,但出现内存错误...

那么,当内存已接近满时,我怎样才能设法将 Dataframe 转储到硬盘上以便重复使用它而不会遇到内存错误?

谢谢

【问题讨论】:

  • 您可以使用to_csv 中的chunksize 参数或类似方法。设置较低的chunksize 可能会使用更少的内存。

标签: python pandas


【解决方案1】:

有多种选择。您可以腌制数据框,也可以使用 hdf5 格式。 这些将占用更少的内存。此外,当您下次加载它时,它会比其他格式更快。

【讨论】:

  • Parquet 创建的内存比 hdf5 多?镶木地板的加载速度也很快!我试试 hdf5 看看能不能解决问题...
  • 您也可以使用 gzip 来减小大小。但是这样会降低下次加载的效率。
  • 使用 gzip 会花费我更多的内存,不是吗?我在这里谈论RAM。我只是不想将 DataFrame 转储到硬盘上。
  • 使用 gzip 会减少磁盘上的内存。你可以试试。我在转储pickel文件时尝试过一次。这也为我节省了大量内存和时间
  • 关于to_hdf 的问题(我是这种格式的新手),路径是文件的路径吗?我应该指定什么作为键?
【解决方案2】:

我不确定它会如何处理这么大的数据集,但您可以使用 pandas 函数 to_csv 将文件保存到硬盘。

df.to_csv("filename.csv")

如果您将来要处理如此多的数据,我可能会建议一种像这里提到的那样的分块方法:https://stackoverflow.com/a/25962187/4852976

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-23
    • 2018-03-08
    • 2019-11-26
    • 1970-01-01
    • 2020-08-02
    • 2015-06-14
    • 1970-01-01
    • 2013-07-07
    相关资源
    最近更新 更多