東京1600m

東京1600m#

%run 0.2_Function.ipynb
# 2005-2025 東京
df = result_df("2015", "2025", ["東"])
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
Cell In[2], line 2
      1 # 2005-2025 東京
----> 2 df = result_df("2015", "2025", ["東"])

File /tmp/ipykernel_2845/2063706412.py:16, in result_df(__type, __start, __end, __location)
     14     columns = payout_columns
     15 else:
---> 16     raise Exception
     19 # CSVファイルごとに処理
     20 for file in csv_files:

Exception: 
distance = df["距離"] == 1600
ground_type = df["芝・ダ"] == "芝"
# race_class = df["クラスコード"] >= 100
arrival = df["確定着順"] == 1
cond = distance & ground_type & arrival
df = df[cond]
df[
    [
        "レース日",
        "レース名",
        "クラスコード",
        "馬名",
        "走破タイム",
        "上がり3Fタイム",
        "PCI",
        "馬場状態",
        "年齢",
        "騎手名",
        "単勝オッズ",
    ]
].sort_values("走破タイム").head(10)
レース日 レース名 クラスコード 馬名 走破タイム 上がり3Fタイム PCI 馬場状態 年齢 騎手名 単勝オッズ
132771 2019-05-12 ヴィクトG1 195 ノームコア 90.5 33.2 53.6 4 レーン 9.4
137760 2020-05-17 ヴィクトG1 195 アーモンドアイ 90.6 32.9 55.2 5 ルメール 1.4
138796 2019-06-02 安田記念G1 195 インディチャンプ 90.9 32.9 55.8 4 福永祐一 19.2
113205 2021-05-16 ヴィクトG1 195 グランアレグリア 91.0 32.6 57.5 5 ルメール 1.3
107985 2018-06-03 安田記念G1 195 モズアスコット 91.3 33.3 54.5 4 ルメール 15.7
68083 2012-06-03 安田記念G1 195 ストロングリターン 91.3 33.8 52.1 6 福永祐一 6.7
91837 2023-06-04 安田記念G1 195 ソングライン 91.4 33.1 55.7 5 戸崎圭太 7.4
151909 2023-10-21 富士SG2 179 ナミュール 91.4 33.8 52.2 4 モレイラ 3.8
51296 2010-05-09 NHKマG1 195 ダノンシャンティ 91.4 33.5 53.7 3 安藤勝己 2.6
35500 2013-06-02 安田記念G1 195 ロードカナロア 91.5 33.3 54.9 5 岩田康誠 4.0
df["クラス"] = df["クラスコード"].map(class_code_labels)
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

# ---------------- 前処理はそのまま ----------------
cols = ["上がり3Fタイム", "走破タイム"]
df[cols] = df[cols].apply(pd.to_numeric, errors="coerce")
df_plot = df.dropna(subset=cols)

df_yasuda  = df_plot[df_plot["レース名"] == "安田記念G1"]
df_others  = df_plot[df_plot["レース名"] != "安田記念G1"]

# ---------- ① 件数を計算して辞書にまとめる ----------
class_counts = df_others["クラス"].value_counts().to_dict()  # {'7': 120, '10': 87, ...}
yasuda_count = len(df_yasuda)                               # 例: 34
class_counts["安田記念"] = yasuda_count                     # まとめておくと後で楽

# ---------- ② 描画 ----------
plt.figure(figsize=(10, 7))
sns.set(style="whitegrid", font="Ricty Diminished")

# その他レース
sns.scatterplot(
    data=df_others,
    x="上がり3Fタイム",
    y="走破タイム",
    alpha=0.5,
    s=20,
    edgecolor="none",
    hue="クラス",
    palette="tab10",
)

# 安田記念
sns.scatterplot(
    data=df_yasuda,
    x="上がり3Fタイム",
    y="走破タイム",
    color="red",
    alpha=0.7,
    s=70,
    marker="X",
    edgecolor="black",
    linewidth=0.3,
    label="安田記念",        # ← 後で「安田記念 (n=xx)」に変える
)

plt.xlabel("上がり3Fタイム(秒)")
plt.ylabel("走破タイム(秒)")
plt.title("東京マイルの時計と安田記念の時計")

# ---------- ③ 凡例を書き換え ----------
handles, labels = plt.gca().get_legend_handles_labels()

new_labels = [
    f"{lbl} (n={class_counts.get(lbl, 0)})"   # 安田記念も含めて辞書から件数取得
    for lbl in labels
]

plt.legend(handles, new_labels, title="クラス別(件数)", frameon=True)

plt.tight_layout()
plt.show()
../_images/764ef9927a962923e59e22b3bced6a4974e584f5ec824580b94798ab425257ab.png
# 2005-2025 東京
df = result_df("2005", "2025", ["東"])
distance = df["距離"] == 1600
ground_type = df["芝・ダ"] == "芝"
race_class = df["クラスコード"] >= 115
arrival = df["確定着順"] == 1
cond = distance & ground_type & arrival & race_class
df = df[cond]
# 数値化と欠損除去(前処理)
cols = ["上がり3Fタイム", "走破タイム"]
df[cols] = df[cols].apply(pd.to_numeric, errors="coerce")
df_plot = df.dropna(subset=cols)

# 安田記念とそれ以外に分割
df_yasuda = df_plot[df_plot["レース名"] == "安田記念G1"]
df_others = df_plot[df_plot["レース名"] != "安田記念G1"]

# 描画
plt.figure(figsize=(10, 7))
sns.set(style="whitegrid", font="Ricty Diminished")

# 1) その他のレースを薄めに表示
sns.scatterplot(
    data=df_others,
    x="上がり3Fタイム",
    y="走破タイム",
    alpha=0.7,
    edgecolor="none",
    hue="レース名",
    palette="tab20",  # 任意。カテゴリ数に応じて調整可
)

# 2) 安田記念を強調
sns.scatterplot(
    data=df_yasuda,
    x="上がり3Fタイム",
    y="走破タイム",
    color="red",
    # 点のサイズ
    s=100,
    # マーカーを変える(例: "X", "D", "^"など)
    marker="X",
    edgecolor="black",
    linewidth=0.3,
    label="安田記念",
)

plt.xlabel("上がり3Fタイム(秒)")
plt.ylabel("走破タイム(秒)")
plt.title("東京マイルの時計と安田記念の時計")
plt.legend()
plt.tight_layout()
plt.show()
../_images/ddcc34a49c267acff8f95d2295572b45468ce33ea48575407243871e0cbb92cd.png
cond = df["レース名"] == "安田記念G1"
df[cond][
    [
        "レース日",
        "馬場状態",
        "馬名",
        "走破タイム",
        "上がり3Fタイム",
        "父馬名",
        "母の父馬名",
    ]
].sort_values("レース日")
レース日 馬場状態 馬名 走破タイム 上がり3Fタイム 父馬名 母の父馬名
9470 2015-06-07 モーリス 92.0 34.5 スクリーンヒーロー カーネギー
23977 2016-06-05 ロゴタイプ 93.0 33.9 ローエングリン サンデーサイレンス
3802 2017-06-04 サトノアラジン 91.5 33.5 ディープインパクト Storm Cat
51660 2018-06-03 モズアスコット 91.3 33.3 Frankel Hennessy
72440 2019-06-02 インディチャンプ 90.9 32.9 ステイゴールド キングカメハメハ
68973 2020-06-07 グランアレグリア 91.6 33.7 ディープインパクト Tapit
33551 2021-06-06 ダノンキングリー 91.7 33.1 ディープインパクト Storm Cat
56453 2022-06-05 ソングライン 92.3 32.9 キズナ シンボリクリスエス
42648 2023-06-04 ソングライン 91.4 33.1 キズナ シンボリクリスエス
75145 2024-06-02 ロマンチックウォリ 92.3 33.4 Acclamation Street Cry
  • 安田記念

    • 走破タイム、上がり3Fともに速いレース質になる。

    • 1.31秒台の決着で上がりも33秒台のレースが前提となるレース