Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 内存和磁盘上的文件大小不同_Python_Pandas - Fatal编程技术网

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

Python 内存和磁盘上的文件大小不同,python,pandas,Python,Pandas,我刚刚使用pandas函数编写了一个csv文件。我可以看到磁盘上这个文件的大小是13GB。我想使用pd.read\u csv将此文件读回pandasdataframe。在中读取此文件时,我监视服务器的内存使用情况。结果表明,在中读取此文件所消耗的内存为30GB+并且该文件从未被读取。我的jupyter笔记本的内核死了,我必须再次启动这个过程 我的问题是,为什么会发生这种行为?写和读文件是一段非常简单的代码,为什么空间要求不同呢?最后,如何读取此文件?在加载时使用块来最小化内存使用 import

我刚刚使用
pandas
函数编写了一个
csv
文件。我可以看到磁盘上这个文件的大小是13GB。我想使用
pd.read\u csv
将此文件读回
pandas
dataframe
。在中读取此文件时,我监视服务器的内存使用情况。结果表明,在中读取此文件所消耗的内存为30GB+并且该文件从未被读取。我的
jupyter笔记本的内核死了,我必须再次启动这个过程


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

在加载时使用块来最小化内存使用

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)

as问题的可能重复也表明了很多问题。我得到错误
NameError:未定义名称“进程”
。我相信它需要导入。因此我使用了完全相同的代码,并对chunksize的值进行了一些调整,我仍然遇到
MemoryError
。这是我的代码:
chunks=pd.read\u csv('filename.csv',chunksize=10000)f=pd.DataFrame()%time df=pd.concat(chunks,ignore\u index=True)