我正在使用python中的一个相对较大的csv文件。我正在使用pandas read_csv函数导入它。数据位于工作中的共享文件夹中,大约25GB。
我有2x8 GB RAM和Intel Core i5处理器,并且使用juypter笔记本。加载文件时,RAM监视将达到100%。它保持100%或96%的状态持续了几分钟,然后我的计算机时钟停止了,屏幕冻结了。即使我等待2个小时,我的计算机也无法使用,所以我必须重新启动。
我的问题是: 我需要拆分数据吗?这有帮助吗?还是笔记本电脑普遍存在性能问题?
非常感谢,这是我第一次使用如此大的数据集(我仍然认为25GB并不多)
答案 0 :(得分:3)
对于大文件,大熊猫可以分块读取它们。
chunksize = 10 ** 6
for chunk in pd.read_csv(filename, chunksize=chunksize):
process(chunk)
答案 1 :(得分:3)
查看string.Format
中的documentation。有一个名为read_csv
的参数。它指出:
行数:整数,默认为无
要读取的文件行数。对于读取大文件很有用
您可以循环遍历文件,一次只读取几行,这样就不会将整个文件加载到RAM中。
顺便说一句:使用类似的东西
nrows
一次只会将一行加载到内存中。
答案 2 :(得分:1)
您可能正在将所有数据加载到RAM中,从而分配了所有可用内存,从而迫使系统依靠交换内存(将临时数据写入磁盘,速度要慢得多)。
如果将数据拆分为适合内存的数据块,它将解决此问题。也许每个1 GB?