Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Exclure les lignes différentes
Dans le volet précédent, nous avons découvert la
méthode Python compare. Ici, c'est une autre méthode qui s'invite. Elle est un peu dans le même registre pour
comparer plusieurs tableaux Excel. Elle se nomme
join. Elle permet de réunir deux tableaux tout en excluant les lignes qui diffèrent. En d'autres termes, elle réunit et consolide les données communes.
Classeur Excel à télécharger
Nous suggérons d'appuyer l'étude sur un
classeur Excel existant.
Nous trouvons
deux tableaux Excel à comparer. Chacun est encapsulé dans un
DataFrame Python en cellules B3 et E3 selon les syntaxes respectives suivantes :
tab1=xl("B5:C23", headers=True) et
tab2=xl("E5:F23", headers=True). Vous pouvez consulter les données qu'ils embarquent en cliquant sur l'un ou l'autre préfixe
[PY]. Sur la droite, une grille vide est en attente de l'extraction des lignes communes.
L'index directeur
Pour cette extraction, nous devons utiliser les colonnes des noms comme
index directeurs. Les différences se feront ainsi sur les colonnes des prénoms lorsque les noms sont identiques. Pour cela, nous devons utiliser la
méthode set_index sur les
deux DataFrame.
- Cliquer sur la case au-dessus de la grille d'extraction pour sélectionner la cellule H5,
- Réaliser le raccourci clavier CTRL + ALT + MAJ + P pour activer Python,
- Débuter la syntaxe comme suit : tab1.set_index("Nom", inplace=True),
- Enfoncer la touche Entrée pour passer à la ligne,
- Puis, réitérer sur le deuxième DataFrame : tab2.set_index("Nom", inplace=True),
- Valider la formule par le raccourci clavier CTRL + Entrée,
En réponse à ce stade, nous obtenons un objet vide ce qui est tout à fait logique. Nous l'avons dit, nous venons de définir l'index directeur (la colonne Nom) pour la réunion que nous allons opérer. C'est le
paramètre inplace réglé Ã
True qui indique que cette colonne devient l'
index du DataFrame.
Réunir les tableaux
Maintenant, il est temps de découvrir la
méthode Python join.
- Double cliquer sur la cellule H5 pour afficher son code,
- Cliquer à la toute fin de la syntaxe pour y placer le point d'insertion,
- Enfoncer la touche Entrée pour passer à la ligne,
- Puis, ajouter la ligne suivante : tab1.join(tab2, lsuffix="_tab1", rsuffix="_tab2"),
- Valider alors la formule par le raccourci clavier CTRL + Entrée,
Nous obtenons un
DataFrame qui réalise vraisemblablement la réunion des deux tableaux. Les trois paramètres sont obligatoires dans cette syntaxe. Le premier pour définir le
DataFrame (tab2) Ã joindre avec celui qui l'appelle (tab1). Les
paramètres lsuffix et rsuffix vont se greffer en entêtes de colonnes à l'extraction pour indiquer sur les noms listés de quel tableau proviennent les prénoms extraits. Pour le constater, nous devons visualiser les données.
- A gauche de la barre de formule, cliquer sur la flèche orientée vers le bas,
- Dans les propositions, choisir Valeur Excel,
Nous obtenons un tableau fait de trois colonnes : une pour l'index directeur sur la colonne des noms et deux autres pour les colonnes des prénoms émanant des deux tableaux d'origine. En troisième colonne, celle des prénoms réunis avec celles du premier tableau, vous constatez la présence de quelques erreurs :
#NOMBRE!. Il n'y a rien d'alarmant, bien au contraire. Cet indicateur signifie justement que la personne en cours, donc sa ligne, n'est pas trouvée dans le deuxième tableau.
Eliminer les erreurs
C'est en éliminant les lignes portant ces erreurs que nous allons pouvoir produire l'extraction des personnes strictement identiques entre les deux tableaux. Et nous l'avons déjà appris, c'est la
méthode Python dropna qui permet ce petit tour de magie.
- Double cliquer sur la cellule H5 pour afficher son code,
- Cliquer à la toute fin de la syntaxe pour y placer le point d'insertion,
- Appeler la méthode dropna comme suit :
tab1.join(tab2,lsuffix="_tab1", rsuffix="_tab2")
.dropna()
- Valider l'adaptation par le raccourci clavier CTRL + Entrée,
Comme vous pouvez le voir, les lignes sont moins nombreuses. Les erreurs ont disparu. Donc les lignes différentes ont été éliminées. Il ne reste plus que les lignes communes entre les deux tableaux.
Classer les résultats
Pour y voir plus clair et pour une meilleure interprétation, il apparaît opportun de classer les résultats dans l'
ordre croissant sur les noms. Pour cela, la
méthode join offre un quatrième paramètre, certes facultatif mais qui permet d'influer sur le tri des données résultantes.
- Double cliquer sur la cellule H5 pour afficher son code,
- Cliquer juste avant la parenthèse fermante de la méthode join,
- Dès lors, régler l'argument sort comme suit :
tab1.join(tab2, lsuffix="_tab1", rsuffix="_tab2"
, sort=True).dropna()
- Valider la syntaxe par le raccourci clavier CTRL + Entrée,
Petits pas après petits pas, nous y voyons en effet plus clair.
Supprimer la colonne redondante
Pour peaufiner la solution et pour un résultat plus propre, nous souhaiterions supprimer la troisième et dernière colonne. Etant donné qu'il ne reste plus que les lignes identiques, elle fait office de répétition sur les prénoms. Et pour cela et comme nous l'avons déjà appris aussi, nous devons engager la
méthode Python drop sur cette colonne reconnue par l'intitulé
Prénom_tab2.
- Double cliquer sur la cellule H5 pour afficher son code,
- Cliquer à la toute fin de la syntaxe pour y placer le point d'insertion,
- Appeler alors la méthode Python drop comme suit :
tab1.join(tab2, lsuffix="_tab1", rsuffix="_tab2", sort=True).dropna()
.drop(columns= ["Prénom_tab2"])
- Valider la syntaxe finale par le raccourci clavier CTRL + Entrée,
Cette fois, l'extraction est parfaite. Sur les deux colonnes Nom et Prénom, il ne subsiste plus que les lignes identiques aux deux tableaux, de quoi analyser facilement les différences, à plus forte raison avec la mise en place d'une mise en forme conditionnelle appropriée sur la base de ces travaux. Mais un détail ne vous a sans doute pas échappé, la comparaison n'est faite que sur le nom. Si un même nom sans le même prénom existe, il est extrait. Nous apporterons la solution prochainement.