在python中加载.csv文件消耗太多内存

时间:2017-08-17 13:28:19

标签: python

我在python中加载4gb .csv文件。因为它是4gb我预计可以立即加载它,但过了一会儿我的32gb ram完全填满了。

我做错了吗?为什么4gb在ram方面变得如此之大?

是否有更快的方式加载此数据?

fname = "E:\Data\Data.csv" 
a = []  
with open(fname) as csvfile:
    reader = csv.reader(csvfile,delimiter=',')
    cont = 0;
    for row in reader:
        cont = cont+1
        print(cont)
        a.append(row)
b = np.asarray(a)

3 个答案:

答案 0 :(得分:1)

您复制了csv的全部内容至少两次。

进入a并再次进入b

对该数据的任何额外工作都会消耗额外的内存来保存值

del a后可以b,但请注意pandas库为您提供read_csv函数以及计算生成的Dataframe行数的方法

答案 1 :(得分:0)

你应该可以做一个

a = list(reader)

可能会好一点。

答案 2 :(得分:0)

因为它是Python :-D最简单的方法之一:为行创建自己的类,它至少会在slots中存储数据,每行可以节省几百个字节(读者将它们放入dict中,即使是空的也有点大......如果走得更远,你可能会尝试存储数据的二进制表示。

但也许你可以处理数据 而不用 来保存整个数据阵列?它会消耗更少的内存。