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

以上面透视的结果为例:

逆透视:

相关推荐
毕竟是shy哥6 小时前
计算YOLO数据集中每个类的目标数
算法·yolo·机器学习
VL——MOESR7 小时前
【具身智能】VLA论文阅读随笔
论文阅读·人工智能·机器学习·具身智能·vla
方银的技术分享8 小时前
十五、AI训练师:机器学习-过拟合与欠拟合
人工智能·深度学习·机器学习
罗西的思考8 小时前
【OpenClaw具身硬件】ZeroClaw 源码阅读笔记(3)--- RAG
人工智能·算法·机器学习
工业HMI实战笔记8 小时前
数据可视化实战:趋势图、仪表盘、热力图的正确用法
信息可视化·数据挖掘·数据分析
戴西软件10 小时前
戴西iDWS.3DViz Suite数据轻量化可视化软件,从传统桌面软件向云端协同的重大突破
大数据·运维·网络·人工智能·机器学习·3d
今天AI了吗14 小时前
大模型技术全景(一):AI、机器学习、深度学习,三者的关系到底是什么?一文搞懂
数据库·人工智能·python·sql·深度学习·机器学习·rust
leoZ23115 小时前
AI+前端提效-09 AI赋能前端测试:单元测试、E2E测试自动生成,提升覆盖率
前端·人工智能·opencv·目标检测·数据挖掘·单元测试·语音识别
悟天特斯17 小时前
智慧楼宇AI节能系统:基于机器学习的建筑能耗优化实践
人工智能·物联网·机器学习
克里斯蒂亚诺更新17 小时前
从XGBoost角度理解为什么要使用机器学习
人工智能·机器学习