我刚刚使用csv
pandas'
函数编写了to_csv
文件。我可以看到磁盘上这个文件的大小是13GB。我想使用pandas
将此文件重新读回dataframe
pd.read_csv
。在读取此文件时,我会监视服务器的内存使用情况。事实证明,读取此文件所消耗的内存为30GB +,并且永远不会读入该文件。我jupyter notebook
的内核死了,我必须再次启动该过程。
我的问题是为什么会发生这样的行为?编写和读取文件是一段非常简单的代码,为什么空间要求不同?最后,我如何阅读此文件?
答案 0 :(得分:0)
使用块来最小化加载时的内存使用量。
import pandas as pd
chunksize = 10 ** 8
chunks=pd.read_csv(filename, chunksize=chunksize):
df=pd.concat(chunks, ignore_index=True)
如果这不起作用,则会调用for循环中的垃圾收集器,并且可能会有一些轻微的性能提升
import pandas as pd
import gc
chunksize = 10 ** 8
dfs = []
for chunk in pd.read_csv(filename, chunksize=chunksize):
dfs.append(chunk)
gc.collect()
final_df = pd.concat(dfs)