熊猫-导入大小为4GB的CSV文件时出现内存错误

时间:2019-06-04 09:01:47

标签: python python-3.x pandas

我尝试使用pd.read_csv导入大小为4GB的csv文件,但收到内存不足错误。然后尝试使用dask.dataframe,但无法转换为pandas dataframe(相同的内存错误)。

import pandas as pd
import dask.dataframe as dd
df = dd.read_csv(#file)
df = df.compute()

然后尝试使用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)

尝试:

  1. 尝试使用文件大小1.5GB-成功导入
  2. 尝试使用4GB的文件-失败(内存错误)
  3. 尝试使用低chunksize(2000或50000)-失败(4GB文件的内存错误)
  

请让我知道如何继续进行操作?

     

我使用python 3.7和8GB RAM。

     

我还在具有128GB RAM的服务器上尝试了Attempt 3,但仍然是memory error

     

我无法分配dtype,因为要导入的csv文件可能在不同的时间包含不同的列

2 个答案:

答案 0 :(得分:0)

已经在这里得到回答: How to read a 6 GB csv file with pandas

我还尝试了使用2GB文件的上述方法,并且有效。

还尝试使块大小更小。

您是否也可以共享系统配置,这将非常有用

答案 1 :(得分:0)

我只想记录下获得足够建议后的尝试!感谢Robin Nemeth和juanpa

  1. 正如juanpa所指出的,我能够在其中读取csv文件(4GB) 我使用64bit python可执行文件

  2. 时具有 128GB RAM 的服务器
  3. 就像罗宾指出的那样,即使具有64位可执行文件,我也无法 读取具有 8GB RAM 的本地计算机中的csv文件(4GB)。

因此,无论我们尝试使用哪种机器的RAM,因为数据帧在内存中使用