Analyse et Traitement des Différences de Données avec l'Utilitaire `deepdiff` en Ligne de Commande

DeepDiff est une bibliothèque Python reconnue pour sa capacité à comparer et manipuler des structures de données complexes. Depuis sa version 5.2.0, DeepDiff offre une interface en ligne de commande (CLI), permettant d'accéder à ses fonctionnalités clés sans nécessiter d'écriture de code Python. Cet article détaillera les capacités et l'utilisation de cet outil CLI.

Présentation de l'Interface en Ligne de Commande

L'outil CLI de DeepDiff met à disposition quatre commandes principales :

  1. deep diff : Compare le contenu de deux fichires.
  2. deep grep : Recherche des motifs spécifiques au sein d'un fichier.
  3. deep extract : Extrait des données à partir d'un chemin donné dans un fichier.
  4. deep patch : Applique des modifications à un fichier cible à partir d'un fichier de différences.

Ces commandes supportent divers formats de fichiers, notamment CSV, TSV, JSON, YAML et TOML.

Comparaison de Fichiers : la commande deep diff

La commande deep diff constitue la fonction centrale de DeepDiff pour identifier les divergences entre deux fichiers.

Utilisation Fondamentale

deep diff fichier_source.csv fichier_cible.csv

Paramètres Courants

  • --ignore-order : Ignore les variations d'ordre des éléments dans les collections.
  • --group-by : Regroupe les comparaisons selon un champ spécifié.
  • --ignore-case : Ignore la casse lors de la comparaison de chaînes de caractères.
  • --significant-digits : Définit le nombre de chiffres significatifs pour les comparaisons numériques.
  • --create-patch : Génère un fichier de différences utilisable par la commande deep patch.

Exemples Pratiques

Considérons deux fichiers CSV, clients_v1.csv et clients_v2.csv :

Contenu de clients_v1.csv :

prenom,nom,code_postal
Jean,Dupont,75001
Marie,Durand,69002
Pierre,Martin,13003

Contenu de clients_v2.csv :

prenom,nom,code_postal
Jean,Dupont,75001
Marie,Durand,69002
Pierre,Martin,13004

1. Comparaison Simple :

deep diff clients_v1.csv clients_v2.csv --ignore-order

La sortie indiquera la modification du champ code_postal pour l'entrée correspondant à 'Pierre Martin'.

2. Comparaison Groupée par Nom :

deep diff clients_v1.csv clients_v2.csv --ignore-order --group-by nom

Cette approche rendra les chemins dans la sortie plus lisibles, par exemple root['Martin']['code_postal'].

Recherche de Données : la commande deep grep

La commande deep grep permet de localiser des informations spécifiques au sein d'un fichier structuré.

Utilisation Basique

deep grep "terme_recherche" chemin_fichier

Paramètres Utiles

  • -i ou --ignore-case : Effectue une recherche insensible à la casse.
  • --exact-match : Exige une correspondance exacte du terme recherché.

Exemple

deep grep --ignore-case marie clients_v1.csv

La console affichera les chemins vers les occurrences du terme 'marie' (ou 'Marie') dans le fichier.

Extraction de Données : la commande deep extract

La commande deep extract est utilisée pour récupérer des éléments de données situés à des chemins spécifiques dans un fichier.

Syntaxe Générale

deep extract "chemin_donnees" chemin_fichier

Exemple

deep extract "root[2]['prenom']" clients_v1.csv

Cette commande retournera la valeur 'Pierre'.

Application de Correctifs : la commande deep patch

Similaire à l'utilitaire patch des systèmes Unix, deep patch est conçu pour les données structurées.

Processus d'Utilisation

1. Créez un fichier de différences en utilisant deep diff :

deep diff clients_v1.csv clients_v2.csv --ignore-order --report-repetition --create-patch > corrections.patch

2. Appliquez ensuite ce correctif au fichier cible :

deep patch --backup fichier_a_corriger.csv corrections.patch

Points Importants

  • Les fichiers de correctifs sont en format binaire et ne sont pas lisibles directement.
  • Le format du fichier original peut être modifié après l'application du correctif.
  • L'argument --backup est fortement recommandé pour créer une copie de sauvegarde du fichier avant modification.

Suggestions d'Applications Réelles

  • Validation de Données : Intégrez deep diff dans vos pipelines ETL pour vérifier l'intégrité et la cohérence des données avant et après transformation.
  • Gestion de Configurations : Comparez aisément différentes versions de fichiers de configuration pour identifier les changements.
  • Correction de Données : Mettez en œuvre des mécanismes de correctifs pour résoudre en masse des problèmes de données.
  • Exploration de Données : Utilisez les commandes grep et extract pour une exploration rapide et ciblée de vos jeux de données.

Considérations de Performance

Pour l'analyse de fichiers volumineux, les paramètres suivants peuvent optimiser la performance :

  • --cache-size : Configure la taille du cache.
  • --max-passes : Limite le nombre maximal de passes de comparaison.
  • --log-frequency-in-sec : Ajuste la fréquence d'affichage des journaux.

Étiquettes: DeepDiff CLI Python Data Comparison File Patching

Publié le 16 juillet à 14h55