はじめに
データ分析、特にデータの可視化の領域に興味があり、Tableau を使って投球データの可視化に挑戦しています。 この記事では学んだことのアウトプットととして、「投手の投球傾向」をテーマに、1球単位の投球データを使って 「どんな球種をどれくらい投げているのか」「どのコースに多いのか」などを Tableau で可視化した過程を紹介します。
- 使用ツール:Tableau Public
- 使用データ:https://baseballsavant.mlb.com/leaderboard/statcast
1つ1つの工程を記載していくと、長くなってしまうため、ワークシートごとに分けて紹介していきます。
実際に作成したものは、こちらから確認できます。
[Tableau Public]
🎯 目的
野球データを使って、投手ごとの投球傾向を可視化することを目的としました。
特に、Tableauの「LOD(レベルオブディテール)式」を使いながら、月、曜日ごとの登板状況や球種の配分、コース傾向を1つのダッシュボードで確認できるようにしています。
🧾データの概要
今回使用した主なデータには、以下のような項目です。
また、指標の解説は下記を参考にしました。
https://shinyorke.hatenablog.com/entry/statcast-csv-docs-ja
| 項目名 | 内容 |
|---|---|
| game_date | 試合日 |
| player_name | 投手名 |
| stand | 打席の左右 |
| pitch_name | 球種(例:ストレート、スライダーなど) |
| plate_x | 捕手視点から見たホームベース到達時の水平座標 |
| plate_z | 捕手視点から見たホームベース到達時の垂直座標 |
⚙️ ワークシート作成の流れ
1. 投手パラメータの作成
まずは、分析対象となる投手を選択できるように、投手用のパラメータを作成します。
今回のデータには複数の投手の情報が含まれているため、特定の投手に絞って可視化できるようにすることが目的です。
今回は、大谷投手、山本投手、佐々木投手を選択できるようにしました。
パラメータの設定
-
パラメータ名:任意(例:
日本人投手) - データ型:整数型
- 許容値:各投手に対応する整数値を設定(値:表示名 / 1:大谷翔平)
※今回のデータ量としては大きな影響はないと思いますが、パフォーマンス向上の練習として、文字列型ではなく、内部では整数型を持ち、ユーザーは文字列で認識できるパラメーターを作成しました。
パラメータとVizを連動させる計算フィールドの作成
パラメータを作成しただけでは、Vizには影響を与えないため、計算フィールドを作成してパラメータとVizが連動するようにします。
名前:日本人投手番号
case [player_name]
WHEN "Ohtani, Shohei" then 1
WHEN "Sasaki, Roki" then 2
WHEN "Yamamoto, Yoshinobu" then 3
END
※今回は、case文を使用していますが、Tableauにおいては、CASE文は制約が少しあり、IF文の方が柔軟性は高いです。
名前:真偽(日本人投手)
[日本人投手フラグ] = [日本人選手]
作成したフィルターはブール値となり、フィルターに入れることで、パラメータで選択した投手に応じてVizが更新されるようになります。
2. 球種割合メジャーの作成
次に、投手ごとの球種割合を作成します。球種割合はデータにはないため、計算フィールドを使用して作成します。1球単位のデータから、どの投手がどの球種をどれくらい投げているかを把握するために、TableauのLOD(Level of Detail)式を使います。
具体的には、以下の計算式を計算フィールドに作成します。
名前:球種割合
{ FIXED [player_name], [pitch_name], [game_date]: COUNT([pitch_name]) }
これで、ワークシート作成に必要な準備ができたため、実際に作成をしていきます!
3. 球種割合ワークシートの作成
-
列シェルフ:
合計(球種割合) -
行シェルフ:
pitch_name(球種) -
フィルターカード:
-
真偽(日本人投手)
「真」を選択し、コンテキストフィルターに設定
-
-
マークカード:
- ラベル:
合計(球種割合)- 簡易表計算で「合計に対する割合」、表(下)を選択
- ラベル:
合計(球種割合) - 色:灰色
- ラベル:
まとめ
今回は、投手パラメータの作成から球種割合ワークシートの作成までを紹介しました。
ポイントとしては以下の通りです:
- パラメータを使って特定の投手を選択できるようにした
- 計算フィールドとパラメータを連動させることでVizが動的に更新されるようにした
- LOD式を用いて、1球単位のデータから球種割合を正確に算出した
次回は、打者の左右別に投球場所を可視化するワークシートの作成方法について解説します。
もし、今回の手法でパフォーマンスを改善できる方法や計算フィールドなどより適した作成方法があれば、アドバイスやご指摘をいただけるとありがたいです!
