题解 | #牛客网连续练习题目3天及以上的用户#

牛客网连续练习题目3天及以上的用户

https://www.nowcoder.com/practice/4d77709a0ea2482282ee86852fe32f06

本人数据分析方向,完全按照SQL次日留存率的步骤来求解。 看到很多大佬用循环写,再次感叹,数据分析和计算机算法两种类型的思路的不同。
很多小伙伴们问rank的作用,其实就是窗口函数,只不过这里加了一层to_datetime(),便于下面时间类型的两列做差计算。
另外倒数第二句的意思就是先找到每个人的连续天数,然后在此基础上找最大值。
(之前代码有点bug,少写了一个date2(年-月-日,为了计算cha,直接用date应该也可以),现在已纠正。)

import pandas as pd
from datetime import timedelta
nowcoder = pd.read_csv('nowcoder.csv')
# 先转时间
nowcoder['date'] = pd.to_datetime(nowcoder['date'])
# 先提取年月
nowcoder['date1'] = nowcoder['date'].dt.strftime("%Y-%m")
data = nowcoder[nowcoder['date1'] == '2021-12']
# 再获取年月日
data['date2'] = pd.to_datetime(data['date'].dt.date)
# 根据日排序
data['rk'] = pd.to_timedelta(data.groupby(['user_id']).date2.rank(),unit='d')
# 作差并获取出现次数最多的值,SQL的思路
data['cha'] = data['date2']-data['rk']
data1 = data.groupby(['user_id','cha']).count().groupby('user_id').rk.max()
print(data1[data1>=3])

全部评论
大佬,后面的.groupby('user_id').rk.max()是什么意思?为什么是对rk求最大值,两个groupby调用是啥原理?求大佬解答~
1 回复 分享
发布于 2023-09-25 13:58 湖北
一旦有重复排名结果就不正确了
1 回复 分享
发布于 2023-04-19 10:56 浙江
怎么判断日期是连续的
点赞 回复 分享
发布于 2023-04-24 18:46 江苏
没去重,有重复数据时是否会影响排名数值?
点赞 回复 分享
发布于 2023-03-27 08:53 山东

相关推荐

LuvSran:是人我吃。老师就是学校呆久了,就业方面啥都不懂,还自以为是为了我们就业好。我学校就一破双非,计科入行率10%都没有,某老师还天天点名,说是出勤率抬头率前排率高了,华为什么的大厂就会来,我们就是不好好上课才没有厂来招。太搞笑了
点赞 评论 收藏
分享
牛客48826091...:哥们胸肌挺好看
点赞 评论 收藏
分享
评论
30
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务