Aller au contenu principal

Manipulation de données

Progression

#Manipulation de données avec le tidyverse et data.table

Les data frames sont le cœur de R. Cette séance apprend à les importer, à les nettoyer et à les transformer efficacement en s’appuyant d’abord sur le tidyverse, puis sur data.table pour les scénarios à forte volumétrie.

#1. Lire et explorer un jeu de données

Nous utilisons readr::read_csv pour charger un fichier proprement typé. Les colonnes sont automatiquement converties (dates, facteurs, numériques) et les problèmes sont consignés dans une colonne problems().

rr
1library(readr)2notes <- read_csv("notes.csv")3summary(notes)

Une fois le tableau en mémoire, dplyr fournit les verbes de base (select, filter, mutate, summarise). Nous construisons une pipeline qui calcule la moyenne par filière et classe les résultats.

rr
1library(dplyr)2notes |> 3  filter(!is.na(note)) |>4  group_by(filiere) |>5  summarise(moyenne = mean(note), effectif = n()) |>6  arrange(desc(moyenne))

Chaque transformation renvoie une tibble ; le pipe |> facilite la lecture de gauche à droite.

#2. Aller plus loin avec data.table

Lorsque les jeux de données dépassent le million de lignes, data.table offre une syntaxe plus concise et des performances supérieures. Nous réécrivons la requête précédente :

rr
1library(data.table)2dt <- as.data.table(notes)3dt[!is.na(note), .(moyenne = mean(note), effectif = .N), by = filiere][order(-moyenne)]

Nous comparons les temps d’exécution sur un benchmark synthétique (microbenchmark::microbenchmark) pour comprendre les différences et apprendre à choisir l’outil adapté.

#Atelier

  1. Construisez un indicateur glissant (moyenne mobile sur 30 jours) avec dplyr puis avec data.table. Comparez les performances sur un jeu simulé de 5 millions de lignes.
  2. Écrivez une fonction nettoyer_notes(df) qui supprime les lignes invalides, standardise les libellés et renvoie un tibble prêt pour l’analyse.
  3. Documentez le pipeline dans un notebook Quarto : insérez du texte explicatif, des graphiques intermédiaires (ggplot2) et exportez la synthèse au format HTML.