Pourquoi nettoyer les données avec pandas plutôt qu’à la main ?

Le nettoyage des données dans pandas en vaut la peine, car chaque étape est consignée et peut être réexécutée en quelques secondes sur l'export du mois suivant, alors que les corrections manuelles dans un tableur sont lentes, faciles à oublier et impossibles à auditer.

Imaginez un groupe fictif de jardineries comptant quatre sites, Fernhill Gardens. L’analyste financier, Tomasz, reçoit chaque mois un fichier CSV des commandes en ligne. Dans l’exemple ci-dessous, la même commande apparaît deux fois, le nom du site est saisi de plusieurs façons, les montants contiennent un symbole monétaire et une virgule, les dates mélangent des formats commençant par le jour et par l’année, et les valeurs manquantes apparaissent sous forme de cellules vides, de « N/A » et de « - ». Tout corriger à la main prend une journée, et les totaux ne correspondent jamais tout à fait au rapport du prestataire de paiement.

order_idsiteorder_dateamountpostcode
10231Leeds03/11/2026£1,240.00LS6
10231Leeds03/11/2026£1,240.00LS6
10232leeds2026-11-0486.50Sans objet
10233YORK05/11/2026-YO1
10234Harrogate142

Comment nettoyer des données avec pandas, pas à pas ?

Nettoyez les données dans pandas en déclarant les marqueurs de valeurs manquantes au chargement, en inspectant les données, en harmonisant le texte, en convertissant les nombres et les dates, en supprimant les doublons, en décidant du traitement des valeurs encore manquantes, puis en vérifiant le résultat par rapport à un total de référence fiable. Respecter cet ordre évite qu'une correction en annule une autre.

1. Chargez les données en déclarant les marqueurs de valeurs manquantes

La fonction read_csv de pandas lit le fichier et charge son contenu dans un DataFrame. Son argument na_values permet de répertorier des chaînes supplémentaires, comme 'N/A' et '-', à traiter comme des valeurs manquantes, en plus de celles que pandas reconnaît déjà par défaut, comme les champs vides. Les déclarer ici évite d’avoir à les rechercher plus tard.

2. Examinez avant de modifier quoi que ce soit

Examinez les premières lignes avec head, les types de colonnes et le nombre de valeurs renseignées avec info, puis le nombre de valeurs manquantes par colonne en combinant isna et sum. Notez vos observations : chez Fernhill, amount est stocké sous forme de texte et order_date contient plusieurs formats.

3. Uniformisez le texte

Utilisez les méthodes de traitement des chaînes de caractères sur une colonne : str.strip supprime les espaces en début et en fin de texte, et str.lower ou str.title harmonise la casse, afin que « Leeds », « leeds » et « LEEDS » correspondent à un seul site. Listez ensuite les valeurs uniques avec unique pour repérer les variantes orthographiques restantes.

4. Convertissez les nombres

Supprimez le symbole monétaire et la virgule séparant les milliers avec str.replace, puis convertissez les valeurs avec to_numeric. En définissant son argument errors sur coerce, tout élément impossible à interpréter devient une valeur manquante au lieu de bloquer le traitement. Vous pouvez ainsi compter et examiner ces lignes plutôt que de les perdre sans le savoir.

5. Convertissez les dates

to_datetime convertit le texte en dates correctement formatées. Pour des formats mixtes, indiquez un format explicite lorsque c’est possible, ou définissez dayfirst pour les dates au format britannique, et réglez errors sur coerce afin que les dates impossibles à analyser deviennent NaT, le marqueur de date manquante de pandas. Notez que dayfirst indique une préférence, pas une règle stricte : vérifiez donc les résultats.

6. Supprimez les doublons

drop_duplicates supprime les lignes répétées. Par défaut, une ligne n’est considérée comme un doublon que si toutes les colonnes sont identiques ; son argument subset permet de repérer les doublons à partir de colonnes choisies, comme order_id, et keep détermine si la première ou la dernière occurrence est conservée.

7. Décidez comment traiter les lacunes restantes

dropna supprime les lignes contenant des valeurs manquantes, mais, par défaut, une seule valeur manquante dans une colonne suffit à supprimer la ligne. Utilisez son argument subset pour ne supprimer que les lignes où il manque une valeur indispensable, comme amount, ou fillna pour remplacer une valeur manquante par une valeur précisée. Utilisez ensuite astype pour définir les types définitifs des colonnes, par exemple un type catégoriel pour site.

À quoi ressemble une passe de nettoyage insuffisante ou améliorée ?

Le traitement peu rigoureux charge le fichier avec read_csv, appelle dropna sans argument, puis drop_duplicates sans argument. Comme le code postal est souvent vide, dropna supprime une grande partie des commandes valides. Et comme ' Leeds' et 'leeds ' restent différents, certains doublons subsistent. Le chiffre d’affaires obtenu est beaucoup trop faible et personne ne sait quelles lignes ont été supprimées.

Le traitement amélioré déclare 'N/A' et '-' comme valeurs manquantes au chargement, supprime les espaces superflus de site et met une majuscule au début de chaque mot, convertit amount avec to_numeric après suppression de '£' et des virgules, convertit order_date avec dayfirst et coerce, supprime les doublons déterminés à partir de order_id en conservant la première occurrence, et ne supprime que les lignes où amount est manquant. Il affiche ensuite le nombre de lignes supprimées à chaque étape et compare le chiffre d’affaires total au rapport du prestataire de paiement. Tomasz peut désormais expliquer chaque écart.

Comment vérifier que le nettoyage a fonctionné ?

Vérifiez le nettoyage en comptant les lignes avant et après chaque étape, en comparant un total clé avec une source indépendante et en examinant les lignes dont certaines valeurs ont été converties de force en valeurs manquantes. Exécutez à nouveau info pour confirmer les types des colonnes et répertoriez les valeurs uniques des catégories telles que le site. Si une étape a supprimé plus de lignes que prévu, examinez-les avant de poursuivre.

Comment un assistant IA peut-il vous aider à nettoyer des données avec pandas ?

Un assistant IA peut préparer les étapes de nettoyage si vous décrivez chaque colonne, ses problèmes et la règle souhaitée. Il peut aussi expliquer les fonctions que vous ne connaissez pas. Décrivez la structure avec des exemples de valeurs fictives plutôt que de coller de vraies données clients, comme des noms, des adresses ou des codes postaux complets. Demandez-lui d’indiquer le nombre de lignes après chaque étape, et vérifiez chaque argument de fonction utilisé dans la documentation officielle de pandas, car les assistants proposent parfois des options qui n’existent pas ou qui ont changé d’une version à l’autre.

Quelles sont les erreurs courantes lors du nettoyage de données avec pandas ?

L’erreur la plus courante est d’appeler dropna sans argument et de perdre des lignes qui ne présentaient aucun problème, hormis une colonne facultative non renseignée. Autres erreurs : supprimer les doublons avant d’uniformiser le texte, convertir les dates sans vérifier l’ordre du jour et du mois, écraser le fichier d’origine et ne jamais comparer le total après nettoyage à un chiffre fiable.

Où se situe cette leçon dans Tosheo.ai ?

Cette leçon de programmation appartient à la catégorie Science des données et analyse du cours de science des données. Chaque matière de Tosheo.ai commence par les concepts et des exercices sans programmation. Les leçons de programmation constituent un parcours d’approfondissement facultatif : après inscription, la version pratique complète de cette leçon vous fait écrire et exécuter chaque étape de nettoyage en Python avec pandas, avec une évaluation selon une grille de critères. Si vous débutez en Python, commencez par le cours de Python. Il développe des compétences pratiques, sans constituer une formation intensive ni garantir un emploi.

Sources et périmètre

Documentation pandas : read_csv (consulté le 19 October 2026) ↗

Guide d’utilisation de pandas : traitement des données manquantes (consulté le 19 October 2026) ↗

Documentation pandas : DataFrame.dropna (consulté le 19 October 2026) ↗

Documentation pandas : DataFrame.drop_duplicates (consulté le 19 October 2026) ↗

Documentation pandas : DataFrame.astype (consulté le 19 October 2026) ↗

Documentation pandas : to_numeric (consulté le 19 October 2026) ↗

Documentation pandas : to_datetime (consulté le 19 October 2026) ↗

Documentation pandas : Series.str.strip (consulté le 19 October 2026) ↗