熊猫如何基于groupby计算结果

时间:2017-01-04 06:35:21

标签: python pandas

我有一个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中有很多行,所以我更喜欢以编程方式进行。

1 个答案:

答案 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']