我正在尝试使用pandas pd.read_csv("file.txt",sep="\t")
将一个大小为3GB的tab/txt文件导入Python。我加载的文件是一个“.tab”文件,我将扩展名更改为“.txt”以便使用read_csv()
导入。这是一个具有305列和+/- 1,000,000行的文件。
当我执行代码时,一段时间后Python返回MemoryError。我搜索了一些信息,基本上意味着没有足够的可用RAM。当我在read_csv()
中指定nrows = 20
时,它可以正常工作。
我使用的计算机有46GB的RAM,其中大约有20GB可供Python使用。
我的问题是:一个大小为3GB的文件需要超过20GB的RAM才能使用pandas read_csv()
导入到Python中吗?我做错了什么吗?
编辑:当执行df.dtypes
时,类型是object
,float64
和int64
的混合体
更新:我使用以下代码解决了问题并执行了我的计算:
summed_cols=pd.DataFrame(columns=["sample","read sum"])
while x<352:
x=x+1
sample_col=pd.read_csv("file.txt",sep="\t",usecols=[x])
summed_cols=summed_cols.append(pd.DataFrame({"sample":[sample_col.columns[0]],"read sum":sum(sample_col[sample_col.columns[0]])}))
del sample_col
现在,它会选择一列数据,在数据框中进行计算,并将结果存储起来,然后删除当前的这一列,继续到下一列。