Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
kawasaki.rb #15
2014/8/27
Shinichi Nakagawa a.k.a ガジェットさん
Pythonではじめる野球プログラミング
オープンデータとDjangoで野球を可視化してみた
自己紹介
• 名前:Shinichi Nakagawa(中川伸一)
• Twitter:@shinyorke
• 呼び名:シンさん、ガジェットさん
• 所属:八重洲のWebサービス屋さん ※9月から
• 仕事:エンジニア 個人活動:野球アナリス...
• きっかけ
• データはどこにある?
• Pythonを使ったデータクリーニング
• Djangoアプリ構築
• セイバーメトリクスを可視化
おしながき
きっかけ
大好きなソーシャル野球ゲームで勝ちたい
!
→勝つためには優秀な選手・調子いい選手が必要
!
→オススメの選手を紹介するサービスを思いつく
!
→プロフィールや成績を可視化してみたら?←今ココ
ソーシャル野球ゲーム
Yahoo Fantasy Baseball http://baseball.fantasysports.yahoo.com/
データはどこにある?
メディア 形式 使い勝手 備考
MLB公式 公開データなし - 何も公開していない
Baseball
Reference
Web Site
(html)
☓
スクレイピング前提、ライ
センス的に使えない
Yahoo Soc...
Sean Lahman Database
http://www.seanlahman.com/baseball-archive/statistics/
・1871∼2013までのMLB選手・球団のデータ
・CSV/SQL/Microsoft A...
• DB Server(Ubuntu 14.04 LTS)構築
• MySQL他、必要なpackageのインストール
• スキーマ作成←Sean LahmanのDDLクエリー
• DB schemeからSQLAlchemyのModelを自動生成...
sqlacodegen
https://pypi.python.org/pypi/sqlacodegen
・SQLAlchemyのModelを自動生成するパッケージ
・MySQL/SQLite/PostgreSQL(他も出来るかも)
・Lega...
出力結果
• Djangoでアプリを作った←割と普通
• Python 3.4(最新版)を使用←頑張った
• Python 3.x系でのMySQL接続にハマる→解決!
• あとはひたすらviewとmodelを実装←割と普通
Djangoアプリ構築
Python 3.4 + Django + MySQL
・ConnectorはPyMySQL パッケージを使いましょう
・PyMySQL3は使えません←ハマったポイント
・__init__.pyにおまじないをかける(下の写真)
• templateはBootstrap + HighCharts(グラフ描画)
• セイバーメトリクス指標を元にデータを可視化
• アウトにならない率:出塁率
• 投手/野手の運を指標化: BABIP
• 野手の純然たる得点能力:OPS, R...
ピタゴラス勝率とは?
・チームの総得点と総失点から勝率を予測する計算式
・実際の勝率との比較で使う(特に運の要素)
・野球以外のスポーツにも応用可能
総得点の二乗 / (総得点の二乗 + 総失点の二乗)
【計算式】
Demo
縦軸:ピタゴラス勝率による予測勝利数 横軸:実際の勝利数
2013年のメジャーリーグ、アメリカンリーグの成績を元に表示
PyCon JP 2014(9/13(土),9/14(日))
#54 Pythonではじめる野球プログラミング(Shinichi Nakagawa)
https://pycon.jp/2014/
9/14(日) 16:15-16:45 Conf...
walk-off home run!!!
ご清聴ありがとうございました!さようなら!!!
Blog: http://shinyorke.hatenablog.com/
Upcoming SlideShare
Loading in …5
×

Pythonではじめる野球プログラミング - kawasaki.rb #15 2014/8/27

3,890 views

Published on

2014/8/27 kawasaki.rb #15 発表資料

PyCon JP 2014 「Pythonではじめる野球プログラミング」の試作Ver.です。

https://pycon.jp/2014/schedule/presentation/30/

Published in: Engineering

Pythonではじめる野球プログラミング - kawasaki.rb #15 2014/8/27

  1. 1. kawasaki.rb #15 2014/8/27 Shinichi Nakagawa a.k.a ガジェットさん Pythonではじめる野球プログラミング オープンデータとDjangoで野球を可視化してみた
  2. 2. 自己紹介 • 名前:Shinichi Nakagawa(中川伸一) • Twitter:@shinyorke • 呼び名:シンさん、ガジェットさん • 所属:八重洲のWebサービス屋さん ※9月から • 仕事:エンジニア 個人活動:野球アナリスト • 興味:Python/可視化/Lean Startup/ロボット • 野球と食べ歩き、ガジェット好き • 普通のRuby使いからPythonistaへ
  3. 3. • きっかけ • データはどこにある? • Pythonを使ったデータクリーニング • Djangoアプリ構築 • セイバーメトリクスを可視化 おしながき
  4. 4. きっかけ 大好きなソーシャル野球ゲームで勝ちたい ! →勝つためには優秀な選手・調子いい選手が必要 ! →オススメの選手を紹介するサービスを思いつく ! →プロフィールや成績を可視化してみたら?←今ココ
  5. 5. ソーシャル野球ゲーム Yahoo Fantasy Baseball http://baseball.fantasysports.yahoo.com/
  6. 6. データはどこにある? メディア 形式 使い勝手 備考 MLB公式 公開データなし - 何も公開していない Baseball Reference Web Site (html) ☓ スクレイピング前提、ライ センス的に使えない Yahoo Social APIs REST (json or XML) △ アプリから使いやすいが、 取得可能な情報が少ない Sean Lahman CSV,SQL他 ⃝ CC3.0ライセンス、情報が 充実、コレなら使える! Web上で使える主な野球データ(MLBのみ)
  7. 7. Sean Lahman Database http://www.seanlahman.com/baseball-archive/statistics/ ・1871∼2013までのMLB選手・球団のデータ ・CSV/SQL/Microsoft Access Database ・Creative Commons 3.0 License
  8. 8. • DB Server(Ubuntu 14.04 LTS)構築 • MySQL他、必要なpackageのインストール • スキーマ作成←Sean LahmanのDDLクエリー • DB schemeからSQLAlchemyのModelを自動生成 • SQLAlchemyを使ってCSVをMySQLにロード 使ったもの:Vagrant, Chef solo, sqlacodegen Pythonを使ったデータクリーニング
  9. 9. sqlacodegen https://pypi.python.org/pypi/sqlacodegen ・SQLAlchemyのModelを自動生成するパッケージ ・MySQL/SQLite/PostgreSQL(他も出来るかも) ・LegacyなサービスのReplaceなんかに使える > sqlacodegen mysql://user:pass@host/db
  10. 10. 出力結果
  11. 11. • Djangoでアプリを作った←割と普通 • Python 3.4(最新版)を使用←頑張った • Python 3.x系でのMySQL接続にハマる→解決! • あとはひたすらviewとmodelを実装←割と普通 Djangoアプリ構築
  12. 12. Python 3.4 + Django + MySQL ・ConnectorはPyMySQL パッケージを使いましょう ・PyMySQL3は使えません←ハマったポイント ・__init__.pyにおまじないをかける(下の写真)
  13. 13. • templateはBootstrap + HighCharts(グラフ描画) • セイバーメトリクス指標を元にデータを可視化 • アウトにならない率:出塁率 • 投手/野手の運を指標化: BABIP • 野手の純然たる得点能力:OPS, RC27,etc… • チーム得点と失点から勝率を予測:ピタゴラス勝率 セイバーメトリクスを可視化
  14. 14. ピタゴラス勝率とは? ・チームの総得点と総失点から勝率を予測する計算式 ・実際の勝率との比較で使う(特に運の要素) ・野球以外のスポーツにも応用可能 総得点の二乗 / (総得点の二乗 + 総失点の二乗) 【計算式】
  15. 15. Demo 縦軸:ピタゴラス勝率による予測勝利数 横軸:実際の勝利数 2013年のメジャーリーグ、アメリカンリーグの成績を元に表示
  16. 16. PyCon JP 2014(9/13(土),9/14(日)) #54 Pythonではじめる野球プログラミング(Shinichi Nakagawa) https://pycon.jp/2014/ 9/14(日) 16:15-16:45 Conference Hall ※一番広い場所 LTの前に野球やるよ!
  17. 17. walk-off home run!!! ご清聴ありがとうございました!さようなら!!! Blog: http://shinyorke.hatenablog.com/

×