Nettoyage et purification des données avec Python

PythonBeginner
Pratiquer maintenant

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.

  1. Accédez au répertoire /home/labex/project.
  2. 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.
  3. 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.

  1. Ouvrez le fichier data_clean.py dans un éditeur de texte.

  2. 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.

  1. 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.

  1. Dans le fichier data_clean.py, ajoutez le code suivant après l'initialisation de la liste clean_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.

  1. 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.

  1. Enregistrez le fichier data_clean.py.

  2. Dans le terminal, accédez au répertoire /home/labex/project si vous ne l'avez pas déjà fait.

  3. 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.

✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer