iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0

今天再來介紹另一個數據網站,Retrosheet。Retrosheet 是 David Smith 在 1989 年開始與一些棒球愛好者一起開始的 Project。一開始是他們一起建立的資料庫系統,後來在 1997 年正式把它們的內容提供到網路上給全部的人免費使用。

Retrosheet 不一樣的地方是他存有各個比賽的 Play-by-Play 資料,也就是場上發生什麼狀況都會有紀錄,像是打者會怎麼出局,或是壘上跑者怎麼推進。也會每場比賽的 BoxScore 資料,可以參考它們網頁上的資料:

Retrosheet Boxscore: Cincinnati Reds 6, Atlanta Braves 3

Token

在 pybaseball 裡面,獲得 Retrosheet 的方式會跟使用 Lahman 一樣,都是從 Chadwick Bureau 的 Github 裡的檔案抓取資料,不一樣的地方是 Retrosheet 有些 functions 必須取得 Github 的 token 後加入進 GH_TOKEN 這個環境變數才能執行。如何取得 Token 可以參考 Github 的官方文件:

Managing your personal access tokens - GitHub Docs

這邊示範如何在 Colab 上面新增環境變數

from pybaseball import season_game_logs
# 把 <your_token> 換成自己在 Github 上面產生的 token
%env GH_TOKEN=<your_token>

# 如果沒加入環境變數這一行會回傳錯誤
season_game_logs(2022)

需要 token 的 functions 有:

  • events(season, type="regular", export_dir="."):下載輸入球季當季的所有 play-by-play 事件,參數 type 可以選擇例行賽 (regular)、季後賽 (post) 與全明星賽 (asg)。另一個參數 export_dir 則是下載的路徑,因為目前 pybaseball 還沒有把 retrosheet 的檔案轉成 DataFrame,所以會用下載的方式把檔案下載下來。
  • rosters(season):獲得輸入球季的球員資料。不知道為什麼我試了一些球季都會回傳錯誤,可能之後要開個 Issue 問問看。
  • schedules(season):獲得輸入球季的賽程資料。可以知道星期與早場晚場等資訊。
  • season_game_logs(season):獲得輸入球季的逐場資料。回傳欄位會跟 events 一樣,但只會包含當場的數據總和與先發球員名單。

不需要的 functions 則有:

  • park_codes():球場資訊,可以知道甚麼時後啟用跟什麼時候停用。
  • world_series_logs():獲得世界大賽的比賽資訊,會跟 season_game_logs 回傳一樣的欄位格式。
  • all_star_game_logs():獲得全明星賽的比賽資訊,會跟 season_game_logs 回傳一樣的欄位格式。
  • wild_card_logs():獲得季後賽外卡賽的比賽資訊,會跟 season_game_logs 回傳一樣的欄位格式。
  • division_series_logs():獲得季後賽分區系列賽的比賽資訊,會跟 season_game_logs 回傳一樣的欄位格式。
  • lcs_logs():獲得世界大賽前的聯盟大賽的比賽資訊,會跟 season_game_logs 回傳一樣的欄位格式。

再次提醒目前只有 events 那個 function 會下載檔案下來,其他還是會回傳 DataFrame,所以自己在試的時候要注意一下。

其實在 Statcast 的 Baseball Savant 出來前,很多人是在 Retrosheet 上面來得知一些投打對決的資料的,因為像是 FanGraphs 跟 Baseball Reference 都沒有那麼詳細的 play-by-play 資料,另外 Retrosheet 官網也有自己分類一些有趣的事件給使用者快速查詢,有興趣也可以上去看看:

Retrosheet Special Features

本日小結

今天介紹完 Retrosheet 之後,pybaseball 所包含的數據網站大多數已經介紹完了,感謝大家耐心地看到現在,剩下幾天會把一些還沒介紹的 functions 可能用一天介紹完,再來會介紹我之前參加數據比賽是怎麼使用 pybaseball 的,如果還有篇幅會介紹要如何在 Github 上面貢獻 pybaseball。


上一篇
Day 26 - Lahman
下一篇
Day 28 - Cache 與其他
系列文
Python 棒球數據分析套件 pybaseball 介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言