Perché pulire i dati con pandas anziché a mano?
Pulire i dati in pandas conviene perché ogni passaggio viene registrato e può essere rieseguito in pochi secondi sull'esportazione del mese successivo, mentre le correzioni manuali in un foglio di calcolo sono lente, facili da dimenticare e impossibili da verificare a posteriori.
Immagina un gruppo fittizio di centri di giardinaggio con quattro sedi, Fernhill Gardens. L'analista finanziario, Tomasz, riceve ogni mese un CSV degli ordini online. Nel campione qui sotto, lo stesso ordine compare due volte, il nome della sede è scritto in modi diversi, gli importi includono un simbolo di valuta e una virgola, le date alternano formati con il giorno iniziale e formati con l'anno iniziale, e i valori mancanti compaiono come celle vuote, 'N/D' e '-'. Correggere tutto a mano richiede un giorno e i totali non coincidono mai del tutto con il report del fornitore di servizi di pagamento.
| order_id | site | order_date | amount | postcode |
|---|---|---|---|---|
| 10231 | Leeds | 03/11/2026 | £1,240.00 | LS6 |
| 10231 | Leeds | 03/11/2026 | £1,240.00 | LS6 |
| 10232 | leeds | 2026-11-04 | 86.50 | Non applicabile |
| 10233 | YORK | 05/11/2026 | - | YO1 |
| 10234 | Harrogate | 142 |
Come si puliscono i dati con pandas passo dopo passo?
Pulisci i dati in pandas caricandoli con i marcatori dei valori mancanti dichiarati, esaminandoli, uniformando il testo, convertendo numeri e date, eliminando i duplicati, decidendo come gestire i valori ancora mancanti e infine verificando il risultato rispetto a un totale attendibile. Seguire questo ordine evita che una correzione annulli l'altra.
1. Carica i dati dichiarando i marcatori dei valori mancanti
La funzione read_csv di pandas legge il file e ne inserisce i dati in un DataFrame. L'argomento na_values consente di elencare ulteriori stringhe, come 'N/D' e '-', da trattare come valori mancanti, oltre a quelle che pandas riconosce già per impostazione predefinita, come i campi vuoti. Dichiararle qui evita di doverle cercare in seguito.
2. Esamina prima di modificare qualsiasi cosa
Esamina le prime righe con head, i tipi di colonna e il numero di valori non mancanti con info, e il numero di valori mancanti per colonna combinando isna con sum. Annota ciò che trovi: in Fernhill, amount è memorizzato come testo e order_date presenta formati diversi.
3. Uniforma il testo
Usa i metodi per le stringhe su una colonna: str.strip rimuove gli spazi iniziali e finali, mentre str.lower o str.title uniforma l'uso delle maiuscole, così ' Leeds', 'leeds ' e 'LEEDS' diventano un'unica sede. Poi elenca i valori univoci con unique per individuare eventuali varianti di scrittura rimaste.
4. Converti i numeri
Rimuovi il simbolo della valuta e la virgola delle migliaia con str.replace, poi converti con to_numeric. Impostando il suo argomento errors su coerce, tutto ciò che non riesce a interpretare diventa un valore mancante anziché interrompere l'esecuzione: puoi così contare e controllare quelle righe invece di perderle senza accorgertene.
5. Converti le date
to_datetime converte il testo in date vere e proprie. In presenza di formati misti, specifica un formato esplicito quando possibile, oppure imposta dayfirst per le date in stile britannico e imposta errors su coerce affinché le date non interpretabili diventino NaT, il valore con cui pandas indica una data mancante. Ricorda che dayfirst è una preferenza, non una regola rigida, quindi controlla i risultati.
6. Rimuovi i duplicati
drop_duplicates rimuove le righe ripetute. Per impostazione predefinita, una riga è considerata un duplicato solo se tutte le colonne coincidono; l'argomento subset permette di individuare i duplicati in base a colonne selezionate, come order_id, mentre keep stabilisce se conservare la prima o l'ultima copia.
7. Decidi come gestire le lacune rimanenti
dropna rimuove le righe con valori mancanti, ma per impostazione predefinita elimina una riga se manca un valore in qualsiasi colonna. Usa l'argomento subset per eliminare solo le righe in cui manca un dato davvero necessario, come amount, oppure fillna per colmare un valore mancante con un valore specificato. Poi usa astype per impostare i tipi definitivi delle colonne, ad esempio un tipo categorico per site.
Come si presenta un passaggio di pulizia dei dati debole rispetto a uno migliorato?
La pulizia poco accurata carica il file con read_csv, richiama dropna senza argomenti e poi drop_duplicates senza argomenti. Poiché il codice postale è spesso vuoto, dropna elimina una grande parte degli ordini validi e, poiché ' Leeds' e 'leeds ' restano diversi, alcuni duplicati non vengono rimossi. I ricavi risultano troppo bassi e nessuno sa quali righe siano state eliminate.
La procedura migliorata dichiara 'N/A' e '-' come valori mancanti al caricamento, elimina gli spazi iniziali e finali da site e mette in maiuscolo l'iniziale di ogni parola, converte amount con to_numeric dopo aver rimosso '£' e le virgole, converte order_date con dayfirst e coerce, rimuove i duplicati individuati in base a order_id mantenendo il primo ed elimina solo le righe prive di amount. Poi stampa quante righe ha rimosso ogni passaggio e confronta i ricavi totali con il rendiconto del fornitore di servizi di pagamento. Ora Tomasz può spiegare ogni differenza.
Come si verifica che la pulizia dei dati abbia funzionato?
Verifica la pulizia dei dati contando le righe prima e dopo ogni passaggio, confrontando un totale importante con una fonte indipendente ed esaminando le righe i cui valori sono stati convertiti in valori mancanti. Esegui di nuovo info per confermare i tipi delle colonne ed elenca i valori univoci per categorie come la sede. Se un passaggio ha rimosso più righe del previsto, esaminale prima di continuare.
Come può un assistente IA aiutare nella pulizia dei dati con pandas?
Un assistente IA può preparare una bozza dei passaggi di pulizia dei dati se descrivi ogni colonna, i suoi problemi e la regola che vuoi applicare, e può spiegare le funzioni che non conosci. Descrivi la struttura con valori di esempio inventati, invece di incollare dati reali dei clienti come nomi, indirizzi o codici postali completi. Chiedigli di riportare il numero di righe dopo ogni passaggio e verifica ogni argomento delle funzioni che usa nella documentazione ufficiale di pandas, perché gli assistenti a volte suggeriscono opzioni che non esistono o che sono cambiate tra una versione e l'altra.
Quali sono gli errori più comuni nella pulizia dei dati con pandas?
L'errore più comune è chiamare dropna senza argomenti e perdere righe che non avevano problemi, a parte una colonna facoltativa. Altri errori: rimuovere i duplicati prima di uniformare il testo, convertire le date senza controllare l'ordine di giorno e mese, sovrascrivere il file originale e non confrontare mai il totale dopo la pulizia con un valore attendibile.
Dove si colloca questa lezione in Tosheo.ai?
Questa è una lezione di programmazione della categoria Scienza e analisi dei dati del corso di scienza dei dati. Ogni materia di Tosheo.ai inizia con i concetti e la pratica senza codice; le lezioni di programmazione sono un percorso facoltativo di approfondimento: dopo l'iscrizione, la versione pratica completa di questa lezione ti fa scrivere ed eseguire ogni passaggio di pulizia in Python con pandas, con una valutazione basata su una griglia di criteri. Se non conosci Python, inizia dal corso su Python. Sviluppa competenze pratiche: non è un corso intensivo né una garanzia di lavoro.
Fonti e ambito
Documentazione pandas: read_csv (verificato il 19 October 2026) ↗
Guida utente di pandas: lavorare con dati mancanti (verificato il 19 October 2026) ↗
Documentazione pandas: DataFrame.dropna (verificato il 19 October 2026) ↗
Documentazione pandas: DataFrame.drop_duplicates (verificato il 19 October 2026) ↗
Documentazione pandas: DataFrame.astype (verificato il 19 October 2026) ↗
Documentazione pandas: to_numeric (verificato il 19 October 2026) ↗
Documentazione pandas: to_datetime (verificato il 19 October 2026) ↗
Documentazione pandas: Series.str.strip (verificato il 19 October 2026) ↗