Scelta della Sessione e del Pilota da analizzare


La prima decisione da prendere quando si vuole analizzare una serie di dati telemetrici è la sessione a cui fare riferimento.
Immaginiamo di voler analizzare le Qualifiche del Gran Premio di Spagna 2023.

Abbiamo quindi.
– Anno: 2023
– Gran Premio: 8 (ottavo evento della stagione)
– Sessione: Q (qualifica)

In Google Colaborate andiamo a creare un nuovo blocco di codice (sotto l’ultimo che avevamo scritto, quello dell’import delle librerie), e scriviamo la seguente linea di codice.

year1, grand_prix1, session1 = 2023, 7, 'Q'

Stiamo assegnando 3 variabili per ciascuno dei 3 parametri che ci serviranno per identificare la nostra sessione.

Il motivo per cui ho aggiunto “1” alla fine di ciascuna variabile (e quindi year1 e non solo year e via dicendo) è per semplificare future versioni dello script dove metteremo a confronto diversi dati telemetrici.

Come sempre, eseguiamo il blocco di codice appena scritto.

Creiamo quindi un nuovo blocco di codice ed inseriamo le seguenti linee.

session1 = ff1.get_session(year1, grand_prix1, session1)
session1.load()

In questo modo andiamo ad utilizzare la libreria fastf1, importata nelle fasi iniziali, per caricare i dati di quella sessione all’interno della variabile session1 (per essere precisi si tratta di un DataFrame ma manteniamo il tutto più semplice possibile).

Eseguiamo questo blocco di codice e vedremo che l’esecuzione richiederà un po’ di tempo (alcune decine di secondi) ed effettuerà una serie di operazioni.

Al completamento dell’esecuzione, al termine dell’output, notiamo come è stato completato i caricamento dei dati di tutti e 20 i piloti impegnati, identificati dal numero della loro monoposto.

In questo momento abbiamo deciso la sessione che ci interessa e abbiamo caricato i dati telemetrici totali.
Andando sempre più nel dettaglio, scegliamo il pilota che vogliamo analizzare, ad esempio Hamilton.

Creiamo un nuovo blocco di codice e inseriamo le seguenti linee.

driver_1 = 'HAM'
color_1 = '#CC0000'
label_1 = f"{driver_1} - {session1.name}"

Nel dettaglio:
– driver_1 è il pilota che vogliamo analizzare, identificato dalle iniziali del cognome
– color_1 è il colore che useremo per disegnare il grafico che riguarda il pilota scelto
– label_1 è la legenda che utilizzeremo per identificare quella serie di dati

Ci sono altri modi per identificare i piloti, per ora limitiamoci ad utilizzare le prime 3 lettere del cognome (HAM per Hamilton, VER per Verstappen, LEC per Leclerc, SAI per Sainz e così via).

Per quanto riguarda il colore da assegnare alla serie di dati, potremmo anche utilizzare in automatico il colore della scuderia di riferimento, per ora restiamo sul semplice ed impostiamo staticamente il colore.

Nella legenda associamo sia il nome del pilota che la sessione in esame.

Ed eseguiamo quindi le linee di codice.

Ora tra tutti i dati telemetrici di tutta la sessione e di tutti i piloti, prendiamo in esame solo quelli del pilota che abbiamo scelto.

In un nuovo blocco di codice andiamo a scrivere questa linea.

laps_driver_1 = session1.laps.pick_driver(driver_1)

Eseguendo questa nuova linea, avremo una variabile chiamata laps_driver_1 che conterrà tutti i giri di Hamilton nella sessione di qualifica del Gran Premio di Spagna 2023.

A noi non interessano però tutti i giri ma ci interessa solo il giro più veloce della sessione.
Per selezionare quel giro possiamo usare una funzione della libreria fastf1.

Creiamo un nuovo blocco di codice e scriviamo questa linea.

fastest_driver_1 = laps_driver_1.pick_fastest()

E, al solito, eseguiamola.

Adesso nella variabile (in realtà è sempre un DataFrame) fastest_driver_1 abbiamo selezionato il giro più veloce fatto da Hamilton nella qualifica del Gran Premio di Spagna 2023.

A noi però non interessa semplicemente il giro ed i suoi dati generali (come tempo totale, intertempi e poco altro) ma vogliamo il dettaglio di tutti i dati telemetrici a disposizione di quel giro.

Per farlo dobbiamo aggiungere un altro blocco di codice, con questa linea.

telemetry_driver_1 = fastest_driver_1.get_telemetry().add_distance()

Ed eseguirlo.

A questo punto nel nostro DataFrame telemetry_driver_1 abbiamo tutti i dati telemetrici di dettaglio del giro in questione.

Nota: “.add_distance()” alla fine ci permette di aggiungere al DatFrame una colonna con la distanza, un dato particolarmente utile per l’analisi dei dati e la creazione di grafici.

La parte di import dei dati è terminata.

Se volete verificare che sia tutto a posto e, soprattutto, volete avere un primo riscontro tangibile di cosa avete a disposizione sino a questo momento, create un nuovo blocco di codice, inserite questa semplice linea e poi eseguitela.

telemetry_driver_1

Se è tutto a posto, l’output che avrete sarà una sorta di tabella con una serie di colonne relative alle diverse tipologie di dati telemetrici (velocità, giri motore, stato DRS, acceleratore e via dicendo) e nelle singole righe i valori di quei dati in ogni campionamento.

A questo punto il passo successivo e mettere quei dati in un grafico e dare loro una occhiata.