iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0

在介紹今天的主題前,想補充昨天提到的 month 這個參數。在昨天的文章裡我有提供一項 官方文件 來介紹在使用上應該填入的值。我昨天的介紹是需填入特定的月份,但其實不完全正確,像是如果輸入 SEPTEMBER 不會只有 9 月的資料,而是會有 9 月 + 10 月的資料,所以在查找相關月份的時候還是要注意這份文件所提供的資料。另外就是,假設我們是輸入數字,數字也不一定是指那個月份,像是剛剛的 9 + 10 月就是用數字 9 來代替全部,然後可以從這個 PR: Update fangraphs month enum to support 'last x' games by abrobert · Pull Request #366 · jldbc/pybaseball (github.com) 看到,其實還有其他數字可以使用,也不會是對應的月份,不過他還沒有合併的最新版本,可以先不用擔心誤植。

team_ids

昨天在介紹 team 這個參數的時候,有提到這個 method,他可以用來查找各網站的隊伍 ID,我們就來看看如何使用他吧。

team_ids 可以使用兩個參數,不過他們都不是一定要填的,如果不帶任何參數的話會回傳 1876 - 2021 年的各網站隊伍 ID。只到 2021 的原因目前我所知是英文他們是讀取一個 csv 檔 fangraphs_teams.csv 取得 ID 資料,但後來沒更新最新年份的。不過我觀察一下後面幾年的 ID 沒什麼變化,所以可以使用 2021 的資料來使用在最近的球季。

參數:

  • season:須為 1876 - 2019 的整數,可以查到該球季的球員 ID。
  • league:須為字串,預設是 ALL 取得所有聯盟的資料,可能的值有 AL (美聯)、NL(國聯),還有 AA、UA、PL、FL,不過後面的聯盟我不太熟,看有沒有其他人可以幫我補充。

為了拿到最近的資料,這邊用 season=2019 來查找:

from pybaseball import team_ids

team_ids(2019)

回傳結果會有 7 個欄位,分別為:

  • yearID:第幾年的資料。
  • lgID:聯盟的ID。
  • teamID:FanGraphs 使用的隊伍簡寫。
  • franchID:目前不確定是哪個 method 需要的簡寫,之後查到的話我會再補充,根據官方文件我猜想可能是 Lahman 資料庫的簡寫。
  • teamIDfg:FanGraphs 使用的隊伍 ID,昨天提到的 team 參數就會需要用這個。
  • teamIDBR:Baseball Reference 使用的隊伍 ID,之後介紹 BR 的方法會需要用到。
  • teamIDretro:Retrosheet 使用的隊伍 ID,之後介紹 Retrosheet 的方法會需要用到。

回傳的資料大概會是長這樣(取前幾項):

team_batting, team_pitching, team_fielding

以上三個方法是 FanGraphs 用來取得隊伍的總和資料,不過因為是爬同一個 URL 底下的資料,所以用到的參數也都一樣,可以去參考我前兩天的文章。

甚至可以直接在前面介紹的方法加 team=(0, ts) 也可以得到同樣的隊伍總和資料,不過欄位的順序還有資料的排序會不一樣,可能需要注意一下。另外我昨天沒提到的是,如果把 0 改成隊伍 ID 的話就會變成獲得單一球隊的隊伍總和資料。

本日小結

今天介紹怎麼取得隊伍 ID,跟球員 ID 一樣,之後假設有甚麼 methods 需要相關 ID 就都可以用這個方法查。另外稍微提到了一些跟隊伍相關的其他方法,因為參數使用都一樣就不多再說明,今天也感謝大家耐心都收看。

最後我想提醒一件事,假設想查找 FanGraphs 相關的原始碼的話,都會在 fangraphs.py 這個檔案裡。隊伍相關的原始碼也在裡面,如果是查 team_batting.py 之類的裡面會是 Baseball Reference 的原始碼,但是官方文件 team_batting.md 是 FanGraphs 的文件,Baseball Reference 的文件會叫 team_batting_bref.md,有點混淆,還請大家多注意。明天會來介紹一些 FanGraphs 上獨有的數據指標跟解釋一些我覺得重要的欄位。


上一篇
Day 06 - FanGraphs 投球篇
下一篇
Day 08 - FanGraphs 進階數據解釋
系列文
Python 棒球數據分析套件 pybaseball 介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言