【问题标题】:How to specify memory allocation for Pandas Dataframes?如何为 Pandas Dataframes 指定内存分配?
【发布时间】:2017-07-07 07:24:31
【问题描述】:

我正在尝试合并两个大熊猫数据帧,但它在我的 4GB RAM 笔记本电脑上引发了内存错误,所以我在计算机实验室尝试使用 16GB RAM,但它仍然引发相同的错误(在同一行代码上崩溃)。

我无法解决为什么 pandas 会引发相同的错误并且不使用 16 GB RAM 空间。请帮我解决它。

feature_AtomPairs2DFingerprintCount=pd.read_csv("/home/adarsh/big_data_features/AtomPairs2DFingerprintCount.csv")
feature_AtomPairs2DFingerprinter=pd.read_csv("/home/adarsh/big_data_features/AtomPairs2DFingerprinter.csv")

merged_data_2=pd.merge(feature_AtomPairs2DFingerprinter,feature_AtomPairs2DFingerprintCount,how='left')



MERGED_DATA=pd.read_csv('/home/adarsh/comp_des.csv')


total_merged=pd.merge(MERGED_DATA,merged_data_2,how='left')

【问题讨论】:

  • 您也可以向我们展示您的代码吗?除了增加内存,它可能还有优化的空间。
  • 如果数据框很大,请使用dask
  • 很有可能,您的代码正在做一些您不希望它做的事情,可能是意外的笛卡尔连接。尝试在较小的子集上进行合并,看看会发生什么。
  • @jsalonen ,@ken Wei ,我已经添加了代码。
  • 文件有多大以及究竟是哪一行引发了内存错误(可能是合并之一?)对于大数据文件,单独的 Pandas 可能不适合您的需求,可能考虑查看类似于 Spark。

标签: python pandas memory-management out-of-memory


【解决方案1】:

resource.getrlimit 调用将告诉您各种系统资源的硬限制和软限制。为了记忆

    soft, hard = resource.getrlimit(resource.RLIMIT_AS)

软限制是一个值,当达到该值时,操作系统通常会限制进程或用信号通知它。硬限制表示软限制值的上限。可以通过适当调用 resource.setrlimit() 来修改软限制。硬限制通常由系统管理员设置的系统范围参数控制。它不能被用户级进程提高,尽管它可以降低。据报道,这适用于 Linux,但不适用于 MacOS 或 Windows,它对两个值都返回 -1。

我怀疑您正在运行操作系统的最大进程大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多