使用NHL API分析职业冰球数据-第1部分
你好,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)。]
我在这篇文章中附上了每个端点的示例JSON文件,当然还有一些RapidMiner进程以获得良好格式的数据。
下次见…
斯科特
评论