我报名参加金石计划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)
# 降序排列
# 按照效率值排名
运行结果如下图所示:
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")
代码运行结果如下图所示:
1.2.2 双变量绘图
使用joijtplot查看年龄和薪水之间的关系
- kind="hex":六边形显示
- 年龄小的时候,薪资也比较少
- 大部分数据都分布于左下角
- 展示球员年龄和薪水之间的关系,采用不同的kind方式(等高线图/hex/散点等),我们可以整体感受一下集中特点。
之间已经读取过数据了,此处我们直接调用sns.jointplot绘制双变量六边形图,运行如下代码:
sns.jointplot(NBA.AGE, NBA.SALARY_MILLIONS, kind="hex")
代码运行结果如图所示:
1.2.3 多变量绘图
用seaborn中的pairplot绘图展示多个变量之间的关系
- 由于数据集太大了,我们获取原数据集的几个特征作为数据。
步骤一:获取数据集
multi_NBA = NBA.loc[:, ['RPM','AGE','SALARY_MILLIONS','ORB']]
multi_NBA
运行结果:
步骤二:绘制多变量关系图
绘制多变量之间关系的散点图,并且保存图像。
sns.pairplot(multi_NBA)
# 保存图像
plt.savefig("./test3.png")
运行结果如下图所示: