Python Pandas-导入大小为4GB的CSV文件时出现内存错误
我尝试使用Python Pandas-导入大小为4GB的CSV文件时出现内存错误,python,python-3.x,pandas,Python,Python 3.x,Pandas,我尝试使用pd.read_csv导入大小为4GB的csv文件,但收到内存不足的错误。然后尝试使用dask.dataframe,但无法转换为dask.dataframe(相同的内存错误) 然后尝试使用chunksize参数,但内存错误相同: import pandas as pd df = pd.read_csv(#file, chunksize=1000000, low_memory=False) df = pd.concat(df) 还尝试对列表使用chunksize,出现相同错误: imp
pd.read_csv
导入大小为4GB的csv文件,但收到内存不足的错误。然后尝试使用dask.dataframe
,但无法转换为dask.dataframe
(相同的内存错误)
然后尝试使用chunksize
参数,但内存错误相同:
import pandas as pd
df = pd.read_csv(#file, chunksize=1000000, low_memory=False)
df = pd.concat(df)
还尝试对列表使用chunksize
,出现相同错误:
import pandas as pd
list = []
for chunk in pd.read_csv(#file, chunksize=1000000, low_memory=False)
list.append(chunk)
df = pd.concat(list)
尝试:
chunksize
(2000或50000)-失败(4GB文件内存错误)我也在RAM为128GB的服务器上尝试了3次,但仍然
内存错误
我无法分配dtype
,因为要导入的csv文件可能在不同的时间包含不同的列
这里已经回答了: 我还用2GB文件尝试了上述方法,效果很好 还要尽量保持块的大小更小
你也能分享一下你的系统配置吗?那会很有用的我只想记录下在得到足够的建议后我所做的尝试!感谢罗宾·内梅特和胡安帕
64位python
可执行文件时,服务器具有128GB RAM因此,无论我们尝试什么,机器的RAM都很重要,因为数据帧在内存中使用读取块,然后将其存储在列表
列表中。追加(块)
没有任何意义(因为列表占用了您的内存)。在加载下一个块之前,您需要在加载块时对其进行处理(删除、过滤或其他)。128gb服务器应该可以正常工作。我的猜测是有什么东西限制了你进程的内存(docker?)我不想(放弃它、过滤它,或者别的什么)块,我只想附加所有的块并用它构建一个完整的数据帧。我将使用整个dataframe
使用GUI工具包进行过滤和聚合。假设你有一个能放100本书的书架(你的内存),你想放200本书。如果您读取不带chunksize的\u csv()
。你一次拿了200本书放在那里——它们不合适。如果你设置了chunksize
你一次拿10本书,把它们放在那里。10轮之后,书架上已经没有空间了,所以内存不足。“我也在一台RAM为128GB的服务器上尝试了3次,但仍然存在内存错误”,我发现这令人惊讶。您是否碰巧使用了32位版本的Python?那么这就是您的问题所在,您将无法访问超过32位的地址空间,因此最大4gb左右,尽管许多操作系统将其限制为更少。例如,windows上的限制是2GB。欢迎使用SO,Nischal!我建议您阅读OP下的评论。我们已经发现,降低块大小不会完成任何事情,128GB ram服务器的问题是由于OP使用32位Python造成的。
import pandas as pd
list = []
for chunk in pd.read_csv(#file, chunksize=1000000, low_memory=False)
list.append(chunk)
df = pd.concat(list)