- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cette vidéo on va voir comment filtrer les données de notre DataFrame. Donc j'ai créé unnouveau Jupyter Notebook qui s'appelle donc 04 les filtres. Donc en fait vous allez voir que
00:00:10 :régulièrement on n'a pas vraiment besoin de cibler une rangée en particulier. Ce qui va nousintéresser par contre c'est de cibler différentes rangées de notre DataFrame en fonction des valeursqui sont présentes dans certaines colonnes. Donc pour ça on peut utiliser ce qu'on appelle des
00:00:25 :filtres. Donc on va sélectionner par exemple la colonne gender qui correspond au genre de chaquepersonne de notre DataFrame. Donc si j'affiche df avec entre crochet gender, vous voyez qu'on a
00:00:36 :une série ici avec à chaque fois une valeur qui est soit male soit female. Et on a certaines valeurségalement qui sont indiquées comme nan. Donc ça signifie en fait que c'est des valeurs qui ne sont
00:00:47 :pas renseignées. On verra dans une prochaine partie comment gérer ces valeurs. Donc pour l'instant ona juste récupéré ici la colonne qui correspond au genre de chaque personne dans mon DataFrame. Je
00:00:58 :vais pouvoir faire des vérifications avec cette colonne avec un opérateur de comparaison commele double égal qui va me permettre de vérifier si les valeurs dans chacune des colonnes sontégales ou non à la chaîne de caractère male dans ce cas-ci. Et en fait si on fait ça vous allez voir
00:01:13 :que ça va nous retourner une série sauf que cette fois-ci à la place des valeurs on va avoir unbooléen true ou false en fonction de si la condition est vérifiée ou non. Donc par exemple dans la
00:01:23 :première rangée ici on avait la valeur male donc c'est égal à cette chaîne de caractère male doncon a true. Pour la deuxième on avait female donc on a false etc etc pour chacune des rangées. Donc
00:01:35 :vous allez me dire c'est bien sympa mais pour l'instant ça ne sert pas à grand chose puisqueici on récupère juste des booléens. Nous ce qu'on aimerait c'est récupérer les données de base donc
00:01:43 :les données de notre data frame au complet en fonction de la valeur qui est contenue dans cettecolonne. Donc en fait ce qu'on va pouvoir faire c'est récupérer ce filtre et l'indiquer à l'intérieur
00:01:53 :des crochets de notre data frame. Donc quand je dis ça en fait ce que je veux dire c'est qu'on vafaire notre data frame avec des crochets et à l'intérieur de ces crochets plutôt que despécifier par exemple une colonne et bien on va spécifier notre filtre. Donc là je vais prendre
00:02:05 :tout ce que j'ai mis ici, je vais le copier et je vais le coller à l'intérieur des crochets. Et làcette fois-ci en fait on va filtrer notre data frame avec cette condition. Donc je fais shift
00:02:15 :entrée pour exécuter et vous voyez qu'on se retrouve ici donc avec notre data frame maison n'a plus que les rangées ici qui ont le genre male en valeur dans cette colonne. Donc toutes les
00:02:27 :rangées female ou les rangées qui ne contenaient pas les bonnes valeurs, donc des valeurs NAN commeon avait vu précédemment, ne sont pas inclus. Et si on regarde ici on a beaucoup moins de rangées
00:02:36 :que précédemment. On a toujours dix colonnes, ça c'est normal, mais au lieu d'avoir mille rangéeson n'en a plus que 438. Et si à la place de male je mets female vous voyez qu'on en a 493. Et donc
00:02:46 :si vous faites un petit calcul 493 plus 438 ça ne fait pas mille et c'est normal puisqu'on avaitcertaines valeurs qui étaient non renseignées donc comme on avait vu au début des valeurs NAN. Donc
00:02:56 :c'est normal qu'on n'ait pas mille en tout puisque on a certaines cases qui ne contenaient ni femaleni male. Donc ça c'est un filtre tout simplement vous voyez c'est très simple, ça fait un peu
00:03:07 :bizarre au début puisqu'en fait on a deux fois df ici, on a décroché un peu partout, mais ce qu'ilfaut bien comprendre c'est qu'on a une condition ici qui est utilisée pour filtrer notre data frame.
00:03:16 :Et bien sûr cette condition on pourrait la mettre dans une variable avant, je pourrais ici faire unevariable qui s'appellerait female filter et je pourrais utiliser cette variable ici si vousvoulez avoir un code qui est un peu plus facile à lire. Et là on se retrouve avec le même résultat.
00:03:29 :On peut faire plein d'opérations comme celle-ci, vous allez voir à quel point Panda est trèspuissant pour faire ce genre de filtre, je vous jure vous ne voudrez jamais retourner dans Excelune fois que vous aurez appris à maîtriser Panda. Donc ce qu'on pourrait vouloir faire également c'est
00:03:42 :filtrer sur la liste des pays. Donc là on a différents pays qui sont possibles, le Canada,United States, on a la France également, et là encore certaines valeurs qui ne sont pas renseignées.
00:03:52 :Alors vous allez voir que pour les filtres en fait il y a quelques petites particularités. Parexemple si on souhaite filtrer sur country ici, on va vouloir potentiellement filtrer sur plusieursvaleurs. Donc on pourrait penser qu'on peut utiliser la syntaxe de Python, ce n'est pas
00:04:07 :forcément tout le temps le cas. Ici vous pourriez dire df.country.in et mettre un tuple par exempleavec différentes valeurs avec France et avec Canada. Et en fait malheureusement on ne peut
00:04:17 :pas utiliser cet opérateur in qui en Python nous permet de vérifier si une valeur se trouve àl'intérieur d'une liste ou d'un tuple comme ici. Par contre ce qu'on va pouvoir faire dans ce cas
00:04:26 :ci c'est utiliser une méthode qui s'appelle isIn et cette méthode on va pouvoir lui passer un tupleou une liste. Donc en fait ce qu'on fait ici c'est qu'on vérifie si la valeur de chacune des cellules
00:04:37 :ici est comprise dans la liste. Donc dans le tuple ici on pourrait mettre une liste et ça fonctionneraitde la même façon. Donc dans la liste ou le tuple ici France Canada. Donc là si je fais ce genre
00:04:47 :d'opération vous allez voir qu'on se retrouve encore une fois avec un filtre avec true ou falseen fonction des valeurs que l'on a dans notre data frame. Et donc ce filtre on va pouvoir l'utiliser
00:04:57 :pour filtrer notre tableau. Donc pour ça je vais le mettre ici par exemple dans une variable que jevais appeler countryFilter et on n'oublie pas le symbole d'égalité. Je mets ça dans cette
00:05:07 :variable et ensuite je vais filtrer mon data frame avec countryFilter. Et là vous voyez qu'on seretrouve avec un data frame qui contient tous les pays qui sont contenus dans France ou dansCanada. Donc on n'a plus les pays comme Etats-Unis, Maroc ou les valeurs qui n'étaient pas renseignées.
00:05:22 :Et on a 569 rangées ici. Ok donc vous voyez qu'il faut vraiment aller regarder la documentation sivous souhaitez savoir en fait comment faire certaines opérations. Ce n'est pas tout le temps
00:05:32 :exactement la même chose qu'avec Python mais ici c'est assez explicite quand même. On comprendtrès facilement ce que ça veut dire. Également vous allez voir que parfois il y a quelques petites
00:05:42 :opérations à faire. Imaginez qu'on souhaite filtrer sur le prix donc pricePaid ici. Eh bienle prix ici, le problème c'est que ce n'est pas un nombre. On a le symbole dollar ici donc en fait
00:05:52 :c'est une chaîne de caractère. Alors ce qu'on va pouvoir faire c'est modifier certaines valeurs denotre DataFrame. On y reviendra par la suite plus en détail. Mais pour l'instant, pour vous montrer,
00:06:02 :si on essaye de faire un filtre en disant donc df de pricePaid plus grand que 5, donc on essaye derécupérer en fait toutes les valeurs de notre tableau qui comprennent un prix plus grand que 5,là on aura une erreur. Et quel est le type de l'erreur ? C'est une erreur que vous connaissez
00:06:16 :normalement en Python qui est une erreur de type puisqu'on ne peut pas comparer des chaînes decaractère avec des nombres. Donc là en fait il essaie de comparer ces chaînes de caractère qui
00:06:24 :contiennent le symbole dollar et il essaie de comparer ça au nombre 5 et il n'y arrive pas etdonc on a cette erreur. Alors on peut faire des modifications comme je vous disais, là ça rentre
00:06:34 :un peu plus dans le détail. Je vais vous montrer le code qui nous permettrait de convertir ces donnéeset ensuite de les filtrer. Donc ce que je fais ici c'est tout simplement une copie de mon DataFrame
00:06:44 :avec la fonction copy. Donc je copie ça dans une variable que j'appelle dftest et ensuite on vamodifier la colonne pricePay. Donc rappelez-vous on peut accéder à une colonne en attribut comme
00:06:55 :ceci donc sans les crochets mais ça revient au même que si je faisais ici les crochets avecune chaîne de caractère. Mais on peut très bien aussi donc utiliser l'attribut qui est une autre
00:07:04 :façon de l'écrire. Et ce que je fais ici c'est que j'utilise la méthode apply sur cette colonneet j'applique une fonction lambda ici qui me permet de remplacer sur chaque élément de cette colonnele symbole dollar par une chaîne de caractère vide. Donc on va enlever ce symbole dollar et ça
00:07:20 :va nous permettre par la suite de convertir donc les données que l'on a dans notre DataFrame enfloat. Pour ça j'utilise la méthode asType et je dis que je veux donc convertir le type de
00:07:30 :mes données au format float. Ce qui va me permettre par la suite donc de comparer les valeurs danscette colonne pricePay avec le nombre décimal 5.0. A chaque fois vous voyez que j'écrase ce que
00:07:42 :j'avais dans pricePay ici donc on fait df pricePay égale à cette fonction sur laquelle on applique.Ensuite pareil pricePay égale la même chose mais asType et ensuite on peut faire cettevérification. Donc là j'exécute tout ça et vous voyez qu'on a 696 rangées qui sont au final dans
00:07:58 :notre DataFrame et si on regarde la colonne pricePay on n'a effectivement que des valeursqui sont supérieures ou égales à 5.0. Donc je ne rentre pas dans les détails comme je vous dis c'est
00:08:06 :un petit peu plus avancé mais ça vous permet de voir qu'en fait il y a moyen bien entendu demodifier les variables. C'est comme avec Python, il faut toujours penser au type des objets que
00:08:17 :l'on manipule. Forcément vous ne pouvez pas comparer des chaînes de caractère avec desnombres donc il arrive dans certaines situations que l'on ait besoin de faire ce type d'opération.
00:08:25 :Donc voilà pour les filtres. Comme je vous disais c'est un sujet qui est quand même très puissantqui vous permet de faire certaines opérations très facilement comme on l'a vu au début,qui peut devenir aussi très complexe rapidement si vous avez des cas un peu spécifiques maisvous voyez que déjà avec des choses assez simples comme ce qu'on avait ici au début,
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.