Python 数据帧大小与windows内存使用不一致

Python 数据帧大小与windows内存使用不一致,python,memory,pandas,Python,Memory,Pandas,我正在从hdf5文件读取数据帧: import pandas as pd store = pd.HDFStore('some_file.h5') df= store['df'] store.close() 使用info显示: In [11]: df.info() <class 'pandas.core.frame.DataFrame'> Int64Index: 21423657 entries, 0 to 21423656 Data columns (total 5 columns

我正在从hdf5文件读取数据帧:

import pandas as pd
store = pd.HDFStore('some_file.h5')
df= store['df']
store.close()
使用
info
显示:

In [11]: df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 21423657 entries, 0 to 21423656
Data columns (total 5 columns):
date      datetime64[ns]
name      object
length    float64
flag1     object
flag2     object
dtypes: datetime64[ns](1), float64(1), object(3)
memory usage: 980.7+ MB
[11]中的
:df.info()
INT64索引:21423657个条目,0到21423656
数据列(共5列):
日期时间64[ns]
名称对象
长度浮动64
flag1对象
flag2对象
数据类型:datetime64[ns](1)、float64(1)、object(3)
内存使用率:980.7+MB

hdf5大约1GB,并且
df.info()
还显示了大约1GB的
内存使用量。但是,从windows任务管理器读取数据帧后,物理内存使用量增加了2GB以上。总的来说,我观察到windows任务管理器的实际内存使用量大约是
pandas
info
函数的两倍。这种额外的内存使用会在以后的计算中导致内存错误。有人知道这种行为的原因吗?或者有人对如何调试“幻影”内存使用有什么建议吗?

函数只调用
numpy.nparray.nbytes
,它将
nitemsize
(数据类型的大小,例如int64为8字节)和数组长度相乘。问题可能来自
对象
数据类型


Numpy有丰富的类型system:,您可以利用它来提高内存效率。您可以将选择的列从数据帧中转换为具有类型构造函数的较短字符串,例如从默认的
float64
转换为
float32
int32
无符号int32
object
s,例如
np.dtype('a25')
-25个字符的字符串,正如我所测试的,实际上在我的Win7上释放了一些内存。

函数只调用
numpy.nparray.nbytes
,它将
单位大小(数据类型的大小,例如int64为8字节)与数组长度相乘。问题可能来自
对象
数据类型


Numpy有丰富的类型system:,您可以利用它来提高内存效率。您可以将选择的列从数据帧中转换为具有类型构造函数的较短字符串,例如从默认的
float64
转换为
float32
int32
无符号int32
object
s,例如
np.dtype('a25')
-25个字符的字符串,正如我所测试的,实际上在我的Win7上释放了一些内存。

您能显示
df.info()
的输出吗?这是在导入数据后立即发生的,还是在内存增加之前您执行了任何处理步骤?windows任务管理器中的内存使用在这一行之后立即显示一个巨大的跳跃:
df=store['df']
。如果有object dtype列,pandas指示的内存使用量不是总内存(这里就是这种情况,这用
+
指示)。再见,非常感谢。应该更仔细地阅读文档。您能显示
df.info()
的输出吗?这是在导入数据后立即发生的,还是在内存增加之前执行了任何处理步骤?windows任务管理器中的内存使用在这一行之后立即显示一个巨大的跳跃:
df=store['df']
。如果有object dtype列,pandas指示的内存使用量不是总内存(这里就是这种情况,这用
+
指示)。再见,非常感谢。我应该仔细看一下医生。