【问题标题】:Pandas memory error熊猫内存错误
【发布时间】:2014-06-05 23:12:13
【问题描述】:

我有一个包含约 50,000 行和 300 列的 csv 文件。执行以下操作会导致 Pandas (python) 中出现内存错误:

merged_df.stack(0).reset_index(1)

数据框如下:

GRID_WISE_MW1   Col0    Col1    Col2 .... Col300
7228260         1444    1819    2042
7228261         1444    1819    2042

我正在使用最新的 pandas (0.13.1),并且该错误不会出现在行数较少 (~2,000) 的数据帧中

谢谢!

【问题讨论】:

  • 这里没有帮助,因为我在 pandas.merge 操作中使用了 merge_df.stack(0).reset_index(1) ......

标签: python memory pandas


【解决方案1】:

作为替代方法,您可以使用库“dask”
例如:

# Dataframes implement the Pandas API
import dask.dataframe as dd`<br>
df = dd.read_csv('s3://.../2018-*-*.csv')

【讨论】:

    【解决方案2】:

    所以它占用了我的 64 位 linux (32GB) 内存,略小于 2GB。

    In [5]: def f():
           df = DataFrame(np.random.randn(50000,300))
           df.stack().reset_index(1)
    
    
    In [6]: %memit f()
    maximum of 1: 1791.054688 MB per loop
    

    由于您没有指定。这根本不适用于 32 位(因为您通常无法分配 2GB 的连续块),但如果您有合理的交换/内存,则应该可以。

    【讨论】:

    • 啊,我使用的是 Windows 7 64 位,8 GB RAM,但我的 pandas 是 32 位,这可能是问题吗?
    • 是的;您可以安装 64 位 python(和所有软件包),或使用 conda 来安装。 32 位的可寻址限制为 4GB,但 python 需要连续的内存,因此太大而无法可靠地堆叠。以我的经验,32 位在大于 1GB 的任何东西上都有问题;但是,64 位扩展没有问题。
    • @Jeff 感谢您的评论!我已经与pandas 争取了一个美好的一周,以便在一个dataFrame 中仅加载约400MB 的数据,当一个较小的dataFrame 实例列表,对于相同的总量,可以毫无问题地加载,并且您的解释肯定是答案:我正在使用 32 位的 Python,因为我们工作的操作系统被困在 32 位的 Windows 上。 :-/
    猜你喜欢
    • 2016-10-16
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 2013-05-15
    • 2017-05-23
    • 2020-05-06
    相关资源
    最近更新 更多