Contraintes de types de données

Nettoyer des données avec R

Maggie Matsui

Content Developer @ DataCamp

Plan du cours

Serveur avec loupe et « diagnostiquer des données sales »

Nettoyer des données avec R

Plan du cours

Serveur avec insecte et « effets secondaires des données sales »

Nettoyer des données avec R

Plan du cours

Base de données ronde avec balai et étincelles pour données propres

Nettoyer des données avec R

Plan du cours

Diagnostiquer des données sales, effets secondaires des données sales et nettoyage des données sales

Chapitre 1 - Problèmes courants de données

Nettoyer des données avec R

Pourquoi des données propres ?

 

Flux de travail en science des données : accéder aux données, explorer et traiter, extraire des insights, présenter les insights

Nettoyer des données avec R

Pourquoi des données propres ?

 

Erreur humaine et technique

Nettoyer des données avec R

Pourquoi des données propres ?

 

Les erreurs se propagent dans le flux de travail

Nettoyer des données avec R

Contraintes de types de données

Type de donnée Exemple
Texte Prénom, nom, adresse, ...
Entier Nb d'abonnés, nb de produits vendus, ...
Décimal Température, taux de change, ...
Binaire Marié, nouveau client, oui/non, ...
Catégorie État civil, couleur, ...
Date Dates de commande, date de naissance, ...
Type R
character
integer
numeric
logical
factor
Date
Nettoyer des données avec R

Aperçu des types de données

sales <- read.csv("sales.csv")
head(sales)
  order_id revenue quantity
1     7432   5,454      494
2     7808   5,668      334
3     4893   4,062      259
4     6107   3,936       15
5     7661   1,067      307
6     5908   6,635      235
library(dplyr)
glimpse(sales)
Observations: 100
Variables: 3
$ order_id <dbl> 7432, 7808, ...
$ revenue  <chr> "$5454", "$5668", ...
$ quantity <dbl> 494, 334, ...
Nettoyer des données avec R

Vérifier les types de données

is.numeric(sales$revenue)
FALSE
library(assertive)
assert_is_numeric(sales$revenue)
Error: is_numeric : sales$revenue is not of class 'numeric'; it has class 'character'.
assert_is_numeric(sales$quantity)


Nettoyer des données avec R

Vérifier les types de données

Vérifications logiques — renvoient TRUE/FALSE

  • is.character()
  • is.numeric()
  • is.logical()
  • is.factor()
  • is.Date()
  • ...

Vérifications avec assertive — erreur si FALSE

  • assert_is_character()
  • assert_is_numeric()
  • assert_is_logical()
  • assert_is_factor()
  • assert_is_date()
  • ...
Nettoyer des données avec R

Pourquoi le type de donnée compte

class(sales$revenue)
"character"
mean(sales$revenue)
NA
Message d'avertissement :
Dans mean.default(sales$revenue) :
  argument non numérique ou logique : NA renvoyé
Nettoyer des données avec R

Problèmes de virgule

sales$revenue
"5,454" "5,668" "4,062" "3,936" "1,067" ...

Nettoyer des données avec R

Caractère vers nombre

library(stringr)
revenue_trimmed = str_remove(sales$revenue, ",")

revenue_trimmed
"5454" "5668" "4062" "3936" "1067" ...
as.numeric(revenue_trimmed)
5454 5668 4062 3936 1067 ...
Nettoyer des données avec R

Mettre le tout ensemble

sales %>%
  mutate(revenue_usd = as.numeric(str_remove(revenue, ",")))
# A tibble: 100 x 4
   order_id revenue quantity revenue_usd
      <dbl> <chr>      <dbl>       <dbl>
 1     7432 5,454        494        5454
 2     7808 5,668        334        5668
 3     4893 4,062        259        4062
 4     6107 3,936         15        3936
 5     7661 1,067        307        1067
# ... with 95 more rows
Nettoyer des données avec R

Même fonction, résultats différents

mean(sales$revenue)
NA
Message d'avertissement :
Dans mean.default(sales$revenue) :
  argument non numérique ou logique : NA renvoyé
mean(sales$revenue_usd)
5361.4
Nettoyer des données avec R

Convertir des types de données

  • as.character()
  • as.numeric()
  • as.logical()
  • as.factor()
  • as.Date()
  • ...
Nettoyer des données avec R

Attention : de facteur à numérique

product_type
1000 1000 3000 2000 3000
Levels: 1000 2000 3000
class(product_type)
"factor"
as.numeric(product_type)
1 1 3 2 3
as.numeric(as.character(product_type))
1000 1000 3000 2000 3000
Nettoyer des données avec R

Passons à la pratique !

Nettoyer des données avec R

Preparing Video For Download...