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")