Pipeline dati

Pulire

Prima di entrare nel database, ogni CSV del dataset viene letto con pandas, tipizzato, portato al sistema metrico e ripulito da valori nulli e duplicati.

Quadro strumenti di un veicolo con contagiri, indicatori di carburante e temperatura e tachimetro in km/h.
Il dataset misurava in miglia e galloni: la pulizia porta tutto in chilometri e litri. Foto di Igor Stepanov su Unsplash.

In breve

  • Tipi correttiDate, interi, decimali e testo convertiti nei formati che lo schema del database si aspetta.
  • Sistema metricoMiglia in chilometri, galloni in litri, libbre in chili. Anche i dollari diventano euro.
  • Nulli sotto controlloOgni valore mancante è imputato, eliminato o marcato. I NaN di pandas arrivano in MySQL come NULL.

Cinque operazioni, un risultato

Ogni file passa dagli stessi controlli. In uscita: CSV puliti e tipizzati, pronti per il database relazionale.

  1. TipizzareOgni colonna nel suo tipo: date, interi, decimali, testo.
  2. Convertire le unitàDal sistema imperiale americano al metrico europeo.
  3. Gestire i nulliImputare, eliminare o marcare in base al peso del campo.
  4. Correggere le anomalieDuplicati, valori incoerenti o fuori intervallo.
  5. StandardizzareTesti e chiavi identificative uniformi, per collegare le tabelle.
  6. CSV pulitiPronti per il caricamento.

Le conversioni applicate

I fattori sono costanti definite in testa a pulizia_csv.py, usate da tutte le funzioni di caricamento.

GrandezzaDaAComeColonne di esempio
Distanzamigliachilometri× 1,60934actual_distance_miles
Volumegalloni USAlitri× 3,78541fuel_gallons_used
Pesolibbrechilogrammi× 0,453592weight_lbs
Lunghezzapiedimetri× 0,3048length_feet
Consumomiglia per gallonelitri per 100 km235,21 ÷ mpgaverage_mpg
Valutadollarieuro× 0,92revenue, total_cost

Il cambio dollaro-euro è un tasso fisso indicativo, non quello storico giorno per giorno.

Dentro una funzione di pulizia

Ogni tabella ha la sua funzione load_*_csv: 14 in tutto. Questa è quella dei camion, dalla lettura del file all'inserimento.

Codice Python della funzione load_trucks_csv: lettura del CSV come stringhe, conversione di anno, data, chilometraggio e capacità del serbatoio, trasformazione in tuple e INSERT con executemany.
La funzione load_trucks_csv in pulizia_csv.py. Clic per ingrandire.
  1. Leggere tutto come testodtype=str evita che pandas indovini i tipi e sbagli.
  2. Convertire e normalizzareAnno in numero, date nel formato giusto, miglia in km e galloni in litri.
  3. Trasformare i nulli_to_none cambia i NaN in None, che MySQL registra come NULL.
  4. Preparare le righeIl DataFrame diventa una lista di tuple, pronta per l'inserimento massivo.
  5. Inserire in sicurezzaQuery parametrizzata contro la SQL injection, eseguita in blocco con executemany. Restituisce le righe inserite.