当前位置: 首页 > 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

以上面透视的结果为例:

逆透视:

http://www.xdnf.cn/news/313831.html

相关文章:

  • Marin说PCB之POC电路layout设计仿真案例---08
  • 内存分配的区域
  • Python 10天冲刺 《元编程(Meta-programming)》
  • 生态学领域期刊推荐
  • 26.2Linux中SPI的驱动实验(编程)_csdn
  • SUPER-VLAN基础配置
  • 社区、工地、停车场…视频桩如何实现“全场景适配”?
  • 项目三 - 任务3:学生多态方式喂养宠物
  • 卡特兰数--
  • 高等数学第五章---定积分(§5.2微积分基本定理)
  • 通过Config批量注入对象到Spring IoC容器
  • 开源免费视频在线提取工具 MediaGo 介绍
  • 浅析MySQL 的 **触发器(Trigger)** 和 **存储过程(Stored Procedure)原理及优化建议
  • 核函数(Kernel function)
  • GPS定位方案
  • 微机控制技术复习【一】
  • 汇总区间(简单)
  • AI 数字短视频数字人源码开发实用技巧分享​
  • HCIP【STP、RSTP、MSTP协议(详解)】
  • Linux中为某个进程临时指定tmp目录
  • Go语言——string、数组、切片以及map
  • 今年我国已发生三级以上地震318次
  • 从创业踩雷到依法解债:湖北理元理律师事务所的危机拆解逻辑
  • 继电器负载知识
  • 小刚说C语言刷题—1044 -找出最经济型的包装箱型号
  • win11 怎样把D盘空间分给C盘一点
  • day18-API(常见API,对象克隆)
  • 将nginx设置成自启动,防止每次开机后都要自己手动启动
  • nginx服务--基础
  • C语言数组和函数的实践———扫雷游戏