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

以上面透视的结果为例:

逆透视:

相关推荐
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
猎头南楼1 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
高洁011 天前
未来三年,AI 落地的五个确定性判断一
人工智能·深度学习·机器学习·transformer·知识图谱
Omics Pro2 天前
斯坦福Nature+Science|广义虚拟细胞基础大模型
数据库·人工智能·算法·机器学习·自然语言处理
2603_965148112 天前
AI+API选品:下一代智能商务助手雏形已现
java·大数据·数据库·人工智能·数据挖掘
成为深度学习高手2 天前
CrossLinear:即插即用的跨相关嵌入,让线性模型也能用好外生变量
人工智能·python·深度学习·数据挖掘
翰佰尔生物HiOmics云分析2 天前
老年COVID-19重症化风险预测机器学习在线工具技术解析
机器学习·开发·预测·covid-19
一只废狗狗狗狗狗狗狗狗狗2 天前
机器学习:分类问题及损失函数优化
机器学习
workflower2 天前
SSH(Struts+Spring+Hibernate)
人工智能·机器学习·机器人·云计算·无人机
陈年老古董2 天前
微博情感分析项目学习笔记
笔记·python·学习·机器学习·项目