Saison 1 : Les véhicules électriques, de 2017 à 2030
6 épisodes · Vous êtes à l’épisode 2
|
01
Les sources Point de départ |
02
Nettoyage 1er défi |
03
Le monde Qui roule ? |
04
Le Canada 10 provinces |
05
L’énergie Chocs géopo. |
06
Prédictions 2030 |
Progression : 33 %
Épisode 2 sur 6 · Nettoyage
Notre premier défi
80 % du travail d’un analyste, c’est du nettoyage. Je ne le croyais pas avant ce projet.
Dans l’épisode 1, on a téléchargé 86 449 lignes brutes dans 4 fichiers officiels. Données de 1979, carburants hors sujet, colonnes à renommer. On veut 5 568 lignes utiles, toutes documentées.
🧩 La question
Comment transformer 86 000 lignes brutes en 5 568 lignes propres, documentées et prêtes à être reprises par n’importe quel collègue ?
📝 Consignes
Pour chaque source, même enchaînement : vérifier, filtrer, documenter.
- Inspecter les données brutes (
.info(),.isna(),.unique()). - Filtrer pour ne garder que les lignes pertinentes au projet.
- Transformer (dates, renommage des colonnes).
- Vérifier le résultat (doublons, valeurs manquantes, cohérence).
- Documenter chaque fichier nettoyé avec un dictionnaire de données.
🔍 Analyse
Je prends la Source 1 (Prix de l’essence) comme exemple. Les autres sources suivent la même logique.
Étape 1 · Inspecter les données brutes
On commence par regarder ce qu’on a : combien de lignes, combien de valeurs manquantes, quelles valeurs uniques dans les colonnes sensibles.
df_gaz_brut.info()
print()
print("Valeurs manquantes :")
print(df_gaz_brut.isna().sum())
Observation : la colonne Type de carburant contient plusieurs catégories (essence ordinaire, super, diesel…). Nous ne voulons que l’essence ordinaire libre-service.
Étape 2 · Appliquer les filtres
On enchaîne trois filtres : un sur le carburant, un sur la date, un sur la période 2017-2024.
df_gaz = df_gaz_brut.copy()
# 1. Filtrer : essence ordinaire libre-service seulement
filtre_carburant = df_gaz["Type de carburant"].str.contains("ordinaire", case=False) & \
df_gaz["Type de carburant"].str.contains("libre-service", case=False)
df_gaz = df_gaz[filtre_carburant].copy()
print(f"Après filtre carburant : {df_gaz.shape[0]} lignes")
# 2. Convertir la période en datetime
df_gaz["date"] = pd.to_datetime(df_gaz[col_periode], format="%Y-%m")
# 3. Filtrer la période 2017-2024
df_gaz = df_gaz[(df_gaz["date"] >= "2017-01-01") &
(df_gaz["date"] <= "2024-12-31")].copy()
print(f"Après filtre période : {df_gaz.shape[0]} lignes")
Étape 3 · Vérifier le résultat
Après le nettoyage, on vérifie systématiquement la période, le nombre de géographies, les doublons et les valeurs manquantes :
print("~~~~~ Vérification ~~~~~")
print(f"Période : {df_gaz['date'].min()} à {df_gaz['date'].max()}")
print(f"Nb géographies : {df_gaz['geo'].nunique()}")
print(f"Doublons : {df_gaz.duplicated().sum()}")
print(f"\nValeurs manquantes :\n{df_gaz.isna().sum()}")
Résultat :
~~~~~ Vérification ~~~~~ Période : 2017-01-01 à 2024-12-01 Nb géographies : 19 Doublons : 0 Valeurs manquantes : 0
Avant / Après le nettoyage

De 86 449 à 5 568 lignes, soit une réduction de 94 %
| Source | Brut | Nettoyé | Réduction |
|---|---|---|---|
| Essence Canada | 45 772 | 1 824 | −96 % |
| VE Canada | 14 112 | 672 | −95 % |
| WTI (quotidien → mensuel) | 10 129 | 96 | −95 % |
| VE Monde | 16 436 | 2 976 | −82 % |
| Total | 86 449 | 5 568 | −94 % |
📖 Documenter : le dictionnaire de données
Dernière étape : construire un dictionnaire de données. Pour chaque fichier nettoyé, on documente ce que signifie chaque colonne, son type, son unité et sa source.
Exemple pour le fichier immatriculations_ve_canada_2017_2024.csv :
annee
Année d’observation (2017 à 2024)
Type : int · Source : Stat. Canada, 23-10-0308
province
Province, territoire ou total Canada
Type : str · Source : Stat. Canada, 23-10-0308
type_carburant
BEV, PHEV, Essence, Diesel, Hybride ou Total
Type : str · Source : Stat. Canada, 23-10-0308
nb_vehicules
Nombre d’immatriculations annuelles
Type : int · Source : Stat. Canada, 23-10-0308
✅ Conclusion
4 sources brutes → 5 568 lignes propres, sans doublons, toutes documentées. N’importe quel collègue peut reprendre le projet.
🎬 Prochain épisode
Épisode 3 · Le monde en 8 ans : qui roule à l’électrique ?
Top 14 des pays qui mènent la transition. Où se place le Canada ?
Laisser un commentaire