globで複数のエクセルを一挙取得する(ボートレース機械学習予測結果 6月分の確認)


はじめに

※本記事のコード解説自体は、pythonプログラミング初心者向けとなっております。

ボートレース3連単予測サイト「きょう、ていの良い予想は当たるだろうか」では毎日のレース予想の的中率や回収率をつつみ隠さず公開しているのですが、月に一度は毎日の予想結果を1つにまとめておきたいなと思い、表題のような処理をしようと考えました。

私の状況

ボートレースの試合結果と機械学習による予想を整理し、"result_2020mmdd.csv" といった形式で毎日保存しています。月に一度はこれらのファイルをまとめて、結果を可視化したい..。

そして下図にあるような、ところどころ混ざっているresult_202006.. _test .csv のようなファイルはテスト用なので省きたい..。

コードはこんな感じ。

とてもシンプルです。


import pandas as pd
import glob

csv_files = glob.glob("predict/result/result_202006??.csv")
filelist = []
for file in csv_files:
    filelist.append(pd.read_csv(file))

df = pd.concat(filelist)

globでパス名を取得する際にresult_202006 ?? .csvとしています。1つの?で任意の一文字分を担当してくれます。

csv_filesにはいい感じにファイル+パス名が一式格納されています。

for文でひとつずつappendしていき、最後はDataFrame化して完成!です。

ちなみに6月の結果はどうだったのか..

先ほどつくったデータフレームを使って、結果を確認しました。
3連単的中率は設計通り10%を記録しましたが、回収率が80%強です..。(とはいっても、その他の無料予想を見ていると、現時点でも割と戦える感じかもしれない。)

まとめた後にpivot_tableで整理した結果がこちらです。
当たりやすい競艇場と全然あたらない競艇場がはっきりしているのが面白いです。 
今月は当たりやすい競艇場だけ買ってみようかな..

Site Hit Miss Payoff Return_ratio
丸亀 5 26 5480 176.77
蒲郡 3 21 3990 166.25
徳山 9 33 6800 161.9
琵琶湖 9 31 5810 145.25
浜名湖 8 43 6030 118.24
戸田 4 46 5470 109.4
江戸川 3 24 2740 101.48
鳴門 6 44 5060 101.2
常滑 4 38 4190 99.76
児島 5 58 6230 98.89
住之江 2 33 3340 95.43
福岡 2 14 1460 91.25
芦屋 6 46 4540 87.31
大村 8 51 4770 80.85
唐津 3 30 2600 78.79
尼崎 5 52 4270 74.91
宮島 5 36 2400 58.54
平和島 3 40 2510 58.37
多摩川 3 32 1850 52.86
下関 3 54 2760 48.42
三国 5 58 3030 48.1
若松 4 56 1780 29.67
桐生 1 47 1190 24.79
3 67 1290 18.43