You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pandas计算企业按日期维度的累计加权平均评分

pandas 按企业维度计算累计平均评分的正确方案

原有代码问题

  1. 第一份代码报错原因:调用groupby()后得到的是SeriesGroupBy分组对象,未执行聚合操作就直接进行算术运算,类型不匹配触发TypeError。
  2. 第二份代码结果异常原因:分组维度错误,按['firm','date']分组后每个分组仅包含单家企业单日的数据,cumsum()无法跨日期累计,因此得不到全周期的累计平均结果。

完整实现代码

步骤1:预处理得到企业单日聚合指标

首先基于原始数据按企业、日期分组,计算单日平均评分和当日评论量,同时确保日期排序正确:

import pandas as pd

# 假设原始数据集为raw_df,包含firm、date、reviewer、rate四个字段
# 先将日期字段转为datetime类型,保证排序逻辑正确
raw_df['date'] = pd.to_datetime(raw_df['date'])

# 按企业+日期分组聚合
daily_stats = raw_df.groupby(['firm', 'date'], as_index=False).agg(
    daily_avg = ('rate', 'mean'),
    daily_cnt = ('rate', 'count')
)

# 按企业、日期升序排序,确保累计顺序符合时间逻辑
daily_stats = daily_stats.sort_values(['firm', 'date']).reset_index(drop=True)

步骤2:计算单企业累计平均评分

仅按企业维度分组,用加权累计逻辑计算累计平均:

# 加权累计平均 = (单日平均*单日评论数)累计和 / 评论数累计和
daily_stats['cum_avg_rate'] = (
    (daily_stats['daily_avg'] * daily_stats['daily_cnt']).groupby(daily_stats['firm']).cumsum()
    / daily_stats['daily_cnt'].groupby(daily_stats['firm']).cumsum()
)

逻辑说明

累计平均不能直接对单日平均评分做简单累计求平均,因为不同日期的评论量权重不同,必须用加权累计的逻辑计算,才能得到准确的全周期累计平均结果。


内容的提问来源于stack exchange,提问作者Chocolate_coffee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:06:00