データベースを選定したら、次に自分自身の使いやすいデータベースを作成したいと思います。私の場合、
・horse_db.csv
(レース)
・ payouts.csv(払戻)
・bloodline_id_data.csv(血統)
の 3種類の CSV ファイルを作成しました。これにより、horse_db.csv で「どの馬がどんな走りをしたか」、payouts.csv で「そのレースでどんな馬券がどれだけ当たったか」、bloodline_id_data.csvで「レース成績 × 血統(IDベース)」の分析テーブルが組め(例:血統別の成績傾向、父系/母系の影響など)、さまざまな分析が可能になります。
🐎 1. horse_db.csv
の構造
Y軸(列の内容)
各列は 1頭のレース結果に関する属性を表します。
(コードの df.columns = [...]
で定義されています)
- 日付 … 開催日
- レースID … netkeiba のレース固有ID
- 競馬場 … 東京 / 京都 / 中山 など
- レース名 … G1「有馬記念」など
- クラス … 500万下、オープン、G1 など
- タイプ … ハンデ戦、牝馬限定 など(条件表記)
- 芝ダ … 芝 or ダート
- 左右 … 左回り or 右回り
- 距離 … 例:2400
- 天候 … 晴 / 曇 / 雨
- 馬場 … 良 / 重 / 不良 など
- 着順 … 1, 2, 3 …
- 枠番 … 出走馬の枠(1〜8)
- 馬番 … ゲート番号
- 馬ID … 馬の固有ID(netkeiba管理用)
- 性齢 … 性別+年齢(牡3、牝5 など)
- 斤量 … 騎手が背負う重量(kg)
- 騎手ID … 騎手の固有ID
- 走破タイム … 秒換算済みの走破タイム
- 着差 … 勝ち馬との差(0.1、クビ、ハナなど)
- 通過 … 向正面などでの通過順位(例: 4-3-2-1)
- 上り … 最後3Fのタイム(例: 33.8)
- 単勝 … 単勝オッズ
- 人気 … 単勝人気(1=1番人気)
- 馬体重 … 出走時体重
- 調教師ID … 調教師の固有ID
- 馬主ID … 馬主の固有ID
- 賞金 … 当該レースの獲得賞金(万円)
- 体重増減 … 前走からの増減(例: +10, -4)
X軸(行の内容)
- 1行 = あるレースに出走した1頭の成績
例:2021年の「有馬記念」に18頭が出走した場合、18行が追加される。
💴 2. payouts.csv
の構造
Y軸(列の内容)
(コードの writer.writerow([url, bet_type, combo, amount, popularity])
より)
- URL … レースID(例: 202101010101)
- 券種 … 馬連 / 馬単 / 3連複 / 3連単 など
- 組み合わせ … 的中した馬番号の組み合わせ
- 払戻 … 払戻金額(円、カンマなし)
- 人気 … 払戻の人気順(1=1番人気)
X軸(行の内容)
- 1行 = あるレースでの1つの券種の的中結果
例:3連単が3通り的中 → そのレースについて3行追加される。
3. bloodline_id_data.csv
の構造
Y軸(列の内容)
1行はある1頭を起点に、その3代血統(父・母・父母・母父…)のIDをまとめたものです。列は以下の7本です。
- horse_id
- 起点となる馬のID(
horse_db.csv
の「馬ID」列から取得) - netkeiba の馬ページURL
https://db.netkeiba.com/horse/<ID>/
の<ID>
部分
- 起点となる馬のID(
- father_id
- 父の馬ID
- mother_id
- 母の馬ID
- father_father_id
- 父の父(つまり祖父:父方)の馬ID
- father_mother_id
- 父の母(祖母:父方)の馬ID
- mother_father_id
- 母の父(祖父:母方)の馬ID
- mother_mother_id
- 母の母(祖母:母方)の馬ID
備考
- 値は名前ではなくIDです(名前が必要なら別途IDから馬ページを参照して取得)。
X軸(行の内容)
- 1行 = 起点馬(
horse_id
)1頭分の血統ID情報 - 起点馬の集合は
horse_db.csv
の「馬ID」ユニーク値。
コメント