pandas.pivot_table详解

想必大家都用过excel, 肯定会熟悉excel中的透视表, python中pandas.pivot就是在DataFrame表格中实现这个操作, 什么? 连透视表都不知道? 没事,往下看就知道了

目录

开始使用pivot_table

index参数

values

columns

 fill_value

aggfunc

margin


开始使用pivot_table

整个最简单的天气数据, 有日期, 天气, 最低温, 最高温, 空气指标五项数据

日期,天气,最低温,最高温,空气指标
2021-12-28,阵雪,-23,-15,优
2021-12-29,阴,-24,-16,优
2021-12-30,晴,-22,-16,良
2021-12-31,阵雪,-19,-10,良
2021-01-01,多云,-20,-13,中
2021-01-02,多云,-22,-12,中
2021-01-03,晴,-20,-13,优
2021-01-04,多云,-19,-8,良
2021-01-05,晴,-20,-16,良
2021-01-06,多云,-20,-10,中
2021-01-07,晴,-20,-7,中
2021-01-08,阴,-22,-13,中
2021-01-09,阴,-21,-11,优

先用一个DataFrame读出来,并打印(我比较喜欢冰淇淋ic)

from icecream import ic
import pandas as pd
import numpy as np

weather = pd.read_csv("../resources/weather.csv", date_parser=True)
ic(weather)

平平无奇的表格数据罢了

index参数

现在使用一下pivot_table函数, 加一个属性index=["天气"](当然也可以加两个)

wide_table = (weather.pivot_table(
    index=["天气"], # 透视表行索引为天气, 按不同的天气统计其他值
))
ic(wide_table)

这时显示的数据是各种"天气"的平均值(平均最高温, 平均最低温...,空气指标不是数字当然没有平均值)

values

如果再使用一个参数values=["最高温"], 默认显示的是除index的所有值, 加入values之后就只显示values

wide_table = (weather.pivot_table(
    index=["天气"], # 透视表行索引为天气, 按不同的天气统计其他值
    values=["最高温"], # 要展示的值(除了index)
))
ic(wide_table)

只显示了"最高温" 

columns

只有index说明我们只在行这边统计, 加上columns可以在列上也统计平均值

例如加上columns=["空气指标"]

wide_table = (weather.pivot_table(
    index=["天气"], # 透视表行索引为天气, 按不同的天气统计其他值
    columns=["空气指标"], # 透视表列索引
    values=["最高温"], # 要展示的值(除了index)
))
ic(wide_table)

这样列上统计了不同"空气指标"的数据平均值 (但是总感觉不是很好看......)

 fill_value

fill_value 就是用一个什么值来代替表格中出现的空值, 很简单理解

aggfunc

本来我们一直都是在统计平均值(默认),在aggfunc可以统计其他的指标(如中位数, 总和等)

wide_table = (weather.pivot_table(
    index=["天气"], # 透视表行索引为天气, 按不同的天气统计其他值
    values=["最高温"], # 要展示的值(除了index)
    fill_value=0, # 填补空值
    aggfunc=[np.median, np.mean], # aggfunc默认统计的是平均值(一个值),也可以让他统计中位数等等
))
ic(wide_table)

 这时不仅统计了平均值, 还统计了中位数

margin

值是布尔值, 是否在边缘统计全部的aggfunc(默认是平均值)

wide_table = (weather.pivot_table(
    index=["天气"], # 透视表行索引为天气, 按不同的天气统计其他值
    values=["最高温"], # 要展示的值(除了index)
    fill_value=0, # 填补空值
    aggfunc=[np.median, np.mean], # aggfunc默认统计的是平均值(一个值),也可以让他统计中位数等等
    margins=True
))
ic(wide_table)

多出一行All, 统计的是全部的平均值(中位数)

 喜欢的朋友点个赞吧[咧嘴笑]

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Pandaspivot_table 是一个用于创建二维表格的函数,它可以根据一个或多个键将数据分组,并计算每组数据的某个值。它可以自动根据键分组数据,并计算每组数据的某个值,例如平均值、总和、计数等。pivot_table还支持自定义聚合函数,允许更灵活的数据处理。 ### 回答2: pandaspivot_table是一种用于数据透视的功能。它可以将一个DataFrame中的数据按照给定的索引、列和value进行重排和聚合,从而创建一个新的DataFrame。 pivot_table函数的常见参数包括index,用于指定要作为新表索引的列;columns,用于指定要作为新表列的列;values,用于指定要聚合的列;aggfunc,用于指定聚合函数。pivot_table还有其他可选参数,如fill_value、margins等。 具体而言,pivot_table会将上述参数指定的列的值作为新表的索引和列,并在新表中聚合指定的数据列的值。例如,如果我们有一个包含销售数据的DataFrame,其中包含销售人员、产品、销售额和销售数量等信息,则可以使用pivot_table来生成一个新的表格,其中行为销售人员,列为产品,值为销售额或销售数量,以便更好地了解不同销售人员销售不同产品的情况。 pivot_table还支持多级索引和列,这意味着可以根据多个列的值对数据进行分组和聚合。 总之,pandaspivot_table是一个强大且灵活的功能,可以根据需要将数据重排和聚合,帮助我们更好地理解数据的结构和趋势,从而支持更好的数据分析和决策。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值