Pandas 透视表进阶实现多维度聚合与自定义函数

 更新时间:2026年11月10日 11:31:07   作者:普通网友  
本文深入讲解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 透视表进阶实现多维度聚合与自定义函数的文章就介绍到这了,更多相关Pandas 透视表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python小例子-缩进式编码+算术运算符+定义与赋值

    python小例子-缩进式编码+算术运算符+定义与赋值

    这篇文章主要给大家分享一些python学习小例子,内容包括缩进式编码风格、算术运算符、定义与赋值,需要的小伙伴可以参考一下
    2022-04-04
  • jupyter notebook 参数传递给shell命令行实例

    jupyter notebook 参数传递给shell命令行实例

    这篇文章主要介绍了jupyter notebook 参数传递给shell命令行实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python3 sys模块全面学习教程

    Python3 sys模块全面学习教程

    本文介绍了Python标准库中的sys模块,详细讲解了其核心功能,通过实例展示了如何综合运用这些功能,并提供了注意事项和常见问题的解决方法,帮助读者更好地理解和使用sys模块,感兴趣的朋友跟随小编一起看看吧
    2026-04-04
  • Django框架验证码用法实例分析

    Django框架验证码用法实例分析

    这篇文章主要介绍了Django框架验证码用法,结合实例形式分析了Python Django框架验证码的功能、实现方法及相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • Python中如何使用pypandoc进行格式转换操作

    Python中如何使用pypandoc进行格式转换操作

    这篇文章主要介绍了Python中如何使用pypandoc进行格式转换操作,pypandoc是一个强大的文档转换工具,它可以将各种标记语言转换为不同的格式,支持多种输入和输出格式,并允许用户添加自定义样式、模板和过滤器
    2021-06-06
  • python-leetcode求区间[M,N]内的所有素数的个数实现方式

    python-leetcode求区间[M,N]内的所有素数的个数实现方式

    这篇文章主要介绍了python-leetcode求区间[M,N]内的所有素数的个数实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python内置模块functools函数工具使用

    Python内置模块functools函数工具使用

    Python的functools模块提供了强大的函数处理工具集,本文就来介绍一下Python内置模块functools函数工具使用,感兴趣的可以了解一下
    2026-09-09
  • Python实现在线程里运行scrapy的方法

    Python实现在线程里运行scrapy的方法

    这篇文章主要介绍了Python实现在线程里运行scrapy的方法,涉及Python线程操作的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • python 三元运算符使用解析

    python 三元运算符使用解析

    这篇文章主要介绍了python 三元运算符使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python tkinter进度条控件(Progressbar)的使用

    Python tkinter进度条控件(Progressbar)的使用

    这篇文章主要介绍了Python tkinter进度条控件(Progressbar)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论