Vai al contenuto principale

Data Cleaning: capire le basi

La pulizia dei dati è un tassello fondamentale della data science. Scopri perché è importante e come usare Python per eseguire il processo.
Aggiornato 29 set 2026  · 12 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Per quanto sofisticati siano i nostri algoritmi analitici o predittivi, la qualità dell’output dipende dai dati in input. In altre parole, "garbage in, garbage out".

Poiché i dati sono alla base di tutti questi processi, è importante dedicare il tempo necessario a garantirne un’adeguata raffinazione.

La pulizia dei dati è un processo fondamentale nel ciclo di vita della data science e il suo ruolo non può essere sottovalutato quando si cercano insight e risposte affidabili. Nel mondo reale i dati saranno spesso sporchi, e la pulizia non può essere completamente evitata.

In questo articolo tratteremo alcuni concetti importanti, come la gestione di valori mancanti, duplicati e outlier. Per istruzioni più complete, segui il nostro corso Cleaning Data in Python o Cleaning Data in R.

Che cosa causa dati non puliti?

In poche parole, la pulizia dei dati (o data cleansing) è un processo necessario per prepararsi all’analisi. Può includere l’individuazione e rimozione di duplicati e record incompleti, e la modifica dei dati per correggere record imprecisi.

I dati non puliti o sporchi sono sempre stati un problema, e nell’ultimo decennio abbiamo visto un aumento esponenziale della generazione di dati. Nel solo 2020, il mondo ha generato più di 64 zettabyte di dati, equivalenti a 6,4 trilioni di gigabyte. Anche se meno del 2% di questi dati viene conservato, contribuisce comunque ad aggravare l’annoso problema dei "dati sporchi". Prima di poter pulire correttamente i dati, è importante capire come si sono sporcati. Le cause più comuni includono:

  • Errori umani durante inserimento, registrazione o codifica dei dati
  • Dispositivi sensoriali difettosi, come spesso accade nell’internet delle cose (IoT)
  • Corruzione dovuta a danni hardware o software.

Conoscere la causa alla radice dei dati sporchi che intendiamo pulire pone le basi per imporre criteri di qualità che consentono di classificare i diversi problemi del nostro dataset.

Perché la pulizia dei dati è così importante?

Il processo di data cleaning è importante perché aiuta a creare un modello per pulire i dati di un’organizzazione. Come detto, in qualsiasi processo di analisi o data science vale la regola garbage in, garbage out. Se trascurata, porterà a risultati analitici errati e costosi, in termini di tempo, denaro e altre risorse impiegate.

Che cos’è la qualità dei dati?

La qualità dei dati è la misura qualitativa e/o quantitativa di quanto bene i nostri dati si adattino allo scopo che devono servire. Queste misure sono modelli pratici che possiamo usare per valutare l’idoneità dei dati agli obiettivi desiderati. Considera queste misure come test metrici che i nostri dati devono superare per essere adatti ai processi di data science.

Criteri di qualità dei dati

  1. Accuratezza: Una domanda semplice per verificarla è: le informazioni contenute nei dati sono riportate correttamente in ogni dettaglio? Con i dati cerchiamo di approssimare schemi del mondo reale; l’accuratezza definisce quanto queste approssimazioni siano veritiere.
  2. Rilevanza: Queste informazioni incidono sul nostro obiettivo finale?
  3. Coerenza: La fonte dei dati è verificata e le informazioni in essa contenute sono affidabili? Ad esempio, un cliente con età 15 ma stato civile indicato come sposato.
  4. Completezza: I dati sono forniti e sufficientemente completi per l’obiettivo desiderato? È un problema comune associato ai valori mancanti; un modo per risolverlo è indagare la fonte dei dati.
  5. Uniformità: Supponiamo di avere una colonna vendite ma non tutte le transazioni sono nella stessa valuta. Diventa indispensabile convertire tutti i valori in un’unica valuta: l’uniformità riguarda proprio questo, assicurare che le misure siano espresse con le stesse unità in tutti i sistemi.

Data cleaning vs. data transformation

È importante distinguere tra pulizia e trasformazione dei dati. La trasformazione è un insieme di processi che possono aiutarci a estrarre più insight dai dati. Questi processi tipicamente cambiano il formato grezzo dei dati in un altro formato; alcuni esempi:

  • Encoding: Processo che converte valori categorici in valori binari utilizzabili nei calcoli per il machine learning. La figura mostra come apparirebbe la colonna gender se codificata. Pur veicolando le stesse informazioni, è stata trasformata in un formato diverso.

example of data encoding

  • Data binning: Chiamato anche bucketing, riduce l’effetto/la dimensione di osservazioni minori raggruppando valori continui in bin (o categorie).

Data binning example

  • Scaling: Tecnica comune nel machine learning per standardizzare valori su scale diverse entro un intervallo fisso.

example of data scaling

Nota come, nella maggior parte dei processi di trasformazione, l’originaria rappresentazione dei dati venga alterata. Pur trattandosi degli stessi dati, si introducono tecniche per trasformarli in un formato utilizzabile per il machine learning o altri scopi.

Come si esegue la pulizia dei dati

È importante avere delle linee guida per ottenere dati di alta qualità. Queste linee guida costituiscono un flusso di lavoro di data cleaning e ci aiutano a considerare tutti i passaggi necessari. I processi inclusi sono:

  • Esplorazione dei dati
  • Pulizia dei dati
  • Verifica dei dati
  • Report di data cleaning Alcuni di questi processi saranno anche dimostrati in Python

Esplorazione dei dati

L’esplorazione riguarda la comprensione profonda dei dati tramite l’analisi delle variabili presenti. Richiede tecniche visive e di aggregazione per individuare correttamente i problemi sottostanti. Per un’esplorazione efficace, ecco alcuni punti chiave:

Contesto dei dati

Prima di pulire qualsiasi dato, dobbiamo comprenderne il contesto. Il contesto dei dati riguarda l’origine di tutte le entità contenute nei dati. Cattura le circostanze che circondano la raccolta dei dati; come vengono raccolti offre spunti su come possano essere usati e per quali scopi.

Questo fa da stella polare su ciò che è accettabile nella pulizia (e nell’analisi), così da ricavare i giusti insight. Una volta chiarito come i dati sono stati raccolti, dobbiamo quindi esplorarli.

Analisi esplorativa dei dati

L’analisi esplorativa dei dati è il processo critico di effettuare indagini iniziali sui dati per scoprire pattern, individuare anomalie, testare ipotesi e verificare assunzioni con l’aiuto di statistiche descrittive e rappresentazioni grafiche. Non c’è scoperta senza esplorazione. Se non esploriamo i dati, è difficile scoprire i vari problemi presenti.

Per esempio, abbiamo un dataset messo a disposizione qui. I file Rolling Sales del Department of Finance elencano le proprietà vendute nell’ultimo periodo di dodici mesi a New York City per le classi fiscali 1, 2 e 4. Scaricheremo e leggeremo i dati del Bronx forniti.

#pandas
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

#read excel file
df = pd.read_excel("rollingsales_bronx.xls")

#preview data
df.head()

Bronx rolling sales data example

I problemi più evidenti in questo data frame includono:

  1. colonne senza nome
  2. valori mancanti nelle prime tre righe

Tuttavia, esplorando il file Excel si nota che la tabella vera e propria inizia alla quarta riga. Pertanto, rileggere i dati impostando alcuni parametri ci permette di indicare quali righe saltare e quale riga usare come intestazione:

#we read the data in again but skill 3 rows this time
df = pd.read_excel("rollingsales_bronx.xls", skiprows = 4, header = [0])

df.head()

Bronx rolling sales data example cleaned up

L’aspetto dei dati cambia in modo significativo. Anche se avremmo potuto pulire il primo import, l’esplorazione ci ha fatto risparmiare tempo con poche modifiche alla funzione di import in Python.

L’esplorazione dei dati è come entrare sulla scena di un crimine da investigatore, dove osserviamo passivamente ciò che è fuori posto; la pulizia è il processo attivo di risolvere il crimine.

Pulizia dei dati

L’esplorazione dei dati va tipicamente di pari passo con la pulizia. Una volta individuati i problemi tramite mezzi visivi, di aggregazione o statistici, dobbiamo correggerli. In questa fase, i dati verranno rimossi, corretti o imputati.

Record incoerenti

Un esempio tipico è un form in cui si chiede di inserire il genere. Possiamo avere formati diversi che rappresentano la stessa cosa, ad es. "M", "m", "Male" o "MALE"; e questo mese abbiamo venduto "aples", "apples" o "APPLES"? Il modo migliore per individuarli è con un grafico di frequenza o mostrando i valori distinti della colonna. Alcune operazioni sui record incoerenti includono:

  • Convertire le stringhe in minuscolo o in maiuscolo/forma corretta
  • Rimuovere gli spazi bianchi
  • Rinominare i nomi delle colonne

Esempio in Python: Usando il dataset importato in precedenza, nota come i nomi delle colonne siano scritti in modo incoerente:

Python example dataframe

Anche se non sembra grave, è importante rendere i nomi di colonna coerenti e accessibili. Ad esempio, EASE-MENT ha un trattino (-) tra le parole, mentre le altre solo spazi.

Parte della pulizia è garantire la coerenza. Proviamo a sistemare in due passaggi:

  1. Sostituire gli spazi tra le parole con underscore
  2. Convertire in forma corretta
# Extract columns
cols = df.columns

# Create empty list for new column names
new_cols = []

# Iterate over each column name to fix issues
for column in cols:
    # Convert column name to title case
    proper_cols = column.title()
    # Replace spaces and hyphens with underscores
    proper_cols_hyphen = proper_cols.replace(" ", "_")
    clean_col = proper_cols_hyphen.replace("-", "_")
    # Append the cleaned column name to the list
    new_cols.append(clean_col)

# Display the transformed column names
new_cols

# Replace existing columns in the dataframe with the cleaned list
df.columns = new_cols

# Preview the updated dataframe
df.head()

Python example 2

Tipi di dato e conversione dei tipi

Il tipo di dato è il modo in cui i dati sono rappresentati e indica al compilatore come usarli. La rappresentazione determina le operazioni possibili. Vediamo i tipi di dato di ciascuna colonna del nostro dataframe dei dati del Bronx.

#data types
df.dtypes

Data Types and Type Conversion

NB: Nota come ora possiamo selezionare facilmente i nomi delle colonne con la dot notation (df.Year_Built).

Tutti i tipi appaiono corretti tranne la colonna Year_Built, che dovrebbe essere categoriale. Anche se non è cruciale, quando aggreghiamo queste colonne è probabile che Year_Built venga inclusa.

#Fix Year_Built column
df.Year_Built = df.Year_Built.astype("str")

#Check
df.dtypes

Data Types and Type Conversion 2

Dati mancanti

A volte ci sono osservazioni (righe) con dati mancanti e talvolta intere colonne completamente vuote. Cosa fare in questi casi? Ignorare il problema? È come avere un tetto che perde: quando piove, gocciola.

I valori mancanti hanno rappresentazioni diverse a seconda degli strumenti: NULL, stringhe vuote, NaN, NA, #NA, ecc. Il contesto dei dati è importante per gestire i mancanti, e capire perché mancano è cruciale. Esistono due metodi principali:

  • Rimozione dei dati
  • Imputazione dei dati

Prima di decidere quale metodo usare, bisogna esaminare i pattern di valori mancanti nelle colonne. Useremo tecniche visive e descrittive per valutarli.

#extract the column names
cols = df.columns

#plot a heatmap of missing values with seaborn
plt.figure(figsize = (10,5))
sns.heatmap(df[cols].isnull())

Missing Data

Dal grafico si vede che:

  • Tutti i valori in Ease_ment e quasi tutti in Apartment_Number mancano
  • Le colonne relative a Units e Square_Feet hanno mancanti distribuiti Per dataset molto più grandi, questo grafico può non essere ideale. Un altro modo è valutare quanto siano significativi i mancanti rispetto alla dimensione del dataset.
    #Get the percentage of missing values in each column
    missing_pct = round(df.isnull().sum()/len(df) * 100, 1)
    print(missing_pct)
    

Missing Data 2

Elimineremo le colonne Ease_Ment e Apartment_Number e poi sostituiremo i valori mancanti nelle restanti colonne.

#columns with more than 30% missing values
drop_cols = missing_pct[missing_pct > 30].index
#We can drop these columns with greater than 30 percent missing values
df_new = df.drop(columns = drop_cols)

#Extract columns with mising values between 1 and 30%
replace_cols = missing_pct[(missing_pct > 0) & (missing_pct < 30)].index

#Iterate to replace missing values
for col in replace_cols:
    #if column is year built we replace with median otherwise the mean
    if col == "Year_Built":
        df_new.fillna(df_new[col].median(), inplace = True)
    else:
        mean_value = df_new[col].mean()
        df_new.fillna(mean_value, inplace = True)
df_new.isnull().sum() #preview for missing values

Missing Data 3

Ovviamente, c’è molto altro nella gestione dei valori mancanti, come trattato in questo corso Datacamp su Dealing with Missing Values in Python. Dataset, tipologie e strutture diverse hanno esigenze differenti; quindi la gestione dei mancanti non è un processo lineare e identico per tutti i casi. L’immagine sotto mostra diversi scenari in cui applicare tecniche di eliminazione o di imputazione.

Missing Data 4

Duplicati

Dobbiamo assicurarci di avere un’unica fonte di verità per ogni osservazione. Ci sono scenari in cui abbiamo osservazioni multiple sullo stesso cliente, per esempio a causa di un doppio invio del form da parte dell’utente o di errori in fase di inserimento. Indipendentemente dalla causa, dobbiamo sviluppare una versione unica e completa della verità. Questo aiuta le aziende a garantire che:

  1. Tempo e denaro non vengano sprecati nel targettare due volte lo stesso cliente
  2. Si sviluppi una versione affidabile e completa della verità, così da prendere decisioni basate su risultati analitici attendibili.

Outlier

Gli outlier sono punti dati estremi. Di solito sono valori molto bassi o molto alti che non seguono il resto del pattern nei dati, ad esempio:

  • Un cliente di 200 anni
  • Una lettura di un sensore di 40° Celsius nella regione antartica

Identificazione degli outlier Esistono diverse tecniche per identificarli, sia visive sia statistiche

  1. Ordinare il dataset: Ordinando i dati si possono individuare facilmente outlier in un dataset o nelle variabili di interesse. Tuttavia, questa tecnica fallisce su dataset grandi ed è difficile esaminare tutti i valori a colpo d’occhio.

  2. Visualizzazione: Tecniche come boxplot, istogrammi e scatter plot rendono più facile rilevare gli outlier.

  3. Uso degli Z-score: Tecnica statistica per quantificare l’eccezionalità di un valore osservato assumendo una distribuzione normale. Indica di quante deviazioni standard un valore si discosta dalla media.

Trattamento degli outlier Il trattamento consiste nella rimozione o sostituzione degli outlier presenti nei dati:

  1. Rimuovere gli outlier dai dati: Può implicare l’eliminazione di valori al di sotto o al di sopra di una certa X_percentile. Alcuni scenari in cui si possono rimuovere gli outlier:
  2. Quando è evidente che i dati sono stati misurati in modo errato. Come detto, un cliente attivo di 200 anni non è un input valido: è un tipico outlier da rimuovere.
  3. Se l’outlier non cambia i risultati dell’analisi, si può eliminare. Questo vale anche quando il numero di outlier è ridotto rispetto al totale dei dati.

  4. Sostituire gli outlier: Comporta la sostituzione dei valori estremi con media, mediana o moda. Se il numero di outlier è considerevole rispetto ai dati, rimuoverli non funziona. Nota: La media è sensibile agli outlier. È quindi consigliabile considerare mediana o moda per la sostituzione.

Verifica dei dati

Una volta conclusa la pulizia, è importante rivalutare la qualità dei dati tramite l’esplorazione. Serve a verificare correttezza e completezza del processo, sia per assicurarci di non aver omesso passaggi, sia per restare allineati al contesto dei dati.

Report e automazione del data cleaning

Il reporting consiste nel documentare lo stato di salute dei dati dopo la pulizia e i passaggi eseguiti. Garantisce una guida per esigenze future simili (riproducibilità), così che il processo possa essere automatizzato quando servirà di nuovo.

L’automazione serve ad assicurare la riproducibilità della pulizia. Gran parte del processo è composto da script riutilizzabili che possono essere impiegati con poche modifiche, se necessario.

Conclusione

Abbiamo discusso in profondità la pulizia dei dati e tutti i componenti da considerare per un progetto di data cleaning di successo. È una fase dispendiosa in termini di tempo, a cui i professionisti dedicano in media il 60% dell’intero progetto di data science. È una base che determina in larga misura l’esito di un progetto. Dati diversi da fonti diverse hanno esigenze differenti: dovrai adattare i processi al tuo caso d’uso.

Risorse:

  • Le immagini associate alla trasformazione dei dati sono ritagliate da un file Excel disponibile qui
  • Il notebook Python è disponibile su DataCamp workspace
Argomenti
Analisi dei dati
Data Science

Impara il Data Cleaning con DataCamp

Corso

Pulizia dei dati in Python

4 ore
161.7K
Impara a capire e sistemare i dati sporchi e a sviluppare le abilità necessarie per trasformare i tuoi dati grezzi in informazioni precise!
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro