Exhaustivité

Nettoyer des données avec R

Maggie Matsui

Content Developer @ DataCamp

Qu'est-ce que des données manquantes ?

Un puzzle presque terminé avec une pièce manquante. Description : se produit lorsqu'aucune valeur n'est enregistrée pour une variable dans une observation.

Peut apparaître sous NA, nan, 0, 99, . ...

Nettoyer des données avec R

Qu'est-ce que des données manquantes ?

missing.png

Peut apparaître sous NA, nan, 0, 99, . ...

Un robot représentant des erreurs techniques.

Nettoyer des données avec R

Qu'est-ce que des données manquantes ?

missing.png

Peut apparaître sous NA, nan, 0, 99, . ...

Une silhouette humaine représentant une erreur humaine.

Nettoyer des données avec R

Qualité de l'air

head(airquality)
   Ozone Solar.R Wind Temp Month Day
1     41     190  7.4   67     5   1
2     36     118  8.0   72     5   2
3     12     149 12.6   74     5   3
4     18     313 11.5   62     5   4
5     NA      NA 14.3   56     5   5
6     28      NA 14.9   66     5   6
Nettoyer des données avec R

Qualité de l'air

head(airquality)
   Ozone Solar.R Wind Temp Month Day
1     41     190  7.4   67     5   1
2     36     118  8.0   72     5   2
3     12     149 12.6   74     5   3
4     18     313 11.5   62     5   4
5     NA      NA 14.3   56     5   5
6     28      NA 14.9   66     5   6
Nettoyer des données avec R

Trouver les valeurs manquantes

is.na(airquality)
     Ozone Solar.R  Wind  Temp Month   Day
[1,] FALSE   FALSE FALSE FALSE FALSE FALSE
[2,] FALSE   FALSE FALSE FALSE FALSE FALSE
[3,] FALSE   FALSE FALSE FALSE FALSE FALSE
[4,] FALSE   FALSE FALSE FALSE FALSE FALSE
[5,]  TRUE    TRUE FALSE FALSE FALSE FALSE
[6,] FALSE    TRUE FALSE FALSE FALSE FALSE
Nettoyer des données avec R

Compter les valeurs manquantes

# Compter les valeurs manquantes dans tout l'ensemble de données
sum(is.na(airquality))
44
Nettoyer des données avec R

Visualiser les valeurs manquantes

library(visdat)
vis_miss(airquality)

Visualisation générée par le code. La colonne la plus à gauche a le plus de lignes noires, la deuxième un peu moins. Les autres colonnes n'en ont pas.

Nettoyer des données avec R

Explorer la sous-déclaration

airquality %>%
  mutate(miss_ozone = is.na(Ozone)) %>%

group_by(miss_ozone) %>% summarize(across(everything(), median, na.rm = TRUE))
  miss_ozone Ozone Solar.R  Wind  Temp Month   Day
  <lgl>      <dbl>   <int> <dbl> <dbl> <dbl> <dbl>
1 FALSE       31.5     207   9.7    65     7    16
2 TRUE        NA       194   9.7    99     6    15
Nettoyer des données avec R

Explorer la sous-déclaration

airquality %>%
  arrange(Temp) %>%
  vis_miss()

Même visuel qu'avant, mais dans la colonne Ozone, toutes les valeurs manquantes sont en bas.

Nettoyer des données avec R

Types de données manquantes

Gauche : un dé à six faces pour représenter Missing Completely at Random. Milieu : un dé à six faces avec un seul point par face pour représenter Missing at Random. Droite : quatre carrés en cycle pour représenter Missing Not at Random.

Nettoyer des données avec R

Types de données manquantes

Missing completely at random : aucune relation systématique entre les données manquantes et d'autres valeurs. Exemple : erreurs de saisie.

Nettoyer des données avec R

Types de données manquantes

Missing at random : relation systématique entre données manquantes et autres valeurs observées. Exemple : valeurs d'ozone manquantes pour de hautes températures.

Nettoyer des données avec R

Types de sous-déclaration

Missing not at random : relation systématique entre données manquantes et valeurs non observées. Exemple : températures manquantes pour de hautes températures.

Nettoyer des données avec R

Gérer les données manquantes

Approches simples :

  1. Supprimer les données manquantes
  2. Imputer (remplir) avec des mesures statistiques (moyenne, médiane, mode...) ou l'expertise métier

Approches plus avancées :

  1. Imputer via une approche algorithmique
  2. Imputer avec des modèles de Machine Learning

En savoir plus dans Dealing with Missing Data in R

Nettoyer des données avec R

Supprimer les valeurs manquantes

airquality %>%
  filter(!is.na(Ozone), !is.na(Solar.R))
   Ozone Solar.R  Wind  Temp Month   Day
   <int>   <int> <dbl> <int> <int> <int>
 1    41     190   7.4    67     5     1
 2    36     118     8    72     5     2
 3    12     149  12.6    74     5     3
 4    18     313  11.5    62     5     4
 5    23     299   8.6    65     5     7
 6    19      99  13.8    59     5     8
Nettoyer des données avec R

Remplacer les valeurs manquantes

airquality %>%
  mutate(ozone_filled = ifelse(is.na(Ozone), mean(Ozone, na.rm = TRUE), Ozone))
   Ozone Solar.R  Wind  Temp Month   Day ozone_filled
   <int>   <int> <dbl> <int> <int> <int>        <dbl>
 1    41     190   7.4    67     5     1         41  
 2    36     118   8      72     5     2         36  
 3    12     149  12.6    74     5     3         12  
 4    18     313  11.5    62     5     4         18  
 5    NA      NA  14.3    56     5     5         42.1
Nettoyer des données avec R

Passons à la pratique !

Nettoyer des données avec R

Preparing Video For Download...