- 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
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cette partie, on va voir comment formater les données que l'on a récupérées de l'APIafin de les avoir dans un format qu'on va pouvoir utiliser pour notre tableau de bord.
00:00:09 :Avant ça, je vais juste faire une petite modification ici, puisque vous voyez qu'on a une ligne assez longuequi dépasse la ligne ici, qui est le maximum qui est recommandé pour une ligne de code.
00:00:19 :Donc ce que je vais faire, c'est tout d'abord extraire toute cette chaîne de caractère,donc toute la chaîne de caractère de la requête, et je vais la mettre dans une variable que je vais appeler requête.
00:00:28 :Faites attention de l'appeler requête et non pas request, puisque request c'est déjà le nom du module.Donc nous, on va l'appeler requête comme ceci, et là vous voyez qu'on est encore en train de dépasser de la ligne.
00:00:38 :Donc ce que je vais faire, c'est que je vais prendre juste cette partie ici pour l'extraire dans une variable.Ce que je peux faire avec PyCharm qui marche très bien, c'est un clic droit et aller dans Refactor ici,et je peux introduire une variable, et automatiquement vous allez voir que ça va faire le travail pour moi
00:00:52 :d'extraire le code et de le mettre à l'intérieur d'une variable à la ligne d'avant.Donc là je vais l'appeler tout simplement Symbols, donc Symbols ici, qui est ce que la requête web attend.
00:01:01 :Donc le nom de ma variable, je vais le mettre Symbols comme ceci, et je vais appuyer sur Entrée pour valider.Et vous voyez qu'automatiquement, avec ce refactoring, PyCharm a réussi à extraire cette partie de code,à l'assigner dans une variable, et à remplacer la variable ici, donc le code qu'on avait par la variable.
00:01:16 :Donc comme ça, on s'assure de ne pas dépasser ici, et on a quelque chose qui est un peu plus lisible.Maintenant qu'on a fait ça, on va donc s'intéresser ici à ce qu'on récupère avec notre API.
00:01:26 :Donc si je fais un Ctrl R pour relancer mon script, vous voyez que ça c'est les données qu'on a actuellementqui sont récupérées par l'API, et nous ce qu'on voudrait c'est avoir quelque chose qui ressemble un peu plus à ça.
00:01:37 :Donc pour les devises, on va avoir un dictionnaire avec les clés qui sont les devises,donc là on a une clé pour la devise canadienne et une clé pour la devise USD,et en valeur de chaque clé, on va avoir tout simplement une liste qui va contenir dans l'ordre des jours,
00:01:51 :donc qui va être dans l'ordre des jours qu'on aura récupéré depuis l'API, pour pouvoir l'afficher dans le bon ordre,et bien la valeur de chaque devise pour chaque jour.
00:02:00 :On va avoir pareil ici sur le canadien, et comme ça on va pouvoir facilement, après de notre interface,boucler sur les clés et les valeurs de ce dictionnaire pour afficher chaque graphique qui correspond aux devises.
00:02:11 :Donc ça c'est l'objectif, et si on regarde ce qu'on a pour l'instant, c'est pas exactement ça qu'on a,on a d'un côté les clés avec les jours, et après pour chaque clé qui correspond à chaque jour,on va avoir un nouveau dictionnaire avec à chaque fois les devises.
00:02:24 :Donc on va essayer de modifier tout ça, et on va également récupérer ici les jours,et dans l'ordre bien entendu, puisqu'on veut afficher les graphiques dans l'ordre,donc on va s'assurer ici de récupérer 24, 25, 26, etc.
00:02:35 :Dans ce cas-ci, là vous voyez que l'affichage est dans le bon ordre,mais par défaut, avec Python 3.6, les dictionnaires ne sont pas ordonnés.C'est le cas, si je ne me trompe pas, dans les dernières versions de Python,donc je ne sais plus si c'est à partir de la 3.7 ou de la 3.8,
00:02:48 :mais maintenant les dictionnaires sont ordonnés par défaut.Là ce n'est pas encore le cas, donc il va falloir faire attention de bien s'assurer que ces clés ici vont être ordonnéesquand on va les récupérer pour les jours, et quand on va récupérer les devises ici.
00:02:59 :Donc ce qu'on va faire, c'est déjà récupérer cette liste de jours.Pour ça, on va aller cibler toutes les clés de notre variable api.rates ici.
00:03:09 :Donc ce qu'on va faire, c'est qu'on va prendre api.rates.keys,et ça, ça va me retourner tout simplement la liste des jours ici,donc la liste de toutes les clés dans mon dictionnaire api.rates.
00:03:18 :Sauf que le problème, comme je vous dis, si je fais un pprint de ces clés,vous allez voir, c'est que ça ne sera pas forcément dans l'ordre.
00:03:25 :Donc je relance mon API, et là vous voyez qu'on a 14, 15,ensuite on a le 24 mars, ensuite le 23 avril, le 17 avril, 31 mars, etc.
00:03:34 :Donc là, ce n'est pas dans l'ordre, et pour mettre toutes ces clés dans l'ordre,eh bien on va tout simplement utiliser la fonction sorted.Et vu que les dates, par défaut, ça va se mettre dans le bon ordre,puisque là on va avoir 2020, 04, 14, ensuite on va incrimenter à 15,
00:03:47 :là ensuite, pour la suite, on devrait avoir 04, 16, etc.Donc tout va se mettre dans l'ordre, puisque le 03 sera plus petit que le 04,le 24 sera plus petit que le 25, etc.
00:03:57 :Donc tout va se mettre bien en ordre au niveau des dates avec ce format,donc il suffit de spécifier avec la fonction sorted, ici, qu'on veut récupérer ces clés dans l'ordre.
00:04:05 :Donc si je relance mon script, vous allez voir que cette fois-ci,on a bien 24 mars, 25 mars, 26 mars, etc.Donc les dates qui sont vraiment dans le bon ordre.
00:04:13 :Donc tout ça, je vais le récupérer dans une variable que je vais appeler tout simplement all days,donc égale à ces clés qui vont être dans le bon ordre.
00:04:21 :Donc j'ai récupéré les jours, et maintenant je vais boucler sur chaque jour.Donc je vais dire pour chaque jour, donc for each day in all days.
00:04:29 :Donc on va boucler sur chacune de ces dates,et on va récupérer, en fait, la valeur qui est associée à chacune de ces clés dans notre dictionnaire API rate.
00:04:38 :Donc si je fais ici un print de API rate, et que je fais .get each day, comme ceci,et bien vous allez voir qu'on va récupérer pour chaque jour les valeurs des devises en canadien et en usd.
00:04:49 :Et là, vu qu'on a fait un sorted sur ces clés, on est assuré, ici, que ça va être dans le bon ordre.Donc ça va être dans l'ordre croissant des jours, donc 23 mars, 24 mars, etc.
00:04:58 :Puisqu'on a bien pris le soin, ici, déjà de trier les jours.Donc on va boucler sur chacun de ces jours, on va récupérer ensuite chacune des devises,donc canadienne et usd, et on va pouvoir les ajouter dans un dictionnaire.
00:05:09 :Donc le dictionnaire, je vais le créer avant, puisque, en fait, ce dictionnaire ici,je veux déjà m'assurer qu'on a bien une clé pour chaque devise,donc une clé pour la devise canadienne et une clé pour la devise usd,avec, par défaut, une liste vide, et on va, petit à petit, remplir ces listes, en fait,
00:05:25 :qui correspondent à chaque devise, avec les devises pour chaque jour.Donc ce que je vais faire, en premier, c'est créer ce dictionnaire.Donc il y a plein de façons de faire ce que je suis en train de faire, ici.
00:05:35 :On pourrait faire des compréhensions de listes, on pourrait faire des boucles,on pourrait faire à peu près tout ce qu'on veut.Moi, je vous montre ma façon de faire, qui me semble être la plus efficace.
00:05:43 :Si vous en voyez d'autres qui sont plus efficaces, n'hésitez pas à les poster quelque part,que ce soit sur le Discord ou dans les questions-réponses de la formation,pour que tout le monde puisse en profiter.
00:05:52 :Donc moi, ce que je vais faire ici, c'est faire un dictionnaire que je vais appeler All Rates,et, en fait, on va faire ce qu'on appelle une compréhension,donc une compréhension de dictionnaire.
00:06:02 :Donc c'est comme les compréhensions de listes, mais pour les dictionnaires.Donc plutôt que de mettre des crochets, je vais mettre les acolades, ici,qui définissent un dictionnaire, et je vais, en fait, pouvoir créer une paire de clés-valeursen bouclant sur mes devises.
00:06:15 :Donc là, en fait, je vais boucler ici sur Currencies,donc je vais dire pour Currency in Currencies,et avec chaque Currency, ici, on va associer une liste vide.
00:06:24 :Donc je vais dire Currency, deux points, et une liste vide pour Currency in Currencies.Donc ça, ça va me créer un dictionnaire avec deux clés,donc puisqu'on a deux devises ici, on a USD et CAD,donc on va boucler sur ces devises, donc ce qu'on fait avec la boucle 4 ici,
00:06:40 :et pour chacune de ces devises, on va créer une paire de clés,donc la clé, ça va être la devise, donc USD,et la valeur, ça va être une liste vide,et cette liste, on va la remplir, ici, par la suite, à l'intérieur de notre boucle.
00:06:50 :Donc pour l'instant, je vais juste faire un print de All Rates,donc pprint de All Rates, juste pour vous montrer ce que ça donne.Je vais juste commenter ces lignes, ici, pour ne pas qu'elles s'exécutent.
00:07:01 :Je réexécute mon script, et là, vous voyez qu'on a bien un dictionnaireavec chaque devise, et pour l'instant, des listes vides.Donc ça commence à ressembler à ce qu'on a ici, sauf qu'on n'a pas encore les devises,et donc tout ça, on va l'ajouter directement dans la boucle, par la suite, ici.
00:07:13 :Donc je décommente ces lignes de code, j'enlève mon pprint,on va séparer un peu les choses, voilà.Donc là, j'ai tous les jours, j'ai mon dictionnaire qui est prêt,et dans lequel on va, cette fois-ci, rentrer les devises pour chacune des journées.
00:07:27 :Donc si, à ce stade-ci, je relance mon script,donc je vais faire Ctrl R pour relancer le script,vous voyez que pour chaque jour, on va se retrouver avec un dictionnairequi va contenir les valeurs pour le canadien et le usd.
00:07:39 :Donc nous, ce qu'il va falloir faire, c'est, en quelque sorte, boucler sur ces valeurs,donc on va devoir récupérer la devise et la valeur associée à cette devise,et les ajouter, en fait, dans notre dictionnaire All Rates, ici.
00:07:52 :Donc pour ça, je vais faire une compréhension de liste.Donc une compréhension de liste, comme ceci, avec les crochets,et ce qu'on va faire, c'est déjà boucler à travers notre dictionnaire, ici, en fait,donc le dictionnaire qui contient la devise avec ses valeurs.
00:08:06 :Donc ce dictionnaire, c'est tout simplement tout ça, ici.Alors pour que ce soit un peu plus clair, je ne vais pas mettre un Get, ici,je vais mettre, en fait, des crochets, puisque là, je suis assuré, en fait, d'avoir quelque chose,puisque, en fait, cette clé Each Day, on l'a récupérée depuis apirates.keys.
00:08:22 :Donc on est sûr, ici, que ça va bien être les clés du dictionnaire.Donc je ne suis pas obligé de mettre Get, je peux directement mettre les crochets,sans risquer d'avoir d'erreur, à moins qu'on modifie le dictionnaire entre les deux,mais je sais bien que je ne vais pas le faire, ici, donc ce n'est pas grave.
00:08:34 :Ça va permettre, ici, de réduire un petit peu notre code.Donc ce que je vais faire, c'est boucler, en fait, sur les éléments de ce dictionnaire.
00:08:42 :Donc on va boucler sur les clés et les valeurs.Donc ce que je vais faire, ici, c'est dire pour Currency et Rate, dans mon dictionnaire.items.
00:08:50 :Donc là, en fait, le premier élément, ici, ça va être la clé, et le deuxième élément, ça va être la valeur.Donc on va boucler sur chaque élément de notre dictionnaire, ici,donc on va boucler sur cet élément, ici, et on va récupérer, dans Currency, la chaîne de caractère CAD,
00:09:04 :et ensuite, dans Rate, la valeur associée à cette devise.Et on va faire pareil, après, pour USD, avec la valeur associée à USD.Et tout ça, qu'est-ce qu'on va faire ? On va l'ajouter dans notre dictionnaire AllRate, ici.
00:09:17 :Donc ce que je vais faire, c'est que je vais dire, ici, AllRateCurrency,donc ça, ça va être la clé qui va correspondre, dans ce cas-ci, à CAD.
00:09:25 :Donc on va ajouter, à l'intérieur de cette clé, les valeurs dans notre liste.Donc on va dire AllRate, entre crochet, Currency, et on va faire, tout simplement, un .append,
00:09:34 :et on va ajouter la Rate.Donc .appendRate, donc Rate, ici, c'est ce qu'on va avoir récupéré, ici,donc le 1.5716, et on va l'ajouter à l'intérieur de notre clé canadienne.
00:09:46 :Donc dans la clé, ici, CAD, on va ajouter la valeur 1.5716.Et on va faire pareil, ensuite, avec l'autre devise, puisque là, on boucle avec une boucle For,sur tous les éléments de ce dictionnaire, donc on va faire pareil, ensuite, avec le USD,et on va ajouter cette valeur, ici, qui correspond à la devise USD, dans notre dictionnaire AllRate.
00:10:06 :Et on va faire ça pour tous les éléments, donc tous les éléments sur lesquels on boucle, ici,on va les ajouter dans chaque clé de notre dictionnaire.
00:10:13 :Donc si, après ça, ici, je fais un pprint de AllRate, et que je relance le script,vous voyez qu'on a bien le dictionnaire qu'on s'attendait à avoir,donc le dictionnaire que j'avais fait, ici, en préambule, pour vous montrer à quoi ça devait ressembler.
00:10:28 :Eh bien, on a exactement la même chose, ici, avec la devise canadienne, ensuite, 1.5716,ensuite, on a 1.5539, etc., etc.Donc ça fonctionne parfaitement, on a bien le dictionnaire qui est maintenant reformaté,qui est un peu modifié pour avoir vraiment ce qu'on voulait au départ.
00:10:43 :Vous voyez, par la même occasion, ici, qu'on peut très bien faire une compréhension de liste,sans forcément la sauvegarder à l'intérieur d'une variable.Dans ce cas-ci, on modifie la liste de notre dictionnaire,donc la liste qui est associée à nos devises,et donc on n'a pas forcément besoin de garder cette compréhension de liste quelque part.
00:10:59 :On fait juste ajouter, ici, des éléments à l'intérieur de la liste de notre dictionnaire.Donc, tout ça s'est fait à l'intérieur de notre boucle,et maintenant, il ne nous reste plus qu'à retourner les bonnes valeurs,puisque, pour l'instant, j'avais mis un return qui retournait deux valeurs nonnes,pour ne pas que la fonction plante, comme on l'avait vu dans la partie précédente.
00:11:16 :Là, ce que je vais faire, c'est tout simplement retourner, en premier, les jours,donc all days, et, en second, les rates, donc all rates.Et tout ça, je vais le récupérer dans ces deux variables, ici, days et rates.
00:11:28 :On va juste assurer, ici, qu'on a bien tout ce qu'il faut à la sortie de notre fonction.Je vais faire un pprint de days et un pprint de rates,juste pour vérifier que tout est bon.
00:11:37 :Je relance le script, et là, on a bien la liste des jours.Là, c'est une liste avec les jours qui sont dans l'ordre,donc 24, 25, 26, etc.
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.