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

处理大文件时,直接读取整个文件容易导致内存溢出。Python 中的 pandas 提供了 chunksize 参数,可以分块读取数据,逐块处理,有效降低内存占用。
在使用 pandas.read_csv() 或类似方法时,设置 chunksize 参数会返回一个可迭代的对象,每次只加载一部分数据。每一块(chunk)都是一个小型 DataFrame,可以单独处理。
示例代码:
import pandas as pd
<h1>指定每次读取 10000 行</h1><p>chunk_size = 10000
file_path = 'large_data.csv'</p><p>for chunk in pd.read_csv(file_path, chunksize=chunk_size):</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/00968c3c2c15" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">Python免费学习笔记(深入)</a>”;</p>
<div class="aritcle_card">
<a class="aritcle_card_img" href="/xiazai/code/10954">
<img src="https://img.php.cn/upload/webcode/000/000/002/176441400231114.jpg" alt="生活同城信息网系统">
</a>
<div class="aritcle_card_info">
<a href="/xiazai/code/10954">生活同城信息网系统</a>
<p>fankuan8生活同城信息网系统 v1206采用主流的Asp+Access开发设计,网站美工设计方面更大气,漂亮!网站浏览器兼容性也比较好,网站功能方面的细节方面十分强大。 网站程序的几大特点: 1.全站页面实行了伪静态化,各类型网站服务器的伪静态文件都已近处理好了,无需自己再做伪静态出来。 2.网站前台开始使用了fankuan8独立开发的互助链系统,开始使用时,在网站底部点击链接根据提示马上</p>
<div class="">
<img src="/static/images/card_xiazai.png" alt="生活同城信息网系统">
<span>0</span>
</div>
</div>
<a href="/xiazai/code/10954" class="aritcle_card_btn">
<span>查看详情</span>
<img src="/static/images/cardxiayige-3.png" alt="生活同城信息网系统">
</a>
</div>
<h1>对每一块数据进行处理</h1><pre class="brush:php;toolbar:false;">print(f"处理 {len(chunk)} 行数据")
# 例如:统计某一列的均值
if 'value' in chunk.columns:
print("value 列平均值:", chunk['value'].mean())分块读取适用于多种场景,比如数据清洗、聚合统计、写入数据库或导出新文件。
1. 聚合全局统计信息
即使数据被分块,也可以累计计算总和、均值等。
total_sum = 0
total_count = 0
<p>for chunk in pd.read_csv(file_path, chunksize=10000):
total_sum += chunk['value'].sum()
total_count += len(chunk)</p><p>overall_mean = total_sum / total_count
print("整体均值:", overall_mean)</p>2. 过滤数据并保存结果
可以筛选符合条件的数据,写入新文件。
output_file = 'filtered_data.csv' first_chunk = True # 控制是否写入表头 <p>for chunk in pd.read_csv(file_path, chunksize=10000): filtered = chunk[chunk['value'] > 100]</p><h1>第一次写入时包含表头,后续追加</h1><pre class="brush:php;toolbar:false;"><code>filtered.to_csv(output_file, mode='a', header=first_chunk, index=False) first_chunk = False
3. 写入数据库
适合将大数据逐步导入数据库。
from sqlalchemy import create_engine
<p>engine = create_engine('sqlite:///mydb.db')</p><p>for chunk in pd.read_csv(file_path, chunksize=5000):
chunk.to_sql('table_name', engine, if_exists='append', index=False)</p>使用 chunk 处理时需要注意以下几点:
基本上就这些。合理使用 chunk 可以轻松应对远超内存容量的 CSV 文件处理任务。
以上就是Python 使用 pandas chunk 处理大文件的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号