用Python轻松玩转数据分析:透视表(Pivot Table)实战指南
摘要:本文介绍如何使用Python的pandas.pivot_table()函数实现Excel透视表功能。通过4个实战案例演示:1)按地区×产品汇总销售额;2)多级分组+多种聚合计算;3)时间维度分析;4)添加总计行/列。文章提供完整可运行的代码片段,无需外部数据文件,适合数据分析人员快速掌握这一高效工具。透视表功能强大,可替代Excel手动操作,实现自动化报表生成和数据分析。
📊 用Python轻松玩转数据分析:透视表(Pivot Table)实战指南
还在Excel里手动拖字段做汇总?
面对成千上万行数据手足无措?
别担心!今天带你用 Python + pandas 轻松实现强大的透视表(Pivot Table)——所有代码复制即用,无需任何外部文件!
🔍 什么是透视表?
透视表是一种将原始数据按不同维度(如地区、产品、时间)进行分组、聚合与重组的工具,常用于快速生成汇总报表。
在 Python 中,我们使用 pandas.pivot_table() 函数,它功能强大、语法直观。
先导入必备库:
import pandas as pd
import 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 100
1 2025-01-01 华南 B 150
2 2025-01-02 华东 A 200
3 2025-01-02 华北 C 300
4 2025-01-03 华南 B 120
5 2025-01-03 华东 C 80
6 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.month
pivot3 = 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默认会自动忽略 NaN,若需保留,可结合dropna=False使用。
📦 结语
透视表不是Excel的专利!
用 Python 的 pandas.pivot_table(),你不仅能实现同样功能,还能自动化、可复用、可扩展。
所有代码无需外部文件,复制即跑!
快去试试吧~
❤️ 如果你觉得有用,请点赞 + 在看 + 转发!
让更多人告别手动汇总,拥抱高效数据分析!
更多推荐
所有评论(0)