Pandas 的透视与逆透视

目录

[1. 透视](#1. 透视)

[1.1 pivot](#1.1 pivot)

[1.2 pivot_table](#1.2 pivot_table)

2.逆透视


1. 透视

透视是长表变宽表。

pivot() 和 pivot_table()两个函数都可以做到,后者可以聚合前者不行。

特性 df.pivot() df.pivot_table()
重复值处理 要求索引和列的组合唯一,否则报错 ValueError 允许重复值,通过聚合函数(如均值、求和等)处理
聚合功能 不支持聚合,仅用于数据重组 支持聚合(默认 aggfunc='mean'
多值列处理 无法处理多值列(需唯一索引-列组合) 自动聚合多值(如求和、均值等)
灵活性 简单场景适用(无重复值) 复杂场景适用(支持重复值和自定义聚合)

示例数据:

python 复制代码
import pandas as pd

data = {
    'Year': [2020, 2020, 2021, 2021, 2020, 2020],
    'Product': ['A', 'A', 'A', 'B', 'B', 'B'],
    'Region': ['East', 'West', 'East', 'West', 'East', 'West'],
    'Sales': [100, 150, 200, 50, 120, 90]
}
df = pd.DataFrame(data)

原表:

1.1 pivot

参数 说明 默认值 示例
index 作为行索引的列名(可以是单个列名或列表) None index='Region'
columns 作为列名的列名(可以是单个列名或列表) None columns='Year'
values 作为填充值的列名(可以是单个列名或列表,选填) None values='Sales'

指定index是转换后的索引,不能重复,如果单独是Year 则会报错:

ValueError: Index contains duplicate entries, cannot reshape

重置一下行索引:

1.2 pivot_table

参数 说明 默认值 示例
index 作为行索引的列名(可以是单个列名或列表) None index='Region'
columns 作为列名的列名(可以是单个列名或列表) None columns='Year'
values 作为填充值的列名(可以是单个列名或列表,选填) None values='Sales'
aggfunc 聚合函数(如 'sum', 'mean', 'count' 或自定义函数) 'mean' aggfunc='sum'
fill_value 填充缺失值的值 None fill_value=0
margins 是否添加总计行/列(True/False False margins=True
margins_name 总计行/列的标签名 'All' margins_name='Total'
dropna 是否删除全为 NaN 的列(True/False True dropna=False

index指定的索引值可以重复,相当于根据该值进行分组,自动进行聚合(默认聚合函数median)例子以地区为索引,以Year为列,求每年的Sales的均值

  1. 自定义聚合函数

同样重置索引:

2.逆透视

melt()函数,指定宽表变长表

参数 说明 默认值 示例
id_vars 保留的标识列(不参与转换,可以是单个列名或列表) None id_vars=['Year', 'Product']
value_vars 需要转换的列(可以是单个列名或列表,默认转换所有非 id_vars 列) None value_vars=['Sales']
var_name 存储原列名的列名(新生成的"变量列") 'variable' var_name='Category'
value_name 存储原列值的列名(新生成的"值列") 'value' value_name='Revenue'
col_level 多层列索引时指定要转换的层级(用于 MultiIndex 列) None col_level=0

以上面透视的结果为例:

逆透视:

相关推荐
code_pgf27 分钟前
端到端自动驾驶 BEV stack
人工智能·机器学习·自动驾驶
Godspeed Zhao1 小时前
Level 4自动驾驶系统设计3——功能与场景3
人工智能·机器学习·自动驾驶
H178535090962 小时前
SolidWorks第四部分_直接实体建模特征9_替换面原理
线性代数·算法·机器学习·3d建模·solidworks
Godspeed Zhao2 小时前
现代智能汽车系统——智驾SoC之框架版图
人工智能·机器学习·自动驾驶·汽车·soc
YangYang9YangYan3 小时前
2026初入职场学习数据分析的价值
学习·数据挖掘·数据分析
有Li3 小时前
PTCMIL:基于提示 token 聚类的全切片图像多实例学习分析文献速递/多模态医学影像最新进展
论文阅读·学习·数据挖掘·聚类·文献·医学生
数睿数据无代码开发3 小时前
打破数据孤岛:深度解析 smardaten 数据连接器核心功能
数据挖掘·无代码
指掀涛澜天下惊4 小时前
AI 基础知识十九 强化学习前言
人工智能·机器学习·强化学习
大模型最新论文速读4 小时前
06-16 · LLM 最新论文速览
论文阅读·人工智能·深度学习·机器学习·自然语言处理
jarreyer6 小时前
【数据分析绘图】excel绘图和bi工具区别
数据挖掘·数据分析·excel