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)