pandas读取大文件时memoryerror怎么办?

有时候我们会拿到一些很大的文本文件,完整读入内存,读入的过程会很慢,甚至可能无法读入内存,或者可以读入内存,但是没法进行进一步的计算,这个时候如果我们不是要进行很复杂的运算,可以使用read_csv提供的chunksize或者iterator参数,来部分读入文件,处理完之后再通过to_csv的mode=’a’,将每部分结果逐步写入文件。

大文本数据的读写

  • 指定chunksize分块读取文件
    read_csv 有一个 chunksize 参数,用以指定一个块大小(每次读取多少行),返回一个可迭代的 TextFileReader 对象。
import pandas as pd
reader = pd.read_csv('sample.csv', chunksize=1000) #每块为1000条数据
for chunk in reader:
    print(chunk)
  • 指定iterator=True
    iterator=True同样返回的是TextFileReader对象,使用它的get_chunk(num)方法可获得前num行的数据
reader = pd.read_csv('sample.csv', iterator=True)
chunk = reader.get_chunk(1000) # 获取前1000行数据
    print(chunk)

大文件写入时选择 to_csv 还是 to_excel

在输出结果时我们会遇到输出格式的选择,平时使用的最多的.csv, .xls, .xlsx,后两者一个是excel2003,一个是excel2007,一般建议大家优先选择输出为csv格式,其次是xls,最后是xlsx,大文件输出csv比输出excel要快的多,xls只支持60000+条记录,xlsx虽然支持记录变多了,但是,如果内容有中文常常会出现诡异的内容丢失。因此,如果数量较小可以选择xls,而数量较大则建议输出到csv。

你可能感兴趣的:(pandas读取大文件时memoryerror怎么办?)