如何用Pandas按ID和周分组计算日均网站访问次数均值?
解决方案
方法1:基于已生成的每日访问次数计算
你已经通过df.groupby(['ID','week','date']).agg({'date':['count']})得到了每日访问次数,接下来可以直接在这个结果上继续处理:
- 先扁平化多级列名并重置索引,避免后续操作的索引困扰:
daily_counts = df.groupby(['ID','week','date']).agg({'date':['count']}) # 把多级列名改成单级 daily_counts.columns = ['daily_visits'] daily_counts = daily_counts.reset_index()
- 按
ID和week分组,计算每日访问次数的均值,得到每周的日均访问次数:
weekly_avg_daily = daily_counts.groupby(['ID','week'])['daily_visits'].mean().reset_index()
方法2:一步到位直接从原始DataFrame计算
可以省略中间生成每日结果的步骤,用链式调用直接完成计算,效率更高:
weekly_avg_daily = df.groupby(['ID','week','date'])['date'].count() \ .groupby(['ID','week']).mean() \ .reset_index(name='avg_daily_visits')
结果说明
最终的weekly_avg_daily是每个用户(ID)每周(week)一行的结构,其中avg_daily_visits(或你自定义的列名)代表该用户当周的日均访问次数——即该用户当周所有访问日期的单日访问次数的平均值,未访问的日期不会参与计算。
内容的提问来源于stack exchange,提问作者kri
相关产品推荐
相关产品推荐

