iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0

pitching_stats

昨天介紹打擊,今天就要來講投球了。他們使用的參數都一樣,因為是爬同一個連結下的資料,比較大的差異就是他回傳的欄位會變成跟投球相關的資訊。因此,預設的 qual 會一樣是 Qualified 但會是最小投球局數,大聯盟標準就是 球隊出賽數 * 1局 為最小局數,也就是一季的標準會是 162 局。

另外想更正一下我上一篇的錯誤,其實官方文件有把可以使用的參數都列出來,只不過是在另外一個文件裡。可以從這個 官方文件 知道剩下還有哪些參數可供我們使用。今天就把昨天沒提到的再一一介紹完:

month:月份篩選,可以填特定字串或數字,想知道特定月份資料的話可以使用,預設值是 ALL,會得到所有月份的資料。能輸入的月份有限定,可以從這個 官方文件 來知道,如果填不在設定裡的數值會回傳錯誤。

on_active_roster:布林值,預設是 False,如果設成 True 的話會只留下現役球員的資料。也就是說,在選的範圍不會有已經退役球員的資料,只會有今年現役的球員數據。假設在設成 True 的情況下找不到球員,就會回傳錯誤。

minimum_age:篩選的最小年齡,需要為整數,預設是 0。目前有的資料最小應該是 14。

maximum_age:篩選的最大年齡,需要為整數,預設是 100。目前有的資料最大應該是 58 歲。

team:可以篩選特定球隊的球員,需要為字串,預設是 '' 表示不會做隊伍的篩選。如果把數值設成 team="0,ts" 的話會變成獲得各球隊的總和資料。另外要特別注意,如果輸入查不到的球隊 ID,會有錯誤發生。pybaseball 也有提供隊伍 ID 的查詢方式,我會在下一篇與 FanGraphs 其他的隊伍功能一起做介紹。

position:根據守備位置做篩選,可以在這個 官方文件 知道有哪些可以用的種類,輸入不在這裏面的字串的話會回傳錯誤。這邊要注意一點,如果是用 pitching_stats 的話不管填哪一個都會回傳所有的投手資料。補充一點我在 Day 04 - FanGraphs 介紹 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天 (ithome.com.tw) 提到的 NP 守備位置,是代表 No Position 也就是沒有守位的意思,不過我目前沒有遇到符合這項的資料。

max_results:最大輸出的資料數量,可以控制想要幾筆資料,預設是 1000000,也是現在能搜尋的最大數量。

這邊提供一些範例程式碼給大家參考:

from pybaseball import pitching_stats

# 獲得 2023 年 6 月的投手資料 下面兩個程式碼會有相同結果
data = pitching_stats(2023, month=6)
data = pitching_stats(2023, month="JUNE")

# 只會有現役球員在 2010 有投球的 2010 數據 ex: Justin Velander, Clayton Kershaw, Zack Greinke
data = pitching_stats(2010, on_active_roster=True)

# 獲得 ATL 亞特蘭大勇士的投手資料
data = pitching_stats(2023, team="16")

本日小結

今天介紹的取得投手資料的方法,由於重複的地方跟打擊部分很多,所以只做昨天沒提到的參數作補充,如果想看官方怎麼介紹的話也可以參考他們的 官方文件 ,雖然我覺得他們有點像是複製貼上的,像是 qual 那邊的介紹應該是最小局數不是最小打席數,ind 已經棄用也還沒更新,之後可能會再開個 Issue 給他們。還是感謝大家耐心地看完這篇,明天我打算介紹今天提到的獲得隊伍 ID 的方法,還有剩下取得 FanGraphs 隊伍資料的 methods。

今天的範例程式碼:https://colab.research.google.com/drive/1g4e4pWT6I5XwvJ7EqvvsTjqapkX694Rj?usp=sharing


上一篇
Day 05 - FanGraphs 打擊篇
下一篇
Day 07 - FanGraphs 隊伍篇
系列文
Python 棒球數據分析套件 pybaseball 介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言