我报名参与金石计划1期应战——瓜分10万奖池,这是我的第5篇文章,点击检查活动概况
注意:本事例运用Jupyter NotebookJupyterNotebook进行事例演示,数据集为NBA球员信息数据集。本项目将进行完整的数据剖析演示。数据集相关介绍请参阅本系列第一篇文章:【数据处理】Seaborn-NBA数据剖析事例(1) – ()
1. 球队数据剖析
1.1 球队薪资排行
1.1.1 读取数据
读取NBA球员信息数据,并导入相关库。
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()对Series、DataFrame以及groupby() 后的成果进行聚合操作。 常用函数如min,max,median,std,count,size,sum等,直接用函数名加引号” “即可,如果有多个函数,用逗号离隔;
- 对NBA球队进行分组,然后将每个组的SALARY_MILLIONS进行聚合,并且核算均匀值。
- 对分组聚合后的数据进行降序排序,展现前十名数据
- head(10):展现前10名数据
- ascending=False:降序摆放
- sort_values:对指定列排序
NBA_TEAM = NBA.groupby(by="TEAM").agg({"SALARY_MILLIONS": np.mean})
# 一切球队薪资均匀状况
NBA_TEAM.sort_values(by="SALARY_MILLIONS", ascending=False).head(10)
# 看前十名
运转成果如下图所示:
1.2 球队年龄结构
此处,我们想依照分球队分年龄段,上榜球员PLAYER降序摆放。如上榜球员数相同,则按效率值RPM降序摆放。
1.2.1 分组聚合
- 分了两个组:球队和年龄段
- 聚合了三个指标:薪水,效率值,上榜球员数量
- 我们先分组聚合,再进行排序
NBA_rpm = NBA.groupby(by=["TEAM","age_cut"]).agg({"SALARY_MILLIONS": "mean", "RPM": "mean", "PLAYER":"size"})
NBA_rpm
运转成果如下图所示:
1.2.2 排序
- 先以球员数量PLAYER排序
- 若PLAYER数量相同,再运用效率值RPM排序
- 都是降序摆放
NBA_rpm.sort_values(by=["PLAYER", "RPM"], ascending=False)
运转成果如下图所示:
2. 球队数据可视化
2.1 制作箱形图
- 筛选出指定球队的球员样本
- 制作箱形图
- 指定箱型图的x轴和y轴
2.1.1 获取指定数据
- 我们想获取指定球队的数据
- 以表的方式返回
# 获取需要的数据
NBA_TEAM2 = NBA[NBA.TEAM.isin(['GS','CLE','SA','LAC','OKC'])]
2.1.2 制作箱形图
- 三张图放在一个画布里边
- 希望检查三个特征
- x轴为不同的TEAM
- y轴为对应的特征
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")
运转成果如下图所示: