【问题标题】:Pandas: calculating how much RAM is needed to generate a pivot table?Pandas:计算生成数据透视表需要多少 RAM?
【发布时间】:2017-08-07 09:39:09
【问题描述】:

我在 pandas 中有 3 亿行和 3 列。
我想将其转换为广泛的格式。 我估计在 当前的长格式为 9.6 GB。 我是这样做的 每个“单元”300,000,000 * 3 * 8 字节。

我想用 190 万行 * 1000 列。

我估计它应该占用 15.2 GB。

当我旋转时,内存使用量达到 64gb(Linux 资源监视器),而交换空间使用 30gb,然后 ipython 内核死亡,我假设这是与内存不足相关的死亡。

在生成数据透视表期间,RAM 使用量将飙升至超过我桌面的 64 GB RAM,我是否正确?为什么生成数据透视表会超出系统 RAM?

【问题讨论】:

  • 为什么要估计当前表的大小?听起来你有一个 csv,而不是 pandas 表。根据我的经验,加载 2GB 的 csv 数据大约需要 14GB,加载后需要在内存中维护 3GB:这是在优化之后。如果没有优化,我会超过 24GB 的 RAM/swap,python 会崩溃。
  • 您可能想在this 抢夺战利品

标签: python pandas pivot-table


【解决方案1】:

如果您使用 DataFrame.pivot_table(),请尝试使用 DataFrame.pivot(),它的内存消耗要小得多,而且速度也更快。 仅当您不使用自定义聚合函数来构建数据透视表并且您正在透视的列的元组没有冗余组合时,此解决方案才有可能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 2017-10-14
    • 2018-09-24
    • 2020-05-02
    • 1970-01-01
    • 2021-11-03
    相关资源
    最近更新 更多