我正在阅读以csv格式存储的巨大Pandas(版本18.1)数据框(约达30 GB)。然而,使用read_csv时,内存消耗增加到初始csv文件的两倍——> 60 GB。我知道有chunksize参数。然而,这种方法速度更慢,并没有真正减少内存使用量。我已经尝试过使用4 GB的数据框来测试它。在读取数据框之后,脚本仍然占用了约7 GB的RAM。以下是我的代码:
df = None
for chunk in pandas.read_csv(fn, chunksize=50000):
if df is None:
df = chunk
else:
df = pandas.concat([df, chunk])
这只是一个简短的版本。我也知道指定dtype可以节省内存。那么我的问题来了。读取巨大的pandas数据帧的最佳方式(性能,内存)是什么?
df = pd.concat((x for x in pd.read_csv(fn, chunksize=50000))
- MaxU - stand with Ukraine