使用工具:Ipython notebook/Anacoda-Spyder
使用的库:Pandas,Matplotlib,Seaborn
Python版本:Py3.6
1
数据来源
1).本次用到的数据
来源于https://www.basketball-reference.com/awards/mvp.html,其中可以选择多种形式,我选的是CSV格式,方便后面的数据分析,(文末会分享CSV文件和源码给大家)
一共是38年的数据,我为了截图效果,隐藏了一部分数据
2).主要术语解释
可能有一些非篮球迷看不太懂上面的缩写,下面介绍一下
Player:球员姓名
Age:年龄
Tm:所在球队
G: 上场次数
MP:场均上场时间
PTS:场均得分
TRB:场均篮板
AST:场均助攻
STL:场均抢断
BLK:场均盖帽
FG%:命中率(不包含罚球)
3P%:3分球命中率
FT%:罚球命中率
WS: 胜利贡献值
2
数据分析
1).读取数据
新建一个MVP.py文件,把MVP.py和NBA_mvp.csv文件放在一个目录下
看一下数据的基本情况:列出了13个维度的一些基本信息
比如年龄维度的基本资料:
统计总数38年,平均年龄28岁,最小是22岁,最大35岁
嗯,NBA最佳球员平均28岁左右,这应该是每个人体力的鼎盛时期,但我更关心的是“大龄”MVP,看看最老的MVP是谁,又是几岁获得的呢?
2).看看谁是年纪最大的MVP是谁
print (data['Age'].max())
>>35
既然我们已经知道age里面最大的是35岁,我们只需要找到年纪35岁对于的人名
print(data[data.Age==data.Age.max()])
>>
发现年纪最大的是卡尔-马龙,江湖人称“邮差”,在35岁获得了MVP,真的不容易。其实职业球员过了30岁之后体力已经慢慢走下坡路了,接着我们看看30岁以后获得MVP的球员
3).30岁以上获得MVP的球员
mvp_age30=data.loc[data.Age>=30][['Player','Age']]
print (mvp_age30)
>>一共有10个30岁+的MVP球员
30岁+以上还能获得MVP的是纳什(风之子),卡尔马龙(邮差),乔丹(篮球之神),奥拉朱旺(梦幻脚步),约翰孙(魔术师),朱利叶斯欧文(J博士),贾巴尔(天勾)都是NBA历史上有名的人物啊(不过话说回来,能得MVP的还是厉害的)
4).MVP次数最多球员
其实除了年龄之外,我还关心近38年来谁拿到的MVP次数最多,只要一行代码就能搞定了,Pandas真的是太酷了
print (data.Player.value_counts())
>>
Michael Jordan\jordami01 5
LeBron James\jamesle01 4
Larry Bird\birdla01 3
Magic Johnson\johnsma02 3
Stephen Curry\curryst01 2
Moses Malone\malonmo01 2
Steve Nash\nashst01 2
Karl Malone\malonka01 2
Tim Duncan\duncati01 2
Julius Erving\ervinju01 1
Russell West*\westbru01 1
Shaquille O'Neal\onealsh01 1
Dirk Nowitzki\nowitdi01 1
Kevin Garnett\garneke01 1
Kobe Bryant\bryanko01 1
Kevin Durant\duranke01 1
Hakeem Olajuwon\olajuha01 1
David Robinson\robinda01 1
Allen Iverson\iversal01 1
Kareem Abdul-Jabbar\abdulka01 1
Derrick Rose\rosede01 1
Charles Barkley\barklch01 1
-
第一名和我想的一样 乔丹“乔帮主”,比较出乎我意料的是奥尼尔,科比只有1次,可见MVP的争夺是十分激烈的,能拿到一次的MVP都是外界对自己实力的肯定
-
并且从这里也可以看出,MVP更倾向于球场上的“小个子”,大多是后场球员,会不会是他们球权多一点呢~~
5).MVP的均场数据如何
>>
assistants 6.134211
blocks 1.173684
point 26.718421
rebounds 8.600000
steals 1.592105
从数据大致可以看出,MVP大多都是攻守较为平衡,可以犀利的进攻,也可以严密的防守,攻防兼备才是最有价值球员
6).胜利贡献值
最后来看一个综合的值:WS,即胜利贡献值
-
这个值是根据球队胜场数、每个球员的详细技术统计等诸多数据分析出的,结合了球队战绩以及个人在获胜中起到的作用
-
可以说是衡量一个球员个人能力和团队能力的指数。而我们将要探讨,这个指数和其他的指数有什么联系,我们将用矩阵相关系数来衡量
先来一个热力图,如果你不喜欢在一个矩阵里看数字的话,热力图将是一个不错的选择:
corrmat = data.corr()#获取data的相关系数
f, ax = plt.subplots(figsize=(12, 6))#大小我们设为大一点12*6英寸
sns.heatmap(corrmat,annot=True)#用sns来画图
这样就清楚很多了吧,不仅有颜色深度,还有数字,简直就是上面的升级版,于是我们可以来分析:
和胜利贡献值(WS)联系比较相关的有:
G(比赛场次)
PTS(场均得分
STL(抢断)
FG%(投篮命中率)
也就是说,具备了上面几点,你离MVP就不远了!
-
有好的体力,打的比赛才多,才能贡献更多(大家也可以自己撸代码看一下MVP的场均上场时间和上场次数,肯定不少)
-
能得分高且保持稳定可观的命中率,应当注意的是,高得分和命中率不一定成正比,想象比较极端的情况,你的命中率不高,但我有球权可以一直进攻投篮,比如说我投了50次,进了10个球,也大概有20+了,但命中率并不能称得上是MVP的水准,所以这两个指数应该可以分开的。
-
有不俗的抢断能力,就是平常我们说的“眼疾手快”,有了抢断意味着你就多了一次进攻机会,且大多数能形成快攻,得分的几率更高