查找 DataFrame 列中常见的缺失 (nan) 值数量
Find how many common missing (nan) values are in DataFrame columns
我有大约 20 列和 50000 行的 DataFrame。 Pandastable的一小部分如下:
我正在寻找某种方法来计算几列中相同位置(行)中有多少缺失值。
当列数已知时,只需编写如下代码:
((df['HomeRemote'].isnull() & df['CompanySize'].isnull()).sum()
可能是答案,但不幸的是,要比较的列数可能超过 2。我不知道,因为这取决于情况,这就是为什么我寻找“通用”解决方案(工作对于任意数量的列)。
我的想法是找到一种方法将每个 df[col].isnull()
“推”入 FOR 循环(其中 col
是列的名称),但是我在每个之间放置“&”时遇到问题df[col].isnull()
.
也许这里有人可以考虑其他的可能性?
如果有什么地方不够清楚,请告诉我。
尝试:
示例输入:
>>> df
A B C D E
0 NaN 1.0 1.0 1.0 1.0
1 NaN NaN NaN 1.0 1.0
2 1.0 1.0 1.0 NaN 1.0
3 1.0 1.0 1.0 1.0 NaN
4 1.0 1.0 NaN 1.0 1.0
5 NaN 1.0 1.0 1.0 1.0
6 1.0 1.0 1.0 NaN 1.0
7 1.0 NaN 1.0 NaN 1.0
8 1.0 1.0 1.0 1.0 1.0
9 1.0 1.0 1.0 1.0 1.0
A、B、C列中相同位置有多少个缺失值:
>>> df[['A', 'B', 'C']].isnull().all(axis=1).sum()
1
一步一步:
# Find missing values
>>> df[['A', 'B', 'C']].isnull()
A B C
0 True False False
1 True True True # <- HERE
2 False False False
3 False False False
4 False False True
5 True False False
6 False False False
7 False True False
8 False False False
9 False False False
# Reduce
>>> df[['A', 'B', 'C']].isnull().all(axis=1)
0 False
1 True # <- HERE
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 False
dtype: bool
# Reduce again
>>> df[['A', 'B', 'C']].isnull().all(axis=1).sum()
1
我有大约 20 列和 50000 行的 DataFrame。 Pandastable的一小部分如下:
我正在寻找某种方法来计算几列中相同位置(行)中有多少缺失值。 当列数已知时,只需编写如下代码:
((df['HomeRemote'].isnull() & df['CompanySize'].isnull()).sum()
可能是答案,但不幸的是,要比较的列数可能超过 2。我不知道,因为这取决于情况,这就是为什么我寻找“通用”解决方案(工作对于任意数量的列)。
我的想法是找到一种方法将每个 df[col].isnull()
“推”入 FOR 循环(其中 col
是列的名称),但是我在每个之间放置“&”时遇到问题df[col].isnull()
.
也许这里有人可以考虑其他的可能性?
如果有什么地方不够清楚,请告诉我。
尝试:
示例输入:
>>> df
A B C D E
0 NaN 1.0 1.0 1.0 1.0
1 NaN NaN NaN 1.0 1.0
2 1.0 1.0 1.0 NaN 1.0
3 1.0 1.0 1.0 1.0 NaN
4 1.0 1.0 NaN 1.0 1.0
5 NaN 1.0 1.0 1.0 1.0
6 1.0 1.0 1.0 NaN 1.0
7 1.0 NaN 1.0 NaN 1.0
8 1.0 1.0 1.0 1.0 1.0
9 1.0 1.0 1.0 1.0 1.0
A、B、C列中相同位置有多少个缺失值:
>>> df[['A', 'B', 'C']].isnull().all(axis=1).sum()
1
一步一步:
# Find missing values
>>> df[['A', 'B', 'C']].isnull()
A B C
0 True False False
1 True True True # <- HERE
2 False False False
3 False False False
4 False False True
5 True False False
6 False False False
7 False True False
8 False False False
9 False False False
# Reduce
>>> df[['A', 'B', 'C']].isnull().all(axis=1)
0 False
1 True # <- HERE
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 False
dtype: bool
# Reduce again
>>> df[['A', 'B', 'C']].isnull().all(axis=1).sum()
1