Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Les éléments uniques en Python pour Excel
Certes, depuis l'avènement d'Office 365,
Excel offre une précieuse fonction native pour traiter les
doublons. Cette fonction se nomme
Unique. Mais
Python pour
Excel n'est pas en reste et c'est ce que nous allons découvrir.
Classeur Excel à télécharger
Nous proposons de baser la découverte sur un
classeur Excel hébergeant une petite
base de données.
Nous découvrons la présence d'une base de données des activités de sorties entre les colonnes B et E et jusqu'à la ligne 998. Ces idées sont recensées par départements, villes et activités. Forcément il peut y avoir plusieurs idées dans un même département mais aussi dans une même ville d'un même département. C'est ce qui explique la répétition, plus ou moins fréquente, de ces départements et villes.
Sur la droite, des cases et grilles vides sont en attente de nos
extractions par le biais de
formules Python.
Le DataFrame
Comme nous l'avons appris à l'occasion du volet précédent, pour exploiter ces
méthodes Python, nous devons premièrement encapsuler les données à traiter dans un
DataFrame. Et nous allons attribuer un nom simple à ce
DataFrame pour le piloter plus facilement.
- Cliquer sur la première cellule grisée pour sélectionner la cellule H2,
- Réaliser le raccourci clavier CTRL + ALT + MAJ + P pour activer Python,
- Taper le début de syntaxe suivant : tab=,
Tab est le nom que nous souhaitons donner à l'
objet Python pour représenter le tableau des activités de sorties.
- Dès lors, sélectionner une petite portion du tableau comme A1 à B2,
Cette action conduit à la syntaxe suivante :
tab=xl("A1:B2", headers=True),
- Dans la barre de formule, remplacer la plage A1:B2 par le nom bdd,
Il en résulte la syntaxe suivante :
tab=xl("bdd", headers=True),
Bdd est effectivement le nom que nous avions préalablement attribué à la base de données des activités de sorties. Vous pouvez le constater en déployant la
zone Nom en haut à gauche de la feuille Excel.
Le
DataFrame est créé. Rappelons-le, nous l'avons nommé
tab. C'est désormais cet objet qui représente toutes les informations de la base de données des idées de sorties. C'est sur lui que nous allons maintenant pouvoir appliquer des
méthodes Python pour purger les données.
La fonction ou méthode unique
La
méthode python unique, lorsqu'elle est appliquée sur une colonne d'une source de données permet d'isoler toutes les valeurs sans leurs répétitions.
- Cliquer sur la première case de la première grille d'extraction pour sélectionner la cellule H4,
- Réaliser le raccourci clavier CTRL + ALT + MAJ + P pour activer Python,
- Débuter la syntaxe comme suit : tab["Département"],
Grâce à cette technique, nous isolons la colonne des départements sur l'
objet tab représentant la base de données.
- Poursuivre la formule en appelant la méthode unique : .unique(),
- Valider la formule par le raccourci clavier CTRL + Entrée,
Une colonne de données est créée, elle est encapsulée (ndarray).
- A gauche de la barre de formule, cliquer sur la flèche dirigée vers le bas,
- Dans les propositions, choisir Valeur Excel,
C'est ainsi que nous transformons notre
objet Python en
liste de données. Et comme vous pouvez l'apprécier, nous obtenons bien une liste restreinte des départements purgés de leurs doublons.
Représenter plusieurs colonnes
Maintenant, nous souhaitons isoler les
lignes qui sont vraiment uniques sur les
paires Département / Ville. Il existe une
technique Python pour créer un
DataFrame représentant
plusieurs colonnes choisies à partir d'un tableau source.
- Cliquer sur la deuxième case grisée pour sélectionner la cellule J2,
- Réaliser le raccourci clavier CTRL + ALT + MAJ + P pour activer Python,
- Construire la syntaxe suivante : dv=tab[["Département", "Ville"]],
Cette fois, nous nommons notre
DataFrame dv,
d pour département et
v pour ville. Dans cette formulation particulière, notez la présence des
doubles crochets pour représenter les deux champs souhaités, mentionnés entre guillemets et séparés d'une virgule. Les lignes de ces deux champs, nous les prélevons à partir de l'
objet tab que nous avons précédemment construit et qui représente la
base de données.
- Valider la formule par le raccourci clavier CTRL + Entrée,
Nous obtenons un nouveau
DataFrame. Et si vous cliquez sur son
préfixe PY, vous visualisez les données embarquées, sur les deux colonnes que nous avons choisies.
Les lignes uniques
Pour extraire les
lignes uniques sur
plusieurs clés, ici pour exclure toutes celles qui proposent la même ville pour un même département, ce n'est plus la
méthode python unique que nous devons employer mais la
méthode drop_duplicates. Nous devons bien sûr l'appliquer sur l'
objet dv que nous venons de construire, celui qui représente les informations sur les départements et les villes.
- Cliquer sur la première case de la grille d'extraction du dessous pour sélectionner la cellule J4,
- Réaliser le raccourci clavier CTRL + ALT + MAJ + P pour activer Python,
- Puis, construire la syntaxe suivante : dv.drop_duplicates(),
- Valider la formule par le raccourci clavier CTRL + Entrée,
- A gauche de la barre de formule, cliquer sur la flèche et choisir Valeur Excel,
Nous obtenons bien toutes les
lignes uniques, sans répétitions de villes pour un même département et ce, avec une formule déconcertante de simplicité.
La première colonne, celle en plus et celle des numéros, renseigne sur la position de la ligne isolée dans la source de données.
Trier les données filtrées
Mais un petit détail chagrine pour l'interprétation des données dans la lecture linéaire. A l'intérieur de chaque département, les villes ne sont pas triées dans l'ordre croissant, ce qui ne simplifie pas la lecture. C'est pourquoi sur ces données restreintes, nous devons engager la
méthode Python sort_values afin de diriger un tri avec deux clés.
- Double cliquer sur la cellule J4 pour faire apparaître sa syntaxe,
- A la fin, ajouter la méthode sort_values : .sort_values(by=["Département", "Ville"]),
Pour une formule finale comme suit :
dv.drop_duplicates().sort_values(by=["Département", "Ville"]). Grâce à l'argument
by nous organisons préférentiellement un tri croissant sur les départements et à l'intérieur de chacun, sur les villes.
Et comme vous pouvez l'apprécier dans chaque paire département/ville unique, les villes apparaissent désormais dans l'ordre croissant.