使用带有chunksize选项的pandas read_csv时耗尽内存

时间:2017-03-24 15:54:15

标签: pandas

我正在尝试使用pandas read_csv读取大型(~24GB)CSV。 这就是我的工作:

import pandas as pd
import time
sum = 0
start = time.time()
for chunk in pd.read_csv('large_iris.csv', iterator=True, chunksize=100):
    sum=sum+chunk.species.count()
end = time.time()

我的内存不足错误如下:

python(5741,0x7fffc81cc3c0) malloc: *** mach_vm_map(size=18446744071629176832) failed (error code=3)

***错误:无法分配区域

我试图尝试几个chunksize值,范围从100到1000000.无论块大小如何,问题仍然存在。

我是否误解了read_csv如何使用chunksize。我知道用一个相当小的chunksize迭代数据应该可以解决我看到的内存不足问题。 我发现其他帖子建议使用chunksize来解决内存不足的问题。但是,当提供有效的chunksize时,我无法找到有关内存不足问题的帖子。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

似乎问题是损坏的CSV文件。 迭代" large_iris.csv"一行一行,某行被解释为异常大,导致内存不足问题。 上面的代码段适用于其他格式良好的CSV文件。