(28)数据分析-分组表、透视表、交叉表

本文演示了使用Python的Pandas库对数据进行分组(groupby)、聚合操作,创建透视表以及生成交叉表的方法。通过示例代码展示了如何基于特定列进行分组、获取最大值、最小值、平均值等统计信息,以及如何构建多维交叉表来分析数据。
摘要由CSDN通过智能技术生成

内容:

·分组表

·透视表

·交叉表

import numpy as np
import pandas as pd
from pandas import Series, DataFrame
heroes = pd.read_excel("C:/Users/YHT/Desktop/王者荣耀.xlsx", index_col=0, header=0)
print(heroes)
print()

运行结果

 【分组表】

(得到分组对象)

得到分组对象函数:.groupby()函数,传入参数为索引

"""得到分组对象"""
# 根据"攻击方式"分组,产生一个分组对象
group_things = heroes.groupby("攻击方式")
print(group_things)
print()
# 分组之后一定是聚合
# 查看分组对象的信息.group函数,如下可查看分组之后的信息
print(group_things.groups)
print()

运行结果

 (聚合1)

.聚合函数

"""聚合"""
# 直接对分组之后的结果进行聚合,此处得到最大值
things = group_things.max()
print(things)
print()
# 如果只关注血量、分路这两列,则可以进行如下操作:
things0 = group_things[["血量", "分路"]].max()
print(things0)
print()

运行结果

 (聚合2)

分别对不同的列,做不同的聚合运算,可以使用.agg()函数,传入参数为字典

字典的key:分组之后的列索引

字典的value:聚合函数名(对某一列元素进行该种聚合运算)

# 分别对不同的列,做不同的聚合运算,可以使用.agg()函数,传入参数为一个字典
# 字典的key:分组之后的列索引
# 字典的value:聚合函数名
things1 = group_things.agg({"血量": "min", "防御": "mean"})
print(things1)
print()

运行结果

 (将聚合结果和原表格合并)

"""将聚合之后的结果与原表格结合"""
# 得到有平均值组成的Series数组
num = heroes.groupby("攻击方式")["攻击"].mean()
print(num)
# 将其转换为DataFrame数组
df_mean = DataFrame(data=num)
print(df_mean)
# 将两个DataFrame数组合并在一起
add_all = pd.merge(heroes, df_mean, left_on="攻击方式", right_index=True, suffixes=("", "-平均攻击"))
print(add_all)
print()

运行结果

 【透视表】

某两个字段之间的交叉关系

多分组表,使用pd.pivot_table()函数就可以构成透视表

data=目标表

value=某两个字段将要根据value进行聚合运算

index=交叉表的行索引

columns=交叉表的列索引

aggfunc=聚合运算名

"""透视表"""
# 某两个字段之间的交叉关系
# 多分组表,使用pd.pivot_table()函数就可以构成透视表
# data=目标表
# value=某两个字段将要根据value进行聚合运算
# index=交叉表的行索引
# columns=交叉表的列索引
# aggfunc=聚合运算名
return_things = pd.pivot_table(data=heroes,
                               values="攻击",
                               index="攻击方式",
                               columns="分路",
                               aggfunc="mean")
print(return_things)
print()

运行结果

 【交叉表】

交叉表是一种用于计算分组频率的特殊透视表

透视表可以通过data传入参数,来直接指定数据源,但交叉表并不能直接指定数据源

pd.crosstab()函数

传入参数:

index=数据源["索引"]

column=数据源["索引"]

"""交叉表"""
# 交叉表是一种用于计算分组频率的特殊透视表
# 透视表可以通过data传入参数,来直接指定数据源,但交叉表并不能直接指定数据源
return_things = pd.crosstab(index=heroes["攻击方式"], columns=heroes["分路"])
print(return_things)

运行结果

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

弦之森

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

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

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

打赏作者

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

抵扣说明:

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

余额充值