前段
下記のリンクで、データ分析に必要なデータを集めるとこから始めている。とりあえず、1年分集めてみた。30分弱くらいかかった。。
https://qiita.com/Carl_Jonson/items/68b744da4219197e29a5
準備
Pythonのデータ分析といえば、pandas。標準のライブラリじゃないので、事前にインストールをしておく必要あり。
pip install pandas
読み取るとこのコードを書く
別途記事書いたデータ収集方法だと、いびつなcsvになっちゃう模様。いろいろ対策入れつつ、pandasで読み出せるようにする。
import pandas as pd
# テーブル化する情報を格納する配列を用意する、一緒にヘッダだけ入れる、たまにいびつだって怒られるので、予備で1行多く読み取っとく
maindat = [["nIndex", "場所", "日付", "題名", "第", "何日目", "空白列", "年月日", "dammy"]]
racedat = [["ParentnIndex", "rIndex", "空白列", "レース番号", "レース名", "距離", "天気", "風", "風向", "風速", "波", "波の高さ", "進入固定フラグ", "決まり手", "dammy"]]
playdat = [["ParentrIndex", "空白列", "着順", "艇", "登録番号", "指名", "モーター", "ボート", "展示タイム", "進入", "スタート", "タイム", "dammy"]]
oddsdat = [["ParentrIndex", "空白列", "賭け式", "的中番号", "配当", "人気", "人気順", "dammy"]]
# ファイル名を定義
export_maindat = "main.csv"
export_racedat = "race.csv"
export_playdat = "play.csv"
export_oddsdat = "odds.csv"
# pandasで、前回作った4つのデータを読みとる(namesで列を与えてやらんと、いびつで読み取れない、あとsjisになってたのでエンコードも指定、そしてnamesで指定した分の行を飛ばす)
df_main = pd.read_csv(export_maindat, names = maindat[0], encoding='shift_jis', skiprows=1)
df_race = pd.read_csv(export_racedat, names = racedat[0], encoding='shift_jis', skiprows=1)
df_play = pd.read_csv(export_playdat, names = playdat[0], encoding='shift_jis', skiprows=1)
df_odds = pd.read_csv(export_oddsdat, names = oddsdat[0], encoding='shift_jis', skiprows=1)
イン逃げ率の確認
競艇はそのレース特性上、一番内側にいる艇が最も有利。なので一番内側の場所を取れる1号艇に基本的に人気が集まる。じゃあ、どれくらいイン逃げ率は高いのか?を調べてみる。
# イン逃げ率を算出する
# とりあえず、元データ壊さないようにコピー
df = df_play
# 着順が01のもののみにフィルタ
df = df.query('着順 == "01"')
# 適当な変数にnを入れておく
zentaisuu = len(df)
# 進入が01のもののみにフィルタ
df = df.query('進入 == "1"')
# 適当な変数にnを入れておく
innige = len(df)
# 計算する
print(innige / zentaisuu)
結果、54%だった。なので、一番インに陣取る艇へ賭け続ければ、半分以上は勝てる計算になる。
現実逃避
全然話が変わる。データといえば正規化されたデータベース、データベースからデータ取り出すのはSQLと、当たり前のように思っていた。いまさらpandasのお作法を覚えるの面倒くせぇぇぇぇ。
続きは、ネタを思いついたり、やる気が出たら書きます。。