Python 使用 pandas chunk 处理大文件

chunk是pandas分块读取数据时的单位,设置chunksize可返回可迭代对象,每块为小型DataFrame;示例中每次读取10000行进行处理,适用于清洗、统计、导出等场景;通过累计sum和count计算全局均值,或过滤后保存到新文件、写入数据库;需权衡chunksize大小,避免内存累积,注意跨块操作需维护中间状态。

python 使用 pandas chunk 处理大文件

处理大文件时,直接读取整个文件容易导致内存溢出。Python 中的 pandas 提供了 chunksize 参数,可以分块读取数据,逐块处理,有效降低内存占用

什么是 chunk?

在使用 pandas.read_csv() 或类似方法时,设置 chunksize 参数会返回一个可迭代的对象,每次只加载一部分数据。每一块(chunk)都是一个小型 DataFrame,可以单独处理。

示例代码:

import pandas as pd

指定每次读取 10000 行

chunk_size = 10000file_path = 'large_data.csv'

for chunk in pd.read_csv(file_path, chunksize=chunk_size):

立即学习Python免费学习笔记(深入)”;

生活同城信息网系统
生活同城信息网系统

fankuan8生活同城信息网系统 v1206采用主流的Asp+Access开发设计,网站美工设计方面更大气,漂亮!网站浏览器兼容性也比较好,网站功能方面的细节方面十分强大。 网站程序的几大特点: 1.全站页面实行了伪静态化,各类型网站服务器的伪静态文件都已近处理好了,无需自己再做伪静态出来。 2.网站前台开始使用了fankuan8独立开发的互助链系统,开始使用时,在网站底部点击链接根据提示马上

生活同城信息网系统 0
查看详情 生活同城信息网系统

对每一块数据进行处理

print(f"处理 {len(chunk)} 行数据")# 例如:统计某一列的均值if 'value' in chunk.columns:    print("value 列平均值:", chunk['value'].mean())

常见用途与技巧

分块读取适用于多种场景,比如数据清洗、聚合统计、写入数据库或导出新文件。

1. 聚合全局统计信息
即使数据被分块,也可以累计计算总和、均值等。

total_sum = 0total_count = 0

for chunk in pd.read_csv(file_path, chunksize=10000):total_sum += chunk['value'].sum()total_count += len(chunk)

overall_mean = total_sum / total_countprint("整体均值:", overall_mean)

2. 过滤数据并保存结果
可以筛选符合条件的数据,写入新文件。

output_file = 'filtered_data.csv'first_chunk = True  # 控制是否写入表头

for chunk in pd.read_csv(file_path, chunksize=10000):filtered = chunk[chunk['value'] > 100]

第一次写入时包含表头,后续追加

filtered.to_csv(output_file, mode='a', header=first_chunk, index=False)first_chunk = False

3. 写入数据库
适合将大数据逐步导入数据库。

from sqlalchemy import create_engine

engine = create_engine('sqlite:///mydb.db')

for chunk in pd.read_csv(file_path, chunksize=5000):chunk.to_sql('table_name', engine, if_exists='append', index=False)

注意事项

使用 chunk 处理时需要注意以下几点:

chunksize 大小需权衡:太小会增加 I/O 开销,太大仍可能耗内存,一般 5000~50000 行较合适。确保每块数据处理完及时释放,避免累积变量占用内存。若需去重或排序,分块处理会复杂,可能需要额外策略(如分组键哈希)。某些操作(如跨块统计)需手动维护中间状态。

基本上就这些。合理使用 chunk 可以轻松应对远超内存容量的 CSV 文件处理任务。

以上就是Python 使用 pandas chunk 处理大文件的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1373355.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月14日 13:11:26
下一篇 2025年12月14日 13:11:40

相关推荐

发表回复

登录后才能评论
关注微信