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

时间:2017-04-13 16:07:15

标签: python pandas

以下是我的数据框的一个小快照:

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值有多少百分比。

1 个答案:

答案 0 :(得分: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的总和除以总数,即{{1}的百分比}值!

您也可以在没有NaN循环的情况下编写它:

for

但是这种情况也会为dg.apply(pd.isnull).mean() 返回一个零值的行。