Uniformité

Nettoyer des données avec R

Maggie Matsui

Content Developer @ DataCamp

Uniformité

  • Unités ou formats différents
    • Température : °C vs °F
    • Poids : kg vs g vs lb
    • Monnaie : USD $ vs GBP £ vs JPY ¥
    • Date : DD-MM-YYYY vs MM-DD-YYYY vs YYYY-MM-DD
Nettoyer des données avec R

D'où viennent les problèmes d'uniformité ?

À gauche, trois bases de données avec des flèches vers une table pour représenter des sources multiples. À droite, une zone de saisie libre avec un curseur et un ordinateur avec clavier pour représenter les erreurs de saisie.

Nettoyer des données avec R

Repérer les problèmes d'uniformité

head(nyc_temps)
         date temp
1  2019-04-01  4.2
2  2019-04-02  7.5
3  2019-04-03 12.2
4  2019-04-04 11.1
5  2019-04-05 41.5
6  2019-04-06 11.9
Nettoyer des données avec R

Repérer les problèmes d'uniformité

library(ggplot2)
ggplot(nyc_temps, aes(x = date, y = temp)) +
  geom_point()

Graphique généré par le code. Trois températures sont nettement plus élevées que le reste.

Nettoyer des données avec R

Que faire ?

  • Il n'y a pas d'unique meilleure option. Cela dépend de votre jeu de données !
  • Faites des recherches pour comprendre la provenance de vos données

Graphique généré par le code. Trois températures sont nettement plus élevées que le reste.

  • Les données des 7, 16 et 23 avr. proviennent d'une source externe ayant mesuré en °F
Nettoyer des données avec R

Conversion d'unités

$$\text{C} = (\text{F} - 32) \times \frac{5}{9}$$

ifelse(condition, value_if_true, value_if_false)

nyc_temps %>%
  mutate(temp_c = ifelse(temp > 50, (temp - 32) * 5 / 9, temp))
         date temp   temp_c
1  2019-04-01  4.2  4.20000
...
7  2019-04-07 58.5 14.72222
...
Nettoyer des données avec R

Conversion d'unités

nyc_temps %>%
  mutate(temp_c = ifelse(temp > 50, (temp - 32) * 5 / 9, temp)) %>%
  ggplot(aes(x = date, y = temp_c)) +
    geom_point()

Graphique généré par le code ; cette fois, plus d'extrêmes visibles car ils ont été convertis.

Nettoyer des données avec R

Uniformité des dates

nyc_temps
             date temp_c
1      2019-11-23   5.12
2        01/15/19  -0.67
3  April 24, 2019  17.46
4        08/30/19  26.46
5 October 3, 2019  14.63
6      2019-03-17   3.47

 

Chaîne de date Format Date
"2019-11-23" "%Y-%m-%d"
"01/15/19" "%m/%d/%y"
"April 24, 2019" "%B %d, %Y"

 

?strptime dans la console R

Nettoyer des données avec R

Analyser plusieurs formats

library(lubridate)
parse_date_time(nyc_temps$date,
                orders = c("%Y-%m-%d", "%m/%d/%y", "%B %d, %Y"))
"2019-11-23 UTC" "2019-01-15 UTC" "2019-04-24 UTC" "2019-08-30 UTC"
"2019-10-03 UTC" "2019-03-17 UTC"
parse_date_time("Monday, January 3",
                orders = c("%Y-%m-%d", "%m/%d/%y", "%B %d, %Y"))
NA
Nettoyer des données avec R

Dates ambiguës

02/04/2019 est-il en février ou en avril ?

  • Cela dépend de vos données !

 

Options :

  • Traiter comme manquant
  • Si vos données ont des sources multiples, déduire selon la source
  • Déduire à partir d'autres données du jeu de données
Nettoyer des données avec R

Passons à la pratique !

Nettoyer des données avec R

Preparing Video For Download...