我想按类绘制用户名的频率。我的数据是
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'])