プロ野球も、交流戦が終わり、今週金曜日からリーグ戦が再開しようとしている。
そこで、私はPythonを使って現在のプロ野球の順位表を作成するのに興味を持った。
プログラムコード
pip install pandas
import pandas as pd
# セントラルリーグのデータ
central_league_data = {
"チーム": ["広島カープ", "阪神タイガース", "読売ジャイアンツ", "横浜ベイスターズ", "ヤクルトスワローズ", "中日ドラゴンズ"],
"勝利数": [32, 32, 31, 32, 27, 27],
"敗戦数": [25, 30, 30, 31, 33, 33],
"引き分け数": [4, 4, 5, 1, 4, 5],
"勝率": [0.561, 0.516, 0.5081, 0.5079, 0.45, 0.45],
"ゲーム差": [None, 2.5, 0.5, 0, 3.5, 0]
}
# パシフィックリーグのデータ
pacific_league_data = {
"チーム": ["ソフトバンクホークス", "千葉ロッテ", "日本ハム", "楽天イーグルス", "オリックス", "西武"],
"勝利数": [41, 31, 32, 31, 29, 19],
"敗戦数": [19, 27, 28, 31, 33, 44],
"引き分け数": [2, 5, 5, 1, 2, 0],
"勝率": [0.683, 0.534, 0.533, 0.5, 0.468, 0.302],
"ゲーム差": [None, 9, 0, 2, 2, 10.5]
}
# DataFrameに変換
central_league_df = pd.DataFrame(central_league_data)
pacific_league_df = pd.DataFrame(pacific_league_data)
# 表示
print("セントラルリーグ順位表")
print(central_league_df.to_string(index=False))
print("\nパシフィックリーグ順位表")
print(pacific_league_df.to_string(index=False))
出力結果
セントラルリーグ順位表
チーム 勝利数 敗戦数 引き分け数 勝率 ゲーム差
広島カープ 32 25 4 0.5610 NaN
阪神タイガース 32 30 4 0.5160 2.5
読売ジャイアンツ 31 30 5 0.5081 0.5
横浜ベイスターズ 32 31 1 0.5079 0.0
ヤクルトスワローズ 27 33 4 0.4500 3.5
中日ドラゴンズ 27 33 5 0.4500 0.0
パシフィックリーグ順位表
チーム 勝利数 敗戦数 引き分け数 勝率 ゲーム差
ソフトバンクホークス 41 19 2 0.683 NaN
千葉ロッテ 31 27 5 0.534 9.0
日本ハム 32 28 5 0.533 0.0
楽天イーグルス 31 31 1 0.500 2.0
オリックス 29 33 2 0.468 2.0
西武 19 44 0 0.302 10.5
しかし、この場合、整った表として出力されていない。
ここで、pandasの、to_markdownを使い、整った表を出力できた。
修正したプログラムコード
import pandas as pd
# セントラルリーグのデータ
central_league_data = {
"順位": [1, 2, 3, 4, 5, 6],
"チーム": ["広島東洋カープ", "阪神タイガース", "読売ジャイアンツ", "横浜DeNAベイスターズ", "ヤクルトスワローズ", "中日ドラゴンズ"],
"勝利数": [32, 32, 31, 32, 27, 27],
"敗戦数": [25, 30, 30, 31, 33, 33],
"引き分け数": [4, 4, 5, 1, 4, 5],
"勝率": [0.561, 0.516, 0.5081, 0.5079, 0.45, 0.45],
"ゲーム差": ["-", 2.5, 0.5, 1, 3.5, 3.5]
}
# パシフィックリーグのデータ
pacific_league_data = {
"順位": [1, 2, 3, 4, 5, 6],
"チーム": ["ソフトバンクホークス", "千葉ロッテマリーンズ", "日本ハムファイターズ", "東北楽天ゴールデンイーグルス", "オリックスバッファローズ", "埼玉西武ライオンズ"],
"勝利数": [41, 31, 32, 31, 29, 19],
"敗戦数": [19, 27, 28, 31, 33, 44],
"引き分け数": [2, 5, 5, 1, 2, 0],
"勝率": [0.683, 0.534, 0.533, 0.5, 0.468, 0.302],
"ゲーム差": ["-", 9, 9, 2, 2, 10.5]
}
# DataFrameに変換
central_league_df = pd.DataFrame(central_league_data)
pacific_league_df = pd.DataFrame(pacific_league_data)
# 表示
print("セントラルリーグ順位表")
print(central_league_df.to_markdown(index=False, tablefmt="grid", floatfmt=".4f"))
print("\nパシフィックリーグ順位表")
print(pacific_league_df.to_markdown(index=False, tablefmt="grid", floatfmt=".4f"))
出力結果
セントラルリーグ順位表
+--------+----------------------+----------+----------+--------------+--------+------------+
| 順位 | チーム | 勝利数 | 敗戦数 | 引き分け数 | 勝率 | ゲーム差 |
+========+======================+==========+==========+==============+========+============+
| 1 | 広島東洋カープ | 32 | 25 | 4 | 0.5610 | - |
+--------+----------------------+----------+----------+--------------+--------+------------+
| 2 | 阪神タイガース | 32 | 30 | 4 | 0.5160 | 2.5 |
+--------+----------------------+----------+----------+--------------+--------+------------+
| 3 | 読売ジャイアンツ | 31 | 30 | 5 | 0.5081 | 0.5 |
+--------+----------------------+----------+----------+--------------+--------+------------+
| 4 | 横浜DeNAベイスターズ | 32 | 31 | 1 | 0.5079 | 1 |
+--------+----------------------+----------+----------+--------------+--------+------------+
| 5 | ヤクルトスワローズ | 27 | 33 | 4 | 0.4500 | 3.5 |
+--------+----------------------+----------+----------+--------------+--------+------------+
| 6 | 中日ドラゴンズ | 27 | 33 | 5 | 0.4500 | 3.5 |
+--------+----------------------+----------+----------+--------------+--------+------------+
パシフィックリーグ順位表
+--------+------------------------------+----------+----------+--------------+--------+------------+
| 順位 | チーム | 勝利数 | 敗戦数 | 引き分け数 | 勝率 | ゲーム差 |
+========+==============================+==========+==========+==============+========+============+
| 1 | ソフトバンクホークス | 41 | 19 | 2 | 0.6830 | - |
+--------+------------------------------+----------+----------+--------------+--------+------------+
| 2 | 千葉ロッテマリーンズ | 31 | 27 | 5 | 0.5340 | 9 |
+--------+------------------------------+----------+----------+--------------+--------+------------+
| 3 | 日本ハムファイターズ | 32 | 28 | 5 | 0.5330 | 9 |
+--------+------------------------------+----------+----------+--------------+--------+------------+
| 4 | 東北楽天ゴールデンイーグルス | 31 | 31 | 1 | 0.5000 | 2 |
+--------+------------------------------+----------+----------+--------------+--------+------------+
| 5 | オリックスバッファローズ | 29 | 33 | 2 | 0.4680 | 2 |
+--------+------------------------------+----------+----------+--------------+--------+------------+
| 6 | 埼玉西武ライオンズ | 19 | 44 | 0 | 0.3020 | 10.5 |
+--------+------------------------------+----------+----------+--------------+--------+------------+
これで整った表として出力することができた。
考察
セントラルリーグの今後の展望
セントラルリーグでは、1位広島から4位横浜まで4ゲーム差、5位ヤクルトと6位中日まで7.5ゲーム差だ。まだ阪神タイガースも優勝圏内におり、球団史上初のセントラルリーグ連覇に期待してもいいだろう。
阪神タイガースが、セントラルリーグを連覇するには、投手力はいいだけに、もう少し打線が奮起する必要があると私は考えている。交流戦の平均得点も2.2点だったため、7勝11敗の借金4で交流戦を終えた。
阪神のAクラス入りの確率は68%、優勝確率24%,2位の確率は24%との統計が出ている。
広島のAクラス入りの確率は74%、優勝確率36%, 2位の確率は22%との統計が出ている。
これは、阪神と広島のゲーム差が2.5離れているから言えることだろう。
セントラルリーグのAクラス予想
セリーグのAクラスは阪神広島巨人との予想が高いだろう。
しかし、まだDeNA,中日、ヤクルトにも可能性がある。
パシフィックリーグの今後の展望
一方、パリーグに目を向けると、ソフトバンクホークスが2位ロッテと3位日本ハムに9ゲーム差も離している。柳田選手が怪我で離脱したにも関わらず、近藤山川栗原選手を始めとする強力クリーンアップで勝利を重ね続けている。交流戦の優勝こそは楽天イーグルスに譲ったが、それでも12勝6敗の2位で交流戦を終えた。
パシフィックリーグのAクラス予想
セントラルリーグとは対照的に、ソフトバンクが2位と9ゲームも離しているので、Aクラス入りする可能性は非常に高い。
ソフトバンクのAクラス入りは97%、優勝は71%との統計が出ている。
パリーグのAクラスはソフトバンク、日本ハム、ロッテとの予想が高いだろう。
余談(ちなみに)
いずれにせよ、金曜日から再開する両リーグのリーグ戦が楽しみだ。
果たして阪神タイガースは、広島東洋カープから首位を奪い返して、昨年のように快進撃を続け、球団史上初のリーグ優勝を達成できるか目が離せない。
阪神タイガースは、金曜日から本拠地で横浜ベイスターズとの3連戦
ソフトバンクホークスは、金曜日から本拠地で千葉ロッテマリーンズとの3連戦に望む。
引用元:https://npb.jp/bis/2024/calendar/
一昨日のように、相手のバッテリーミスでサヨナラ勝ちするのではなく、ちゃんとした勝ち方で勝って欲しいのが私の本音だ。それには、もう少し打撃陣に奮起を求めたい。そうすれば、阪神タイガースのリーグ優勝の可能性も高まってくるだろう。