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

处理大文件时,直接读取整个文件容易导致内存溢出。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 = 0for 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_engineengine = 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
微信扫一扫
支付宝扫一扫