以下是我的数据框的一个小快照:
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值有多少百分比。
答案 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()
返回一个零值的行。