大Pandasbool和NaN值的高效存储方法

2024-04-20 13:23:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个相当大的数据集(超过4gb),它是我在pandas中导入的。这个数据集中相当多的列是简单的真/假指示符,存储这些值的最有效内存方法自然是为此列使用bool数据类型。但是,该列还包含一些我想保留的NaN值。现在,这导致列具有dtype float(值为1.00.0np.nan)或对象,但它们都占用了太多内存。在

例如:

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

结果

^{pr2}$

如果知道这些值只能接受3种不同的值:TrueFalse和{},那么存储这些类型的值的最有效方法是什么


Tags: 数据方法内存falsetruedfindexnp