Blog

Pythonista3とBeautiful Soupで競馬の分析やってみた

私はギャンブルにはほとんど興味が無いのですが、ある美術展の仕事でパリの凱旋門賞の映像を見てからというもの競走馬に惚れてしまい、何回か競馬に行きました。お馬さん本当にかっこいい。

レースの情報はnetkeiba.comなどを参考にしているのですが、過去のデータをもっと自由に俯瞰して見たいなと思い、iOSアプリのPythonista3を使って、Webスクレイピングした情報をプロットするプログラムを書いてみました(本気じゃねえか)。

Pythonista3の設定

Pythonista3はiOS上でPythonのコーディング、実行ができるアプリです。できることの幅が広くて凄いです。

しかし、そのままでは使えるパッケージに限りがあるので、こちらを参考にPythonistaにシェルを導入します。導入したらpipでパッケージがインストールできるので、BeautifulSoupを導入します。(と思いきや、後で調べたらBeautifulSoupは元からPythonistaに入っているらしいので、シェルの導入は必要ではないです。)

呼び出すパッケージは以下のような感じ。ちなみに、実行環境は3.5です。

BeautifulSoupでスクレイピング

netkeiba.comの未実施レースのページからデータを取得するとこまで書きます。

URLは直接扱えないので、urllibを使います。

BeautifulSoupの基本の記法は、以下のサイトを参考にさせて頂きました。

Pythonista3ではpandasが使えないので(2017年11月現在)、辞書にデータを保存していきます。

レースのページから、馬ごとのデータを取得して、オッズ順にリストに格納。

以上を元に、それぞれの馬のページにアクセスして、同様に好きな情報を取得していきます。この場合、アクセス先のサーバーに負担をかけないように、アクセス間隔を調整するなどした方が良いと思います。

matplotlibの日本語出力

どのような情報を元に何をプロットしたかは省略します、コードもめちゃめちゃ長くなってしまうので。私も現在諸々検討中。馬や騎手の調子や、体重変化とスピード、着順などを綺麗に可視化できたらなと思っています。また記事にするかもです。

ただ、デフォルトでPythonista上のmatplotlibで日本語をプロットすると、豆腐文字になってしまいます。お馬さんの名前はカタカナなのでこれでは大問題。なので、IPAフォントをPythonistaに持ってきて、プロットの際にフォントを指定してあげます。

ここから、IPAexfont00301.zipをダウンロード。解凍したipaexg.ttfとipaexm.ttfを、Pythonistaのsite-packagesフォルダにコピー。(私はDropbox経由でiOSの共有機能を使って持ってきました。)

次に、以下のようにFontPropertiesをインポートし、fp=FontProperties(fname=r’ipaexg.ttf’)でフォントを指定。

プロットの際に、fontproperties=fpと指定する。

以上で、無事に日本語が出力できるはずです。savefigで保存された画像はPythonistaに保存されます。

This Post Has 0 Comments

Leave A Reply