当前位置: 首页 > news >正文

Pandas 的透视与逆透视

目录

1. 透视

1.1 pivot

1.2 pivot_table

2.逆透视


1. 透视

透视是长表变宽表。

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

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

示例数据:

import pandas as pddata = {'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作为行索引的列名(可以是单个列名或列表)Noneindex='Region'
columns作为列名的列名(可以是单个列名或列表)Nonecolumns='Year'
values作为填充值的列名(可以是单个列名或列表,选填)Nonevalues='Sales'

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

ValueError: Index contains duplicate entries, cannot reshape

重置一下行索引:

1.2 pivot_table

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

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

2. 自定义聚合函数

同样重置索引:

2.逆透视

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

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

以上面透视的结果为例:

逆透视:

相关文章:

  • 雅思阅读--句子结构
  • 奇瑞依托汽车产业链,实现服务机器人万台下线
  • 【LeetCode Hot100 | 每日刷题】二叉树的层序遍历
  • 二叉树与堆排序(概念|遍历|实现)
  • [人机交互]理解用户
  • LightGBM算法原理及Python实现
  • 提示词工程:通向AGI时代的人机交互艺术
  • 从零实现基于Transformer的英译汉任务
  • 高并发PHP部署演进:从虚拟机到K8S的DevOps实践优化
  • 机器学习 day6 -线性回归练习
  • 【Part 2安卓原生360°VR播放器开发实战】第三节|实现VR视频播放与时间轴同步控制
  • CentOS虚拟机固定ip以及出现的问题
  • 引用第三方自定义组件——微信小程序学习笔记
  • 【机器学习-线性回归-6】机器学习中的维度:从特征工程到降维艺术
  • DOCX转PDF怎么操作最简单?快速将DOCX转换为专业PDF文档
  • 【计算机网络-应用层】HTTP服务器原理理解以及C++编写
  • (提升)媒体投稿技能
  • 电商双11美妆数据分析
  • Qt/C++面试【速通笔记七】—Qt中为什么new QWidget不需要手动调用delete?
  • IdeaVim配置指南
  • 李云泽:大型保险集团资本补充已经提上日程
  • 新华社:让历史照鉴未来
  • 中南财经政法大学法学院党委副书记易育去世,终年45岁
  • 张求会谈陈寅恪的生前身后事
  • 五一假期上海多个景点人流如织,警方多措并举确保秩序
  • 准85后青海海北州副州长、州公安局局长李贤荣挂职临沂市副市长