内存和磁盘上的文件大小不同

时间:2017-06-26 21:38:50

标签: python pandas

我刚刚使用csv pandas'函数编写了to_csv文件。我可以看到磁盘上这个文件的大小是13GB。我想使用pandas将此文件重新读回dataframe pd.read_csv。在读取此文件时,我会监视服务器的内存使用情况。事实证明,读取此文件所消耗的内存为30GB +,并且永远不会读入该文件。我jupyter notebook的内核死了,我必须再次启动该过程。

我的问题是为什么会发生这样的行为?编写和读取文件是一段非常简单的代码,为什么空间要求不同?最后,我如何阅读此文件?

1 个答案:

答案 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)