【问题标题】:How to know how much RAM I need for data frame based on the size of CSV file?如何根据 CSV 文件的大小知道数据框需要多少 RAM?
【发布时间】:2020-11-27 20:05:15
【问题描述】:

我有一个 10.8 GB 的 CSV 文件。我需要阅读它并将其放入数据框中。 (熊猫 - Python) 我怎么知道我需要多少 RAM?

我的电脑安装了 8 GB RAM,但不够用。但是,我发现了 Google Colab,它有将近 12.72 GB 的 RAM。够了吗?

【问题讨论】:

  • 不回答这个问题,但我建议替代方案:您可以使用 pandas.readcsv(.., chunksize=1024) 分块加载 csv,并且可能为您的系统使用合理的块大小来处理您的文件,另一种选择是拆分您的csv 转换成更小的文件
  • 我正在处理这个,但整个 csv 文件包含 30 个数据帧,我想如果我能处理整个文件可能会更容易和更快..

标签: python dataframe csv memory ram


【解决方案1】:

一种估算 CSV 在读取为 DF 时可能需要在 RAM 中的大小的方法,而实际上不必手动计算每个字段的大小:

熊猫提供这个功能:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.memory_usage.html

#   Given a DF d: (example DF is arbitrary, something I had quickly available)
>>> d.shape
(182442, 2)  (rows x cols)

>>> d.dtypes
sta     float64
elev    float64

>>> d.memory_usage()
Index        128
sta      1459536
elev     1459536
dtype: int64

这将为您提供可用于快速计算的信息

如果您的 CSV 非常大,您可以创建一个小的、有代表性的 CSV 数据样本,并使用例如:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html 将其读入 DF,然后利用上述函数结果能够如果您要读取整个文件,请估计需要多少 RAM。此外,请确保您使用读取操作的相同选项参数读取 CSV,因为您将使用真实的东西

关于 DF 的其他数据可用。看到这个 SO:get list of pandas dataframe columns based on data type

有了这些信息,您可以使用上面链接中的chunks 迭代器选项来规划处理 DF 的有效策略。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 2019-10-16
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多