valeurs <- c(-5, 10, NA, 8, -3)
classer_moyenne(valeurs)Séance 4 : Données tabulaires et graphiques avancés
Apprendre R avec les LLMs
Plan de la séance
- Récap et partage : Retours sur les fonctions
- Nettoyage de données : Gérer les incohérences réelles
- Introduction à ggplot2 : Créer des graphiques sophistiqués
- Fonctions de visualisation : Automatiser la création de graphiques
- Mini-projet : Tableau de pilotage avec des visualisations
Production attendue : Tableau de pilotage avec 4 graphiques + fonction de visualisation réutilisable
Objectifs de la séance
- Nettoyer des données avec incohérences (casse, formats)
- Maîtriser les dataframes avancés
- Créer des visualisations avec
ggplot2 - Développer des fonctions graphiques réutilisables
- Combiner analyse et communication visuelle
Récap et partage
Retours sur les fonctions
- Quelles fonctions avez-vous créées ?
- Quelles difficultés avec les conditions et boucles ?
- Un exemple de bug intéressant que vous avez résolu ?
Exercice de révision
Créez rapidement une fonction qui :
- Prend un vecteur de nombres en paramètre
- Retourne “Positif” si la moyenne de ces nombres est > 0
- Retourne “Négatif” sinon
- Gère les NA correctement
Testez avec :
10 minutes. Révision rapide. Vérifier que les concepts de la séance 3 sont acquis.
Données réelles et leurs problèmes
Les données ne sont jamais parfaites
Dans le monde réel, les données contiennent souvent :
- Des problèmes de casse : “Alice”, “alice”, “ALICE”
- Des formats incohérents : “2023-01-15”, “15/01/2023”
- Des valeurs manquantes : NA, ““,”N/A”, “inconnu”
- Des doublons
- Des erreurs de saisie
Le nettoyage des données représente souvent 80% du travail d’analyse !
Exercice 1 : Découvrir les problèmes
Voici un jeu de données de ventes :
ventes <- data.frame(
mois = c("Jan", "Fév", "Mar", "Avr", "Mai", "Jun"),
montant = c(1500, 2000, NA, 1800, 2200, 1900),
vendeur = c("Alice", "Bob", "alice", "Bob", "Alice", "bob")
)Quels sont les problèmes potentiels dans ce jeu de données pour une analyse ?
Identifiez :
- Le problème de casse dans les noms
- La valeur manquante
- Les conséquences pour les calculs par vendeur
15 minutes. Les étudiants découvrent les problèmes réels des données.
Exercice 2 : Nettoyer la casse
Problème : Les noms “Alice”, “alice” et “Bob”, “bob” sont comptés séparément.
Demandez au LLM comment standardiser les noms.
Vous découvrirez probablement :
ventes$vendeur <- tolower(ventes$vendeur)
# ou
ventes$vendeur <- toupper(ventes$vendeur)Vérifiez le résultat :
unique(ventes$vendeur)
table(ventes$vendeur)15 minutes. Premier nettoyage simple mais essentiel.
Exercice 3 : Gérer les valeurs manquantes
Plusieurs stratégies possibles :
Demandez au LLM :
“Comment gérer les valeurs NA dans mes données de ventes ? Quelles sont les différentes approches ?”
Options principales :
- Supprimer les lignes avec NA :
na.omit() - Remplacer par une valeur : moyenne, médiane, 0
- Garder, mais utiliser
na.rm = TRUEdans les calculs
Quelle stratégie choisir dépend du contexte ! Supprimer ou interpoler des données peut introduire des biais.
15 minutes. Discussion sur les choix méthodologiques.
Exercice 4 : Jeu de données complexe piégé
Données étudiants :
etudiants <- data.frame(
nom = c("Dupont", "Martin", "Durand", "", "Petit"),
age = c(20, "vingt-deux", 19, 21, 18),
note_math = c(15, 12, NA, 16, 14),
note_info = c(13, NA, 15, 12, 16),
filiere = c("Info", "info", "Maths", "INFO", "maths")
)Objectif :
- Identifiez TOUS les problèmes
- Nettoyez le jeu de données
- Calculez la moyenne générale des étudiants
30 minutes. Exercice de synthèse sur le nettoyage. Beaucoup d’erreurs à trouver.
Introduction à ggplot2
Pourquoi ggplot2 ?
Jusqu’ici, vous avez utilisé plot(), hist(), barplot()…
ggplot2 est un package puissant pour créer des graphiques :
- Syntaxe cohérente et logique
- Graphiques professionnels
- Très flexible et personnalisable
- Standard dans l’analyse de données en R
La grammaire des graphiques
ggplot2 fonctionne par couches :
- Données :
ggplot(data = mes_donnees) - Esthétiques :
aes(x = variable1, y = variable2) - Géométries :
geom_point(),geom_line(),geom_bar() - Personnalisation : titres, couleurs, thèmes
On ajoute des couches avec +
Exercice 5 : Premier graphique ggplot2
Testez ce code :
library(ggplot2)
ggplot(data = ventes, aes(x = mois, y = montant)) +
geom_col()Questions :
- Que fait
aes()? - Pourquoi
geom_col()et pasgeom_bar()? - Comment changer la couleur des barres ?
20 minutes. Première découverte de ggplot2. La syntaxe peut surprendre au début.
Exercice 6 : Améliorer le graphique
Personnalisez votre graphique :
ggplot(data = ventes, aes(x = mois, y = montant)) +
geom_col(fill = "steelblue") +
labs(
title = "Ventes mensuelles",
x = "Mois",
y = "Montant (€)"
) +
theme_minimal()Explorez :
- Différentes couleurs
- Différents thèmes :
theme_bw(),theme_classic() - Ajout d’une ligne à un niveau spécifique avec
geom_hline()
20 minutes. Exploration des options de personnalisation.
Exercice 7 : Différents types de graphiques
Demandez au LLM de vous montrer comment créer :
- Un graphique en points (
geom_point()) - Un graphique en lignes (
geom_line()) - Un boxplot (
geom_boxplot()) - Un histogramme (
geom_histogram())
Testez chaque type avec des données adaptées.
Certains types nécessitent des données spécifiques !
20 minutes. Découverte de la variété des géométries disponibles.
Exercice 8 : Graphiques par catégorie
Créez un graphique des ventes coloré par vendeur.
Comment créer un graphique avec ggplot2 où chaque catégorie a une couleur différente ?
Une réponse :
ggplot(ventes, aes(x = mois, y = montant, fill = vendeur)) +
geom_col(position = "dodge") +
labs(title = "Ventes par vendeur et par mois")Questions :
- Où est positionné
fill? Pourquoi ? - Que fait
position = "dodge"? - Que se passe-t-il sans ?
- Comment faire un graphique empilé ?
20 minutes. Introduction aux graphiques multivariés.
Fonctions de visualisation
Pourquoi créer des fonctions graphiques ?
Si vous créez souvent le même type de graphique :
- Éviter la répétition du code
- Garantir la cohérence visuelle
- Faciliter la maintenance
- Permettre la réutilisation
Exercice 9 : Première fonction graphique
Créez une fonction qui génère un graphique en barres standard :
graphique_barres <- function(donnees, colonne_x, colonne_y, titre) {
ggplot(donnees, aes(x = .data[[colonne_x]], y = .data[[colonne_y]])) +
geom_col(fill = "steelblue") +
labs(title = titre) +
theme_minimal()
}
# Utilisation
graphique_barres(ventes, "mois", "montant", "Ventes mensuelles")Demandez au LLM d’expliquer :
- À quoi sert
.data[[...]]? - Comment passer des noms de colonnes comme paramètres ?
20 minutes. Introduction aux fonctions avec ggplot2.
Exercice 10 : Fonction graphique avancée
Améliorez votre fonction avec plus d’options :
graphique_personnalise <- function(donnees, x, y, titre,
couleur = "steelblue",
type = "barres") {
# Créer le graphique de base
g <- ggplot(donnees, aes(x = .data[[x]], y = .data[[y]]))
# Ajouter la géométrie selon le type
if (type == "barres") {
g <- g + geom_col(fill = couleur)
} else if (type == "points") {
g <- g + geom_point(color = couleur, size = 3)
}
# Ajouter titre et thème
g <- g + labs(title = titre) + theme_minimal()
return(g)
}Testez avec différentes options !
20 minutes. Fonction plus sophistiquée avec options et conditions.
Mini-projet : Dashboard
Projet : Analyse de ventes complète
Objectif : Créer un dashboard d’analyse avec 4 graphiques différents.
Données :
# Téléchargez les 3 fichiers de ventes depuis Moodle
ventes_janvier <- read.csv("ventes_janvier.csv")
# etcLes 4 graphiques à créer :
- Évolution des ventes mensuelles (ligne)
- Ventes par région (barres)
- Distribution des montants (histogramme)
- Comparaison par région (boxplot)
ggplot2 pour tous les graphiques
Personnalisez-les avec des couleurs et titres appropriés.
40 minutes. Projet de synthèse. Combine nettoyage, analyse et visualisation.
Critères du mini-projet
- Les données sont nettoyées (casse, NA gérés)
- Les 4 graphiques sont créés avec
ggplot2 - Chaque graphique a un titre et des légendes appropriés
- Le code est commenté
- Une fonction de visualisation réutilisable est créée (facultatif)
Bonus :
- Créer un 5e graphique original
- Utiliser des facettes (
facet_wrap()) - Ajouter des annotations sur les graphiques
- Sauvegarder les graphiques avec
ggsave()
Retour réflexif
Exercice réflexif : Journal de bord
Documentez dans votre journal :
- Nettoyage de données :
- Quels problèmes avez-vous rencontrés ?
- Comment les avez-vous résolus ?
- Un prompt efficace pour le nettoyage
ggplot2:- Différences avec
plot()de base - Votre graphique préféré créé aujourd’hui
- Un concept difficile à comprendre
- Différences avec
- Fonctions graphiques :
- Pourquoi créer des fonctions pour les graphiques ?
- Code de votre fonction réutilisable
10 minutes. Moment de réflexion et documentation.
Ce que vous avez appris aujourd’hui
- Nettoyer des données réelles avec incohérences
- Utiliser
ggplot2pour créer des graphiques professionnels - Maîtriser différentes géométries (barres, points, lignes, boxplot)
- Personnaliser l’apparence des graphiques
- Créer des fonctions de visualisation réutilisables
- Combiner analyse et communication visuelle
Ressources et prochaines étapes
Fonctions clés de cette séance
Nettoyage :
tolower(),toupper(): standardiser la cassena.omit(): supprimer les NAunique(),table(): explorer les valeurs
ggplot2 :
ggplot()+aes(): base du graphiquegeom_col(),geom_point(),geom_line(): géométrieslabs(): titres et labelstheme_minimal(),theme_bw(): thèmes
Pour aller plus loin
- Explorez d’autres géométries de ggplot2
- Pratiquez avec vos propres données
- Créez une bibliothèque de fonctions graphiques
- Consultez la documentation :
?ggplot2
Préparation prochaine séance
- Terminez le dashboard si besoin
- Mettez à jour votre journal avec les détails de cette séance
- Trouvez un jeu de données qui vous intéresse pour le projet de la séance 5
- Créez au moins 2 fonctions graphiques réutilisables
Prochaine séance : Projet personnel intégré - vous allez mener une analyse complète en autonomie !
Questions ?
- Le nettoyage des données est essentiel et prend du temps
- ggplot2 permet de créer des graphiques professionnels de manière cohérente
- Les fonctions graphiques évitent la répétition et assurent la cohérence
- La visualisation est aussi importante que l’analyse