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

以上面透视的结果为例:

逆透视:

相关推荐
瓦香钵钵鸡4 小时前
机器学习通关秘籍|Day 02:特征降维、用KNN算法和朴素贝叶斯实现分类
算法·机器学习·分类·贝叶斯·knn·超参数搜索·交叉验证
Godspeed Zhao4 小时前
自动驾驶中的传感器技术21——Camera(12)
人工智能·机器学习·自动驾驶·图像评测
2401_831896035 小时前
机器学习(13):逻辑回归
人工智能·机器学习·逻辑回归
山烛6 小时前
决策树学习全解析:从理论到实战
人工智能·python·学习·算法·决策树·机器学习
派可数据BI可视化8 小时前
CIO如何规划企业BI分析指标体系 —— 从经营出发到绩效管理
数据仓库·信息可视化·数据挖掘·数据分析·商业智能bi
没有梦想的咸鱼185-1037-16638 小时前
Python科研数据可视化技术
python·机器学习·信息可视化·数据分析
小关会打代码9 小时前
机器学习第三课之逻辑回归(二)LogisticRegression
人工智能·机器学习·逻辑回归
天天找自己9 小时前
机器学习基石:深入解析线性回归
人工智能·机器学习·线性回归
Godspeed Zhao10 小时前
自动驾驶中的传感器技术12——Camera(3)
人工智能·机器学习·自动驾驶
Blossom.11811 小时前
基于深度学习的医学图像分析:使用MobileNet实现医学图像分类
人工智能·深度学习·yolo·机器学习·分类·数据挖掘·迁移学习