Python数据分析--统计注册用户

题目

领导赵老丝er给淑芬一张表 data,这张表有两个字段,uid(用户id),reg_time(注册时间)。赵老丝er想知道某一天的新增用户数 和 以及该天过去7日内 每天新增用户总数平均数。

                                                                   (欲哭还有泪的淑芬er)

data表如下:

 Python代码实现:

 方法一:

import pandas as pd,numpy as np
df=pd.read_excel("data.xlsx")
df["reg_time"]=df["reg_time"].astype("datetime64[ns]")
df["reg_time"]=df["reg_time"].dt.date  #2021/12/7  12:34:09   转为  2021/12/7
df1=df.groupby("reg_time")
res=pd.DataFrame(columns=["当日注册数","近七日注册数","近七日注册平均人数"])
for i ,j in df1:
    m=j["uid"].count() #当日注册总人数
    t1=i-pd.Timedelta(6,unit="day") #上周的日期
    df2=df.query("reg_time>=@t1 & reg_time<= @i")["uid"] #筛选上周到当日 uid 的数据
    unique_day=df.query("reg_time>=@t1 & reg_time<= @i").reg_time.nunique() #这一步主要是为了解决 开始时间2015-01-01 减去7天没有数据情况,直接除以7 不准确
    reg_sum=df2.count()
    reg_avg=f"{reg_sum/unique_day:.2f}"
    res.loc[i]=[m,reg_sum,reg_avg]
res

 

方法二:窗口计算rolling 

import pandas as pd,numpy as np
df=pd.read_excel("data.xlsx")
df=df.groupby("reg_time").count()
df[["近七日注册数","近七日注册平均人数"]]=df.rolling("7D").agg([sum,"mean"])
#数据格式调整
df=df.rename(columns={"uid":"当日注册数"})
df.index=df.index.date
df

 

欢迎大家留言讨论,多多分享你的思路,淑芬感激不尽。抱拳了铁子

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值