这事儿还得从那天晚上说起,我跟朋友喝酒,他突然问我:“你说2016年那届新秀,到底值不值?”我当时愣住了,因为作为一个篮球迷加码农,我脑子里第一反应居然是——写个爬虫去拉数据。
结果真写了。用Go语言,不是因为它多优雅,就是快,简单粗暴,我抓了NBA官方和Basketball-Reference的选秀数据,然后就着这些数字,我想聊聊2016年那届选秀,到底有多诡异,多有意思。
2016年选秀:二轮秀比状元还香的一年
先直接看数据,我用Go写了个小脚本,跑出来的统计结果长这样:
2016届新秀生涯PER效率值前十(截至2024赛季)
| 球员 | 选秀顺位 | 生涯PER | 全明星次数 |
|---|---|---|---|
| 尼古拉·约基奇 | 第41顺位 | 8 | 5 |
| 贾马尔·穆雷 | 第7顺位 | 2 | 1 |
| 巴迪·希尔德 | 第6顺位 | 8 | 0 |
| 帕斯卡尔·西亚卡姆 | 第27顺位 | 5 | 2 |
| 马尔科姆·布罗格登 | 第36顺位 | 2 | 1 |
| 多曼塔斯·萨博尼斯 | 第11顺位 | 9 | 3 |
| 布兰登·英格拉姆 | 第2顺位 | 8 | 1 |
| 杰伦·布朗 | 第3顺位 | 1 | 3 |
| 德章泰·穆雷 | 第29顺位 | 3 | 1 |
| 本·西蒙斯 | 第1顺位 | 9 | 3 |
看到没?状元本·西蒙斯 PER 15.9,而二轮秀约基奇 26.8,足足高了10.9个点,这差距,怎么说呢,就像你花了几百万买了个顶配电脑,结果发现隔壁小年轻从垃圾堆捡了个零件组装的东西,跑分是你三倍。
为什么我选Go来写这个分析
聊回技术,我本来可以用Python的,pandas一把梭多舒服,但我偏要用Golang写,原因有三:
- 并发抓数据快,我要从两个网站分别拉新秀数据、生涯数据、荣誉数据,go routine一开,十个协程并行跑,三分钟搞定所有。
- 静态类型省心,球员名字、顺位、PER值、选秀年份,这些字段我定义了struct,编译期就检查完了,不会出现运行时字段写错的情况。
- 部署就一个二进制文件,写完了编译一下,发到linode服务器上,一行命令跑起来,连依赖都不用装。
代码大概长这样(简化版):

type DraftPick struct {
PlayerName string
PickNumber int
PER float64
AllStar int
}
然后我就拿着这些数据,开始琢磨:这届新秀到底怎么评价?
深度分析:2016年选秀的三大奇葩现象
前五顺位翻车率惊人
本·西蒙斯(状元)、布兰登·英格拉姆(榜眼)、杰伦·布朗(探花)——这三个人其实都不算水,西蒙斯有三届全明星,英格拉姆有一届,布朗有三届,但问题在于他们的顺位期望值太高了。
特别是状元西蒙斯,一个不会投篮的控卫,硬生生把自己从“下一个詹姆斯”折腾成了“本世纪最争议状元”。
我用Go算了一下前五顺位的总PER值,再跟后面随便挑五个二轮秀比——你猜怎么着?二轮秀总和完胜,约基奇一个人就拉高了整个二轮秀的平均值。
二轮秀逆袭成历史级超巨
尼古拉·约基奇,第41顺位。 这人在选秀夜在干嘛?他在家吃垃圾食品,被通知选中时还一脸懵,结果呢?两届MVP,一届总冠军,一次FMVP,按历史排名,他已经是中锋位置前五的存在。
我用Go统计了一个数据:2016届所有球员的总胜利贡献值(WS)前十里,有四个是二轮秀或首轮末段:
- 约基奇(41顺位)
- 西亚卡姆(27顺位)
- 布罗格登(36顺位)
- 德章泰·穆雷(29顺位)
为什么这么多遗珠?
我后来查了当时的球探报告,约基奇被看轻,理由特别荒谬:他运动能力差、跳不起来、跑得不快,但NBA是比谁跑得快吗?是比谁把球放进篮筐的本事大啊。
西亚卡姆同理,从非洲来的,大学打NCAA二级联盟,球探根本不正眼瞧,结果人家练出了持球攻,拿了最快进步球员,跟卡哇伊一起拿了冠军。
周琦:中国球迷最纠结的一个名字
2016年第43顺位,休斯顿火箭选中了周琦。
我拿Go跑数据的时候,特别把他的数据标红了,场均6.5分钟,1.3分,1.2篮板——看数字确实惨,但如果你仔细看他的真实命中率和护框效率,其实在有限的出场时间里,他是个合格的防守者。
我写了个函数计算他的每36分钟数据:
func per36(minutes float64, points float64) float64 {
return points / minutes * 36
}
周琦每36分钟护框次数接近3次,盖帽率高达4.2%,这数字在2016届新秀里能排前五。
可惜伤病、语言、文化,加上适应性问题,他始终没能把训练场上的天赋带到正式比赛,挺难过的,我写这部分的时候,心里有点堵。
实践一下:用Go复现我的分析流程
如果你也想自己跑一遍2016年选秀的数据,我大概说下步骤:
- 从Basketball-Reference抓取2016届所有球员的生涯数据。
- 用Go的
encoding/csv包整理成CSV。 - 写个排序函数按PER值排序。
- 输出前十名。
核心代码也就二三十行,相比NBA那帮球探动不动就用Excel拉几百行数据,Go版本跑一次也就0.3秒。
一点私人的感受
写这篇文章的时候,我把2016年选秀夜的录像又看了一遍,富尔茨被选中时笑得多灿烂,现在在魔术板凳上蹉跎岁月,西蒙斯跟76人闹掰了,现在在篮网打球像打卡上班,英格拉姆在鹈鹕独木难支,杰伦·布朗倒是熬出来了,拿了东决MVP。
而约基奇,那时候坐在家里,穿着宽松T恤,接到电话“你被选中了”,他妈妈在旁边哭了。
选秀这玩意儿,真的是运气 + 球探眼光 + 球员本人的命。
我写这个Go程序的时候,其实就一个想法:数据不会骗人,但数据也解释不了所有,你再精准的分析,也预测不了约基奇会拿MVP,更预测不了西亚卡姆从非洲小子变成冠军前锋。
2016年这届选秀,就像一场实验:它证明了状元可能是水货,二轮秀可能当历史级超巨。
我用Go跑完了数据,关掉了终端,发呆了很久,然后决定把这篇文章写下来,不为别的,就为那些在选秀夜被低估的人,还有那些用代码试图理解篮球世界的我这种人吧。
本文来自作者[kyadmin]投稿,不代表ac米兰官网立场,如若转载,请注明出处:http://www.milanomuse.com/nba/1282.html
评论列表(4条)
我是ac米兰官网的签约作者“kyadmin”!
希望本篇文章《从戈贝尔到周琦,NBA16年选秀的奇葩与惊喜,我用Go语言写了个分析程序》能对你有所帮助!
本站[ac米兰官网]内容主要涵盖:AC米兰,ac米兰中文,AC米兰官网
本文概览:这事儿还得从那天晚上说起,我跟朋友喝酒,他突然问我:“你说2016年那届新秀,到底值不值?”我当时愣住了,因为作为一个篮球迷加码农,我脑...