You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter Notebook加载1.2GB CSV时数组内存分配错误如何解决

加载1.2GB CSV文件内存不足的解决方案

你遇到的报错属于典型的内存不足问题:CSV是文本存储格式,加载到pandas等数据框架中时会转换为内部存储类型,内存占用通常是原文件大小的2~5倍,8GB运行内存除去系统、其他进程的占用,剩余空间不足以承载全量数据,可按以下优先级尝试解决方案:

1. 分块加载数据

  • 无需修改其他配置,直接使用pandas read_csv的chunksize参数分批加载数据,每次仅处理部分数据,无需把全量数据载入内存:
import pandas as pd
# 每次加载10万行,可根据实际剩余内存调整数值
chunk_size = 100000
for chunk in pd.read_csv("你的文件路径.csv", chunksize=chunk_size):
    # 此处编写单块数据的处理逻辑,如过滤、统计聚合等
    your_process_logic(chunk)
  • 如果需要全量数据的统计结果,可逐块计算后再汇总结果即可。

2. 指定数据类型降低内存占用

  • pandas默认会为数值列分配int64、float64等大精度类型,大部分场景下使用小精度类型即可满足需求,可在加载时通过dtype参数指定列类型,基数较低的字符串列还可以指定为category类型,最高可降低80%的内存占用:
dtype_config = {
    "整型列名": "int32",
    "浮点列名": "float32",
    "低基数字符串列名": "category"
}
# 还可搭配usecols参数仅加载需要用到的列,进一步减少内存消耗
df = pd.read_csv("你的文件路径.csv", dtype=dtype_config, usecols=["需要用到的列1", "需要用到的列2"])

3. 使用内存优化的第三方库加载

  • 可替换pandas为polars库,该库默认做了大量内存优化,相同数据的内存占用远低于pandas,同时支持懒加载模式,无需一次性将全量数据载入内存:
import polars as pl
# 懒加载仅读取文件元数据,不会载入全量数据
df = pl.scan_csv("你的文件路径.csv")
# 做完过滤、选列等操作后,仅加载最终需要的结果到内存
result = df.select(["需要的列1", "需要的列2"]).filter(pl.col("过滤列") > 阈值).collect()

4. 扩容虚拟内存

  • 你的设备有0.5TB硬盘空间,可调整系统虚拟内存(分页文件)大小,将空闲硬盘空间作为虚拟内存使用,虽然读写速度低于物理内存,但可避免程序直接崩溃:
    • Windows系统:进入「系统属性-高级-性能-设置-高级-虚拟内存」手动调整最大值
    • macOS/Linux系统:默认会自动分配虚拟内存,若当前分配不足可手动扩容swap分区大小

内容的提问来源于stack exchange,提问作者Niyojita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:54:08