所以我一直在尝试使用 pandasread_csv
函数读取内存中的 3.2GB 文件,但我不断遇到某种内存泄漏,我的内存使用量会激增90%+
。
所以还有替代方案
我尝试定义dtype
以避免将数据作为字符串保留在内存中,但看到了类似的行为。
尝试了 numpy read csv,认为我会得到一些不同的结果,但这绝对是错误的。
尝试逐行阅读遇到了同样的问题,但速度非常慢。
我最近转向 python 3,所以认为那里可能存在一些错误,但在 python2 + pandas 上看到了类似的结果。
有问题的文件是来自 Kaggle 竞赛的 train.csv 文件组 bimbo的 train.csv 文件
系统信息:
RAM: 16GB, Processor: i7 8cores
如果您还想了解其他信息,请告诉我。
谢谢 :)
编辑1:它是一个内存峰值!不是泄漏(对不起,我的错。)
编辑 2:csv 文件示例
Semana,Agencia_ID,Canal_ID,Ruta_SAK,Cliente_ID,Producto_ID,Venta_uni_hoy,Venta_hoy,Dev_uni_proxima,Dev_proxima,Demanda_uni_equil
3,1110,7,3301,15766,1212,3,25.14,0,0.0,3
3,1110,7,3301,15766,1216,4,33.52,0,0.0,4
3,1110,7,3301,15766,1238,4,39.32,0,0.0,4
3,1110,7,3301,15766,1240,4,33.52,0,0.0,4
3,1110,7,3301,15766,1242,3,22.92,0,0.0,3
Run Code Online (Sandbox Code Playgroud)
编辑3:文件中的行数74180465
其他则简单pd.read_csv('filename', low_memory=False)
我努力了
from numpy import genfromtxt
my_data = genfromtxt('data/train.csv', delimiter=',')
Run Code Online (Sandbox Code Playgroud)
更新 下面的代码刚刚工作,但我仍然想弄清楚这个问题的根源,一定有什么问题。
import pandas as pd
import gc
data = pd.DataFrame()
data_iterator = pd.read_csv('data/train.csv', …
Run Code Online (Sandbox Code Playgroud)