Volledigheid

Data opschonen in Python

Adel Nehme

VP of AI Curriculum, DataCamp

Wat is ontbrekende data?

Kan worden weergegeven als NA, nan, 0, . ...

 

Technische fout

Menselijke fout

Data opschonen in Python

Airquality-voorbeeld

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
...      ...             ...   ...
Data opschonen in Python

Airquality-voorbeeld

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
...      ...             ...   ...
Data opschonen in Python

Airquality-voorbeeld

# Geef ontbrekende waarden terug
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
Data opschonen in Python

Airquality-voorbeeld

# Samenvatting van ontbrekendheid
airquality.isna().sum()
Date             0
Temperature      0
CO2            366
dtype: int64
Data opschonen in Python

Missingno

Handig pakket om ontbrekende data te visualiseren en te begrijpen

import missingno as msno
import matplotlib.pyplot as plt

# Visualiseer ontbrekende waarden msno.matrix(airquality) plt.show()
Data opschonen in Python

Data opschonen in Python

Airquality-voorbeeld

# Zet ontbrekende en complete waarden apart
missing = airquality[airquality['CO2'].isna()]
complete = airquality[~airquality['CO2'].isna()]
Data opschonen in Python

Airquality-voorbeeld

# Beschrijf complete DataFrame
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
# Beschrijf DataFrame met missende waarden
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
Data opschonen in Python

Airquality-voorbeeld

# Beschrijf complete DataFrame
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
# Beschrijf DataFrame met missende waarden
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   <--
Data opschonen in Python

 

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

Data opschonen in Python

 

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

Data opschonen in Python

Typen ontbrekendheid

Data opschonen in Python

Typen ontbrekendheid

Data opschonen in Python

Typen ontbrekendheid

Data opschonen in Python

Typen ontbrekendheid

Data opschonen in Python

Hoe ga je om met ontbrekende data?

Eenvoudige aanpak:

  1. Ontbrekende data verwijderen
  2. Imputeren met statistiek (gemiddelde, mediaan, modus...)

Complexere aanpak:

  1. Imputeren met een algoritme
  2. Imputeren met machine learning
Data opschonen in Python

Omgaan met ontbrekende data

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
Data opschonen in Python

Ontbrekende waarden verwijderen

# Verwijder ontbrekende waarden
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
Data opschonen in Python

Vervangen met statistische maten

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
Data opschonen in Python

Laten we oefenen!

Data opschonen in Python

Preparing Video For Download...