问题描述:
现有牛客网12月每天练习题目情况的数据集nowcoder.csv。包含如下字段(字段之间用逗号分隔):
- user_id:用户id
- question_id:问题编号
- result:运行结果
- date:练习日期
现需要查看用户在某天练习后第二天还会再来练习的留存情况,请计算用户练习的平均次日留存率。
输入描述:
数据集可以直接从当前目录下nowcoder.csv读取。
import sys
for line in sys.stdin:
a = line.split()
print(int(a[0]) + int(a[1]))
import pandas as pd
from datetime import timedelta
nowcoder = pd.read_csv('nowcoder.csv')
#日期
nowcoder['date']=pd.to_datetime(nowcoder['date']).dt.date
#去重
nowcoder.drop_duplicates(subset=['user_id','date'],inplace=True)
#merge实现左右连
new_nowcoder=pd.merge(nowcoder,nowcoder,on='user_id',how='inner',suffixes=['_a','_b'])
#on和how的参数都是带引号的,还可以指定相同列的下标,不指定默认是_x,_y
new_nowcoder['diff']=new_nowcoder['date_b']-new_nowcoder['date_a']
#两个时间之差数据类型就是timedelta类型
result=new_nowcoder[new_nowcoder['diff']==timedelta(days=1)]['diff'].count()/new_nowcoder[new_nowcoder['diff']==timedelta(days=0)]['diff'].count()
print(round(result,2))