使用NHL API分析职业冰球数据-第1部分

sgenzersgenzer 12管理员,版主,员工,RapidMiner认证分析师,社区管理员,成员,大学教授,PM版主职位:2959年社区经理
2018年12月编辑 知识库

NHL_Logo_former.svg.png

你好,RapidMiners -

好吧,我的“小球和圆周率”项目仍在收集数据,所以我决定改变方向,进入更多的体育数据。“梦幻足球”挑战很有趣,但在佛蒙特州,我们都是冰球爱好者。另外,平昌冬奥会马上就要举行了,所以也许更多的人会感兴趣……

第一部分只是获取数据。所以北美的“国家冰球联盟”(是的,它是加拿大和美国,但它仍然是“国家”冰球联盟——不要对我说政治)有一个新的API可供公众使用,在那里你可以下载几乎所有关于每场比赛的内容——包括每场比赛!这太疯狂了。更疯狂的是,这是我所见过的唯一一个API没有,是的,没有来自NHL的官方文件。奇怪但却是事实。因此,有一小群专门的数据科学家一直在尝试对API进行逆向工程以获得端点,并取得了相当的成功。大部分作品来自Kevin Sidwar(见他的优秀网站)在这里)加上GitHub上的一些随机R和Python代码。

首先,我想通过列出根URL、所有已知端点和一些示例调用/响应来扩展Kevin的工作。

根URL:https://statsapi.web.nhl.com/api/v1/

端点:

/团队

/团队/[团队id]

/团队/[团队id] /名单

/人/[人id]

/部门

/部门/(部门id)

/会议

/会议/[会议id]

/特许经营

/特许经营(特许经营id)

/场地/[场地id]

/排名

/时间表

最重要的是:

/游戏/[游戏id] /内容

/游戏/[游戏id] / feed /生活

是的,没错——实时馈送。不仅是比赛细节,还有球员在冰上的X坐标和Y坐标。这真的很酷。例如10月4日多伦多枫叶队对温尼伯喷气机队的比赛。本场比赛的第一个进球由纳齐姆·卡德里在第一节打进。好吧,这是一个表格分数。但他的手腕射门距离冰场中心(坐标- 84,6)正好84英尺,就在球门旁边。很酷。下面是JSON片段:

"result": {
"event": "Goal"
"eventCode": "WPG212",
“eventTypeId”:“目标”,
“描述”:“纳齐姆·卡德里(1)手腕投篮,助攻:詹姆斯·范·里姆斯戴克(1),泰勒·博扎克(1)”,
"secondaryType": "手腕射击",
"strength": {
“代码”:“PPG”,
“name”:“Power Play”
},
“gameWinningGoal”:false,
“emptyNet”:false
},
“about”:{
"eventIdx": 93,
"eventId": 212,
“period”:1,
"periodType": "REGULAR",
"ordinalNum": "1 ",
"periodTime": "15:45",
" periodtimerremain ": "04:15",
"dateTime": "2017-10-04T23:47:47Z",
“目标”:{
“away”:1,
home: 0

},
"coordinates": {
"x": 84.0,
y: -6.0
},
“team”:{
"id": 10,
“名字”:“多伦多枫叶”,
“/api/v1/teams/10”,
“triCode”:“TOR”

[以防你想弄清楚,坐标(0,0)代表冰的死心。x轴在冰上纵向/球到球的方向;y轴横向穿过/垂直于目标-目标轴。Xmax = 42.5, Xmin = -42.5, Ymax = 100, Ymin = -100。请注意,曲棍球场是一个圆角矩形;坐标(100,42.5)不存在。根据我的研究,球门线应该是距离冰场两端11英尺的距离,即以(89,0)和(-89,0)为中心,但当我查看球门线上进球的坐标时,它们似乎更像(84,0)。]

1200年px-ice_hockey_layout.svg.png

我在这篇文章中附上了每个端点的示例JSON文件,当然还有一些RapidMiner进程以获得良好格式的数据。

下次见…

斯科特

标记:
dwoodward

评论

登录注册置评。