About the NBA 是一系列用来开玩笑 NBA 重大事件的专栏。 在这里,我们将把开发技术与当今发生的NBA重大事件结合起来,进行一些有趣的实验。 让我们一起看热闹,同时学习一些技巧。 分析结果仅供娱乐,缺乏专业论证支撑~
注意! ! ! 笔者只是一个看热闹的球迷,并非篮球专业人士。 再次,论证结果不够严谨。 重要的是,每个人都可以通过这些有趣的研究来激发他们学习技术的兴趣! ! !
四个主要分位数
很多80后、90后的朋友基本上都是麦蒂、科比、詹姆斯、艾弗森的粉丝。 在绿军三巨头(加内特、皮尔斯、雷阿伦)组队之前,基本上每支球队都只有一个强点,这和我们现在强调体现对一个人一座城的忠诚的理念非常吻合。 今年夏天乔治和伦纳德加盟快船所造成的一系列影响,导致了现在的NBA大部分都是双核球队。 预计下赛季将会非常精彩。 说到精彩程度,大家都会和之前的时代进行比较,因为在那个时代,一支球队基本上只有一名明星球员,所以这些明星球员非常吸引球迷。 我们的四大著名得分后卫就是从那个时代诞生的。 他们是:
麦迪——银枪白马的美少年!
麦迪的小腿非常可观,引体向上的姿势也如诗如画,35秒13分钟逆转马刺的奇迹。 他还是2次得分王、2次入选NBA最佳阵容、7次入选全明星、2次第一阵容、3次第二阵容、2次第三阵容,并荣获NBA最佳球员2001年进步球员奖。巅峰时期的麦迪征服了无数球迷,可惜职业生涯末期却无家可归。
科比——最接近上帝的男人,乔丹之后最伟大的得分后卫!
科比,继乔丹之后的二号球员,是篮球时代的象征。 他有着非常强的得分爆发力和最纯熟的进攻技巧。 他能突破、投篮、罚球、三分球,几乎没有进攻盲点。 有很多令人惊叹的奇迹,比如单场81分、三节62分、单赛季场均35.4分等。 科比还拥有5个总冠军、1个MVP、2个FMVP、2个得分王、18次全明星、4次全明星MVP、历史得分榜第三、10次第一阵容、2次第二阵容、2次第三阵容,他防守一队9次,防守二队2次。
卡特——半人半神UFO,史上最强扣篮手!
卡特,他的扣篮是NBA的象征。 基本上没有人能超越他的扣篮天赋。 他还在全明星扣篮大赛中留下了许多精彩的场景——单臂挂篮、大风车……凭借五次完美震撼的扣篮表演,卡特一手拯救了濒临灭绝的全明星大满贯。扣篮大赛!
阿伦·艾弗森——1996年黄金一代的状元秀!
地表最强183,标志性的,超越了乔丹,让人们记住了这个敢于挑战上帝的小个子,并单枪匹马带领76人队进入了总决赛。 面对湖人王朝的ok组合,他并不害怕。 并给了湖人队季后赛唯一一场失利。
可以说四名得分后卫都很强~!
现任第一得分后卫——詹姆斯·哈登
休斯顿火箭队的球星——詹姆斯·哈登,他是2018赛季的mvp,现在是除了詹姆斯之外的反勇先锋。 个人荣誉有很多,比如第一阵容、得分王、助攻王、单打冠军、mvp等。 他带领球队取得队史最佳65胜战绩,以场均36分超越科比·布莱恩特的得分纪录,多次入选全明星首发,并带领美国国家队夺得奥运会冠军、世界锦标赛等多项杰出成就。
然而,尽管他的数据非常出色,但他在季后赛却被批评表现疲软。 然而,由于他年复一年地倒在勇士队脚下,大家开始质疑他,认为他动力不足,或者实力不够,无法承担第一分卫的称号。 因此,很多人都说,正是因为没有好的得分后卫,他才获得了如此多的荣誉。 也就是说,没有让叔子出名的英雄。 如果是在四大分卫时代,哈登肯定会从一名普通球员开始。
这真的是结果吗? 由于哈登的巅峰时期和四大分卫不在同一个时代,所以我们无法基于现实进行比较。 然而我们可以用数据来确认哈登真的不如四大分卫吗?
温馨提示,如果您只对分析结果感兴趣,可以直接跳至结果分析部分。 如果你也对分析过程感兴趣,想要学习一些技巧,或者找出作者的一些缺陷,那么就往下看吧。 对于初学者,请放心,我的代码写得很简单,很容易理解,并且不需要任何技巧。 还有很大的优化空间。 你可以自己改进一下。
源代码在文章末尾有下载链接。
准备数据源
想要分析哈登和四大分卫的表现,首先要有数据来支撑。 我们的数据来自stat-nba,这是数据最全面的中国NBA网站。 当然我们不是手动获取,我们使用简单的爬虫技术来获取。 在这里,希望你有前端基础和基础,不然会显得有点困难。
其中,科比的数据网址为:
特雷西·麦克格雷迪的数据网址是:
的数据URL是:
艾弗森的数据网址是:
哈登的数据网址是:
那么我们在分析他们的能力时,就需要指标作为参考。 笔者利用自己有限的篮球知识,筛选出了6个指标。 它们是:场均得分、场均助攻、场均篮板、胜利贡献值(ws)、球员效率值(per)、真实投篮命中率。
由于哈登和四大分卫的巅峰期是交错的,所以我们不根据具体赛季进行比较,因为将哈登的巅峰赛季和四大分卫生涯末期进行比较是没有意义的,所以我们根据关于职业生涯年。 比较的。 也就是新秀年大家都是新秀年,二年级大家都是二年级。 这是用来证明谁才是他们之中真正的王者。
捕获想法分析
爬取之前,准备好必要的库,请安装,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 = .get(url=url, =)
html = r.
= (html, 'html.')
= .("table", ="")[0] # 第一个表用于获取场均篮板、场均助攻、场均得分
= .("table", ="")[3] # 第四个表用于获取胜利贡献度和玩家效率
= .("table", ="")[4] # 第五个表,获取真实命中率
=[]
.(("pts", )) # 分数
.(("ast", )) # 助攻
.(("trb", )) # 分数
.(("ws", )) # ws
.(("per", )) # 玩家效率
.(("tsper", )) # 真实命中率
def(,表):
”“”
提取数据
”“”
= 表.("td", =) # 分数
行= []
对于td:
尝试:
比率 = float(td.text.strip()[:-1]) if td.text.strip()[-1] == "%" else float(
td.text.strip()) # 过滤掉%符号,转为浮点类型
行数(比率)
:
;
行 = 行[:-1]
行=列表((行))
打印(行)
行
至此,我们的数据基本已经回落了。 有了准备好的数据,我们就可以画图了。 这里我会画一个直方图来比较数据,但是在画直方图之前,我先把数据画出来。 编制一个综合成绩进行比较,比较当年谁表现更好,然后输出控制台得出结论,最后画出直方图作为辅助参数。
打个综合分
前面提到,我们会以平均得分、篮板、助攻、ws、per、真实投篮命中率作为指标。 所以,通过之前的数据收集,我们已经有了四大分卫以及哈登职业生涯的数据。 为了方便我们对结论进行了比较和论证,我做了一个简单的评分。 评分思路是:如果某明星在某项指标中排名所有明星中第一名,则获得5分,第二名获得4分。 将所有指标依次排序比较,将所有分数相加,得到综合得分。 综合得分越高,代表他的表现越好。
有一个输出可以帮助理解:
第一年数据比较
得分:艾伦>文斯>>科比>特蕾西
助攻数:阿伦>文斯>>特雷西>科比
篮板:文斯>特雷西>阿伦>>科比
WS:文斯>>艾伦>特雷西>科比
佩:文斯>艾伦>特雷西>科比>
真实命中率:>科比>文斯>阿伦>特雷西
综合排名:文斯>阿伦>>特雷西>科比
以上就是科比第一年的评分为得分2+助攻1+篮板1+ws1+per2+真实投篮命中率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(), key= item: item[1], =True)
print("综合排序:{0}>{1}>{2}>{3}>{4}".([0][0], [1][0], [2][0],
[3][0], [4][0]))
绘制条形图
由于我们需要绘制5个人的各种数据对比,所以绘制直方图的过程会比较繁琐。 首先我们需要对数据进行整理,即取出各个年份对应的星星的数据,形成一个列表。 然后设置字体,避免出现中文乱码。 然后绘制直方图。 注意控制直方图中的间隙,防止重叠。 最后绘制轴标签和数值变量标题。 我知道我说的太笼统,但我不知道如何更好地描述它。 毕竟还是实际看到画图的效果更好。 我直接给你看代码。 代码如下:
def (, , 年):
”“”
绘制条形图
::
”“”
, , , , =
.['font.sans-serif'] = [''] # 设置中文字体和负号正常显示
.['轴。'] = False
”“”
绘制条形图
”“”
plt.(=(15, 5))
x = 范围(len())
= plt.bar(x, =, 宽度=0.15, alpha=0.8, 颜色='红色', 标签=“科比”)
= 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], =, 宽度=0.15, alpha=0.8, 颜色='灰色',
标签=“艾伦”)
= 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], =, 宽度=0.15, alpha=0.8, 颜色='棕色',
标签=“”)
plt.ylim(0, 70) #y轴取值范围
plt.(“数值”)
”“”
设置x轴刻度显示值
”“”
plt.([范围 (len()) 中的索引的索引 + 0.35], )
plt.(“数据项”)
plt.title("{0}年数据对比".(str(year + 1)))
plt.() # 设置标题
# 编辑文本
对于 [, , , , ] 中的项目:
对于项目中的矩形:
=矩形。()
plt.text(rect.get_x() + rect.() / 2, + 1, str(), ha="", va="")
plt.show()
至此,我们已经完成了从分析数据、捕获数据、清理数据、准备数据、排序数据、绘制数据的所有步骤。 如果你听不懂也没关系。 文末有源码下载。 你可以慢慢研究。 那我们就来看看结论,论证一下谁才是真正的王者。
结果分析
这里我再说一遍,给直接看到结果的朋友们。 我们在分析他们的能力时,需要指标作为参考。 笔者利用自己有限的篮球知识,筛选出了6个指标。 它们是:场均得分、场均助攻、场均篮板、胜利贡献值(ws)和球员效率。 价值(每),真实命中率。 为了方便我们比较和论证结论,我做了一个简单的评分。 评分思路是:如果某明星在某项指标中排名第一,则获得5分,第二名获得4分。 将所有指标依次排序比较,将所有分数相加,得到综合得分。 综合得分越高,代表他的表现越好。 由于哈登目前只有10年的数据,所以我们只比较前十年的数据。
有一个输出可以帮助理解:
第一年数据比较
得分:艾伦>文斯>>科比>特蕾西
助攻数:阿伦>文斯>>特雷西>科比
篮板:文斯>特雷西>阿伦>>科比
WS:文斯>>艾伦>特雷西>科比
佩:文斯>艾伦>特蕾西>科比>
真实命中率:>科比>文斯>阿伦>特雷西
综合排名:文斯>阿伦>>特雷西>科比
以上就是科比第一年的评分为得分2+助攻1+篮板1+ws1+per2+真实投篮命中率4。按照综合评分排序,第一年表现最好的是卡特。
第一年:
直方图比较:
文本输出:
结论:第一年综合评分中JRS直播,卡特第一,艾弗森第二,哈登第三,麦迪第四,科比第五。 最好的是卡特,最差的是科比。
第二年:
直方图比较:
文本输出:
结论:第二年综合评分中,卡特第一,艾弗森第二,科比第三,哈登第四,麦迪第五。 最好的是卡特,最差的是麦迪。
第三年:
直方图比较:
文本输出:
结论:第三年综合评分中,卡特第一,艾弗森第二,哈登第三,科比第四,麦迪第五。 最好的是卡特,最差的是麦迪。
第四年:
直方图比较:
文本输出:
结论:第四年综合评分中,哈登第一,麦蒂第二,科比第三,艾弗森第四,卡特第五。 最好的是哈登,最差的是卡特。
第五年:
直方图比较:
文本输出:
结论:第五年综合评分,麦迪第一,哈登第二,科比第三,艾弗森第四,卡特第五。 最好的是麦迪,最差的是卡特。
第六年:
直方图比较:
文本输出:
结论:第六年的总体评分中,麦蒂第一,哈登第二,科比第三,艾弗森第四,卡特第五。 最好的是麦迪,最差的是卡特。
第七年:
直方图比较:
文本输出:
结论:第七年综合评分中,科比第一,哈登第二,麦迪第三,艾弗森第四,卡特第五。 最好的是科比,最差的是卡特。
第八年:
直方图比较:
文本输出:
结论:第八年综合评分中,哈登第一,卡特第二,麦迪第三,科比第四,艾弗森第五。 最好的是哈登,最差的是艾弗森。
第九年:
直方图比较:
文本输出:
结论:第九年的整体评分中,哈登第一,科比第二,艾弗森第三,卡特第四,麦迪第五。 最好的是哈登,最差的是麦迪。
第十年:
直方图比较:
文本输出:
结论:第十年综合评分,哈登第一,科比第二,艾弗森第三,麦迪第四,卡特第五。 最好的是哈登,最差的是卡特。
综合评价
注意,以下时间是在5个人的相应年份进行比较。 所以,这是一场强者之间的对话。 即使表现最差,在联盟中也依然非常出色。
十年综合评价:
科比最好的时光:1,最差的时光:1。
麦迪最好次数:2次,最差次数:3次。
卡特最好的次数:3次,最差的次数:5次。
艾弗森最好的次数:0,最差的次数:1。
哈登最好次数:4次,最差次数:0次。
这个数据反映正确吗?
第一个是科比。 科比职业生涯只获得过一次MVP。 除了夺冠那几年,他基本上都处于季后赛边缘,甚至没能进入季后赛。 所以,这十年对于他来说,最好的和最坏的都只有一次。 只有一次才适合。
第二位是麦迪。 麦迪的魔术生涯非常精彩,但在火箭生涯末期,他的表现确实很一般。 恰巧麦迪拥有两个得分王,火箭队后期经常受伤。 最差的次数是3次,属于正常范围。
接下来是卡特。 卡特最出色的地方在于,他在新秀的前几个赛季就获得了猛龙队的年度最佳新秀,并随篮网队打进了东部决赛。 不过,他在之前的十年里也多次未能进入季后赛。 因此,他的最大次数3次和他最差次数5次基本一致。
嗯,艾弗森比较一般。 其实我也查不出这个数据和他之前十年的表现是否相符。 我知道的太少了。
然后就是哈登,他以新秀身份随雷霆队进入了最佳新秀阵容,并获得了最佳第六人。 然后在火箭时期,他多次获得MVP第二,也获得过一次MVP。 他获得最好次数最多是很正常的。
注意,以上数据为常规赛场均数据,不包括季后赛。
最终的结果是,就常规赛而言,现役第一得分后卫并不逊色于四大得分后卫,并且在最佳表现数量上排名第一。 职业生涯从未缺席过季后赛,在火箭队职业生涯多次MVP中排名第二。 他还获得了MVP,他的表现是最好的。 他现在缺少的是冠军。
当然,哈登想要追上科比在季后赛的表现还有很长的路要走。 毕竟科比是上帝之后最好的得分后卫。
我们被告知,哈登并不是因为天赋而出名,而是通过自己的实力赢得了名气。 就常规赛而言,四大分卫中没有一个表现比他更好。
如果您对我的文章感兴趣,可以关注我的主页或者我的公众号,并给我点赞。 可惜写了这么多字。 哈哈。