繁体   English   中英

在python中加载.csv文件会占用太多内存

[英]Loading a .csv file in python consuming too much memory

我正在python中加载4gb .csv文件。 由于它的容量为4gb,所以我希望可以一​​次加载它,但是过了一会儿,我的32gb的内存就完全装满了。

难道我做错了什么? 为什么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)

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

一次在a ,一次在b

关于该数据的任何其他工作都会消耗额外的内存来保存值,因此

您一旦拥有b就可以del a b ,但是请注意, pandas库为您提供了read_csv函数和一种对生成的Dataframe行进行计数的方法

您应该能够

a = list(reader)

可能会好一点。

因为它是Python :-D,所以最简单的方法之一是:为行创建自己的类,该类至少将数据存储在slots ,这样可以每行节省几百个字节(阅读器将它们放入dict,即使为空也是如此) .....如果走得更远,则可以尝试存储数据的二进制表示形式。

但是也许您可以在保存整个数据数组的情况下处理数据? 它会消耗更少的内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM