この記事は、クローラー/Webスクレイピング&RPA Advent Calendar 2018 Advent Calendar 2018 の、13日目の記事です。「Baseball Play Study 2018 冬」 の、LT登壇の内容でもあります。
はじめに
2018年は、埼玉西武ライオンズが10年ぶりにパ・リーグを制しました!
しかし、野球ファンの間では「強力な打撃陣」の話が中心で、西武投手陣については厳し目の論調が目立ちました。
西武ライオンズの投手陣は、優勝にどれだけ貢献したのか、「小松式ドネーション」を使い、西武投手陣の奮闘ぶりを数値化。貢献度を検証してみたいと思います。
やること
2018年に登板した全投手データを取得し、投球内容を小松式ドネーションで数値化。
・チーム全体
・先発陣
・救援陣
の3つの尺度から評価する。
小松式ドネーションとは
投手の貢献度を数値化する方法。以下の算式で算出されます。1
(投球回数×3)+(勝利+ホールド+セーブ)×10=KD
KD×1000=ドネーション金額
元々は、オリックス・バファローズに所属する小松聖投手が行っていた、社会貢献活動から来ていますが、
先発・救援という役割を超えて、投手の総合的な貢献度を表す式である
と、某巨大掲示板で話題に。それ以来、投手陣の活躍を算出する式として、度々話題になっています2。
2018年の投手データの参照元
「プロ野球データFreak」さんから、免責事項に基づき、全投手のデータページのスクレイピングをしました。
データ取得後、投手データを
- 先発
- 救援
と大きく2つに分け、それぞれ集計をしています。
先発・救援両方を担当した選手もいますが、一度でも先発をした投手はすべて「先発」として分類することにしました3。
Node.js を利用して、データをスクレイピング
Node.jsを利用。今回は「cheerio」 を使いました。
cheerioは
Fast, flexible & lean implementation of core jQuery designed specifically for the server.
という説明の通り、jQueryのような書式でDOMの操作ができます。
以下の手順でスクレイピングを行いました。
- request でページへアクセス
- cheerio でデータをスクレイピングし、CSVに変換
- fs でローカルに保存
実行コードです。
const request = require('request')
const cheerio = require('cheerio')
const fs = require('fs');
request('https://baseball-data.com/stats/pitcher-all/era-1.html', (e, response, body) => {
if (e) {
console.error(e)
}
const $ = cheerio.load(body)
let list = $('tbody').html()
list = list.replace(/<\/td>/g,',');
list = list.replace(/<("[^"]*"|'[^']*'|[^'">])*>/g,'');
fs.writeFile('list.txt',list, function (err) {
if (err) {
throw err;
}
});
});
上記を実行すると、投手データをcsvに加工したファイル「list.txt」が生成されます。このデータを元に、集計を行いました。
※コード関連の話はここで終了。以下、プロ野球の話がだらだら続きます。
結果
西武ライオンズ投手陣の数値を検証するまえに、いくつかデータをピックアップしてご紹介します4。
2018年、もっとも貢献度が高かった投手
先発・救援問わず、両リーグで最もKD値が高かった選手ベスト5です。
セリーグ
- 1 菅野智之(巨人)
- 756,000
- 2 大瀬良 大地(広島)
- 696,000
- 3 石山 泰稚(ヤクルト)
- 669,600
- 4 近藤 一樹(ヤクルト)
- 668,600
- 5 ガルシア(中日)
- 634,600
パ・リーグ
- 1 多和田 真三郎(西武)
- 676,600
- 2 増井 浩俊(オリックス)
- 655,000
- 3 則本 昂大(楽天)
- 640,300
- 4 森 唯斗(ソフトバンク)
- 633,300
- 5 菊池 雄星(西武)
- 629,600
セリーグでまず目に入るのは、巨人の菅野投手。2018年の沢村賞受賞投手であり、最多勝・防御率・最多奪三振・ベストナインと、あらゆるタイトルを獲得した、まさに2018年を代表する投手です。
大瀬良投手は、菅野投手と最多勝を分け合い、広島の優勝に貢献しました。
3位、4位はヤクルトの救援投手、石山と近藤両投手です。ヤクルトは交流戦優勝・ペナントでもセリーグ2位と、2017年の最下位から大躍進しました。強力な救援の2枚看板が大いに貢献したと言えそうです。
パ・リーグでは、優勝した西武から多和田・菊池の両投手がランクイン。多和田投手は最多勝、菊池投手はベストナインを獲得しています。この二人は西武の優勝に大きく貢献したと言って良いでしょう。
ソフトバンクの森唯斗選手のランクインも光ります。サファテ・岩崎という、救援の二枚看板を欠くSB救援陣の中で、セーブ王を獲得する奮迅ぶりでした。
こうやってみると、まずまず納得がいく評価である、と言えると思います。
2018年、西武ライオンズ投手陣の貢献度
西武ライオンズ投手陣のKD値を検証してみます。パ・リーグ6球団の全投手のKD値を算出してみたところ、こうなりました。
投手総合
- 1 日本ハム
- 6,184,600
- 2 オリックス
- 6,184,600
- 3 ソフトバンク
- 6,024,800
-
4 西武
- 5,898,200
- 5 ロッテ
- 5,729,700
- 6 楽天
- 5,530,500
先発総合
- 1 日本ハム
- 3,592,600
- 2 ソフトバンク
- 3,556,200
-
3 西武
- 3,543,300
- 4 ロッテ
- 3,528,000
- 5 楽天
- 3,015,100
- 6 オリックス
- 3,007,000
救援総合
- 1 オリックス
- 3,080,900
- 2 日本ハム
- 2,592,000
- 3 楽天
- 2,515,400
- 4 ソフトバンク
- 2,468,600
-
5 西武
- 2,354,900
- 6 ロッテ
- 2,201,700
優勝した西武ライオンズですが、投手のKD値としてはパ・リーグ中4位。
多和田・菊池両投手が頑張った先発陣は3位とまずまずですが、救援陣は5位という、厳しい結果。
- 西武は優勝したんだし
- 勝ち星もそれなりに上げているし
- 「KD値で見れば、西武投手陣もなかなかやるじゃん!」
…という結果を期待していましたが、割と印象通りの結果で、草も生えません。
やはり、涌井・岸・野上・牧田と、大黒柱達がFAでチームを離れていったのが悔やまれます。
2019年こそ日本シリーズ進出に向けて、頑張って欲しいものです。日本一を目指して、頑張れ埼玉西武ライオンズ。辻監督、2019年も期待しています!
こぼれ話
せっかくデータを集めてみたので、いくつかご紹介します。
セパ両リーグの先発陣
セリーグ先発陣
- 1 菅野智之(巨人)
- 756,000
- 2 大瀬良 大地(広島)
- 696,000
- 3 ガルシア(中日)
- 634,600
- 4 メッセンジャー(阪神)
- 629,600
- 5 ブキャナン(ヤクルト)
- 622,300
パ・リーグ先発陣
- 1 多和田 真三郎(西武)
- 676,600
- 2 則本 昂大(楽天)
- 640,300
- 3 菊池 雄星(西武)
- 629,600
- 4 上沢 直之(日本ハム)
- 605,300
- 5 岸 孝之(楽天)
- 587,000
セパ両リーグの救援陣
セリーグ救援陣
- 1 石山 泰稚(ヤクルト)
- 669,600
- 2 近藤 一樹(ヤクルト)
- 668,600
- 3 中﨑 翔太(広島)
- 618,300
- 4 山﨑 康晃(DeNA)
- 588,300
- 5 パットン(DeNA)
- 548,000
パ・リーグ救援陣
- 1 増井 浩俊(オリックス)
- 655,000
- 2 森 唯斗(ソフトバンク)
- 633,300
- 3 加治屋 蓮(ソフトバンク)
- 548,600
- 4 宮西 尚生(日本ハム)
- 545,000
- 5 内 竜也(ロッテ)
- 534,600
いかがだったでしょうか?各球団ファンの皆様から見て、妥当なKD値だったでしょうか。
(自分的には、各球団とも、割と妥当なランクインだな、と感じました)
2019年も、プロの皆様の熱いプレーに期待したいですね!
いまから開幕が楽しみです。
-
詳しくは、ニコニコ大百科の記事を参照ください。 ↩
-
小松聖投手は新人王を受賞し、侍ジャパンの一員としてWBCでも活躍した名選手でした。ご参考まで。 ↩
-
(例:ソフトバンクホークスの石川投手は、先発・救援ともに投げているため、分類としては先発にしています) ↩
-
この計算結果はあくまでネタ的なものであり、実際の選手成績や評価には一切関係がありません。あらかじめご理解・ご了承のほど、お願いいたします。 ↩