读取上GB大文件的方式有很多,但是并不是都有像pandas这样强大的数据清洗功能。数据太大是,可以分块处理,及时手动删除内存,最后在合并数据。
今天在读取一个超大csv文件的时候,遇到困难:
- 首先使用office打不开
- 然后在python中使用基本的pandas.read_csv打开文件时:MemoryError
- 最后查阅read_csv文档发现可以分块读取。
- read_csv中有个参数chunksize,通过指定一个chunksize分块大小来读取文件,返回的是一个可迭代的对象TextFileReader,IO Tools 举例如下:
In [138]: reader = pd.read_table('tmp.sv', sep='|', chunksize=4)
In [139]: reader
Out[139]: <pandas.io.parsers.TextFileReader at 0x120d2f290>
In [140]: for chunk in reader:
.....: print(chunk)
.....:
Unnamed: 0 0 1 2