Completezza

Pulizia dei dati in Python

Adel Nehme

VP of AI Curriculum, DataCamp

Che cosa sono i dati mancanti?

Può essere rappresentato come NA, nan, 0, . ...

 

Errore tecnico

Errore umano

Pulizia dei dati in Python

Esempio airquality

import pandas as pd
airquality = pd.read_csv('airquality.csv')
print(airquality)
            Date  Temperature  CO2
987   20/04/2004         16.8  0.0
2119  07/06/2004         18.7  0.8
2451  20/06/2004        -40.0  NaN
1984  01/06/2004         19.6  1.8
8299  19/02/2005         11.2  1.2
...      ...             ...   ...
Pulizia dei dati in Python

Esempio airquality

import pandas as pd
airquality = pd.read_csv('airquality.csv')
print(airquality)
            Date  Temperature  CO2
987   20/04/2004         16.8  0.0
2119  07/06/2004         18.7  0.8
2451  20/06/2004        -40.0  NaN   <--
1984  01/06/2004         19.6  1.8
8299  19/02/2005         11.2  1.2
...      ...             ...   ...
Pulizia dei dati in Python

Esempio airquality

# Restituisci i valori mancanti
airquality.isna()
       Date  Temperature    CO2
987   False        False  False
2119  False        False  False
2451  False        False   True
1984  False        False  False
8299  False        False  False
Pulizia dei dati in Python

Esempio airquality

# Riepilogo dei mancanti
airquality.isna().sum()
Date             0
Temperature      0
CO2            366
dtype: int64
Pulizia dei dati in Python

Missingno

Pacchetto utile per visualizzare e capire i dati mancanti

import missingno as msno
import matplotlib.pyplot as plt

# Visualizza i valori mancanti msno.matrix(airquality) plt.show()
Pulizia dei dati in Python

Pulizia dei dati in Python

Esempio airquality

# Isola a parte valori mancanti e completi
missing = airquality[airquality['CO2'].isna()]
complete = airquality[~airquality['CO2'].isna()]
Pulizia dei dati in Python

Esempio airquality

# Descrivi il DataFrame completo
complete.describe()
       Temperature          CO2
count  8991.000000  8991.000000
mean     18.317829     1.739584
std       8.832116     1.537580
min      -1.900000     0.000000
...      ...        ...
max      44.600000    11.900000
# Descrivi il DataFrame con mancanti
missing.describe()
       Temperature  CO2
count   366.000000  0.0
mean    -39.655738  NaN
std       5.988716  NaN
min     -49.000000  NaN
...      ...        ...
max     -30.000000  NaN
Pulizia dei dati in Python

Esempio airquality

# Descrivi il DataFrame completo
complete.describe()
       Temperature          CO2
count  8991.000000  8991.000000
mean     18.317829     1.739584
std       8.832116     1.537580
min      -1.900000     0.000000
...      ...        ...
max      44.600000    11.900000
# Descrivi il DataFrame con mancanti
missing.describe()
       Temperature  CO2
count   366.000000  0.0
mean    -39.655738  NaN   <--
std       5.988716  NaN
min     -49.000000  NaN   <--
...      ...        ...
max     -30.000000  NaN   <--
Pulizia dei dati in Python

 

sorted_airquality = airquality.sort_values(by = 'Temperature')
msno.matrix(sorted_airquality)
plt.show()

Pulizia dei dati in Python

 

sorted_airquality = airquality.sort_values(by = 'Temperature')
msno.matrix(sorted_airquality)
plt.show()

Pulizia dei dati in Python

Tipi di mancanza

Pulizia dei dati in Python

Tipi di mancanza

Pulizia dei dati in Python

Tipi di mancanza

Pulizia dei dati in Python

Tipi di mancanza

Pulizia dei dati in Python

Come gestire i dati mancanti?

Approcci semplici:

  1. Elimina i dati mancanti
  2. Imputa con misure statistiche (media, mediana, moda...)

Approcci più complessi:

  1. Imputazione con metodi algoritmici
  2. Imputa con modelli di machine learning
Pulizia dei dati in Python

Gestire i dati mancanti

airquality.head()
         Date  Temperature  CO2
0  05/03/2005          8.5  2.5
1  23/08/2004         21.8  0.0
2  18/02/2005          6.3  1.0
3  08/02/2005        -31.0  NaN
4  13/03/2005         19.9  0.1
Pulizia dei dati in Python

Eliminare valori mancanti

# Elimina i valori mancanti
airquality_dropped = airquality.dropna(subset = ['CO2'])
airquality_dropped.head()
         Date  Temperature  CO2
0  05/03/2005          8.5  2.5
1  23/08/2004         21.8  0.0
2  18/02/2005          6.3  1.0
4  13/03/2005         19.9  0.1
5  02/04/2005         17.0  0.8
Pulizia dei dati in Python

Sostituire con misure statistiche

co2_mean = airquality['CO2'].mean()
airquality_imputed = airquality.fillna({'CO2': co2_mean})
airquality_imputed.head()
          Date  Temperature       CO2
0  05/03/2005          8.5  2.500000
1  23/08/2004         21.8  0.000000
2  18/02/2005          6.3  1.000000
3  08/02/2005        -31.0  1.739584
4  13/03/2005         19.9  0.100000
Pulizia dei dati in Python

Ayo berlatih!

Pulizia dei dati in Python

Preparing Video For Download...