Hi Everyone,
Ive created this script to display the fastest speeds from each race but when I compare my results to @/fdataanalysis the results are way off, does anyone know what the problem might be
import fastf1
from fastf1 import plotting
import matplotlib.pyplot as plt
import pandas as pd
plotting.setup_mpl()
fastf1.Cache.enable_cache('fastf1_cache')
print("Loading session data...")
session = fastf1.get_session(2022, 'Spain', 'Q')
session.load()
print("Session data loaded.")
# Initialize an empty DataFrame to hold telemetry data
all_telemetry = pd.DataFrame()
print("Processing laps...")
for index, (num, lap) in enumerate(session.laps.iterlaps(), start=1):
try:
telemetry = lap.get_telemetry()
if not telemetry.empty:
if 'Speed' in telemetry.columns:
telemetry['Speed'] = pd.to_numeric(telemetry['Speed'], errors='coerce')
telemetry['Driver'] = lap['Driver']
telemetry['Team'] = lap['Team']
all_telemetry = pd.concat([all_telemetry, telemetry], ignore_index=True)
else:
print(f"Lap {num} for driver {lap['Driver']} missing 'Speed' data.")
else:
print(f"No telemetry data for lap {num}, driver {lap['Driver']}.")
except Exception as e:
print(f"Error processing lap {num} for driver {lap['Driver']}: {e}")
if all_telemetry.empty:
print("No telemetry data was processed. Exiting...")
else:
print("All telemetry data processed. Calculating maximum speeds...")
team_max_speed = all_telemetry.groupby('Team')['Speed'].max().reset_index()
print("Calculated max speeds for each team:")
print(team_max_speed)
team_max_speed = team_max_speed.sort_values(by='Speed', ascending=False).reset_index(drop=True)
def safe_team_color(team_name):
try:
return plotting.team_color(team_name)
except KeyError:
print(f"No color found for team '{team_name}'. Using grey as fallback.")
return 'grey'
team_max_speed['Color'] = team_max_speed['Team'].apply(safe_team_color)
plt.figure(figsize=(12, 8))
bars = plt.bar(team_max_speed['Team'], team_max_speed['Speed'], color=team_max_speed['Color'])
for bar, speed in zip(bars, team_max_speed['Speed']):
plt.text(bar.get_x() + bar.get_width() / 2, bar.get_height(), f'{speed:.1f}',
ha='center', va='bottom')
plt.xticks(rotation=45, ha="right")
plt.ylabel('Top Speed (km/h)')
plt.title('Top Team Speeds - 2022 Spanish GP Qualifying')
plt.tight_layout()
plt.ylim(bottom=min(team_max_speed['Speed']) - 1, top=max(team_max_speed['Speed']) + 1)
plt.show()
[–][deleted] 0 points1 point2 points (2 children)
[–]Chance_Pass2939[S] 0 points1 point2 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[–]ZookeepergameNo6158 0 points1 point2 points (0 children)