TuBrief
구독 채널
비디오
커뮤니티

当数据分析因 Pandas 内存不足而停止时

TuBrief 편집팀
2026년 7월 13일
0
Computing/Software

원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.

中文한국어EnglishEspañolالعربيةDeutschFrançaisPortuguêsहिन्दीРусскийBahasa Indonesia日本語

관련 영상

DuckDB 正势不可挡……6:04

DuckDB 正势不可挡……

Better Stack

커뮤니티의 다른 글

사내 시스템에 llm api 붙일 때 마주하는 현실적인 한계와 대응법

2026년 9월 13일

레거시 백엔드에 GPT-6 Astra 붙일 때 예산 승인과 보안 통과를 먼저 끝내는 법이 있습니다

2026년 9월 13일

에이전트끼리 대화하다 6천만 원 청구서가 나오는 이유

2026년 9월 13일

사내 RAG 벡터 검색에 Okta 권한 필터를 직접 거는 방법

2026년 9월 13일

브라우저 에이전트에게 내 구글 계정을 통째로 넘기면 안 되는 이유

2026년 9월 12일

Apple Won the AI Race

2026년 9월 12일

댓글 (0)

Log in to leave a comment

아직 작성된 글이 없습니다

© 2026 . All rights reserved.

TuBrief
구독 채널
비디오
커뮤니티
로그인

当数据分析因 Pandas 内存不足而停止时

不要将数据全部加载到 RAM 中

Pandas 会将数据一次性加载到 RAM 中。这就是为什么在拥有 16GB 内存的笔记本电脑上尝试打开 20GB 的 CSV 文件时,Python 会崩溃的原因。只要数据稍微变大,笔记本电脑就会卡死,Jupyter Notebook 内核也会挂掉。我们不可能每次都去进行数据抽样或者升级电脑配置。

请改用 DuckDB。它只会根据需要一点一点地获取数据。它不会将全部数据加载到 RAM 中,而是使用 SQL 语法仅扫描需要的部分。这就是它作为 Pandas 的替代品在数据工程师中备受关注的原因。

将 Pandas 代码转换为 3 个步骤

改变数据分析环境比想象中要简单。保留现有的 Pandas DataFrame,只需更换引擎即可。

  1. 数据准备:不要使用 Pandas 读取文件,而是让 DuckDB 指向该路径。
  2. 执行查询:使用 duckdb.sql() 函数编写所需的条件和聚合。此时尚未进行实际计算。
  3. 提取结果:仅在最后调用 .df() 时才会进行真正的计算。

这种方式带来的效率提升不仅仅是代码层面的。在 Pandas 中执行 groupby 时会导致内存溢出的操作,在 DuckDB 中可以利用磁盘稳定运行。

设置 4GB 限制防止分析中断

在处理大数据时,经常会发生耗尽 RAM 导致程序崩溃的情况。为了防止这种情况,必须在工作环境中设置护栏。

在脚本顶部添加以下代码:

`python
import duckdb
con = duckdb.connect()
con.execute("SET memory_limit = '4GB'")
con.execute("SET temp_directory = './tmp'")

`

memory_limit 是 DuckDB 使用 RAM 的上限。将其设置为 4GB 后,即使在我只有 16GB 内存的笔记本电脑上,系统也不会整体卡死。如果 RAM 不足,DuckDB 会自动将数据写入磁盘临时文件。根据 2023 年的基准测试,在处理 140GB 的 Parquet 文件时,DuckDB 仅用 1.3GB 的 RAM 就完成了工作。如果是 Pandas,它会占用几十 GB 的内存,最终导致崩溃。

处理错误数据

数据分析中最令人沮丧的时刻莫过于因为格式错误导致解析停止。导入 CSV 文件时,如果类型不匹配,分析甚至无法开始。

在使用 read_csv 函数时,请开启以下选项:

`python
con.execute("""
SELECT * FROM read_csv('data.csv',
columns={'id': 'INTEGER', 'value': 'DOUBLE'},
store_rejects=true,
strict_mode=false)
""")

`

这样,不符合格式的数据就不会导致整个进程崩溃。错误的行会被隔离到单独的表中。稍后只需单独查询 reject_errors 表,即可确认数据为何损坏。

分析的目的不是修复工具,而是从数据中提取洞察。停止因为内存问题而反复运行代码,先更换引擎以确保处理效率吧。