Introduction
Dans ce projet, vous allez apprendre à nettoyer et purifier les données CSV en éliminant les données incomplètes, incorrectes et invalides. L'objectif est de créer un ensemble de données propre à partir des données brutes, qui peut être utilisé pour des analyses ou des traitements ultérieurs.
🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment configurer l'environnement du projet et préparer les fichiers nécessaires
- Comment importer les bibliothèques requises pour le nettoyage des données
- Comment lire et traiter les données brutes, en vérifiant différents types de données sales
- Comment écrire les données nettoyées dans un nouveau fichier CSV
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Utiliser Python et sa bibliothèque standard pour travailler avec les données CSV
- Appliquer des techniques de validation et de nettoyage des données, telles que la vérification des valeurs manquantes, des formats invalides et des données irréalistes
- Mettre en œuvre un processus de nettoyage des données pour créer un ensemble de données de haute qualité
- Générer un nouveau fichier CSV avec les données nettoyées
Comprendre le format des données
Dans cette étape, vous allez comprendre les données avant le processus de nettoyage des données.
- Accédez au répertoire
/home/labex/project. - Dans le répertoire du projet, vous devriez trouver un fichier
raw_data.csv. Ce fichier contient les données brutes qui doivent être nettoyées. - Ouvrez le fichier
raw_data.csv, vous pouvez voir toutes les colonnes, et son format correct devrait être :- Colonne Nom : Plus d'un mot de long.
- Colonne Genre : Attendu 'F' ou 'M'.
- Colonne Date de naissance : Formatée comme
%Y-%m-%d. - Colonne Email : Conforme à
username@domain.com.
Importer les bibliothèques nécessaires
Dans cette étape, vous allez importer les bibliothèques requises pour le processus de nettoyage des données.
Ouvrez le fichier
data_clean.pydans un éditeur de texte.Ajoutez le code suivant au début du fichier :
import csv
import re
from datetime import datetime
Ces bibliothèques seront utilisées pour travailler avec les fichiers CSV, les expressions régulières et les opérations de date/heure.
Initialiser la liste de données nettoyées
Dans cette étape, vous allez créer une liste vide pour stocker les données nettoyées.
- Dans le fichier
data_clean.py, ajoutez le code suivant après les importations :
## Initialize an empty list to store cleaned data
clean_data = []
Cette liste sera utilisée pour stocker les lignes de données nettoyées.
Lire et traiter les données brutes
Dans cette étape, vous allez lire les données brutes à partir du fichier raw_data.csv, traiter chaque ligne et ajouter les lignes valides à la liste clean_data.
- Dans le fichier
data_clean.py, ajoutez le code suivant après l'initialisation de la listeclean_data:
## Open and read the raw data CSV file
with open("raw_data.csv", "r") as f:
reader = csv.DictReader(f) ## Utiliser DictReader pour accéder facilement aux colonnes par nom
for row in reader:
## Extraire les champs pertinents de chaque ligne
name = row["name"]
sex = row["gender"]
date = row["birth date"]
mail = row["mail"]
## Vérifier si le champ nom est vide et sauter la ligne si c'est le cas
if len(name) < 1:
continue
## Vérifier si le champ genre est valide (soit 'M' ou 'F') et sauter la ligne si ce n'est pas le cas
if sex not in ["M", "F"]:
continue
## Tenter d'analyser la date de naissance et calculer l'âge ; sauter la ligne si l'analyse échoue
try:
date = datetime.strptime(date, "%Y-%m-%d")
except ValueError:
continue
age = datetime.now().year - date.year
## Sauter la ligne si l'âge calculé est irréaliste (moins de 0 ou plus de 200)
if age < 0 or age > 200:
continue
## Définir un motif d'expression régulière pour valider les adresses e-mail
r = r"^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}$"
## Vérifier si le champ e-mail correspond au motif d'expression régulière et sauter la ligne si ce n'est pas le cas
if not re.match(r, mail):
continue
## Si tous les tests passent, ajouter la ligne à la liste de données nettoyées
clean_data.append(row)
Ce code lit les données brutes à partir du fichier raw_data.csv, traite chaque ligne et ajoute les lignes valides à la liste clean_data.
Écrire les données nettoyées dans un nouveau fichier CSV
Dans cette étape, vous allez écrire les données nettoyées de la liste clean_data dans un nouveau fichier CSV nommé clean_data.csv.
- Dans le fichier
data_clean.py, ajoutez le code suivant après la section de traitement des données :
## Write the cleaned data to a new CSV file
with open("clean_data.csv", "w", newline="") as f:
writer = csv.DictWriter(
f, fieldnames=row.keys()
) ## DictWriter pour écrire en utilisant les noms de colonnes
writer.writeheader() ## Écrire la ligne d'en-tête
writer.writerows(clean_data) ## Écrire toutes les lignes nettoyées
Ce code crée un nouveau fichier CSV nommé clean_data.csv et y écrit les données nettoyées de la liste clean_data.
Exécuter le script de nettoyage des données
Dans cette étape finale, vous allez exécuter le script data_clean.py pour générer le fichier clean_data.csv.
Enregistrez le fichier
data_clean.py.Dans le terminal, accédez au répertoire
/home/labex/projectsi vous ne l'avez pas déjà fait.Exécutez la commande suivante pour exécuter le script de nettoyage des données :
python data_clean.py
Après avoir exécuté le script, vous devriez trouver un nouveau fichier clean_data.csv dans le répertoire /home/labex/project, contenant les données nettoyées.
Félicitations! Vous avez réussi à terminer le projet de purification des données CSV.
Résumé
Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.



