暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python数据分析笔记#10.4.1 透视表pivot table

Yuan的学习笔记 2022-05-22
326



「目录」

数据聚合与分组运算

Data Aggregation and Group Operations

  • 10.1 => GroupBy机制

  • 10.2 => 数据聚合

  • 10.3 => apply:拆分 - 应用 - 合并

  • 10.4 => 透视表和交叉表

pivot table透视表

最近真的是又浮躁又悠闲的日子,明明内卷的现在大家都很累,但又怕真的闲下来,真是矛盾啊。

这几天看了空之境界的剧场版,虽然是十年前的作品但真的令人印象深刻,无论剧情,人物还是音乐。今天上面的音乐就是其中的一首,听的时候真的有我小学放学后,躺在银杏树下的感觉了。

上面是一点小感慨,下面正式开始吧。

透视表根据一个或多个键对数据进行聚合,并根据行和列上的分组键将数据分配到各个矩形区域中。

DataFrame有一个pivot_table方法可以实现这个功能,除此以外还可以添加margins分项总计.

import numpy as np
import pandas as pd

复制

回到原书之前那个小费数据集:

tips = pd.read_csv(r'.\tips.csv')

tips['tip_pct'] = tips['tip'] / tips['total_bill']

tips.head()

复制

pivot_table的默认聚合类型是平均值,假设我们想要根据日期day和是否吸烟smoker来计算平均数,包括平均人数size,平均小费tip等:

tips.pivot_table(index=['day''smoker'])

复制

若我们只想要查看平均小费比例tip_pct和平均人数size,然后想要根据time和day分组:

tips.pivot_table(['tip_pct''size'], index=['time''day'])

复制

margins

传入margins=True添加分项小计,我们看到这会新增名为All的行,注意哦,在这里All值为平均数:

tips.pivot_table(['tip_pct''size'], index=['time''day'], margins=True)

复制

aggfunc

要使用其他聚合函数可以将其值传给aggfunc。比如这次传入aggfunc=sum我们来查看根据日期分组的总消费额:

tips.pivot_table('total_bill', index='time', columns='day', aggfunc=sum, margins=True)

复制

fill_value

如果有不存在的值(NA),我们可能会希望设置一个fill_value:

tips.pivot_table('tip', index=['time''smoker'], columns='day', aggfunc=sum, fill_value=0, margins=True)

复制

那就这样吧,BYE-BYE!!


-END-


往期回顾


Pandas里的apply方法




Stay hungry, stay foolish



文章转载自Yuan的学习笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论