日期:2023/01/07 04:11作者:佚名人气:
#湖人总转军#升级版NBA投篮数据可视化,4行代码即可实现!
Crossin的编程教室
交叉密码
每天5分钟,轻松学会编程。 点此获取通俗易懂的Python入门教程。 编程世界的初学者指南。
发表于
包含在集合中
大家好,欢迎来到Crossin的编程课堂!
虎扑的JRs称呼了这么多年的“湖人总冠军”,今年终于成真了!
36岁的詹还不老,4个总冠军+4个FMVP。
我们之前做过一个NBA球员投篮数据可视化的案例:
可惜本文使用的官方接口现已关闭,导致代码无法使用。
不过最近公众号Fanast的作者小F告诉我,有大佬造了一个“轮子”,提供了一个全自动化的接口,只需要4行代码就可以实现。 我将在这里与您分享。
GitHub地址:
shot-chart 库也可以直接安装在 PyCharm 中。 记得选择版本 1.0.0。 目前最新的版本是1.1.0,没有明确区分scored和unscored,所以我们选择安装1.0.0版本。
您也可以下载并安装这两个版本以查看不同之处。
from shot_chart.core import *
# 2019-2020赛季
shots_2019 = make_df(untar_data(URLs.SHOTS_2019))
同样,这个老板也把数据放到了网络上,需要通过数据请求来获取。
通过查看源码(core.py)今年nba夺冠热门,发现数据的请求地址:
地址如下今年nba夺冠热门,从2000-2001赛季到2019-2020赛季:
# 2000-2001赛季常规赛数据
https://nba-shot-charts.s3.amazonaws.com/shots-2000.tgz
.......................................................
# 2019-2020赛季常规赛数据
https://nba-shot-charts.s3.amazonaws.com/shots-2019.tgz
直接在浏览器上访问地址,下载压缩包,解压得到CSV文件。
果然是2019-2020赛季NBA常规赛球员的投篮数据。
全部下载下来,这样就可以直接在本地调用而不用担心被墙挡住。
数据读取代码修改如下,其实就是pandas读取:
from shot_chart.core import *
# 2019-2020赛季
shots_2019 = make_df('shots-2019.csv')
2020赛季NBA球队名单,调用函数list_teams:
from shot_chart.core import *
# 2019-2020赛季
shots_2019 = make_df('shots-2019.csv')
# 球队名单
print(list_teams(shots_2019))
结果如下:
对于LA Clippers(快船队)和Milwaukee(雄鹿队)来说是个遗憾。
两支夺冠热门球队分别被掘金和热火掀翻。
今年湖人的总冠军球队,调用函数list_team_players:
from shot_chart.core import *
# 2019-2020赛季
shots_2019 = make_df('shots-2019.csv')
# 湖人夺冠班底
print(list_team_players(shots_2019, 'LA Lakers'))
结果如下:
它还带有拍摄次数。 詹姆斯、戴维斯、库兹马、波普、格林位列前五。
卧龙凤雏(格林、蒲)得一,天下可安。
湖人2020赛季常规赛全队投篮情况,调用函数TeamShots:
from shot_chart.core import *
# 2019-2020赛季
shots_2019 = make_df('shots-2019.csv')
# 湖人队2019-2020赛季投篮情况
Lakers = TeamShots(shots_2019, "LA Lakers")
Lakers.plot_shots()
果然是4行代码~
左边的图表是绿色的射门得分和红色的投篮失误。
右图横坐标表示距离,纵坐标表示次数,绿色表示击球命中次数,橙色表示击球次数。
FG投篮命中率,eFG真实投篮命中率。
真实命中率 = 全场得分 / [2 x 全场投篮数 + 0.44 x 罚球数]
再来看看三十岁男人(老詹)的拍摄情况:
from shot_chart.core import *
# 2019-2020赛季
shots_2019 = make_df('shots-2019.csv')
# 勒布朗-詹姆斯2019-2020赛季常规赛投篮可视化
james = PlayerShots(shots_2019, "LeBron James")
james.plot_shots()
可见,篮下才是詹姆斯的主要得分点。
2003年到2020年从小皇帝到詹皇的投篮数据可视化:
from shot_chart.core import *
import pandas as pd
# 获取图表列名
shots_2000 = make_df('shots-2000.csv')
columns_list = [column for column in shots_2000]
# 新建一个空的dataframe
shots_all = pd.DataFrame(columns=columns_list)
# 获取2000-2020常规赛总数据
for i in range(2001, 2020):
# 文件名
file_name = 'shots-' + str(i) + '.csv'
shots = make_df(file_name)
# 纵向拼接
shots_all = pd.concat([shots_all, shots], ignore_index=True)
# 输出
# print(shots_all)
# 詹姆斯03-20常规赛投篮可视化
james = PlayerShots(shots_all, "LeBron James")
james.plot_shots()
发现图标有点大,可以修改core.py文件。
在plt.scatter中加入参数s,大小设置为3。
突然发现詹皇竟然这么全面,三分、篮下、中投,没有缺点。
24号和23号之间的传承,曼巴将永垂不朽!
# 科比00-17常规赛投篮可视化
Kobe = PlayerShots(shots_all, "Kobe Bryant")
Kobe.plot_shots()
24,也就是全力以赴24小时!
再看看今年随队夺冠的霍大师(霍华德):
# 霍华德04-20常规赛投篮可视化
howard = PlayerShots(shots_all, "Dwight Howard")
howard.plot_shots()
大部分都是内线投篮,外线投篮的寥寥无几。
曾经的快乐兽,只为詹姆斯而存在,后来却开始了流浪生涯,沦为替补。
最终这位湖人浪子回头,当了一名蓝领,拿到了属于自己的总冠军。
心里有一种莫名的感动,向我们的青春致敬! ! !
已上传20个CSV文件,回复“NBA”获取。
千山万水,情不自禁,求购~