一文读懂 pd.pivot_table 函数(附Demo)

前言

从实战场景出发
在这里插入图片描述

1. 基本知识

pd.pivot_table 是 Pandas 中一个强大的数据透视表工具,用于重新排列和汇总数据表,通过聚合函数对数据进行分组统计,生成一个新的数据框,非常适合处理结构化数据分析

基本知识以表格形式进行呈现:

项目内容
作用将长格式数据重新排列为宽格式数据,并进行聚合统计
函数签名pd.pivot_table(data, values=None, index=None, columns=None, aggfunc=‘mean’, fill_value=None)
常用参数
data必需,待处理的数据框
values可选,需要聚合的列,默认为所有数值列
index必需,透视表的行索引
columns必需,透视表的列索引
aggfunc可选,聚合函数,默认为 mean,也可选 sum、count 等
fill_value可选,替代缺失值的填充值

应用场景

场景描述
数据汇总与统计按行和列分类后对特定值进行统计(如求和、平均值等)
数据透视与转置将长格式表转换为宽格式表,更直观地显示分组结果
缺失值填充使用 fill_value 替代缺失值,便于后续数据分析
可视化前的数据准备生成适合热图或其他图表的数据格式

优缺点

优点缺点
支持多种聚合方式,灵活性高大型数据框透视时性能较低,需优化数据规模
使用简单直观,参数明确如果数据中有重复行,透视表可能难以识别原因并返回错误结果
支持 fill_value 填充缺失值当 index 和 columns 层次复杂时,生成的表可能过于宽广,难以直接分析

2. Demo

场景:分析设备运行数据,统计每种类型设备的平均运行时间

假设原始数据为:

EquipmentNoEquipmentTypekey value
A1Type1RunTime
A1Type1DownTime
A2Type1RunTime
A2Type1DownTime
B1Type2RunTime
B1Type2DownTime

使用 pd.pivot_table 生成透视表

import pandas as pd

# 原始数据
data = {
    "EquipmentNo": ["A1", "A1", "A2", "A2", "B1", "B1"],
    "EquipmentType": ["Type1", "Type1", "Type1", "Type1", "Type2", "Type2"],
    "key": ["RunTime", "DownTime", "RunTime", "DownTime", "RunTime", "DownTime"],
    "value": [120, 10, 100, 20, 200, 30],
}

df = pd.DataFrame(data)

# 使用 pd.pivot_table 透视表
pivot_table = pd.pivot_table(
    df,
    index="EquipmentNo",   # 行:设备编号
    columns="key",         # 列:统计维度
    values="value",        # 值:运行数据
    aggfunc="mean",        # 聚合方式:取平均值
    fill_value=0           # 填充缺失值
).reset_index()

print(pivot_table)

截图如下:
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农研究僧

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值