前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用Python计算新增用户留存率

利用Python计算新增用户留存率

作者头像
可以叫我才哥
发布2021-08-05 11:11:53
1.4K0
发布2021-08-05 11:11:53
举报
文章被收录于专栏:可以叫我才哥

前面我们介绍过《利用Python统计连续登录N天或以上用户》,这次我们聊聊怎么用python计算新增用户留存率。

走你~

原始数据:创角日志和登录日志

导入需要的库 pandas

代码语言:javascript
复制
import pandas as pd
1、获取数据
代码语言:javascript
复制
#读取创角日志
df_create = pd.read_csv(r'F:\Python\常见统计——留存\创角日志\创角日志.csv')
代码语言:javascript
复制
#读取登录日志
df_login = pd.read_csv(r'F:\Python\常见统计——留存\登录日志\登录日志.csv')
2、数据预处理
1)修改时间为日期
代码语言:javascript
复制
#去掉app_channel列,并将时间格式改为日期格式
df_create = df_create[['@timestamp','role_id']]
df_create['@timestamp'] = df_create['@timestamp'].str.split(' ').str[0]
代码语言:javascript
复制
#去掉app_channel列,并将时间格式改为日期格式
df_login = df_login[['@timestamp','role_id']]
df_login['@timestamp'] = df_login['@timestamp'].str.split(' ').str[0]
#因为用户在同一天存在多条登录日志,这里再进行去重处理
df_login = df_login.drop_duplicates()
2)登录日志与创角日志横向合并
代码语言:javascript
复制
#修改创角日志中时间字段名称为'创角日期’,然后横向合并创角日志和登录日志,使得登录日志基础上相当于新增一列为用户创角日期标记
df_create.rename(columns={'@timestamp':'创角日期'},inplace=True)
df = pd.merge(df_login,df_create)
3)新增辅助列记录登录天数
代码语言:javascript
复制
#将日期列改为 日期格式,并新增辅助列用户计算该用户第几天登录
#比如 0天表示 该日期为用户创角日,1天表示该日期为用户第二天登录
df["@timestamp"] = pd.to_datetime(df["@timestamp"])
df["创角日期"] = pd.to_datetime(df["创角日期"])
df['天数'] = df["@timestamp"]-df["创角日期"]
3、留存率计算
1)使用透视表计算留存数
代码语言:javascript
复制
#使用透视表,计算创角日期对应用户第x天登录的数量(非重复计数)
data = pd.pivot_table(df,values='role_id',index='创角日期',columns='天数',
                      aggfunc=lambda x:len(x.unique()),
                     fill_value='').reset_index()

2)修改单元格类型为数值

代码语言:javascript
复制
#将单元格改为数值格式,用于后续计算留存比例
data = data.applymap(lambda x:pd.to_numeric(x,errors='ignore'))

3)留存率计算(两列相除)

代码语言:javascript
复制
#留存率计算
#用 1 days 列 除以  0 days为次日留存率,依次类推
#我们用for循环语句可以实现该算法
create_index = data.columns
df = data.iloc[:,[0,1]]
for i in range(2,8):#这里我们只算到7日留存率
    s= data[create_index[i]]/data[create_index[1]]
    df = pd.concat([df,s],axis=1)
4、索引名称调整并导出数据
代码语言:javascript
复制
#修改结果数据表的列索引名称,然后导出表即可
df.columns=['创角日期','注册玩家数','次日留存率','3日留存率','4日留存率','5日留存率','6日留存率','七日留存率']
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 可以叫我才哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、获取数据
  • 2、数据预处理
    • 1)修改时间为日期
      • 2)登录日志与创角日志横向合并
        • 3)新增辅助列记录登录天数
        • 3、留存率计算
          • 1)使用透视表计算留存数
          • 4、索引名称调整并导出数据
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档