2016-11-09 70 views
2

我有一个Ubuntu的笔记本电脑8 GB的RAM。而且也有一个2 GB CSV文件但是当我使用熊猫方法read_csv加载我的数据压头被完全填充,同时有7 GB RAM可用。 如何2 GB的文件填写7 GB的RAM?加载csv文件时出现内存错误?

+1

你能粘贴代码陪你的问题? –

+0

这些线程可能是有用的http://stackoverflow.com/questions/19590966/memory-error-with-large-data-sets-for-pandas-concat-and-numpy-append http://stackoverflow.com/questions/17557074/memory-error-when-using-pandas-read-csv – Bharath

回答

0

的原因,你得到这个low_memory警告,可能是因为猜测dtypes为每列是非常内存有较高要求。 Pandas试图通过分析每列中的数据来确定要设置的dtype。

在使用32bit系统的情况: 内存错误使用Windows的32位版本时,发生了很多与蟒蛇。这是因为默认情况下,32位进程只能获得2GB的内存。

试试这个:

tp = pd.read_csv('file_name.csv', header=None, chunksize=1000) 
df = pd.concat(tp, ignore_index=True) 
+0

是。那是因为dtypes,我转换一些列DTYPE因为我是加载。谢谢。 –

+0

好心给予好评和接受的答案,如果这有助于。 – harshil9968

+0

我尝试过upvote,但没有公开显示,因为我的声望不到15;) –

0

尽量让chunksize参数的使用:

df = pd.concat((chunk for chunk in pd.read_csv('/path/to/file.csv', chunksize=10**4)), 
       ignore_index=True) 
+0

你的第一个效率非常低,请添加注释:http://pandas.pydata.org/pandas-docs/stable/merging.html – Jeff

+0

@Jeff,谢谢您!我已将其删除。我没有得到有关它的说明...... – MaxU

+1

你做出越来越大的帧的副本每次循环;而是追加到列表中并调用concat一次(如当前示例所示) – Jeff

相关问题