Comment gérer les données manquantes ou corrompues dans les fichiers CSV en Python

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Gérer les données manquantes ou corrompues dans les fichiers CSV en Python peut être un défi courant pour les développeurs. Ce tutoriel vous guidera tout au long du processus de compréhension des données CSV en Python, de gestion des valeurs manquantes et de résolution des problèmes liés aux données CSV corrompues afin de garantir l'intégrité de vos projets basés sur les données.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/FileHandlingGroup -.-> python/file_opening_closing("Opening and Closing Files") python/FileHandlingGroup -.-> python/file_reading_writing("Reading and Writing Files") python/FileHandlingGroup -.-> python/file_operations("File Operations") python/FileHandlingGroup -.-> python/with_statement("Using with Statement") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") python/PythonStandardLibraryGroup -.-> python/data_serialization("Data Serialization") subgraph Lab Skills python/file_opening_closing -.-> lab-398200{{"Comment gérer les données manquantes ou corrompues dans les fichiers CSV en Python"}} python/file_reading_writing -.-> lab-398200{{"Comment gérer les données manquantes ou corrompues dans les fichiers CSV en Python"}} python/file_operations -.-> lab-398200{{"Comment gérer les données manquantes ou corrompues dans les fichiers CSV en Python"}} python/with_statement -.-> lab-398200{{"Comment gérer les données manquantes ou corrompues dans les fichiers CSV en Python"}} python/data_collections -.-> lab-398200{{"Comment gérer les données manquantes ou corrompues dans les fichiers CSV en Python"}} python/data_serialization -.-> lab-398200{{"Comment gérer les données manquantes ou corrompues dans les fichiers CSV en Python"}} end

Comprendre les données CSV en Python

CSV (Comma-Separated Values, valeurs séparées par des virgules) est un format de fichier largement utilisé pour stocker et échanger des données tabulaires. En Python, le module intégré csv offre un moyen pratique de travailler avec les fichiers CSV.

Qu'est-ce qu'un fichier CSV?

Un fichier CSV est un fichier texte brut qui stocke des données au format tabulaire, où chaque ligne représente un enregistrement et chaque colonne représente un champ ou un attribut de cet enregistrement. Les valeurs de chaque ligne sont séparées par un délimiteur, généralement une virgule (,), mais d'autres délimiteurs tels que des points-virgules (;) ou des tabulations (\t) peuvent également être utilisés.

Accéder aux données CSV en Python

Pour travailler avec des données CSV en Python, vous pouvez utiliser le module csv, qui fournit des fonctions et des classes pour lire et écrire des fichiers CSV. Voici un exemple de lecture d'un fichier CSV :

import csv

with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

Ce code ouvre le fichier data.csv, crée un objet csv.reader, puis parcourt chaque ligne du fichier et affiche le contenu de chaque ligne.

Structure d'un fichier CSV

Un fichier CSV typique a la structure suivante :

header_row, header_row, header_row
data_row, data_row, data_row
data_row, data_row, data_row

La première ligne est généralement la ligne d'en-tête, qui contient les noms des colonnes. Les lignes suivantes contiennent les données réelles.

Gérer différents délimiteurs

Par défaut, le module csv en Python utilise une virgule (,) comme délimiteur. Cependant, vous pouvez spécifier un autre délimiteur lors de la lecture ou de l'écriture d'un fichier CSV :

import csv

with open('data.tsv', 'r') as file:
    reader = csv.reader(file, delimiter='\t')
    for row in reader:
        print(row)

Dans cet exemple, le fichier CSV est séparé par des tabulations (TSV), donc nous utilisons '\t' comme délimiteur.

Conclusion

Dans cette section, vous avez appris les bases des données CSV en Python, y compris la structure d'un fichier CSV, comment accéder aux données CSV à l'aide du module csv et comment gérer différents délimiteurs. Cette compréhension sera essentielle lorsque vous passerez à la gestion des données manquantes ou corrompues dans les fichiers CSV.

Gérer les valeurs manquantes dans les fichiers CSV

Les données manquantes sont un problème courant lorsqu'on travaille avec des fichiers CSV. Le module csv de Python propose plusieurs méthodes pour gérer les valeurs manquantes dans les données CSV.

Identifier les valeurs manquantes

Les valeurs manquantes dans un fichier CSV peuvent être représentées de différentes manières, comme des cellules vides, "null", "NA" ou "NaN". Pour identifier ces valeurs manquantes, vous pouvez utiliser l'option csv.QUOTE_NONNUMERIC lors de la création de l'objet csv.reader :

import csv

with open('data.csv', 'r') as file:
    reader = csv.reader(file, quoting=csv.QUOTE_NONNUMERIC)
    for row in reader:
        print(row)

Cela convertira automatiquement toutes les valeurs non numériques en None, qui représente une valeur manquante en Python.

Gérer les valeurs manquantes

Une fois que vous avez identifié les valeurs manquantes, vous pouvez les gérer de diverses manières, en fonction de vos besoins :

1. Remplir les valeurs manquantes

Vous pouvez remplacer les valeurs manquantes par une valeur spécifique, comme 0 ou "unknown" :

import csv

with open('data.csv', 'r') as file:
    reader = csv.reader(file, quoting=csv.QUOTE_NONNUMERIC)
    data = []
    for row in reader:
        row = [value if value is not None else 0 for value in row]
        data.append(row)

2. Supprimer les lignes avec des valeurs manquantes

Si vous n'avez pas besoin des lignes contenant des valeurs manquantes, vous pouvez les supprimer des données :

import csv

with open('data.csv', 'r') as file:
    reader = csv.reader(file, quoting=csv.QUOTE_NONNUMERIC)
    data = [row for row in reader if None not in row]

3. Interpoler les valeurs manquantes

Si les valeurs manquantes peuvent être estimées à partir des données environnantes, vous pouvez utiliser des techniques d'interpolation pour les remplir :

import csv
import numpy as np

with open('data.csv', 'r') as file:
    reader = csv.reader(file, quoting=csv.QUOTE_NONNUMERIC)
    data = [row for row in reader]

## Convert data to a NumPy array
data_array = np.array(data)

## Interpolate missing values
data_array = np.where(data_array == None, np.nan, data_array)
data_array = np.nanpercentile(data_array, axis=0)

Conclusion

Dans cette section, vous avez appris à identifier et à gérer les valeurs manquantes dans les fichiers CSV en utilisant le module csv de Python. Vous avez vu diverses techniques, telles que le remplacement des valeurs manquantes, la suppression des lignes avec des valeurs manquantes et l'interpolation des valeurs manquantes. Ces méthodes peuvent être adaptées à vos besoins spécifiques et aux caractéristiques de vos données CSV.

Traiter les données CSV corrompues

Les données corrompues dans les fichiers CSV peuvent poser des problèmes difficiles à résoudre. Les données corrompues peuvent prendre diverses formes, telles que des caractères invalides, un formatage incorrect ou des types de données incohérents. Le module csv de Python propose plusieurs méthodes pour gérer ce type de problèmes.

Détecter les données corrompues

L'une des premières étapes pour traiter les données CSV corrompues est de détecter les problèmes. Vous pouvez utiliser la classe csv.Sniffer pour analyser la structure du fichier CSV et identifier les problèmes potentiels :

import csv

with open('data.csv', 'r') as file:
    sniffer = csv.Sniffer()
    has_header = sniffer.has_header(file.read(1024))
    file.seek(0)
    reader = csv.reader(file)
    if has_header:
        next(reader)  ## Skip the header row
    for row in reader:
        print(row)

Ce code vérifie si le fichier CSV a une ligne d'en-tête, puis parcourt les lignes de données et affiche chaque ligne.

Gérer les lignes corrompues

Si vous rencontrez des lignes corrompues dans le fichier CSV, vous pouvez utiliser un bloc try-except pour gérer les erreurs et sauter les lignes corrompues :

import csv

with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        try:
            ## Process the row
            print(row)
        except csv.Error:
            ## Skip the corrupted row
            continue

Valider les types de données

Un autre problème courant avec les données CSV corrompues est l'incohérence des types de données. Vous pouvez utiliser la classe csv.DictReader pour lire le fichier CSV sous forme de dictionnaire, ce qui vous permet de valider facilement les types de données :

import csv

with open('data.csv', 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        try:
            int_value = int(row['integer_column'])
            float_value = float(row['float_column'])
            ## Process the validated data
            print(int_value, float_value)
        except (ValueError, KeyError):
            ## Skip the row with corrupted data
            continue

Dans cet exemple, nous validons les champs integer_column et float_column et sautons toutes les lignes contenant des données corrompues.

Conclusion

Dans cette section, vous avez appris à traiter les données corrompues dans les fichiers CSV en utilisant le module csv de Python. Vous avez vu des techniques pour détecter les données corrompues, gérer les lignes corrompues et valider les types de données. Ces méthodes peuvent vous aider à nettoyer et préparer vos données CSV pour une analyse et un traitement ultérieurs.

Résumé

À la fin de ce tutoriel, vous aurez une compréhension complète de la manière d'administrer efficacement les données manquantes ou corrompues dans les fichiers CSV en Python. Vous apprendrez des techniques pour identifier et gérer ces problèmes, vous permettant de travailler avec des données propres et fiables dans vos projets Python.