当前位置:首页>python>Python数据分析:透视表(Pivot Table)实战指南

Python数据分析:透视表(Pivot Table)实战指南

  • 2026-10-10 10:04:25
Python数据分析:透视表(Pivot Table)实战指南

📊 用Python轻松玩转数据分析:透视表(Pivot Table)实战指南

还在Excel里手动拖字段做汇总?面对成千上万行数据手足无措?别担心!今天带你用 Python + pandas 轻松实现强大的透视表(Pivot Table)——所有代码复制即用,无需任何外部文件!


🔍 什么是透视表?

透视表是一种将原始数据按不同维度(如地区、产品、时间)进行分组、聚合与重组的工具,常用于快速生成汇总报表。

在 Python 中,我们使用 pandas.pivot_table() 函数,它功能强大、语法直观。

先导入必备库:

import pandas as pdimport numpy as np

🧪 示例1:销售数据按“地区 × 产品”汇总

我们先用代码直接构造一份销售数据:

# 构造示例数据(无需CSV!)data = {'日期': ['2025-01-01', '2025-01-01', '2025-01-02', '2025-01-02','2025-01-03', '2025-01-03', '2025-01-04'],'地区': ['华东', '华南', '华东', '华北', '华南', '华东', '华北'],'产品': ['A', 'B', 'A', 'C', 'B', 'C', 'A'],'销售额': [100, 150, 200, 300, 120, 80, 250]}df = pd.DataFrame(data)print(df)

输出:

        日期 地区 产品  销售额0  2025-01-01 华东   A   1001  2025-01-01 华南   B   1502  2025-01-02 华东   A   2003  2025-01-02 华北   C   3004  2025-01-03 华南   B   1205  2025-01-03 华东   C    806  2025-01-04 华北   A   250
❝

💡 目标:查看每个地区每种产品的总销售额。

pivot1 = pd.pivot_table(    df,    values='销售额',    index='地区',    columns='产品',    aggfunc='sum',    fill_value=0# 将缺失值填为0)print(pivot1)

结果:

产品   A    B    C地区            华北  250    0  300华东  300    0   80华南    0  270    0

🧪 示例2:多级分组 + 多种聚合(平均值 & 订单数)

我们想同时知道:每个地区每种产品的平均销售额和订单数量。

pivot2 = pd.pivot_table(    df,    index=['地区', '产品'],    values='销售额',    aggfunc={'销售额': ['mean', 'count']},    fill_value=0)pivot2.columns = ['平均销售额', '订单数']  # 重命名列更清晰print(pivot2)

输出:

           平均销售额  订单数地区 产品              华北 A        250.0     1     C        300.0     1华东 A        150.0     2     C         80.0     1华南 B        135.0     2

🧪 示例3:加入时间维度 —— 按月份分析趋势

我们将“日期”转为 datetime,并提取“月份”:

df['日期'] = pd.to_datetime(df['日期'])df['月份'] = df['日期'].dt.monthpivot3 = pd.pivot_table(    df,    values='销售额',    index='月份',    columns='地区',    aggfunc='sum',    fill_value=0)print(pivot3)

结果(假设都是1月数据):

地区   华北  华东  华南月份            1     550   380   270

🧪 示例4:添加“总计”行/列(margins 参数)

想一眼看到全局汇总?用 margins=True:

pivot4 = pd.pivot_table(    df,    values='销售额',    index='地区',    columns='产品',    aggfunc='sum',    fill_value=0,    margins=True# 自动添加 All 行和列)print(pivot4)

输出末尾会多出:

  • 行:All → 各产品的总销售额
  • 列:All → 各地区的总销售额
  • 右下角:整体总和!

超实用!


🎯 什么时候该用 pivot_table?

场景
推荐工具
快速生成交叉汇总表
✅ pivot_table
需要二维结构(行×列)
✅ pivot_table
灵活链式操作、长格式输出
⚙️ groupby
自动化日报/周报
✅ pivot_table + Matplotlib
❝

💡 小技巧:pivot_table 默认会自动忽略 NaN,若需保留,可结合 dropna=False 使用。


📦 结语

透视表不是Excel的专利!用 Python 的 pandas.pivot_table(),你不仅能实现同样功能,还能自动化、可复用、可扩展。

所有代码无需外部文件,复制即跑!快去试试吧~


❤️ 如果你觉得有用,请点赞 + 在看 + 转发!让更多人告别手动汇总,拥抱高效数据分析!


最新文章

随机文章