File size: 1,167 Bytes
46c1c8b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | """One-off script to add pole_conversion_rate to the existing historical parquet."""
import pandas as pd
import numpy as np
df = pd.read_parquet("data_output/fastf1_races.parquet")
print(f"Loaded {len(df)} rows")
# Compute pole conversion rate per circuit
completed = df.dropna(subset=["finish_position"]).copy()
poles = completed[completed["grid_position"] == 1].copy()
poles["pole_won"] = (poles["finish_position"] == 1).astype(int)
pcr = (
poles.groupby("circuit_id")["pole_won"]
.mean()
.reset_index()
.rename(columns={"pole_won": "pole_conversion_rate"})
)
print("\nPole conversion rates:")
for _, row in pcr.sort_values("pole_conversion_rate", ascending=False).iterrows():
circuit = row["circuit_id"]
rate = row["pole_conversion_rate"]
print(f" {circuit:30s} {rate:.1%}")
# Merge onto main df
if "pole_conversion_rate" in df.columns:
df = df.drop(columns=["pole_conversion_rate"])
df = df.merge(pcr, on="circuit_id", how="left")
df["pole_conversion_rate"] = df["pole_conversion_rate"].fillna(0.5)
df.to_parquet("data_output/fastf1_races.parquet", index=False)
print(f"\nSaved with pole_conversion_rate — {len(df)} rows")
|