我有一个df:
date type id
1215 click 1
1215 total 1
1215 total 2
1215 click 3
1215 total 3
...
如果我执行以下操作:
df[['date','type','id']].groupby(['date','type']).agg('count')
我明白了:
id
date type
1215 click 221
total 538
1216 click 264
total 481
1217 click 231
total 358
...
基本上,我可以知道有多少人在页面上点击了一次,以及每天的访问者总数。
我想要做的下一步是:
Add up all the clicks and divide it by all the totals so that I can calculate the click rate.
我不确定如何根据结果数据帧执行此计算。
我想要计算的是:
(221 + 264)/(538 + 481)
生成的groupby df中有很多行,所以我更喜欢以编程方式进行。
答案 0 :(得分:0)
首先,取消堆叠第二级索引:
unstacked = df.groupby(['date','type']).agg('count').unstack()
# id
#type click total
#date
#1215 221 538
现在,将click
除以total
:
unstacked['id','click'] / unstacked['id','total']
#date
#1215 0.4107806691449814
#dtype: float64
如果您想要总比率,请在两列中添加值,然后除以:
agg = unstacked.sum().unstack()
agg['click'] / agg['total']