思想是分块读取,通过read_csv或read_table的两种方式(两个参数:chunksize和iterator)。
1. 指定chunksize
只要指定了这个参数,那么得到的结果就不是一个DataFrame
对象,而是一个TextFileReader
,它是一个生成器对象
import pandas as pd
data_iterator = pd.read_csv('data_20220701.csv', chunksize=1000)
for data_chunk in data_iterator:
print(data_chunk)
上面的程序中指定的chunksize=1000
表示1次读取1000行,那么第二次读的时候就是从1001行开始读取。
2. 指定iterator=True,并与get_chunk配合使用
iterator=True同样返回的是TextFileReader
对象
import pandas as pd
f = open('./data/ows-raw.txt',encoding='utf-8')
reader = pd.read_csv(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)
参考文献:
pandas分批读取大数据集_htbeker的博客-CSDN博客_pandas读取大量数据