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

Pandas中按Area Team Name单独汇总6个月数据的异常问题排查

问题分析与解决方案

你现在遇到的核心问题是透视表没有按Area Team Name分组,反而聚合了全量数据,根源出在两个细节上:

  • 只把Month设为了透视表的索引,没将Area Team Name纳入分组维度,导致所有团队的数据被合并计算
  • 错误地把Area Team Name放到了values参数里——这个列是分类文本,用np.sum聚合完全没有意义,它应该是你的分组依据

修正后的透视表代码

如果想要先按团队分组、再按月份展示成本总和,把Area Team Name和Month一起设为索引即可:

import pandas as pd
import numpy as np

pivoted_df = pd.pivot_table(
    sample(),
    index=["Area Team Name", "Month"],  # 同时按团队和月份分组
    values=["Actual Cost"],             # 只聚合数值型的成本列
    aggfunc=np.sum
)
print(pivoted_df)

输出会是层级化的结果,清晰展示每个团队每月的成本总和:

Actual Cost
Area Team Name  Month
Team Alpha      JULY        123456.78
                AUGUST      234567.89
Team Beta       JULY        345678.90
                AUGUST      456789.01

如果你希望把每个团队作为单独列、横向对比每月成本,可以把Area Team Name放到columns参数里:

pivoted_df = pd.pivot_table(
    sample(),
    index="Month",
    columns="Area Team Name",
    values=["Actual Cost"],
    aggfunc=np.sum,
    fill_value=0  # 可选:把无数据的单元格填充为0
)
print(pivoted_df)

额外:为每个团队单独构建线性回归

如果要基于分组数据为每个团队训练线性回归模型,用groupby会更直接(先把月份转换成数值,因为模型需要数值特征):

from sklearn.linear_model import LinearRegression

# 先处理数据:把月份映射为连续数值
df = sample().copy()
month_mapping = {'JULY':1, 'AUGUST':2, 'SEPTEMBER':3,
                 'OCTOBER':4, 'NOVEMBER':5, 'DECEMBER':6}
df['Month_Num'] = df['Month'].map(month_mapping)

# 按团队分组,逐个训练模型
team_models = {}
for team_name, team_data in df.groupby('Area Team Name'):
    X = team_data[['Month_Num']]
    y = team_data['Actual Cost']
    model = LinearRegression()
    model.fit(X, y)
    team_models[team_name] = model

# 示例:查看某个团队的模型参数
# print(team_models['Team Alpha'].coef_, team_models['Team Alpha'].intercept_)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:02:52