题解 | #牛客网连续练习题目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 山东

相关推荐

10-13 22:56
门头沟学院 C++
rt,鼠鼠的浪潮网签明天过期,鼠鼠是山东人,好像自己也能接受。之前的面试大厂基本挂干净了,剩下小米二面后在泡,问了下面试官没有挂,但要泡。还有海信似乎也通过了,不过在深圳,鼠鼠也不是很想去。其它还有一些公司应该陆陆续续还有一些面试,现在有些纠结是直接签了还是再等再面呢?大佬们能不能给鼠鼠提一些意见,万分感谢!!!
牛客78696106...:浪潮可不是开摆,当初我还是开发的时候我组长跟我说他们组有段时间天天1,2点走,早上5点就来,全组肝出来心肌炎,浪潮挣钱省立花可不是说说,当然也看部门,但是浪潮普遍就那dio样,而且你算下时薪就知道不高,没事也是9点半走,不然算你旷工
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
09-17 10:53
四川大学 C++
牛客91242815...:会写标书没有任何卵用,鉴定为横向垃圾导师的受害者
点赞 评论 收藏
分享
评论
30
4
分享

创作者周榜

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