失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php计算用户留存 利用Python计算新增用户留存率

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

时间:2020-02-01 08:08:02

相关推荐

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

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

导入需要的库 pandas

import pandas as pd

1、获取数据

#读取创角日志

df_create = pd.read_csv(r'F:\Python\常见统计——留存\创角日志\创角日志.csv')

创角日志

#读取登录日志

df_login = pd.read_csv(r'F:\Python\常见统计——留存\登录日志\登录日志.csv')

登录日志

2、数据预处理

1)修改时间为日期

#去掉app_channel列,并将时间格式改为日期格式

df_create = df_create[['@timestamp','role_id']]

df_create['@timestamp'] = df_create['@timestamp'].str.split(' ').str[0]

修改时间为日期

#去掉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)登录日志与创角日志横向合并

#修改创角日志中时间字段名称为'创角日期’,然后横向合并创角日志和登录日志,使得登录日志基础上相当于新增一列为用户创角日期标记

df_create.rename(columns={'@timestamp':'创角日期'},inplace=True)

df = pd.merge(df_login,df_create)

日志合并

3)新增辅助列记录登录天数

#将日期列改为 日期格式,并新增辅助列用户计算该用户第几天登录

#比如 0天表示 该日期为用户创角日,1天表示该日期为用户第二天登录

df["@timestamp"] = pd.to_datetime(df["@timestamp"])

df["创角日期"] = pd.to_datetime(df["创角日期"])

df['天数'] = df["@timestamp"]-df["创角日期"]

新增辅助列

3、留存率计算

1)使用透视表计算留存数

#使用透视表,计算创角日期对应用户第x天登录的数量(非重复计数)

data = pd.pivot_table(df,values='role_id',index='创角日期',columns='天数',

aggfunc=lambda x:len(x.unique()),

fill_value='').reset_index()

留存计算

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

#将单元格改为数值格式,用于后续计算留存比例

data = data.applymap(lambda x:pd.to_numeric(x,errors='ignore'))

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

#留存率计算

#用 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、索引名称调整并导出数据

#修改结果数据表的列索引名称,然后导出表即可

df.columns=['创角日期','注册玩家数','次日留存率','3日留存率','4日留存率','5日留存率','6日留存率','七日留存率']

列名更换

如果觉得《php计算用户留存 利用Python计算新增用户留存率》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。