用于访问实时曲棍球数据以帮助分析师和爱好者的库。
hockeydata的Python项目详细描述
曲棍球数据
增强分析能力
从NHL游戏收集实时数据的库和CLI工具。在
所有数据都可以通过pythonapi或命令行工具以相同的方式访问。在
鼓励捐款
功能
- 为NHL游戏生成丰富的游戏数据。包括所有冰上选手, 事件的坐标、游戏状态以及标准元数据。在
- 为游戏生成数据。在
- 为计划范围创建游戏ID列表
- 实时游戏抓取(开发中)
安装
与Python3.5+兼容。在
使用pip
:
python3 -m pip install hockeydata
或来源:
^{pr2}$这将向您的系统添加一个新命令hockeydata
。在
此工具是什么
这个工具是出于对NHL实时数据的可靠数据管道的需要而创建的 kind of提供了,但不是真的。从多个公共源中获取数据,检查错误,并在 可能。在
由于NHL中统计报告的动态性质,此工具中的数据可能丢失/不正确 输出。我写这篇文章时的哲学是不输出比输出错误好—因为 我希望下游应用程序能够相信我的输出是正确的,并且为了分析缺失的目的 数据点通常比错误的数据点好。在
解析错误会被记录下来,并且可以在事后由我或贡献者修复。在
游戏ID
NHL统计数据的关键是“gameid”,一个唯一标识每个游戏的ID。 它是一个10位数的数字代码,格式如下:
2019020565
此工具使用游戏ID获取特定游戏的数据。您可以使用list_games
python函数或list-games
CLI
获取游戏ID的命令
用法-库
假设你想写一个每天运行一次的脚本,它将找到在给定日期玩的所有游戏,并将每个游戏的所有逐局数据下载到一个带有游戏ID的CSV文件中
fromhockeydataimportget_game_shifts,get_season_play_by_play,get_play_by_plays,list_games# get a full year of games idgame_list=list_games('2018-01-01','2019-01-01')# get play by play data for a gamedf=get_play_by_plays('2018021000')# get shift data for a gamedf=get_game_shifts('2018021000')# get play by play data for an entire season. WARNING this will take a while...approx. 20 seconds per game on my machine.df=get_season_play_by_play(2017)
格式化程序
输出包将数据格式化为几种不同的格式,例如CSV、JSON或a
基于文本的表格。每个格式化程序都有一个dump
和dumps
函数,其工作原理与Python的json
模块类似。
如果要将数据保存为JSON,例如:
fromhockeydataimportlist_gamesfromhockeydata.outputimportjsonplays=list_games('2018021000')withopen('file.json','w')asf:json.dump(plays,f)
用法-CLI
Usage: hockeydata [OPTIONS] COMMAND [ARGS]... Options: --help Show this message and exit. Commands: list-games Gets game_ids for a date range scrape Scrape a game/list for all of its live data. shifts Scrape a game for its shift data.
使用--output-format
或-o
以您选择的格式格式化数据:csv、json、pretty(这是一个很好的表),
或文本(这是一个基本表)。在内部,数据通常作为数据帧收集,因此您可以添加额外的
输出格式使用Pandas的漂亮格式功能。在
nhl list-plays 2019020406 --output-format csv > 2019020406.csv # create a new file nhl list-plays 2019020406 --output-format csv >> plays.csv # append result to plays.csv
列出游戏
Usage: hockeydata list-games [OPTIONS][START_DATE][END_DATE] Gets game_ids for a date range Options: -o, --output-format [text|csv|json|pretty] --help Show this message and exit.
游戏信息
hockeydata game-info --help Usage: hockeydata game-info [OPTIONS][GAME_IDS]... Get high-level data about a game Options: -o, --output-format [text|csv|json|pretty] --help Show this message and exit.
刮伤
$ hockeydata scrape --help Usage: hockeydata scrape [OPTIONS][GAME_IDS]... Scrape a game/list for all of its live data. Options: -o, --output-format [text|csv|json|pretty] --help Show this message and exit.
轮班
hockeydata shifts --help Usage: hockeydata shifts [OPTIONS][GAME_IDS]... Scrape a game for its shift data. Options: -o, --output-format [text|csv|json|pretty] --help Show this message and exit.
格式化程序
当前可用的格式化程序是csv
、json
、pretty
和{
使用text
输出格式,我们得到一个打印得很好的表,其中包含以下数据:
GAME_ID PERIOD TEAM PLAYER PLAYER_ID START END DURATION 0 2018021000 1 CHI DUNCAN KEITH 8470281 0.0 49.0 49.0 1 2018021000 1 L.A DION PHANEUF 8470602 0.0 47.0 47.0 2 2018021000 1 L.A DUSTIN BROWN 8470606 0.0 47.0 47.0 3 2018021000 1 CHI BRENT SEABROOK 8470607 0.0 49.0 49.0 ... 763 2018021000 3 L.A MATT ROY 8478911 1190.0 1200.0 10.0
使用csv
格式化程序,我们可以得到类似csv的输出:
,GAME_ID,PERIOD,TEAM,PLAYER,PLAYER_ID,START,END,DURATION 0,2018021000,1,CHI,DUNCAN KEITH,8470281,0.0,49.0,49.0 1,2018021000,1,L.A,DION PHANEUF,8470602,0.0,47.0,47.0 2,2018021000,1,L.A,DUSTIN BROWN,8470606,0.0,47.0,47.0 3,2018021000,1,CHI,BRENT SEABROOK,8470607,0.0,49.0,49.0 ... 763,2018021000,3,L.A,MATT ROY,8478911,1190.0,1200.0,10.0
使用json
格式化程序,我们得到类似json的输出:
[{"GAME_ID":"2018021000","PERIOD":1,"TEAM":"CHI","PLAYER":"DUNCAN KEITH","PLAYER_ID":8470281,"START":0.0,"END":49.0,"DURATION":49.0},{"GAME_ID":"2018021000","PERIOD":1,"TEAM":"L.A","PLAYER":"DION PHANEUF","PLAYER_ID":8470602,"START":0.0,"END":47.0,"DURATION":47.0},{"GAME_ID":"2018021000","PERIOD":1,"TEAM":"L.A","PLAYER":"DUSTIN BROWN","PLAYER_ID":8470606,"START":0.0,"END":47.0,"DURATION":47.0},...]
使用pretty
格式化程序,我们得到一个漂亮的表:
+-----+------------+----------+--------+------------------+-------------+---------+-------+------------+ | | GAME_ID | PERIOD | TEAM | PLAYER | PLAYER_ID | START | END | DURATION | |-----+------------+----------+--------+------------------+-------------+---------+-------+------------| | 0 | 2018021000 | 1 | CHI | DUNCAN KEITH | 8470281 | 0 | 49 | 49 | | 1 | 2018021000 | 1 | L.A | DION PHANEUF | 8470602 | 0 | 47 | 47 | | 2 | 2018021000 | 1 | L.A | DUSTIN BROWN | 8470606 | 0 | 47 | 47 | ... | 763 | 2018021000 | 3 | L.A | MATT ROY | 8478911 | 1190 | 1200 | 10 | +-----+------------+----------+--------+------------------+-------------+---------+-------+------------+
确认
这些项目极大地促进了这一工具的发展:
- Dword4的NHL API Documentation
- 进化的野生动物R Scraping Application
- 项目
标签: