购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 基于球员薪资的数据分析

对于一个球员来说,衡量其基本价值的最大利器就是其薪资与期望,还有其未来的发展。本节首先从球员薪资数据开始,开启我们的数据分析之旅。

3.1.1 关于球员薪资的一些基本分析

对于数据处理来说,数据是一切的基础,在这里笔者准备了球员薪资数据集,如图3.1所示。

图3.1

数据集中分别对球员的姓名、年龄、收入等进行了说明。其对应的文本字段如表3.1所示。

表3.1 球员薪资数据字段说明

我们在本节中所需要的包如下:

● NumPy:数据分析包。

● Pandas:以表格的形式对数据分析的包。

● Matplotlib:图像处理包。

● Seaborn:表绘制包。

安装方法则使用Anaconda自带的pip安装即可,代码如下:

    pip install numpy
    pip install pandas
    pip install matplotlib
    pip install seaborn

处理的第一步就是对数据的获取,在这里我们直接使用Pandas包对数据进行读取。Pandas本身就是Python数据分析的利器,是一个开源的数据分析包,最初是为金融数据分析而开发出来的。使用Pandas包获取数据的代码如下:

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    pd.set_option('display.max_columns', None)     # 对所有列进行展示
      
    data = pd.read_csv("./NBA data/球员薪资.csv")
    print(data.head())
    print(data.shape)

输出结果如图3.2所示。

图3.2

这里统计了342名球员的39项信息,图3.2所示是打印出了前5名的标准信息。整表的数据展示如图3.3所示。

从输出结果中可以分析出一些有趣的内容,几个比较重要的信息如下:

● 球员平均年龄为26.4岁,年龄段在19~40岁。

● 球员平均年薪为730万美金,当时最大的合同为年薪3000万美金。

● 球员平均出场时间为21.5分钟,某球员场均出场37.8分钟领跑联盟,当然也有只出场2.2分钟的角色球员,机会来之不易。

图3.3

当然类似的信息还请读者自行发掘。

3.1.2 关于球员RPM相关性的分析

对一个球员价值多少的最好衡量标准就是在比赛中的贡献度。在众多的数据中,有一项名为“RPM”,标识球员的效率值,该数据反映球员在场时对球队比赛获胜的贡献大小,最能反映球员的综合实力。

而RPM并不是一个单独存在的数据,我们想要知道对贡献度的影响和球员的哪些因素相关,对此的探索需要在不同的数据中计算其对应的相关性。下面我们计算一下RPM与其他列数据的相关性,在这里我们选取了部分可能相关的输入,代码如下:

    data_cor = data.loc[:, ['RPM', 'AGE', 'SALARY_MILLIONS', 'ORB','DRB', 'TRB','AST',
                'STL','BLK', 'TOV', 'PF','POINTS', 'GP', 'MPG', 'ORPM', 'DRPM']]
    corr = data_cor.corr()
    print(corr.iloc[:, 0])                           # 只打印相关性分析结果的第一列

打印相关性的计算结果如图3.4所示。

可以看到相对于RPM来说,其中的ORPM(进攻效率值)对效率值的影响最高。换一种展示方式,如果此时我们希望将这个数据以热力图的形式展示,可以使用如下函数:

    import seaborn as sns
    sns.heatmap(corr,square=True, linewidths=0.2, annot=False)
    plt.show()

热力图结果如图3.5所示。

图3.4

图3.5

由相关性分析的热力图可以看出,RPM值与年龄的相关性最弱,与ORPM(进攻效率值)、POINTS(场均得分)、STL(场均抢断数)等比赛技术数据的相关性最强。

3.1.3 关于球员RPM数据的分析

在接下来的分析中,我们将把RPM作为评价一个球员能力及状态的直观反映因素之一,然后据此分析一个球员的薪资与能力是否与其RPM相匹配。

(1)薪资最高的球员与RPM的分析

前面已经说了,薪资可以认为是对一个球员最好的肯定,那么对于一个球员来说,其价值是否又符合薪资水准呢?我们打印出薪资最高的球员以及其对应的RPM,代码如下:

    # 薪资最高的10名运动员
    print(data.loc[:, ['PLAYER', 'SALARY_MILLIONS', 'RPM', 'AGE', 'MPG']
          ].sort_values(by='SALARY_MILLIONS', ascending=False).head(10))

(2)效率最高的球员与RPM的分析

效率最高的球员与RPM的分析代码如下:

    # 效率值最高的10名运动员
    print(data.loc[:, ['PLAYER', 'RPM', 'SALARY_MILLIONS', 'AGE', 'MPG']
          ].sort_values(by='RPM', ascending=False).head(10))

(3)上场时间最高的球员与RPM的分析

上场时间最高的球员与RPM的分析代码如下:

    # 上场时间最高的10名运动员
    print(data.loc[:, ['PLAYER', 'RPM', 'SALARY_MILLIONS', 'AGE', 'MPG']
          ].sort_values(by='MPG', ascending=False).head(10))

至于最终结果那就是仁者见仁,智者见智,请读者自行打印分析。 OvLoEEmVUTE6sVCNsav8e7dFD0PASdbhQCReseUC4rndmgHfE8dtPO/y/v+0bEMj

点击中间区域
呼出菜单
上一章
目录
下一章
×