python - 过滤带有空数据的熊猫数据框列
问题描述
我有一个包含 200 多列的熊猫数据框。我正在尝试检查所有包含空数据的列。如何过滤/显示具有空数据的列?df.isnull().sum() 列出了所有列的计数,但我只想查看具有非零空数据计数的列,因为列数很高。
解决方案
较新的 Pandas 版本具有新方法DataFrame.isna() 和 DataFrame.notna()
1)使用DataFrame.isna()
方法!
>>> df
A B C D E F
0 0 1.0 2.0 3 4 one
1 3 5.0 NaN NaT 5 two
2 8 NaN 10.0 None 6 three
3 11 12.0 13.0 NaT 7 four
要获取空值的列列表:
>>> df.columns[df.isna().any()].tolist()
['B', 'C', 'D']
列出所有具有 nan 值的列。
>>> df.loc[:, df.isna().any()]
B C D
0 1.0 2.0 3
1 5.0 NaN NaT
2 NaN 10.0 None
3 12.0 13.0 NaT
2)使用DataFrame.isnull()
方法!
要获取空值的列列表,返回类型为布尔值。
>>> df.isnull().any()
A False
B True
C True
D True
E False
F False
dtype: bool
要获取具有值为空的列的列表:
>>> df.columns[df.isnull().any()].tolist()
['B', 'C', 'D']
要选择一个子集 - 所有列至少包含一个NaN
值:
>>> df.loc[:, df.isnull().any()]
B C D
0 1.0 2.0 3
1 5.0 NaN NaT
2 NaN 10.0 None
3 12.0 13.0 NaT
如果要计算每列中的缺失值:
>>> df.isnull().sum()
A 0
B 1
C 1
D 3
E 0
F 0
dtype: int64
或者
>>> df.isnull().sum(axis=0) # axis=0 , across the columns
A 0
B 1
C 1
D 3
E 0
F 0
# >>> df.isnull().sum(axis=1) # across the rows
最后,要获取 DataFrame 中 NaN 和非 NaN 值的总数:
Nan值很重要
>>> df.isnull().sum().sum()
非 NaN 值计数
>>> df.notnull().sum().sum()
推荐阅读
- python-3.x - ValueError: Too large work array required -- 无法在 Linux 服务器上使用标准 32 位 LAPACK 执行计算
- spring-boot - 如何配置我的 NGINX 以允许我的 Spring Boot 应用程序上的 CSRF 保护
- go - 循环包含 map[int]*somepointer 的 interface{}
- jquery - 如何使用 if 语句使菜单子显示继承
- javascript - 是否可以录制 HTML 元素内容的视频?
- fido-u2f - WebAuthn / FIDO2 证明对象和客户端数据 JSON 示例
- c# - 如何在 Visual Studio 中将 Oracle 用户定义类型导出为 C# 类?
- kubernetes - 如何检查使用 Kubernetes 部署的 pod 的容器的内容
- javascript - 如何将数据提供给正在运行的生成器?
- angular8 - Angular 8 中的依赖注入