【数据处理】Seaborn-NBA数据分析案例(4)

语言: CN / TW / HK

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第5篇文章,点击查看活动详情

注意:本案例使用 Jupyter NotebookJupyterNotebook 进行案例演示,数据集为NBA球员信息数据集。本项目将进行完整的数据分析演示。数据集相关介绍请参考本系列第一篇文章:【数据处理】Seaborn-NBA数据分析案例(1) - 掘金 (juejin.cn)

1. 球队数据分析

1.1 球队薪资排行

1.1.1 读取数据

读取NBA球员信息数据,并导入相关库。 ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns

1. 获取数据集

NBA = pd.read_csv("nba_2017_nba_players_with_salary.csv") NBA.head() ```

1.1.2 球队薪资排序

groupby:分组函数

agg是一个聚合函数,使用指定轴上的一个或多个操作进行聚合。在Pandas中可以利用agg()对SeriesDataFrame以及groupby() 后的结果进行聚合操作。 常用函数如min,max,median,std,count,size,sum等,直接用函数名加引号" "即可,如果有多个函数,用逗号隔开;

  • 对NBA球队进行分组,然后将每个组的SALARY_MILLIONS进行聚合,并且计算平均值。
  • 对分组聚合后的数据进行降序排序,展示前十名数据
  • head(10):展示前10名数据
  • ascending=False:降序排列
  • sort_values:对指定列排序 ```python NBA_TEAM = NBA.groupby(by="TEAM").agg({"SALARY_MILLIONS": np.mean})

所有球队薪资平均情况

NBA_TEAM.sort_values(by="SALARY_MILLIONS", ascending=False).head(10)

看前十名

```

运行结果如下图所示:

image.png

1.2 球队年龄结构

此处,我们想按照分球队年龄段,上榜球员PLAYER降序排列。如上榜球员数相同,则按效率值RPM降序排列。

1.2.1 分组聚合

  • 分了两个组:球队和年龄段
  • 聚合了三个指标:薪水,效率值,上榜球员数量
  • 我们先分组聚合,再进行排序

python NBA_rpm = NBA.groupby(by=["TEAM","age_cut"]).agg({"SALARY_MILLIONS": "mean", "RPM": "mean", "PLAYER":"size"}) NBA_rpm

运行结果如下图所示:

image.png

1.2.2 排序

  • 先以球员数量PLAYER排序
  • 若PLAYER数量相同,再使用效率值RPM排序
  • 都是降序排列

python NBA_rpm.sort_values(by=["PLAYER", "RPM"], ascending=False) 运行结果如下图所示:

image.png

2. 球队数据可视化

2.1 绘制箱形图

  • 筛选出指定球队的球员样本
  • 绘制箱形图
  • 指定箱型图的x轴和y轴

2.1.1 获取指定数据

  • 我们想获取指定球队的数据
  • 以表的形式返回 ```python

获取需要的数据

NBA_TEAM2 = NBA[NBA.TEAM.isin(['GS','CLE','SA','LAC','OKC'])] ```

2.1.2 绘制箱形图

  • 三张图放在一个画布里面
  • 希望查看三个特征
  • x轴为不同的TEAM
  • y轴为对应的特征 ```python sns.set_style("whitegrid") plt.figure(figsize=(20,10))

进行相应的绘图

plt.subplot(3,1,1) sns.boxplot(x='TEAM', y='SALARY_MILLIONS', data = NBA_TEAM2)

plt.subplot(3,1,2) sns.boxplot(x='TEAM', y='AGE', data = NBA_TEAM2)

plt.subplot(3,1,3) sns.boxplot(x='TEAM', y='MPG', data = NBA_TEAM2)

plt.savefig("./箱形图.png") ```

运行结果如下图所示: image.png