python - 在 pandas 中存储 bool 和 NaN 值的内存有效方法
问题描述
我正在处理一个相当大的数据集(超过 4 GB),我在pandas
. 这个数据集中的很多列是简单的真/假指标,自然而然地,最节省内存的存储这些列的方法bool
是为此列使用 dtype。但是,该列还包含一些我想保留的 NaN 值。现在,这导致列具有 dtype 浮点数(带有值1.0
和)或对象0.0
,np.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))
结果是
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>
解决方案
推荐阅读
- django - 从最接近日期的对象获取标题,django模型
- c# - EF Core 查询 Where 子句是一个集合?
- c++ - QLabel 像视频一样显示图像
- c# - 声明非空字符串时,C# 是否隐式分配空字符串?
- pywin32 - 无法通过pywinauto点击树元素
- excel - VLOOKUP 将两个表合并为一个
- spring - 如何使用 grails 知道响应拦截器中有效负载的大小
- javascript - 在 Express.js 应用程序中从 index.js 文件中排除默认路由
- r - 如何使用 R 中的 `openxlsx` 包在单元格范围周围应用粗边框
- angular - 如何在 angular-cli.json 中获取 serviceWorker 标志?