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

以上面透视的结果为例:

逆透视:

相关推荐
小鸡吃米…9 分钟前
机器学习 - K - 中心聚类
人工智能·机器学习·聚类
Carl_奕然2 小时前
【数据挖掘】数据挖掘必会技能之:A/B测试
人工智能·python·数据挖掘·数据分析
武子康5 小时前
大数据-209 深度理解逻辑回归(Logistic Regression)与梯度下降优化算法
大数据·后端·机器学习
少林码僧7 小时前
2.29 XGBoost、LightGBM、CatBoost对比:三大梯度提升框架选型指南
人工智能·机器学习·ai·数据挖掘·数据分析·回归
春日见7 小时前
控制算法:PP(纯跟踪)算法
linux·人工智能·驱动开发·算法·机器学习
Yeats_Liao7 小时前
MindSpore开发之路(二十六):系列总结与学习路径展望
人工智能·深度学习·学习·机器学习
gorgeous(๑>؂<๑)7 小时前
【中科院-张启超组-AAAI26】WorldRFT: 用于自动驾驶的带强化微调的潜在世界模型规划
人工智能·机器学习·自动驾驶
Golang编程笔记8 小时前
电商数据分析的未来发展路径
ai·数据挖掘·数据分析
高洁018 小时前
CLIP 的双编码器架构是如何优化图文关联的?(3)
深度学习·算法·机器学习·transformer·知识图谱
lambo mercy9 小时前
食物照片分类实战
人工智能·分类·数据挖掘