首页
看点啥
插画图片
首页 科技看点 Pandas 透视表进阶实现方式多维度聚合与自定义函数实用指南

Pandas 透视表进阶实现方式多维度聚合与自定义函数实用指南

2026-11-11 0

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Pandas 透视表进阶实现方法多维度聚合与自定义函数”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

透视表(Pivot Table)是数据分析的核心工具,进阶应用需掌握多维度聚合和自定义函数技巧。以下借助示例逐步演示:

1. 多维度聚合

在行/列方向叠加多个维度,实现立体分析:

import pandas as pd
import numpy as np

# 创建示例数据
data = {
    '日期': pd.date_range('2023-01-01', periods=6),
    '产品': ['A', 'B', 'A', 'C', 'B', 'C'],
    '区域': ['东区', '西区', '东区', '西区', '东区', '西区'],
    '销售额': [120, 150, 90, 200, 180, 170],
    '成本': [80, 100, 60, 130, 110, 120]
}
df = pd.DataFrame(data)

# 多维度透视:行=日期+产品,列=区域,聚合销售额和利润
pivot = pd.pivot_table(
    df,
    index=['日期', '产品'], # 行方向双维度
    columns='区域', # 列方向维度
    values=['销售额', '成本'],
    aggfunc={'销售额': [np.sum, np.mean], '成本': np.sum} # 多指标聚合
)

输出结构示例:

区域 东区 西区
销售额 成本 销售额 成本
sum mean sum sum mean sum
日期 产品
2023-01-01 A 120 120 80 - - -
2023-01-02 B 150 150 100 - - -
...

2. 自定义聚合函数

借助aggfunc实现个性化计算:

案例1:计算利润率

def profit_margin(series):
    """自定义利润率函数:(销售额-成本)/销售额"""
    return (series['销售额'] - series['成本']).sum() / series['销售额'].sum()

# 应用自定义函数
result = pd.pivot_table(
    df,
    index='产品',
    values=['销售额', '成本'],
    aggfunc=profit_margin # 传入自定义函数
)

案例2:分位数分析

# 定义分位数聚合器
quantile_25 = lambda x: x.quantile(0.25)
quantile_75 = lambda x: x.quantile(0.75)

pivot_quantile = pd.pivot_table(
    df,
    index='区域',
    values='销售额',
    aggfunc=[np.mean, quantile_25, quantile_75] # 组合内置与自定义
)

3. 高级技巧

  • 多层列名处理:pivot.columns = ['_'.join(col) for col in pivot.columns]
  • 缺失值填充:添加参数fill_value=0
  • 边际汇总:添加参数margins=True生成总计行
  • 多函数应用:对同一字段应用多个聚合函数:
    aggfunc={'销售额': [np.sum, np.std], '成本': [np.mean, max]}

数学表达式说明

在分析中常涉及统计指标,比如:

  • 均值计算:$\mu = \frac{1}{n}\sum_{i=1}^{n} x_i$
  • 利润率公式:$r = \frac{S - C}{S}$ ($S$为销售额,$C$为成本)
  • 分位数定义:$Q_p$ 满足 $P(X \leq Q_p) = p$

注意事项:自定义函数需得到标量值;多维度透视时注意层次索引的切片操作(建议采用.xs()方法)。借助灵活组合这些功能,可构建复杂业务分析模型。

落到代码里,总的来说,Pandas 透视表多维度聚合适合结合实际项目边做边理解。先抓住核心思路,再逐步补上细节和边界处理,最后效果会更稳定,也更容易复用。

喜欢(0)

上一篇

一文盘点Codex中最值得安装的11个Skills实用指南

一文盘点Codex中最值得安装的11个Skills实用指南

下一篇

mysql批量更新语句简单代码示例实用指南

猜你喜欢