小编J. *_*aul的帖子

Pandas groupby将非空值计为百分比

鉴于此数据集,我想计算缺少的NaN值:

df = pd.DataFrame({'A' : [1, np.nan, 2 , 55, 6, np.nan, -17, np.nan],
                   'Team' : ['one', 'one', 'two', 'three','two', 'two', 'one', 'three'],
                   'C' : [4, 14, 3 , 8, 8, 7, np.nan, 11],
                   'D' : [np.nan, np.nan, -12 , 12, 12, -12, np.nan, np.nan]})
Run Code Online (Sandbox Code Playgroud)

具体来说,我想在"团队"列中计算每组的百分比(以百分比表示).我可以通过这个获得原始计数:

df.groupby('Team').count()
Run Code Online (Sandbox Code Playgroud)

这将获得非缺失数字的数量.我想要做的是创建一个百分比,因此我不会得到原始数字,而是将其作为每个组中总条目的百分比(我不知道这些组的大小都是不均匀的).我尝试过使用.agg(),但我似乎无法得到我想要的东西.我怎样才能做到这一点?

python pandas

7
推荐指数
1
解决办法
4849
查看次数

使用dplyr计算group_by中的子组

我一直试图对数据帧进行一些计数.要点是按一个变量分组,然后根据第二个变量进一步分组.从这里我想计算每个组的子组的大小.示例代码是这样的:

set.seed(123456)
df <- data.frame(User = c(rep("A", 5), rep("B", 4), rep("C", 6)), 
                 Rank = c(rpois(5,1), rpois(4,2), rpois(6,3)))

#This results in an error
df %>% group_by(User) %>% group_by(Rank) %>% summarize(Res = n_groups())
Run Code Online (Sandbox Code Playgroud)

所以我想要的是"用户A"有3个,"用户B"有4个,"用户C"有5个.换句话说,数据帧df最终看起来像:

   User Rank Result
1     A    2      3
2     A    2      3
3     A    1      3
4     A    0      3
5     A    0      3
6     B    1      4
7     B    2      4
8     B    0      4
9     B    6      4
10    C    1      5
11    C    4      5
12 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

1
推荐指数
1
解决办法
3057
查看次数

标签 统计

dplyr ×1

pandas ×1

python ×1

r ×1