大文件阅读问题

时间:2017-06-27 18:31:39

标签: python csv pandas

我正在尝试使用以下代码阅读13GB csv文件:

chunks=pd.read_csv('filename.csv',chunksize=10000000)
df=pd.DataFrame()
%time df=pd.concat(chunks, ignore_index=True)

我使用了chunksize参数的值从10 ** 3到10 ** 7,但每次我收到MemoryErrorcsv文件有大约330万行和1900列。

在我开始阅读文件之前,我清楚地看到我有30 + GB内存可用,但我仍然得到MemoryError。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在你想要阅读文件中的所有内容的情况下,Chunking什么都不做。 chunk的整个目的是预处理块,以便您只使用您感兴趣的数据(可能将处理后的块写入磁盘)。此外,您的块大小似乎大于数据中的行数,这意味着您无论如何都要一次性读取整个文件。

根据@MaxU的建议,尝试稀疏数据帧,并使用较小的块大小(例如100k):

chunks = pd.read_csv('filename.csv', chunksize=100000)  # nrows=200000 to test given file size.
df = pd.concat([chunk.to_sparse(fill_value=0) for chunk in chunks])

您可能还需要考虑使用SFrame(不受RAM限制)的GraphLab Create之类的内容。

相关问题