我正在使用相当大的数据集(超过4 GB),我在pandas
中导入了该数据集。此数据集中的相当一些列是简单的True / False指标,当然,存储这些列的内存效率最高的方法是使用此列的bool
dtype。但是,该列还包含一些我想要保留的NaN值。现在,这导致列具有dtype float(值为1.0
,0.0
和np.nan
)或object,但它们都使用了太多内存。
举个例子:
df = pd.DataFrame([[True,True,True],[False,False,False],
[np.nan,np.nan,np.nan]])
df[1] = df[1].astype(bool)
df[2] = df[2].astype(float)
print(df)
print(df.memory_usage(index=False, deep=True))
print(df.memory_usage(index=False, deep=False))
结果
0 1 2
0 True True 1.0
1 False False 0.0
2 NaN True NaN
0 100
1 3
2 24
dtype: int64
0 24
1 3
2 24
dtype: int64
存储这些值的最有效方法是什么,知道它们只能采用3种不同的值:True
,False
和<undefined>