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

语言: CN / TW / HK

highlight: a11y-dark theme: awesome-green


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

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

1. 球员数据分析

1.1 基本数据排名分析

1.1.1 步骤一:导入数据

导入相关模块并获取数据:

```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 步骤二:按照球员效率值排序

按照效率值进行排名,选出某几列特征,然后使用sort_value方法进行排序 - ascending=False:降序排列 - by="RPM":对RPM这列进行排序

```python NBA.loc[:, ["PLAYER","RPM","AGE"]].sort_values(by="RPM", ascending=False)

降序排列

按照效率值排名

``` 运行结果如下图所示:

image.png

1.2 Seaborn常用的三个数据可视化方法

1.2.1 单变量绘图

我们将利用seaborn中的displot绘图来分别看一下球员薪水、效率值、年龄这三个信息的分布情况。并且使这三张图绘制在一个画布中。 - 绘制条形图 - sns.distplot:条形图 - sns.set_style:设置主题

使用如下代码进行单变量绘图: ```python

设置基本主题

sns.set_style("darkgrid") plt.figure(figsize=(10, 10))

画三个图:此处为第一行第一列的图

plt.subplot(3,1,1) sns.distplot(NBA["SALARY_MILLIONS"]) plt.ylabel("salary") # 设置y轴名称

画第二个图

plt.subplot(3,1,2) sns.distplot(NBA["RPM"]) plt.ylabel("RPM") # 设置y轴名称

画第三个图

plt.subplot(3,1,3) sns.distplot(NBA["AGE"]) plt.ylabel("AGE") # 设置y轴名称

保存图像

plt.savefig("./test1.png") ```

代码运行结果如下图所示:

image.png

1.2.2 双变量绘图

使用joijtplot查看年龄和薪水之间的关系

  • kind="hex":六边形显示
  • 年龄小的时候,薪资也比较少
  • 大部分数据都分布于左下角
  • 展示球员年龄和薪水之间的关系,采用不同的kind方式(等高线图/hex/散点等),我们可以整体感受一下集中特点。

之间已经读取过数据了,此处我们直接调用sns.jointplot绘制双变量六边形图,运行如下代码:

python sns.jointplot(NBA.AGE, NBA.SALARY_MILLIONS, kind="hex") 代码运行结果如图所示:

image.png

1.2.3 多变量绘图

用seaborn中的pairplot绘图展示多个变量之间的关系 - 由于数据集太大了,我们获取原数据集的几个特征作为数据。

步骤一:获取数据集

python multi_NBA = NBA.loc[:, ['RPM','AGE','SALARY_MILLIONS','ORB']] multi_NBA 运行结果:

image.png

步骤二:绘制多变量关系图

绘制多变量之间关系的散点图,并且保存图像。

```python sns.pairplot(multi_NBA)

保存图像

plt.savefig("./test3.png") ``` 运行结果如下图所示:

image.png