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

1,226 阅读2分钟

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

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

1. 球员数据分析

1.1 基本数据排名分析

1.1.1 步骤一:导入数据

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

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这列进行排序
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:设置主题

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

# 设置基本主题
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绘制双变量六边形图,运行如下代码:

sns.jointplot(NBA.AGE, NBA.SALARY_MILLIONS, kind="hex")

代码运行结果如图所示:

image.png

1.2.3 多变量绘图

用seaborn中的pairplot绘图展示多个变量之间的关系

  • 由于数据集太大了,我们获取原数据集的几个特征作为数据。

步骤一:获取数据集

multi_NBA = NBA.loc[:, ['RPM','AGE','SALARY_MILLIONS','ORB']]
multi_NBA

运行结果:

image.png

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

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

sns.pairplot(multi_NBA)
# 保存图像
plt.savefig("./test3.png")

运行结果如下图所示:

image.png