按类别划分的频率



我想按类绘制用户名的频率。我的数据是

Class   Username
0   0.0     user1
1   0.0     user2
2   1.0     user3
3   1.0     user3
4   0.0     user4
... ... ...
32  0.0     user34
33  0.0     user1
34  1.0     user32
35  1.0     user32
36  0.0     user3

我做了以下事情:

df.groupby(["Username"]).count().reset_index().sort_values(by=['Class'], ascending=False),但它给了我Class as Frequency(我不想把频率称为Class(,而不是根据Class进行分组。我的预期输出应该是

Freq    Username   Class 
2       user1       0
1       user2       0
2       user4       0 
1       user3       0
... ...
1       user34      1
2       user32      1
2       user3       1

我应该如何得到上面的结果(或类似的结果(?

您可以groupby用户名和类,并获取每个组的大小。一些额外的命令来格式化输出。在...:之外使用您的数据

>>> df.groupby(['Class','Username']).size().reset_index().rename(columns={0:'Freq'})
Class Username  Freq
0    0.0    user1     2
1    0.0    user2     1
2    0.0    user3     1
3    0.0   user34     1
4    0.0    user4     1
5    1.0    user3     2
6    1.0   user32     2

让我们试试

df.value_counts(['Class','Username'])

最新更新