题解 | #牛客网用户练习的平均次日留存率#
牛客网用户练习的平均次日留存率
https://www.nowcoder.com/practice/1f9e2b9be96b4b27a2476f8f12c5d29f
# tips:对比使用copy再赋值和直接赋值的区别
# 平均次日留存率=某天练习之后第二天还会回来练习的用户数/全部的用户数
import pandas as pd
df=pd.read_csv("./nowcoder.csv",sep=",",parse_dates=["date"])
# # 等价于如下两行代码
# df=pd.read_csv("./nowcoder.csv",sep=",")
# df["date"]=pd.to_datetime(df["date"])
df["date"]=df["date"].dt.date # date项保留年月日信息
# 使用copy函数,保证原始表df不会随着对df1和df2的数据操作而发生改动,防止出现错误
df1=df.copy()
df2=df.copy()
df2["date"]=df1["date"]+pd.Timedelta(1,unit='d')
temp=pd.merge(df1,df2,on=["user_id","date"],how='inner') # temp表中的数据都是第一天练习之后,第二天还来的
num_still=temp["user_id"].count()
num_all=df1["user_id"].count()
res=round((num_still/num_all),2)
print(res)

