我报名参与金石计划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()对SeriesDataFrame以及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)
# 看前十名

运转成果如下图所示:

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

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

运转成果如下图所示:

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

1.2.2 排序

  • 先以球员数量PLAYER排序
  • 若PLAYER数量相同,再运用效率值RPM排序
  • 都是降序摆放
NBA_rpm.sort_values(by=["PLAYER", "RPM"], ascending=False)

运转成果如下图所示:

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

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")

运转成果如下图所示:

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