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

Python按类别计算每行数据相对类别均值高低百分比的实现方法

实现方案

直接使用pandas的groupby+transform方法即可完成计算,无需单独存储类别均值再做表关联匹配,完整代码如下:

import pandas as pd
import numpy as np

# 加载数据集
X = pd.read_csv('test.csv')

# 计算每个类别的Totals均值,并映射到原数据集每一行
X['category_total_mean'] = X.groupby('Category')['Totals'].transform('mean')

# 计算每行相对所属类别均值的高低百分比
# 结果为正代表高于类别均值,结果为负代表低于类别均值,单位为%
X['relative_to_category_pct'] = (X['Totals'] - X['category_total_mean']) / X['category_total_mean'] * 100

# 可选:删除不需要的中间均值列
# X.drop('category_total_mean', axis=1, inplace=True)

说明

  • 占比计算逻辑为:(当前行Totals值 - 所属类别Totals均值) ÷ 所属类别Totals均值 × 100,比如计算结果为15.3代表该行数据比所属类别均值高15.3%,计算结果为-7.2代表比所属类别均值低7.2%
  • 若你的数据中存在某类别所有Totals值的均值为0的情况,会触发除零错误,可改用以下带异常判断的写法,将异常结果设为空值:
X['relative_to_category_pct'] = X.apply(
    lambda row: (row['Totals'] - row['category_total_mean']) / row['category_total_mean'] * 100 
    if row['category_total_mean'] != 0 
    else np.nan, 
    axis=1
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:54:02