使用Pandas按特定列分组时,查找空值百分比

3
以下是我的数据框的小快照:
avg_rating_of_driver    avg_rating_by_driver    bins
0   4.7 5.0 (3, 125]
1   5.0 5.0 NaN
2   4.3 5.0 (2, 3]
3   4.6 4.9 (3, 125]
4   4.4 4.9 (3, 125]
5   3.5 5.0 (1, 2]
6   NaN 4.0 (0, 1]
7   5.0 5.0 (1, 2]
8   4.5 5.0 (1, 2]
9   NaN 5.0 (0, 1]
10  5.0 4.9 (0, 1]
11  4.0 5.0 (2, 3]
12  NaN 5.0 (0, 1]
13  4.0 5.0 NaN
14  NaN 5.0 (0, 1]
15  NaN 5.0 (0, 1]
16  5.0 3.0 (0, 1]
17  3.9 4.8 NaN
18  4.6 4.8 (3, 125]
19  5.0 5.0 NaN
20  NaN 3.0 (0, 1]
21  NaN 5.0 (0, 1]
22  NaN 5.0 NaN
23  5.0 5.0 NaN
24  4.5 4.7 (3, 125]
25  NaN 5.0 (0, 1]

垃圾桶具有以下数值:
 (0,1] (1,2] (2,3] (3,125]

我对按区间分组和查找每个区间中空值百分比的内容感兴趣。

这意味着当按照区间分组时,每行有多少列具有NA值


你可以提供一个简单/小的数据框示例吗?如果箱子本身有NaN值会怎么样? - Mahdi
你是对的。许多容器确实有空值。 - optimus_prime
好的..提供了一个只有几列的缩小数据框架 - optimus_prime
@optimus_prime,Mahdi的回答解决了你的问题吗?如果解决了,请不要忘记接受它;如果没有,请提供期望的输出。 - MaxU - stand with Ukraine
刚刚完成了。抱歉,被卷入其中了。 - optimus_prime
1个回答

2
这个怎么样:
dg = df.groupby('bins')
for col in df.columns:
    if col!='bins':  
       print (dg[col].apply(pd.isnull).mean())

由于dg[col].apply(pd.isnull)是一个由1和0组成的数组,它的平均值等于所有1的总和除以总数,即NaN值的百分比!

你也可以不用for循环来实现:

dg.apply(pd.isnull).mean()

但是这种情况下,bins 的值为零。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接