题解 | #牛客网用户练习的平均次日留存率#

牛客网用户练习的平均次日留存率

https://www.nowcoder.com/practice/1f9e2b9be96b4b27a2476f8f12c5d29f

import pandas as pd 
df = pd.read_csv('nowcoder.csv',sep=',')
df['date'] = pd.to_datetime(df['date']).dt.date
df1 = df.copy()
df1['date'] = df1['date'] + pd.Timedelta(days=1)
total = pd.merge(df,df1,how='inner',on=['user_id','date'])
n = total['user_id'].count()
n1 = df['user_id'].count()
print(round(n/n1,2))

//我是分界线,下面是大佬写的详细解答

import pandas as pd
# 读文件
df = pd.read_csv('nowcoder.csv', sep=',')
# 转换日期格式
df['date'] = pd.to_datetime(df['date']).dt.date # .dt.date得到精确到天的日期
# 拷贝原表于新表df1
df1 = df.copy()
# 将新表的时间+1天(往后推一天)
df1['date'] = df1['date'] + pd.Timedelta(days=1)
# 将原表df和新表合并得到新表total,内连接取交集,键/连接字段 是 userid和date
total = pd.merge(df,df1, how='inner', on=['user_id','date'])
# 统计合并后剩下的第二天还会再来练习的人数n
n = total['user_id'].count()
# 统计原表中的用户数n1
n1 = df['user_id'].count()
# 计算次日留存率
print(round(n / n1 ,2))

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务