Pandas —— 透视表pivot_table()和交叉表crosstab()

透视表pivot_table()

透视表pivot_table()是一种进行分组统计的函数,参数aggfunc决定统计类型。

这里写图片描述
1、假设我想要根据sex和smoker计算分组平均数(pivot_table的默认聚合类型),并将sex和smoker放到行上:(因为day无法计算平均数,所以自动去除)

# 方法一:使用groupby
tips.groupby(['sex', 'smoker']).mean()
# 方法二:使用pivot_table
tips.pivot_table(row=['sex', 'smoker'])

这里写图片描述

2、现在假设我们只想聚合tip_pct和size,而且想根据day进行分组。我将smoker放到列上,把day放到行上:

tips.pivot_table(values=['tip_pct', 'size'], index=['sex', 'day'], columns='smoker')

这里写图片描述
3、传入margins=True,添加加分小计

tips.pivot_table(values=['tip_pct', 'size'], index=['sex', 'day'], columns='smoker', margins=True)

这里写图片描述

4、要使用其他的聚合函数,将其传给参数aggfunc即可。例如,使用count或len可以得到有关分组大小的交叉表:

这里写图片描述

pivot_table()的参数

参数名 说明
values 待聚合的列的名称
rows 透视表的行
cols 透视表的列
aggfunc 聚合函数或函数列表
fill_value 用于替换缺失值
margins 添加行/列小计和总计

交叉表crosstab()

交叉表crosstab()是一种特殊的pivot_table(),专用于计算分组频率。

这里写图片描述

1、假设我们想要根据性别和用手习惯对这段数据进行统计汇总。虽然可以用pivot_table()实现该功能,但是pandas.crosstab()函数会更方便

这里写图片描述


转载链接:https://blog.csdn.net/hustqb/article/details/78086394

你可能感兴趣的:(Pandas)