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

More Related Content

PDF
Pythonではじめる野球プログラミング PyCon JP 2014 9/14 Talk Session
PDF
Pythonではじめる野球プログラミング(続き)PyCon JP 2014 LT
PDF
Railsではじめる野球プログラミング
PDF
【Inception-Deck】野球Hack! - Pythonを用いたデータ分析と可視化
PDF
アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24
PDF
Python Professional Baseball Programming Open Data Edition #bpstudy 91(2015/3...
PDF
価値を見せる技術 #DevLOVE ベースボールからみる技術
PDF
野球Hack!~Pythonを用いたデータ分析と可視化 #kwskrb #28 2015/9/30
Pythonではじめる野球プログラミング PyCon JP 2014 9/14 Talk Session
Pythonではじめる野球プログラミング(続き)PyCon JP 2014 LT
Railsではじめる野球プログラミング
【Inception-Deck】野球Hack! - Pythonを用いたデータ分析と可視化
アジャイルサムライ~Pythonista道場 #PyLadiesTokyo 1周年記念パーティー 2015/10/24
Python Professional Baseball Programming Open Data Edition #bpstudy 91(2015/3...
価値を見せる技術 #DevLOVE ベースボールからみる技術
野球Hack!~Pythonを用いたデータ分析と可視化 #kwskrb #28 2015/9/30

What's hot (20)

PDF
野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy
PDF
Python野球クラスタの紹介
PDF
データ分析に使える野球データまとめ #PyDataTokyo meetup 2015/10/23
PDF
A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)
PDF
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PDF
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
PDF
Rで野球のデータ解析がしたい (データが欲しい)
PDF
User Happyをささえるアジャイルのココロとスクラムのキホン
PPTX
Django learning Part2
PPTX
SendGrid Parse APIをデモってみる
PDF
こだわりの仕事スタイル:モチベ維持
PPTX
Jpsps #27 modern page provisioning
PDF
Agile Baseball Science - はじめてのセイバーメトリクス
PPTX
欅坂46のメンバーを識別するアルゴリズムを作る
PPTX
興味から遠い論文を”あえて”レコメンドするSlack Botを作成してみる
PDF
社内プレゼン勉強会発表資料
PDF
Office 365 user group #22 Modern SharePoint starter kit
PPTX
担当は予測できるのか? 担当予測器作成記
PPTX
最近でたSharePointの本を読んでみた
PPTX
SharePoint Online の 「モダンUI」の利用が進まない
野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy
Python野球クラスタの紹介
データ分析に使える野球データまとめ #PyDataTokyo meetup 2015/10/23
A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
Rで野球のデータ解析がしたい (データが欲しい)
User Happyをささえるアジャイルのココロとスクラムのキホン
Django learning Part2
SendGrid Parse APIをデモってみる
こだわりの仕事スタイル:モチベ維持
Jpsps #27 modern page provisioning
Agile Baseball Science - はじめてのセイバーメトリクス
欅坂46のメンバーを識別するアルゴリズムを作る
興味から遠い論文を”あえて”レコメンドするSlack Botを作成してみる
社内プレゼン勉強会発表資料
Office 365 user group #22 Modern SharePoint starter kit
担当は予測できるのか? 担当予測器作成記
最近でたSharePointの本を読んでみた
SharePoint Online の 「モダンUI」の利用が進まない
Ad

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

PDF
Pythonistaな私がChefからAnsibleに乗り換えた話(ひたすらゆるくプレゼンする会 2015/4/9)
PDF
Digital OceanでPythonな環境を作ろう(途中成果) Python mini Hack-a-thon #43
PDF
OneNote のススメ。 Office 365 利活用の促進 - クライアント推し。
PPTX
データサイエンスビギナーズ創設に至ったわけ
PDF
Azure OpenAIと本家OpenAIを使って有価証券報告書をベクター検索してみた.pdf
PDF
ログ勉 Vol.1
PPTX
構造化データマークアップでステキな検索結果を手に入れる
PPTX
Zapier ppap-share
PDF
#インスタやきう民の歩き方
PDF
IVS CTO Night and Day Recap - #CTONight 2016 Winter
PPTX
PowerBI勉強会180728_小林
PDF
PyConJP2018_LT_mahjong_180918
PDF
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
PDF
「長野で語るStapyのビジョン」
PDF
Rでを作る
PDF
GitHub Actionsを使ってAPI外部公開時の作業を自動化した話
PPTX
なぜデータをインタラクティブに可視化したいのか?
PPTX
Microsoft Azure で スマホからIoTまで
PDF
20200330_RPALT広島#5_RPA徒然草~あやしうこそものぐるほしけれ
PDF
機能追加を行う際に考慮したい3つのポイント
Pythonistaな私がChefからAnsibleに乗り換えた話(ひたすらゆるくプレゼンする会 2015/4/9)
Digital OceanでPythonな環境を作ろう(途中成果) Python mini Hack-a-thon #43
OneNote のススメ。 Office 365 利活用の促進 - クライアント推し。
データサイエンスビギナーズ創設に至ったわけ
Azure OpenAIと本家OpenAIを使って有価証券報告書をベクター検索してみた.pdf
ログ勉 Vol.1
構造化データマークアップでステキな検索結果を手に入れる
Zapier ppap-share
#インスタやきう民の歩き方
IVS CTO Night and Day Recap - #CTONight 2016 Winter
PowerBI勉強会180728_小林
PyConJP2018_LT_mahjong_180918
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
「長野で語るStapyのビジョン」
Rでを作る
GitHub Actionsを使ってAPI外部公開時の作業を自動化した話
なぜデータをインタラクティブに可視化したいのか?
Microsoft Azure で スマホからIoTまで
20200330_RPALT広島#5_RPA徒然草~あやしうこそものぐるほしけれ
機能追加を行う際に考慮したい3つのポイント
Ad

More from Shinichi Nakagawa (14)

PDF
Baseball Play Study 2016冬〜Replacement!(ありがとう陽岱鋼!)
PDF
Py "Baseball" Data入門〜サービス(と野球)を支えるデータ分析基盤 #monotarotech
PDF
Py "Baseball" Data入門 - 広島東洋カープ編 #pyconhiro
PDF
XPな俺達に贈るPyCon JP 2016レポート #xpjug
PDF
たった数行のPythonコードで打者大谷翔平がどれだけ凄いのかを見てみる #ABPro
PDF
ビックデータとPythonではじめる野球の統計分析 #pyconjp
PDF
Big Data Baseball with Python - Ichiro Suzuki hacks! #kwsk01
PDF
ビックデータとPythonではじめる野球の統計分析(α)
PDF
Pythonistaデビュー #PyNyumon 2016/5/31
PDF
こんなゴールデン・グラブ賞は嫌だ~2015 #bpstudy 100回目記念LT
PDF
やきうデータLT「ホームラン」 #pyconjp
PDF
Agile Baseball Science - アジャイル脳によく効く野球のハナシ
PDF
はじめてのLean Canvas〜最初のアイディアを言語化してみよう #bpstudy
PDF
Python + Raspberry Piでスマートハウスを手作りする(計画) Python mini Hack-a-thon #49 成果発表 2014...
Baseball Play Study 2016冬〜Replacement!(ありがとう陽岱鋼!)
Py "Baseball" Data入門〜サービス(と野球)を支えるデータ分析基盤 #monotarotech
Py "Baseball" Data入門 - 広島東洋カープ編 #pyconhiro
XPな俺達に贈るPyCon JP 2016レポート #xpjug
たった数行のPythonコードで打者大谷翔平がどれだけ凄いのかを見てみる #ABPro
ビックデータとPythonではじめる野球の統計分析 #pyconjp
Big Data Baseball with Python - Ichiro Suzuki hacks! #kwsk01
ビックデータとPythonではじめる野球の統計分析(α)
Pythonistaデビュー #PyNyumon 2016/5/31
こんなゴールデン・グラブ賞は嫌だ~2015 #bpstudy 100回目記念LT
やきうデータLT「ホームラン」 #pyconjp
Agile Baseball Science - アジャイル脳によく効く野球のハナシ
はじめてのLean Canvas〜最初のアイディアを言語化してみよう #bpstudy
Python + Raspberry Piでスマートハウスを手作りする(計画) Python mini Hack-a-thon #49 成果発表 2014...

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