Pandas read_csv()1.2GB文件在具有140GB RAM的VM上的内存不足

Dav*_*ank 6 python pandas

我正在尝试读取1.2G的CSV文件,其中包含25K记录,每个记录都包含一个ID和一个大字符串。

但是,大约1万行时,出现此错误:

pandas.io.common.CParserError:标记数据时出错。C错误:内存不足

这看起来很奇怪,因为VM具有140GB RAM,并且在1万行中,内存使用率仅为〜1%。

这是我使用的命令:

pd.read_csv('file.csv', header=None, names=['id', 'text', 'code'])
Run Code Online (Sandbox Code Playgroud)

我还运行了以下虚拟程序,该程序可以成功填满我的内存,使其接近100%。

list = []
list.append("hello")
while True:
    list.append("hello" + list[len(list) - 1])
Run Code Online (Sandbox Code Playgroud)

kil*_*les 6

这听起来像是一份工作chunksize。它将输入过程分为多个块,从而减少了所需的读取内存。

df = pd.DataFrame()
for chunk in pd.read_csv('Check1_900.csv', header=None, names=['id', 'text', 'code'], chunksize=1000):
    df = pd.concat([df, chunk], ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

  • 我将在一个循环中将每个块连接到生成的DF上:[df = pd.DataFrame(); 对于pd.read_csv(...)中的x:df = pd.concat([df,x],ignore_index = True)`-因此,我们不需要__all__块的RAM以及生成的DF (2认同)
  • 这就像逃避问题一样,将 1.2GB 文件读入 RAM 时出现问题,需要 140GB (2认同)