我在使用 Pandas DataFrame 时遇到了一些内存不一致的问题。
这是我的代码框架:
那基本上就是使用pandas读取CSV文件并控制列数据类型。但是,当我想知道我的程序分配了多少内存时,信息似乎不太一致。 信息1:
这给出了:
这是我的代码框架:
import pandas as pd
import numpy as np
columns_dtype = {'A': np.int16, 'B': np.int8, ...}
df = pd.read_csv('my_file.csv', dtype=columns_dtype)
那基本上就是使用pandas读取CSV文件并控制列数据类型。但是,当我想知道我的程序分配了多少内存时,信息似乎不太一致。 信息1:
df.info(memory_usage='deep')
这给出了:
内存使用:482.6 MB
信息2:
import dill, sys
sys.getsizeof(dill.dumps(df))
这是给出的结果:506049782
(即 506 Mb)
信息 3:
分配给我的程序的 RAM 是:1.1 GiB(或 1.2 Gb)
附加信息(但我认为这不相关):
my_file.csv 的大小为 888 Mb(ls -lh)
问题:
由于我只是将 csv 文件加载到 Pandas DataFrame 对象中,为什么我的程序需要超过 1 Gb 的 RAM,而对象大小约为 0.5 Gb?
非常感谢
dill.dumps
的相关性是什么?你认为为什么dill
/pickle
序列化的数据框会占用与原始数据框完全相同的内存空间? - juanpa.arrivillagapd.read_csv
选项。 - juanpa.arrivillaga