python - 按天计算跳出率
问题描述
这似乎是一项非常容易的任务,但我已经为此苦苦挣扎了一段时间。
我想计算每天(PageView==1 的会话数)/(会话总数),示例数据如下
session_df
Date/Timestamp Session ID PageViews
2/14/2016 a 1
2/14/2016 b 5
2/14/2016 c 8
3/23/2016 d 1
3/23/2016 e 1
3/23/2016 f 2
和预期的输出:
Date/Timestamp BounceRate
2/14/2016 0.333333333
3/23/2016 0.666666667
我尝试先Bounced?
根据PageViews数量添加一列,然后groupby并计算百分比,然后我需要过滤掉bounced?==False
非常麻烦的。如果有人可以提出更好的方法来做到这一点,那就太好了!
sessions_df['Bounced?'] = sessions_df['PageViews']>1
dt = pd.DatetimeIndex(sessions_df['Date/Timestamp'])
daily_session_bounce_rate = sessions_df.groupby([dt.date, 'Bounced?']).agg({'Session ID':'count'})
daily_session_bounce_rate = daily_session_bounce_rate.groupby(level=0).apply(lambda x: x / float(x.sum()))
daily_session_bounce_rate
# this is my output
Bounced? Session ID
2016-01-01 False 0.459893
True 0.540107
#filter data
daily_session_bounce_rate.loc[daily_session_bounce_rate['Bounced?']==True,['level_0','Session ID']]
解决方案
您不需要定义单独的Bounced?
列。取count
分组的行,PageViews==1
除以该日期的所有行数以获得分数
daily_session_bounce_rate = \
df[df['PageViews']==1].groupby('Date/Timestamp').agg({'Session ID':'count'}) /\
df.groupby('Date/Timestamp').agg({'Session ID':'count'})
推荐阅读
- angular - 如何在 Angular 6/7 的客户端浏览器上立即处理分块的 HTTP Post 响应
- python - 将元素添加到熊猫中的空数据框
- java - 为什么 Class.class 不执行静态代码?
- oauth-2.0 - 在 oauth2 中, expires_in 是以秒还是毫秒为单位?
- excel - 通过数据验证防止空白单元格
- sql-server - dbo.fn_split 函数在分割字符/分隔符之后切断下一个字符
- google-apps-script - 是否有一个脚本可用于搜索两个电子表格之间的重复项并将数据从一张表中的行附加到另一张表中
- android - 如何调试签名与以前安装的版本不匹配错误
- window - 一旦我创建了我的评分量表并翻转屏幕,它们就不会出现。我究竟做错了什么?
- python - 为什么我的 detail_view 不能显示我的 current_url?