pandas读取大量数据的分块处理
数据分块
csv 格式是一种易储存, 易更改并且用户易读取的格式。 pandas 有read_csv ()方法来上传数据,存储为CSV 格式。当遇到CSV 文件过大,导致内存不足的问题该怎么办呢?试试强大的pandas 工具吧!我们先把整个文件拆分成小块。这里,我们把拆分的小块称为chunk。
一个chunk 就是我们数据的一个小组。 Chunk 的大小主要依据我们内存的大小,自行决定。
过程如下:
1.读取一块数据。
2.分析数据。
3.保存该块数据的分析结果。
4.重复1-3步骤,直到所有chunk 分析完毕。
5.把所有的chunk 合并在一起。
1、指定chunksize分块读取文件
read_csv 和 read_table 有一个 chunksize 参数,用以指定一个块大小(每次读取多少行),返回一个可迭代的 TextFileReader 对象。
代码如下:
table=pd.read_table(path+'kuaishou.txt',sep='\t',chunksize=1000000) df_list=[] for df in table: #1.对每一个分块df处理 #2.添加每一个df(df_list.apend(df)) #print(type(df),df.shape)打印看一下信息
df = pd.concat(df_list, ignore_index=True)
2、指定iterator=True
iterator=True同样返回的是TextFileReader对象
import pandas as pd f = open('./data/ows-raw.txt',encoding='utf-8') reader = pd.read_table(f, sep=',', iterator=True, error_bad_lines=False) #跳过报错行 loop = True chunkSize = 1000 chunks = [] while loop: try: chunk = reader.get_chunk(chunkSize) chunks.append(chunk) except StopIteration: loop = False print("Iteration is stopped.") df = pd.concat(chunks, ignore_index=True)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?