Gestione dei Valori Mancanti
Solo un numero limitato di modelli di machine learning può gestire valori mancanti, quindi è necessario verificare che il dataset non presenti lacune. Se sono presenti valori mancanti, possono essere gestiti in due modi:
- Rimozione delle righe che contengono valori mancanti;
- Riempimento delle celle vuote con valori sostitutivi, un processo noto come imputazione.
Identificazione dei valori mancanti
Per ottenere informazioni generali sul dataset e verificare la presenza di valori mancanti, è possibile utilizzare il metodo .info()
di un DataFrame.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df.info())
Il dataset contiene 344 voci, ma le colonne 'culmen_depth_mm'
, 'flipper_length_mm'
, 'body_mass_g'
e 'sex'
presentano ciascuna meno di 344 valori non nulli, indicando la presenza di dati mancanti.
Null è un altro termine per indicare i valori mancanti.
Per identificare il numero di valori mancanti in ciascuna colonna, applicare il metodo .isna()
e poi utilizzare .sum()
.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df.isna().sum())
Le righe contenenti valori mancanti possono essere visualizzate con:
df[df.isna().any(axis=1)]
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df[df.isna().any(axis=1)])
Rimozione delle righe
La prima e l'ultima riga contengono solo i valori del target ('species'
) e di 'island'
, fornendo informazioni troppo limitate per essere utili. Queste righe possono essere rimosse mantenendo solo quelle con meno di due valori NaN
e riassegnandole a df
.
123456import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') df = df[df.isna().sum(axis=1) < 2] print(df.head(8))
Al contrario, le righe rimanenti contengono informazioni utili, con valori NaN
presenti solo nella colonna 'sex'
. Invece di rimuovere queste righe, i valori mancanti possono essere imputati. Un approccio comune consiste nell'utilizzare il trasformatore SimpleImputer
, che verrà trattato nel prossimo capitolo.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 3.13
Gestione dei Valori Mancanti
Scorri per mostrare il menu
Solo un numero limitato di modelli di machine learning può gestire valori mancanti, quindi è necessario verificare che il dataset non presenti lacune. Se sono presenti valori mancanti, possono essere gestiti in due modi:
- Rimozione delle righe che contengono valori mancanti;
- Riempimento delle celle vuote con valori sostitutivi, un processo noto come imputazione.
Identificazione dei valori mancanti
Per ottenere informazioni generali sul dataset e verificare la presenza di valori mancanti, è possibile utilizzare il metodo .info()
di un DataFrame.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df.info())
Il dataset contiene 344 voci, ma le colonne 'culmen_depth_mm'
, 'flipper_length_mm'
, 'body_mass_g'
e 'sex'
presentano ciascuna meno di 344 valori non nulli, indicando la presenza di dati mancanti.
Null è un altro termine per indicare i valori mancanti.
Per identificare il numero di valori mancanti in ciascuna colonna, applicare il metodo .isna()
e poi utilizzare .sum()
.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df.isna().sum())
Le righe contenenti valori mancanti possono essere visualizzate con:
df[df.isna().any(axis=1)]
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df[df.isna().any(axis=1)])
Rimozione delle righe
La prima e l'ultima riga contengono solo i valori del target ('species'
) e di 'island'
, fornendo informazioni troppo limitate per essere utili. Queste righe possono essere rimosse mantenendo solo quelle con meno di due valori NaN
e riassegnandole a df
.
123456import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') df = df[df.isna().sum(axis=1) < 2] print(df.head(8))
Al contrario, le righe rimanenti contengono informazioni utili, con valori NaN
presenti solo nella colonna 'sex'
. Invece di rimuovere queste righe, i valori mancanti possono essere imputati. Un approccio comune consiste nell'utilizzare il trasformatore SimpleImputer
, che verrà trattato nel prossimo capitolo.
Grazie per i tuoi commenti!