注意!!!作者只是个看热闹的球迷,不是篮球专业人士。再次强调,结果不够严谨。重要的是大家可以通过这些有趣的研究激发自己学习技术的兴趣!!!
四个主要分位数
很多80、90后的朋友,基本都是麦迪、科比、詹姆斯、艾弗森的粉丝。在凯尔特人三巨头(加内特、皮尔斯、雷阿伦)组队之前,基本上每支球队都只有一个强点,这跟我们现在强调对一个人、一座城市的忠诚的理念很吻合。今年夏天,乔治和伦纳德加盟快船带来的一系列冲击,导致现在的NBA球队大多都是双核球队,预计下个赛季会很精彩。说到精彩程度,大家会拿来跟上一个时代对比,因为那个时代,一支球队基本只有一个明星球员,所以这些明星球员对球迷的吸引力很大。我们的四大著名得分后卫,就是诞生于那个时代。他们分别是:
麦迪——银枪白马的美少年!
麦迪的小腿很厉害,他的引体向上姿势也很有诗意,35秒13分钟逆转马刺。他还是两届得分王,两次入选NBA全明星阵容,七次入选全明星阵容,两次入选一阵,三次入选二阵,两次入选三阵。他还获得了NBA最佳球员2001年进步球员奖。巅峰时期的麦迪征服了无数球迷,可惜职业生涯末期无家可归。
科比布莱恩特——最接近神的男人,乔丹之后最伟大的得分后卫!
科比,继乔丹之后的第二位球员,是篮球时代的象征,他拥有极强的得分爆发力和最为娴熟的进攻技巧,能突破、能投篮、能罚球、能三分nba球队光标,几乎没有进攻盲区,创造了单场81分、三节62分、单赛季场均35.4分等众多令人惊叹的奇迹。科比还拥有5个总冠军、1个MVP、2个FMVP、2个得分王、18次入选全明星、4次入选全明星MVP、历史得分榜第三、10次入选一阵、2次入选二阵、2次入选三阵,9次入选一阵、2次入选二阵。
卡特——半人半神的UFO,史上最强扣篮王!
卡特,他的扣篮是NBA的象征,基本上没人能超越他的扣篮天赋,在全明星扣篮大赛上也留下了很多精彩的场面——单臂扣篮、大风车……凭借五次完美而震撼的扣篮表演,卡特以一己之力挽救了濒临灭绝的全明星大满贯扣篮大赛!
阿伦艾弗森——96年黄金一代的状元秀!
地球上最强的183cm,标志性的,超越乔丹,让人们记住了这个敢于挑战上帝的小个子,单枪匹马带领76人闯进总决赛。面对湖人王朝的OK组合,他毫不畏惧。并送给湖人季后赛唯一一场失利。
可以说四位得分后卫都是很强的~!
詹姆斯·哈登:现任头号得分后卫
2018赛季MVP得主休斯顿火箭队球星詹姆斯·哈登,如今是詹姆斯之外的反勇士先锋,拥有第一阵容、得分王、助攻王、单打王、MVP等多项个人荣誉,率队取得队史最佳战绩65胜,以场均36分超越科比·布莱恩特的得分纪录,多次入选全明星首发,带领美国国家队夺得奥运会冠军、世锦赛冠军等多项骄人战绩。
不过尽管数据出色,他却因季后赛表现不佳而饱受诟病。然而随着他连年倒在勇士,人们开始对他产生质疑,认为他上进心不够强,或者实力不够,担不起第一分卫的称号。因此很多人说,是因为没有优秀的分卫,才让他获得如此多的荣誉。换言之,没有英雄让树子成名。如果是在四大分卫时代,哈登绝对会以普通球员的身份开始。
真的是这样的结果吗?由于哈登的巅峰期与四大分卫不在一个时代,所以我们无法根据现实进行比较。但是,我们能用数据来证实哈登真的不如四大分卫吗?
注意,如果你只对分析结果感兴趣,可以直接跳到结果分析部分。如果你对分析过程也感兴趣,想学点技巧,或者发现作者的缺陷,那就继续往下看吧。对于初学者,请放心,我的代码写得非常简单,容易理解,不需要任何技巧。还有很多优化空间。你可以自己改进。
源代码可在文章末尾下载。
准备数据源
想要分析哈登和四大得分后卫的表现,首先要有数据支撑。我们的数据来自于stat-nba,这是数据最全的中文NBA网站。当然我们不是通过人工去获取,而是通过简单的爬虫技术去获取。这里希望大家有前端基础和基础知识,不然会有点难度。
其中科比的数据网站为:
特雷西·麦克格雷迪的数据 URL 是:
数据网址为:
艾弗森的数据网址为:
的数据 URL 为:
所以我们在分析他们的能力时,需要一些指标作为参考,笔者利用自己有限的篮球知识,选取了6个指标,分别是:场均得分、场均助攻、场均篮板、胜利贡献值(WS)、球员效率值(PER)、真实投篮命中率。
由于哈登和四大得分后卫的巅峰期有重叠,所以我们不按照具体赛季来比较,因为把哈登的巅峰赛季和四大得分后卫职业生涯的结束时间进行比较是没有意义的nba球队光标,所以我们按照职业生涯年份来比较。也就是说,大家的新秀年都是新秀年,大家的大二都是大二。这是为了证明他们当中谁才是真正的王者。
捕捉创意分析
爬取之前,请准备好必要的库,请安装,bs4,。
在爬取内容之前,我们首先需要进行定位,定位就是定位到我们需要的数据在什么地方,更准确的说是包含所需数据的标签在什么地方。
比如场均投篮命中率,我们可以看到页面上有多个这样的表格,下面是威斯布鲁克的数据图,但是结构是一样的,不影响我的分析:
我们需要的场均得分、篮板、助攻都在第一个表格里,ws 和 per 在倒数第二个表格里,最后一个表格太火爆了,所以首先我们需要定位到具体的表格,代码如下:
= .("table", ="")[0] # 第一个表用于获取平均每场篮板、平均助攻、平均得分
= .("table", ="")[3] # 第四张表用于获取胜利贡献和球员效率
= .("table", ="")[4] # 第五张表,获取真实命中率
接下来我们需要找到数据项的标签,找到标签的思路就是将鼠标移动到我们需要的数据项上,然后右键点击查看,右边就会弹出该数据项对应的源代码,以平均分数为例:
首先在网页上打开任意四大得分后卫或者哈登的数据统计页面,将鼠标移到第一个表格中的任意一项得分数据上,点击右键,然后找到要查看的项,光标经过后点击鼠标左键,你会看到右侧弹出如下窗口:
我们可以看到很多TD的标签,但是我们想要的是每场比赛的得分指标。通过观察,我们可以发现只有平均得分指标有类别pts,而其他TD都没有。因此,我们可以利用该类别来获取平均得分指标。
其他指标也是这样操作的,具体操作请咨询我们,到此我们的页面标签定位就完成了。
示例代码如下:
找到需要的表--》定位到表上获取需要的数据项--》解析数据--》将数据类型转换为浮点数以便于绘制--》保存结果并返回
定义(网址):
"""正在抓取数据"""
= {
'用户代理':'/5.0(NT 10.0;WOW64)/537.36(KHTML,如 Gecko)/55.0.2883.87 /537.36'
} # 模仿一个标题,这是爬虫最简单的策略
r = .获取(url=url,=)
html = r.
=(html,'html。')
= .("table", ="")[0] # 第一个表用于获取平均每场篮板、平均助攻、平均得分
= .("table", ="")[3] # 第四张表用于获取胜利贡献和球员效率
= .("table", ="")[4] # 第五张表,获取真实命中率
=[]
.(("pts", )) # 分数
.(("ast", )) # 助攻
.(("trb", )) # 分数
.(("ws", )) # ws
.(("per", )) # 球员效率
.(("tsper", )) # 真实命中率
定义(,表):
“””
提取数据
“””
= 表。(“ td”,=)# 分数
行数 = []
对于 td:
尝试:
比率 = 浮点数 (td.text.strip()[:-1]) 如果 td.text.strip()[-1] == "%" 否则 浮点数 (
td.text.strip()) # 过滤掉%符号,并转换为浮点类型
行数(比例)
行 = 行[:-1]
行 = 列表((行))
打印(行)
好的
到这一步我们的数据基本已经回落了,有了准备好的数据,我们就可以画图了,这里我会画一个柱状图来对比数据,不过在画柱状图之前我会先把数据准备好综合评分来对比,对比那一年谁表现更好,然后输出控制台得出结论,最后再画一个柱状图作为辅助参数。
给出综合评分
前面提到了,我们会以场均得分、篮板、助攻、WS、PER、真实投篮命中率作为指标。所以,通过前面的数据收集,我们已经有四大得分后卫和哈登职业生涯的数据了。为了方便我们对比和论证结论,我做了一个简单的评分。评分思路是:如果某位球星在某项指标上排名全明星第一,那么他得5分,第二名得4分。把所有指标按照顺序进行排序比较nba球队光标,将所有分数相加,得到一个综合得分,综合得分越高,说明他的表现越好。
以下是有助于理解的输出:
第一年数据比较
得分:阿伦>文斯>>科比>特雷西
助攻:阿伦>文斯>>特雷西>科比
篮板:文斯>特雷西>阿伦>科比
WS:文斯>>艾伦>特雷西>科比
P:文斯>艾伦>特雷西>科比>
真实投篮命中率:> 科比 > 文斯 > 阿伦 > 特雷西
总体排名:文斯>阿伦>>麦迪>科比
以上就是科比第一年2分+1助攻+1篮板+1助攻+2助攻+4真实命中率的得分,综合评分来看,卡特第一年表现最好,综合评分代码如下:
定义 (, ):
“””
整理四大分位数及哈登各项数据指标
::
“””
= {}
ser = (,index=['科比', '特雷西', '阿伦', '文斯', ''])
对于范围内的 i(len()):
ser.(by=i, =True, =False)
print("{5}:{0}>{1}>{2}>{3}>{4}".(ser.index[0], ser.index[1], ser.index[2], 序列索引[3], 序列索引[4],
[我]))
Score = 5 # 每条数据第一名得5分,分数依次递减,最后计算每个人总分,分数最高的即为年度最佳。
对于 ser.index 中的索引:
如果索引位于:
[指数]+=分数
其他的:
[指数] = 分数
分数 -= 1
= (.items(),键 = item:item[1],=True)
print("综合排序:{0}>{1}>{2}>{3}>{4}".([0][0], [1][0], [2][0],
[3][0], [4][0]))
绘制条形图
由于需要画出5个人的各种数据对比,所以画柱状图的过程会比较繁琐。首先需要对数据进行排序,也就是把每个年份对应的星星的数据拿出来,形成一个列表。然后设置一下字体,避免出现汉字乱码。然后画出柱状图。注意控制柱状图中的缝隙,防止重叠。最后画出坐标轴标签和数值变量标题。我知道我说的太笼统了,但我不知道怎么描述更好,毕竟还是实际看看画出来的效果比较好。我直接贴代码给大家看吧,代码如下:
定义(,,年份):
“””
绘制条形图
::
“””
,,,,,,=
.['font.sans-serif'] = [''] # 设置中文字体和减号正常显示
.['轴.'] = False
“””
绘制条形图
“””
质子泵(=(15,5))
x = 范围(len())
= plt.bar(x, =, width=0.15, alpha=0.8, color='red', label="Kobe")
= plt.bar([i + 0.15 for i in x], =, width=0.15, alpha=0.8, color='green',
标签="特蕾西")
= plt.bar([i + 0.3 for i in x], =, width=0.15, alpha=0.8, color='grey',
标签="Allen")
= plt.bar([i + 0.45 for i in x], =, width=0.15, alpha=0.8, color='black',
标签=“文斯”)
= plt.bar([i + 0.6 for i in x], =, width=0.15, alpha=0.8, color='brown',
标签="")
plt.ylim(0, 70) #y轴取值范围
plt.(“值”)
“””
设置x轴刻度显示值
“””
plt.([范围内的索引(len()) + 0.35], )
plt.(“数据项”)
plt.title("{0} 年的数据比较".(str(year + 1)))
plt.() # 设置标题
# 编辑文本
对于 [, , , , ] 中的项目:
对于项目中的矩形:
=矩形。()
plt.文本(rect.get_x()+rect.()/ 2,+ 1,str(),ha="",va="")
plt.显示()
至此,我们从分析数据、抓取数据、清洗数据、准备数据、排序数据、绘制数据的所有步骤都完成了。看不懂也没关系,文章最后有源码下载,大家可以慢慢研究。然后我们再看看结论,证明谁才是真正的王者。
结果分析
在这里给直接看结果的朋友再说一遍,我们在分析他们的能力的时候,需要指标作为参考,作者利用自己有限的篮球知识,筛选出了6个指标。它们分别是:场均得分、场均助攻、场均篮板、胜利贡献值(ws)、球员效率值(per)、真实投篮命中率。为了方便我们对比和论证结论,我做了一个简单的评分。评分思路是:某位球星在某项指标上排名第一,得5分,第二名得4分。将所有指标依次排序比较,将所有分数相加,得到一个综合得分,综合得分越高,说明他的表现越好。由于哈登目前只有10年的数据,所以我们只对比前十年的数据。
以下是有助于理解的输出:
第一年数据比较
得分:阿伦>文斯>>科比>特雷西
助攻:阿伦>文斯>>特雷西>科比
篮板:文斯>特雷西>阿伦>科比
WS:文斯>>艾伦>特雷西>科比
P:文斯>艾伦>特雷西>科比>
真实投篮命中率:> 科比 > 文斯 > 阿伦 > 特雷西
总体排名:文斯>阿伦>>麦迪>科比
以上就是科比第一年的得分2+助攻1+篮板1+防守1+场均2+真实投篮命中率4的评分,综合评分来看,卡特是第一年表现最好的。
第一年:
直方图比较:
文本输出:
结论:新秀第一年综合JRS直播,卡特第一,艾弗森第二,哈登第三,麦迪第四,科比第五,最好的是卡特,最差的是科比。
第二年:
直方图比较:
文本输出:
结论:二年级综合评分,卡特第一,艾弗森第二,科比第三,哈登第四,麦迪第五,最好的是卡特,最差的是麦迪。
第三年:
直方图比较:
文本输出:
结论:三年级综合评分,卡特第一,艾弗森第二,哈登第三,科比第四,麦迪第五,最好的是卡特,最差的是麦迪。
第四年:
直方图比较:
文本输出:
结论:四年级综合评分,哈登第一,麦迪第二,科比第三,艾弗森第四,卡特第五,最好的是哈登,最差的是卡特。
第 5 年:
直方图比较:
文本输出:
结论:第五年,麦迪第一,哈登第二,科比第三,艾弗森第四,卡特第五,麦迪最好,卡特最差。
第六年:
直方图比较:
文本输出:
结论:第六年总评,麦迪第一,哈登第二,科比第三,艾弗森第四,卡特第五,麦迪最好,卡特最差。
第七年:
直方图比较:
文本输出:
结论:综合评分第七年,科比第一,哈登第二,麦迪第三,艾弗森第四,卡特第五,最好的是科比,最差的是卡特。
8年级:
直方图比较:
文本输出:
结论:第八年的综合评分,哈登第一,卡特第二,麦迪第三,科比第四,艾弗森第五,最好的是哈登,最差的是艾弗森。
第九年:
直方图比较:
文本输出:
结论:第九年总评分,哈登第一,科比第二,艾弗森第三,卡特第四,麦迪第五,最好的是哈登,最差的是麦迪。
10年级:
直方图比较:
文本输出:
结论:第十年的综合评分,哈登第一,科比第二,艾弗森第三,麦迪第四,卡特第五,最好的是哈登,最差的是卡特。
综合评价
注意,以下时间是按照五名球员的相应年份进行对比的。所以,这是强者之间的对话。即使是表现最差的球员,在联盟中也表现得非常出色。
十年综合评价:
科比最好的时候:1,最差的时候:1。
麦迪最好的数据:2次,最差的数据:3次。
卡特的最佳数字:3,最差数字:5。
艾弗森最好成绩:0,最差成绩:1。
哈登最好数据:4次,最差数据:0次。
这个数据正确吗?
第一个是科比。科比职业生涯只拿过一次MVP,除了夺冠那几年,基本都在季后赛边缘,甚至都没能进入季后赛。所以,对他来说,十年来最好和最坏的只有一次。只有一次是合适的。
第二位就是麦迪了,麦迪的魔术生涯很精彩,但是在火箭生涯末期,表现实在是一般,恰巧麦迪拿过两次得分王,在火箭的后期也经常受伤,最惨的一次是3次,也属于正常范围之内。
接下来是卡特。卡特最出色的地方在于他在新秀赛季的前几个赛季随猛龙队夺得了年度最佳新秀奖,并随篮网队打进了东部决赛。不过,他在此前十年也多次未能进入季后赛。因此,他的最高纪录3次和最差纪录5次基本相同。
嗯,艾弗森很一般。其实我也查不到这个数据跟他前十年的表现是否一致。我知道的太少了。
还有哈登,新秀赛季在雷霆队就入选了最佳新秀阵容,还拿过最佳第六人,之后在火箭队时期,他数次获得MVP亚军,还拿过一次MVP,拿最佳次数最多也很正常。
请注意,以上数据是常规赛平均值,不包括季后赛。
最终的结果是,就常规赛而言,这位现役第一得分后卫不逊色于前四名得分后卫,在最佳表现次数上排名第一,职业生涯从未缺席过季后赛,在火箭队职业生涯MVP次数排名中位列第二,还拿到过MVP,表现最好,现在他缺的就是总冠军。
当然,哈登想要在季后赛追上科比的表现还有很长的路要走,毕竟科比是继上帝之后最好的得分后卫。
据说哈登不是以天赋闻名,而是以实力闻名,就常规赛而言,四大得分后卫中没有一个表现比他更好。
如果对我的文章感兴趣的话可以关注我的主页或者公众号,点个赞,可惜写了这么多字,呵呵。
• 本站声明:以上部分图文视频来自网络,如涉及侵权请联系删除。