LoginSignup
1
0

Pythonで競艇のデータ分析をする

Posted at

前段

下記のリンクで、データ分析に必要なデータを集めるとこから始めている。とりあえず、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のお作法を覚えるの面倒くせぇぇぇぇ。
続きは、ネタを思いついたり、やる気が出たら書きます。。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0