Session du 28 mars 2024 à 20h00
Bases du Langage
Data Science & IA
Bases de Données
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Args, kwargs, SQL et cartes interactives
On revient sur sur les args, kwargs et le principe de packaging et d'unpacking. On verra également les requêtes SQL et le plot de points sur cartes.
00:00:00 :Salut, désolé pour le petit roteur, je dégage ça, ok, et puis là il a sauté l'excitvieC'est New-YorkOù est-ce que j'en suis, je pense qu'on va faire là-dessusBon, ça va tout le monde ?
00:00:47 :Quoi de beau, il y a quelqu'un qui a de la musique, je ne sais pas une téléQuelqu'un a quelque chose à, attendez juste une secondeOuais, désolé, c'est ça, j'ai remis une bûcheOuais, des choses à partager, il y a quelqu'un qui veut...
00:01:39 :Je crois que c'est Sylla, est-ce que tu peux couper ton micro, s'il te plaîtJe coupe ton micro, Sylla, parce qu'il y a de la musiqueN'hésite pas à remettre si tu as besoin de parlerOuais, alors j'ai vu, j'étais pas là la semaine dernière, j'avais pas fait de mentorat, j'étais en déplacement
00:02:18 :Non, il n'y avait rien euIl n'y a pas eu de mentorat ?Mais par contre on fait des vocals toutes les semaines là, actuellementOuais, j'ai vu çaDaniel a organisé, on est 12 je crois de temps à faire çaEt ça va, ça se passe bien ?
00:02:34 :Carrément, hier c'était, il n'est pas là d'ailleurs, il a tristé, hier il y avait David qui faisait sur LinuxEt puis la semaine prochaine j'en ferai un par exemple sur Wild Tales, un ou deux par mois j'en ferai unD'accord, et c'est sous quel format, un peu comme ce qu'on fait là les mentorats ou c'est plus structuré ?
00:02:56 :Il y a un sujet, il y a ses conducteurs, par exemple la semaine prochaine j'ai montré, j'ai un projet de DjangoEt finalement je me dis tiens, j'aurais bien installé Wild Tales et en fait je vais installer Wild Tales partout sur DjangoPour faire un truc vachement intuitif en fait
00:03:14 :D'accord, et c'est sous forme de live un peu ?Ouais, je fais le coder liveD'accord, c'est bienSalut Axel, bienvenue, tu es débutant ou ça fait longtemps que tu es sur la plateforme ?
00:03:33 :Oui bonjour, tu m'entends ?Oui je t'entendsOui je suis débutant, ça fait un moment que je suis sur la plateforme, avec des départs, des arrêts, des départs, des arrêtsEt puis là je crois que c'est la bonne, à part que c'est encore de bonTu vas voir, de toute façon après ce mentorat tu n'arriveras plus à décrocher
00:03:54 :Bah ouais c'est mon premier, mais par contre l'hérodif j'en ai regardé un paquet, c'est passionnant en fait, c'est vraiment bienOk, c'est coolEt ton niveau Python, c'est ce que tu dis ?
00:04:07 :Niveau débutant j'ai fait beaucoup de Javascript, avec un niveau junior, junior moins on va dire, mais bon avec un niveau correctEt c'est vrai que Python par rapport à Javascript c'est beaucoup plus simple, c'est épuré quand même pour moiMais malgré ça oui, je suis plutôt au début quand même on va dire
00:04:30 :D'accord, ok bah en tout cas c'est cool que tu sois là, n'hésite pas à intervenir pendant le mentorat, c'est vraiment fait pour être interactifOk je vois qu'on va en parler de back-end là apparemmentBah de toute façon, moi j'essaie de parler de ce que je connais, donc c'est beaucoup de back-end, tout ce qui est CSS, tout ça c'est vraiment pas mon truc, je suis pas doué
00:04:58 :Donc ouais on fait surtout, de toute façon tu l'as vu dans l'hérodif, on fait beaucoup de back-end, Django,En fait moi dès que je dois faire du front-end, j'utilise Streamlit qui est un framework qui permet justement de faire des belles interfaces graphiquesLà peut-être on utilisera un petit peu parce que je compte montrer un peu avec une base de données, faire un affichage de data sur des cartes
00:05:39 :Et puis on va aborder ça et après on fera une carte chloropète, en fait une carte chloropète c'est une carte dont les couleurs varient en fonction de variablesVoilà c'est un mot barbare, voilà un peu le programme si ça vous ditBah vas-y Gabriel envoie tout ce que t'as
00:06:06 :Ouais je t'enverrai une vidéo sur un projet au golo du coup StreamlitFranchement si tu m'avais pas fait planer de ça je crois que je serais pas heureux parce que je savais pas trop comment interfacer, j'ai pas forcément participé au golo comme ça tout de suiteEt je leur ai fait un truc, du coup le fond s'est tout fait quasiment, qui est cette bouton machin, magique
00:06:28 :C'est souvent ça l'effet StreamlitMais en fait t'sais j'ai des fichiers Excel, et sur les fichiers Excel j'en ai un, c'est ce que nous faisons le commerce moi, ils commandent leurs produits et il y a des produits qui sont plus commandablesDonc ça leur fait une liste de rejets sur Excel automatique, sauf qu'à côté de ça ils ont un cadencier de commande avec plein de produits sur Excel commandables
00:06:49 :Et ça change souvent, et le problème c'est qu'il fallait chercher un par un actuellementEt je sais pas si t'as utilisé la librairie DifflibEuh non mais j'imagine c'est pour faire des comparaisons entre fichiersUn peu comme ouais, ça va me chercher en fait des produits qui ont des librairies similaires, et en fait je les fais matcher et sur Excel je leur ressors un nouvel Excel
00:07:14 :Et avec les produits qui sont non commandables et en face des produits similaires qui sont commandablesOkEt franchement ouais c'est trop bien, et du coup Streamlit me permet de leur faire une interface, c'est assez cool quoiEt t'as fait, parce que je sais qu'on en avait discuté un peu sur Twitter, t'as fait tourner, elle tourne sur un PC du réseau et les gens ils y accèdent via l'URL
00:07:34 :Ah bah oui c'est ça, j'ai posé une question dernière, j'ai oublié, mais ouais c'est ça, du coup quand il y a besoin actuellement je lance mon Streamlit et mon PC et puis ils se connectent sur mon PC pour entre guillemetsSur ton PC ou avec leur PC sur l'URL de
00:07:50 :Sur l'URL justement que Streamlit produit làCelui de Broadcast okVoilà, c'est bien ou ça craint de faire çaNon après tant que, pas de soucis c'est là, de toute façon c'est sur le réseau local donc il n'y a pas de, la sécurité est assurée par l'IT, le département IT c'est pas toi qui assure la sécurité du réseau local
00:08:17 :Donc tant que ça reste dans le réseau local il n'y a aucun souci, c'est safeJe t'envoie la vidéo du point prévuOuais ouais bah tu me l'envoies et je verrais si à la fin peut-être on regarderaVoilà tu vois là peut-être que ça, je sais plus où t'es là
00:08:31 :Je regarde si on a du temps à la fin on regardera tous ensemble et puis sinon on regardera la prochaine foisOk alors la dernière fois Sylla avait demandé un peu qu'on voit un peu les arcs et les kawargsEst-ce que vous êtes au clair là dessus ouDéjà est-ce que vous voyez assez bien mon écran, est-ce que c'est assez gros ou est-ce que vous voulez plus gros
00:08:59 :Après quand c'est trop gros, moi je vois plus rienC'est très bien là c'est même balèzeOuais là c'est assez grosDonc les arcs et les kawargs, ça fait souvent un peu peur quand on voit ça dans des définitions de fonctionDonc typiquement on peut avoir def my function et on voit souvent un truc comme ça
00:09:29 :En fait ça, ça veut juste dire que dans votre fonction vous pouvez passer autant deVous voyez quand même bien le truc, la coloration syntaxique c'est peut-être pas la meilleureFranchement ça passe bienEn fait ça, ça veut juste dire que si je fais une fonction qui s'appelle comme ça
00:09:56 :MyFunc et que je dis A, B, CEt que je dis, je vais faire des trucs pas hyper stylés maisOn va juste direBEt CVoilàEn fait si je fais MyFunc comme ça et que je dis 1, 2, 3Bah j'ai pas de soucis, il me dit bien, il me print bien mes 3 arguments
00:10:31 :Par contre dès que je vais mettre un argument de plusIl va dire, ah c'est pas possible parce qu'en fait la fonction comment je l'ai définiJe lui ai défini uniquement 3 arguments positionnelsEt là j'en ai donné 4, donc il aime pas du toutDonc pour pallier ce problème en fait on utilise les définitions de fonction avec args
00:10:50 :Parce que là dans ce cas là ce que je peux faire, c'est que je peux direOn peut faire un truc, attendez je vérifie comment je peux le faireOuais je vais définir comme ça, je vais direOutput égale comme çaEt en fait je vais dire for arg in args
00:11:14 :Je vais dire output plus égalEt puis je vais mettre un truc comme çaVoilà, en fait là j'ai défini une fonctionQui quel que soit le nombre d'arguments, il va me la concatener dans une chaîne de caractèreEt il va me l'imprimerDonc là maintenant si je fais mythunk
00:11:55 :Donc là comme tout à l'heure je mets 1, 2, 3Il me le met bien et en fait je peux en mettre autant que je veux9, 25 et puis je peux même mettre des trucsEn fait il va m'imprimer tous les argsEt donc ça c'est intéressant parce que parfois vous avez une fonction
00:12:15 :Et vous savez pas exactement le nombre d'arguments que vous allez lui mettre en entréeÇa peut arriver dans le cas par exemple de matplotlibSi vous faites, avec matplotlibSi vous allez dans la bibliothèque matplotlibVous allez voir dans la documentationEn fait il y a desJe vais pas l'écrire ici
00:12:47 :Il y a plein d'optionsEt parfois vous allez définir une fonctionVous allez dire def draw my dataDonc vous allez avoir je sais pas la data fournieEt à l'avance vous allez pas savoir le nombre d'options que vous voulez pour matplotlibPar exemple est-ce que vous voulez afficher la read égale true
00:13:14 :Des choses comme çaDonc ça en fait le args ça vous permet de définir des arguments qui sont positionnelsEt après vous pouvez dire j'ai d'autres arguments à ajouterDonc voilà faut pas se laisser impressionner quand vous voyez çaJuste args ça veut juste direEn fait comme je l'ai écrit
00:13:38 :Il y a ici args et puis j'aurais très bien pu écrire en faitIci c'est args et j'aurais pu dire totoEn fait c'est juste pour dire que c'est une liste d'argumentsEt ça marche très bien aussiÇa change rienEn fait args et kwargs c'est juste des conventions de nommage
00:13:56 :Vous pouvez mettre tout ce que vous voulezDonc ça c'est pour les arguments positionnels avec argsEt on a aussi la même chose avec les kwargsEn fait des fois vous définissez aussi une fonction de cette manièreVous dites nameEt puis en fait vous initialisez à zéroVous dites jean
00:14:17 :Et plutôt mettre comme çaName égale jeanSurname jeanEt puis vous dites printHelloNameEt surnameVoilà donc ça en faitLes définitions de fonction avec des variables nomméesEnfin des arguments qui sont nommésÇa vous permet typiquement de mettre des valeurs par défautEst-ce que, juste avant de répondre à Axel
00:15:04 :Est-ce que vous voyez tous mon écranOuiOk merciAlors Axel tu vois pas mon écranQu'est-ce qu'il pourrait y avoirTu vois tout pourtantTu vois le chat etcT'as peut-être fait une fausse manipT'as peut-être masqué l'écranJe vois tout le mondeToutes les cases mais pas ton écran partagé
00:15:34 :En fait j'ai eu un problème de connexionÇa s'est arrêtéEt c'est revenu sans ton écran partagéOk bah attends je vais arrêter le partageEt je vais repartager on va voir si ça revient chez toiJe pourrais essayer de faire un refresh aussiVoilà c'est bon je le vois
00:15:52 :Ça revientOuais super je te remercieOuais je te prieVoilà donc ouiDonc ce que je vous disais c'est queLes arguments nommés comme çaÇa permet de mettre des valeurs par défautVous voyez ici si je metsSi j'avais défini myFunc comme çaJ'avais juste mis name
00:16:14 :Surname comme çaEt que j'appelle juste ma fonctionEt il me dit ah en faitLes arguments positionnels comme çaC'est des arguments qui sont obligatoiresEt donc le faitDe définir la fonction de cette manièreAvec name comme çaÉgal et machin ça me permet deMettre des valeurs par défaut
00:16:39 :Qui va prendre en fait si jamais je rentre pasD'arguments dans ma fonctionDonc ça c'est voilàEt maintenant en faitAvec les args et les kwargs on peut faire la même choseSauf que en fait au lieu de définirComme j'ai fait tout à l'heureOn peut dire kwargs
00:16:56 :Et en fait kwargs c'est exactementLa même chose sauf qu'il va comprendreQue c'est un dictionnaire et non plusUne listeC'est tout la différence en faitQuand vous avez du args et du kwargsLe args c'est une liste et le kwargsAvec les deux étoiles comme ça c'est un dictionnaire
00:17:13 :Donc là typiquement on peut faire la même choseSi on sait pas à l'avance qu'est-ce qu'on va rentrerOn peut direFortival in kwargsPrint qui voleVoilàDonc en fait çaPardon j'ai fait une erreurIci c'est itemsPour aller parcourir un dictionnaireDonc là en faitLe fait de dire
00:17:43 :Donc ça si vous avez un dictionnaire par exempleLà je vais vous l'écrire iciJ'écris un dictionnaireNameGenre à chaque fois vous allez vous direMais j'ai toujours que ça en têteEt donc làJe metsGenreDonc là c'est mon dicoSi je veux parcourir mon dico
00:18:05 :J'ai plusieurs manières de le faireJe peux direFortiIn dico.keysLà je vais afficherLes clés du dictionnaireEt si je fais au lieu de mettreKeys je metsValuesJe crois que c'est çaValuesLà je mets les valeursDonc là j'affiche les clésLà j'affiche les valeurs
00:18:37 :Et si je veux faire les deux en même tempsJe peux utiliserKeyValDicoEt donc là c'estItemsEt donc là je metsKeyValDans mon dictionnaire j'ai juste à utiliser itemsDonc c'est exactement ce que je fais dans ma fonctionMa fonctionIciLà je définis Forti, Val, IncaWars
00:19:01 :Et donc maintenant si je faisJ'appelle ma fonctionEt que je mets rien dedansBah il ne se passe rienPar contre si je metsName égale genreEt que je disSurname égale genreVoilà il va afficherComme ça je peux direAge égaleGrandEt ce qui est intéressant c'est que
00:19:27 :J'ai plus besoin d'aller modifier ma fonctionAhRebienvenuJ'ai plus besoin d'aller modifier ma fonctionMême si je modifie le nombre d'argumentsDonc ça c'est assez intéressant et c'est assez puissantEt il y a un truc que moiJ'aime bien faireAvec çaC'est ce qu'on appelle duUnpacking
00:19:49 :Parfois j'ai pas envie d'allerD'aller renseignerVous voyez quand je faisMyFuncComme ça je suis obligé d'écrireName égale genreSurname égaleComme ça genreC'est un peu chiantEn fait parfois j'ai déjàEn fait si vous travaillez avec un fichierJson ou un truc comme çaUn fichier externe
00:20:19 :Vous voulez directementLe mettre en inputDe votre fonction donc ce que vous pouvez faireAu lieu de mettreParce que là je vais définirJe vais définir un KWorksComme çaEn fait si je fais çaKWorksEn fait je pourrais faire çaEt donc là si je fais
00:20:57 :MyFuncEt que làJe vais lui définir tout çaOuais mais en faitElle fait déjà le boulot, la fonctionAh d'ailleurs il l'a pas prisAh oui c'est parce que j'ai changé le nomC'est MyFuncJ'ai oublié le web screenIciVous voyez là c'est pas terribleParce qu'en fait il m'a carrément
00:21:33 :Copié la fonctionMoi c'est pas ce que je veuxMoi je voudrais justementUnpacker en fait le dictionnaireDoncC'est plutôt dans ce sens làQu'il faut le faireVous allez dire par exempleQue vos inputsMyInputDataInputDataEn fait c'est carrément déjàUn dictionnaireDonc là vous dites
00:22:05 :NameÉgalJeanSurnameJeanEt puis on va direQue son âgeEst 30Donc là voilà on a notre InputDataEt maintenant ce que je peux faireC'est que je peux lui direJe vais juste lui voirJe vais faire un defMyFuncEt en fait ce que vous pouvez faire
00:22:45 :C'est que vous mettez InputDataDirectement dans votreMais faut l'Unpacker en faitDonc vous ditesMyFuncEt donc là si vous faitesInputData comme çaEt bien c'est comme siDans votre fonction vous écriviezNameÉgal machinVous devez tout vous taperDonc en gros moi c'est surtout dans ces conditions là
00:23:11 :Que je l'utilise, c'est pour en faitJe prends un dictionnaire et je fais un UnpackingOuais Gabriel ?Ouais et çaJe trouve que pour tout c'est vachement bien parce que genreOn vient de DjangoMais dans les projets de Django ça me fait gagner un temps fouBah oui
00:23:27 :J'utilise tous mes champsComme ça dans des fonctionsC'est super pratique ouaisEn gros moi c'est vrai queDes fois on se dit à quoi ça sert tout çaBah c'est surtoutMoi c'est surtout là dessus que je m'en sersAprès ça dépend de ce queQuelle est votre utilisation mais moi c'est surtout là dessus que je m'en sers
00:23:45 :C'est pour faire de l'UnpackingParce que souventJe travaille avec des fichiers de paramètresQui sont externesDonc j'importe tout dans un JsonJe transforme tout dans un dictionnaireEt comme ça après j'ai pas à m'embêter à chaque foisA retaper dans ma fonctionName égale machinC'est vachement fastidieux
00:24:05 :Donc c'est surtout là dessus que je m'en sersHumOuaisAlors qu'est-ce queQu'est-ce qu'on peut dire d'autre ?Bah après franchementOuais celui-làOuiAlloOuaisOui exactementEn termes de fonctionnalitéC'est la même choseC'est pour faire du Packing et de l'UnpackingEt pour te faciliter la vie
00:24:49 :Quand tu rentres tes inputsAprès quand est-ce qu'il fautUtiliser args ou kwargsBah ça dépend commentIl définit ta fonctionEn fait tu vois si t'as une fonctionQui est justeQui est juste définie comme çaOù en gros t'as A, B, CEt tu disPrintJe vais essayer d'aller vite
00:25:13 :ABCBah là tu dis bien qu'en fait tu vas utiliser argsTu vois tu vas définirListTu vas dire que ta liste c'est directementEn gros je sais pasT'as ta liste qui fait des chosesDonc tu dis c'est 1, 2, 3Là tu sais que si par exemple tu fais
00:25:35 :MyFunc LIl va pas aimer parce qu'en fait lui ce qu'il prendC'est des arguments positionnelsDonc dans ce cas là tu vas faireTu vas unpacker LEn fait ici écrire ça c'est comme siTu éclates ta listeDonc là ça fonctionneDonc dans ce cas là tu vas utiliser args
00:25:53 :Si ta fonction tu l'avais définieDe manière à pouvoir rentrer des argumentsPar défautTu disÉgalHelloEt lui c'est le fameux totoEt bah dans ce cas là tu vas utiliser kwargsParce qu'en faitC'est forcémentUn dictionnaire avec les valeursAh d'accordDonc ok je vois maintenant
00:26:23 :Je vois un peu la différence peut-êtreOuaisDonc args c'est justeBon disons j'ai justeLa variable, elle n'a pas de valeurMais kwargs c'est quandJ'ai mes paramètresAvec les valeurs par défautOuais ça c'est un casUn cas d'applicationAprès tu peux avoir d'autres cas d'applicationTu peux rencontrer d'autres choses mais c'est un des cas
00:26:47 :VoilàEt puis comme on disait tout à l'heureLe kwargs on l'a utilisé parce queOn a balancé un fichier de paramètresOuaisAvec les valeurs, avec les paramètres et les valeursOuais c'est çaD'accordOkJe pense que c'est bonMerciMerci pour ta questionCa fait aussi un rappel pour tout le monde
00:27:13 :OuaisBon je pense que làAprès il faut vraimentEn fait il faut le rencontrer dans une fonctionOu dans un cas pratique pour vraimentS'en rendre compteMais après c'est pas non plus une chose qui estVous pouvez très bien vivre au sangIl n'y a pas de soucis
00:27:37 :Et parfoisEn fait ça rend vos fonctionsBeaucoup plus flexiblesParce que si jamais vous définissez une fonctionOuaisJe dis ouais parce que c'est vraiment çaCa réduit la tâcheCa réduit beaucoup le chômageCa permet deSi vous avez des arguments positionnelsQue vous voulez absolument avoir
00:27:59 :Après ça ça peut être des optionsEn faitKwargsVotre fonction elle ne va pas fonctionnerTant que vous n'avez pas rentré les trois premiers argumentsA, B, CEn fait là vous voyez si je faisMyPunkEt que je rentre rien il va m'envoyerUn peu chier
00:28:21 :Si je rentre juste 1, 2 c'est pareilParce qu'en fait j'ai pas rentré au moins trois argumentsPositionnelsDonc là vous voyez il fonctionneEt après je peux en envoyer d'autresJe peux lui dire 2532Et je peux même lui dire nameÉgal photoDonc en fait vous pouvez vous dire que
00:28:41 :Quand vous allez définir votre fonctionAu moment que vous définissez votre fonctionVous n'avez pas besoin d'autre choseQue A, B, CMais peut être qu'à l'avenir vous allez rentrerUn fichierOu un dictionnaire et là vous serez contentD'avoir défini ça dans votre fonctionParce que vous pourrez
00:29:01 :L'afficher tranquillementVoilà un peu pour les Hacks et les K-WorksC'est tout ce que j'avais à dire pour çaEst-ce que vous voulezEst-ce que vous avez des questions là dessus ou est-ce que c'est bon pour vousTu n'as pas ton disquaire tu l'as ouvert là par hasardJe t'envoie du code dessus
00:29:33 :Je peuxJe vais aller voirLe code ultra secretEst-ce que je le suisC'est un truc à afficher plutôtOuais ouais ouaisC'est un truc à afficherAh c'est pour un exempleOuais tu voisJe ne sais pas si toi tu fais comme çaAttends une secondeJe vais le mettre sur un autre écran
00:30:17 :Ouais t'as raisonParce qu'en faitJ'aiJ'aiJ'aiJ'aiJ'aiJ'aiJ'aiJ'aiJ'aiAh mais ça,ça ne va pas le faireJ'ai formaté mon mc il n'y a pas longtempsdu coup je ne l'ai que là dessusEst-ce qu'il y a une version web de discord ?
00:31:19 :Oui ouiOn va aller voirPutain alors c'est quoi mon truc déjà ?Je vais scanner ce truc làJ'aiOkJe vais bien juste un exemple duPour décoration tu vois j'ai tout comme çaUn dictionnaire c'est pour mes testsOkAh oui vous voyez iciDonc là typiquement vous voyez qu'on n'est pas obligé d'utiliser
00:32:26 :DuDu kawargsEn fait ici c'est un dictionnaire décorationOuais c'est çaOuais attend je vais copier çaOuais je vais copier ça quelque partJe vais vous zoomer çaVoilàVoilà vous voyez làVoilà c'est bonOuais alors vas-y GabrielQu'est-ce queSi tu veux nous en dire un peu
00:33:26 :D'où ça vientC'est délicatQuand tu as tout en basJ'ai mis un exempleÀ la fin du codeC'est un dictionnaireEt en fait ça me permet de créer des instancesDjango tout simplementOuaisParce que si tu veux j'avais déjà tout dans ma base de donnéesDonc j'ai tout exporté
00:33:48 :J'ai fait un dump data pour tout exporter en JdonEt pour mes tests DjangoDu coup je crée des fixturesPour avoir des données de base à testerOuais d'accordPour que je ne teste pas les mêmes choses que ce qu'il y a dans mon applicationDu coup si au final
00:34:02 :Parce que j'aurais pu faire la base de donnéesC'est pratique pour créer des instancesAssez rapidement quoiT'as pas à te faire taper comme çaBah ouais ouais effectivementLà c'est un bon cas pratiqueDonc là tu vois typiquementSi là c'est du KWorksParce que c'est des arguments nommés
00:34:20 :Dont on a besoinAvec la cléAvec la clé qu'il faut quoiBah merci pour cet exempleJe sais pas si c'est bien faitSi j'ai eu raison de faire comme çaBah si si pourquoi pasOuais ouais carrémentJe regarde maisJe vois pas deNon il y a pas de problème
00:34:44 :C'est correctC'est juste çaAlorsOuaisSi je comprends bienPour par exemple si on prend une décorationDécoration option objectifDécoration option objectCreate priceDécoration donc il prendLe dictionnaire décorationPour créer l'objetC'est çaOuaisVas-y Radaprice tu peux répondreMais c'est ça ouiOuais c'est ça c'est du langot pur
00:35:18 :C'est comme si je faisaisQuand on va dans le codeC'est comme si je faisais name égale décorationC'est méchantOui c'est un objetOuaisC'est comme si tu faisais ça iciOuais ouaisL'objet décorationEt tu vois que c'est beaucoup plusPratique de faire çaPlutôt que de
00:35:42 :Plutôt que de taper tout çaÇa tu l'as encore quelque partEt puis t'as un dictionnaireOuaisAu lieu de nommer çaChant par chantHumOkTrès bienCe que je vous proposeMaintenant c'est quePar exemple çaAlloEn fait je peux utiliser ça dans un formulaire
00:36:12 :Je reçoisPar exemple j'ai un modèle que je dis en personneEt j'ai un formulaireQui récupère les donnéesExactementEt en plusCe qui est pas malC'est queHumOuais en faitTu récupèrerais dans un formulaireUn dictionnaire et puis ouiTu balances en KWorksExactementBah voilà c'est bien
00:36:44 :Je pense que ça veut dire que t'as bien comprisHumOk je vais supprimer çaHumOn va faire le petit exerciceQu'on a dit où on va coloriserUne carte en fonctionDeEn fonction de villeDonc j'avais, attendez je vérifie parce queJe crois queJe vais arrêter le partage
00:37:10 :Je vais aller chercherUn fichierEst-ce que je l'ai làHumHumOuais donc làImaginons que on s'est récupéréHumJ'ai trouvé ça sur, enfin où vous voulezHumPas de soucis SimonHumEt on a toutes lesJe sais pas si c'est toutes les villes de France
00:37:52 :Mais on a pas mal d'infosEt ce qu'on aimerait c'est mettre sur une carteBah les datasD'une villeEt puisColoriser ça, je vais le faireEt puis comme ça vous allez voir un petit peu là où je veux en venirHumOn va mettreEtVoilàCities
00:41:48 :HumZip code, non c'est city codeCity codeHumForIn rangeHumDonc là normalement on va voir déjàCe qu'on obtientRandom citiesVoilàDonc là on s'est pris100 villes au hasard dans notre fichierHumEst-ce que ça va ou il y aVous voulez que je revienne sur ce petit morceau de code
00:42:24 :Ça peut être intéressantMais si personne intervient je continueOkOkQue quelqu'un se manifesteSurtout que ce test à jamaisDonc là on a nos 100 villesJe vais juste m'assurer queMes villes sont uniquesDonc pour ça ce que j'aime bien faireC'estJ'utilise un setC'est
00:42:58 :C'est un objetQui rend uniqueEntre autres c'est un objet mathématiqueQui rend unique une listeEt après je le transforme en listeComme ça je suis sûrJe ne veux pas avoir plusieurs foisLe même nom de villeDonc là imaginons qu'on a çaOn va direData
00:43:20 :DataCityCodeEt donc là on va dire que c'estRandom citiesEt après ce qu'on va dire c'est queOn va se définirQu'est-ce qu'on pourrait dire commeData par villeLe nombre deCompétitions gamingQu'a gagnéL'équipe de la villeC'est un peu bidonMais c'est pas grave
00:43:56 :Donc en fait on va dire que dfdataScorePar ville en faitOn va direJe vais le mettre là dessusOn va dire scoreÉgalDonc là on va dire rdn.rendit
00:44:16 :On va dire que ça va être un trucEntre 1Et 10For in rangeLengthEt donc là on va direRandom citiesOn va vérifier que ça fonctionneJe vais même directement le mettre là dessusdfdataScoreÉgalJe lanceEt donc là si je veux voir mon df
00:44:52 :DataJ'ai bienJ'ai mon frame avec 100 lignesJ'ai le city codeEt le scoreDonc là imaginez queCes deux trucs là sont indépendantsDonc là on va direQue dfcityEt dfdata c'est vraimentPour l'exerciceImaginez que ce df là c'estVos dataImaginezÇa c'est vos data
00:45:22 :Quelqu'un vous les donneLes data qu'on aOn aLe score par villeOkDonc vous vous dites ok superEt imaginez qu'on vous diseJ'aimerais bien que tu me fasses sur uneQue tu me mettesSur une carteUn pointDont la taille est proportionnelle au scoreEt je veux que ce point
00:45:48 :Soit positionné justementSur cette ville làPour faire çaIl va vous falloir une info supplémentaireDonc là le dfdata je vais le stockerDirectementEn fait on va faire comme siJe vais dire que dfdataTout csvEt puis làOn va direData.csv
00:46:12 :Et le séparateurSéparateurÉgalDonc voilàOn a notreNotre fichier de dataEt on a notre fichier de cityDonc ça veut dire qu'en faitJe ne veux plus à chaque fois changerTout ça je peux dégagerVoilàDonc là on a notreDfdata qui est là aussi
00:46:40 :Donc je l'ai sauvegardé en faitEt on va le lire comme on l'a fait pourLes citiesData.csvEt le séparateurC'est çaDonc pour notre petit exerciceD'abord on va se créer notre petite applicationNotre petit dashboardComme d'habitudeOn importe StreamlitImportStreamlit as stst.write
00:47:08 :DashboardWithScorePar villeOkOn va vérifierEt puis en fait limite on pourrait déjàOn pourrait déjà afficherOn peut dire qu'on veut afficher le DataFramest.DataFrame
00:47:34 :DfdataDfdataOkDonc là on a notre petit dashboardEt puis on a directementEn fait je vais même mettreJe n'ai pas besoin de l'indexIndexCol0VoilàOn a DataCityDu coup ça va jusqu'à 99On en a 100 et on a le scoreMaintenant ce qu'on veut c'est que
00:48:10 :On va devoir faireUne fusion de nos deux DataFramesParce que si vous voyez le trucC'est que là on a notre fichier de dataQui est complètement indépendantEt on vous a donné la missionJe ne sais pas vous êtes freelance et la mairieElle vous donne la mission de faire ça
00:48:26 :Donc vous, vous avez ça comme dataEt vous avez trouvéPour pouvoir en faitMettre le pointExactement sur la carte de France que vous voulezIl vous faut la latitudeEt la longitude de la villeDonc pour ça vous ditesJe vais fusionner mon DataFrame iciAvec celui
00:48:46 :Des informations de villeEt je vaisFaire la fusion en me basantSur cette colonne làPour mon DataFrameDe data et sur cette colonneDe CityCodePour le zipDonc pour ça il y a un truc qui est assez simpleAvec fondaC'est que vous ditesdf.merge
00:49:10 :ÉgalOn va fairepd.mergeEt donc là il faut donnerCelui qui est à gaucheDoncLeftEn fait non c'est directementC'est ledf.data.merge
00:49:30 :Et donc làC'estL'autre DataFrame avec lequelVous voulez faire le mergeLeft onC'est la colonneQue vous voulez utiliser pourLe DataFrame qui seraA gauche donc nous c'estDataCityCodeEt rightEn fait left c'est pour gauchePas de secret et rightRight onEt donc là c'est juste
00:50:00 :CityCodeDonc là on va déjà vérifier quand même queQu'on est bienQu'on est bien sur le mergeDonc si je vais voirMon mergeVoilà il a bien fait la fusionJe ne sais pas ce que vous en pensez mais c'est vachement puissantParce que si je fais
00:50:22 :DfCitiesJe vais juste faireHead comme çaEt puis je vais faire le dfDfData.headJe vais même en afficher que 5Pour qu'on y voitPlus clair je vais même en afficher que 3DfCities3 etDfData.head
00:50:48 :3Et vous voyez que si je regarde mon dfMergeMerge en anglais ça veut direFusionIl ne s'appelle pas Merge c'est MergedComme ça vous voyezQu'en fait il a prisMon DataFrame de gaucheDonc celui là et il aIl a été faire la correspondanceEn se basant sur la colonne CityCode
00:51:14 :Et il a rajouté en faitToutes les infos qui correspondaientBussiPourquoi il me l'a mis ?Donc là typiquement je pense qu'il m'a trouvé 2 foisIl m'a trouvé 2 valeursBussi dansNon mais bon c'est pas graveVoilàDonc ça c'est intéressantVoilàOn va dire carrément
00:51:44 :Donc là ça commence déjà à prendre formeOn va dire que c'est çaOkEt donc maintenant ce qu'on va faireC'est qu'on va direBig égaleAh non il faut que j'installe PlotlyEn fait Plotly c'est une librairieQui permet de faire des figures interactivesHTMLJe vais l'installer
00:52:16 :PlotlyDonc moiJ'importe PlotlyPointExpressAs PXEt donc vous allez voir que c'estAssez simple on faitPX pointPX scatter map boxDonc là vous ditesLe data frame que vous voulezEt ensuiteLà vous avez juste à rentrerDans les latitudesVous mettezComme nous on a réussi à faire
00:52:58 :La fusionJe vais aller fusionnerCe qu'il fautDonc latitudeJe vais chercherLa latitude et la longitudeParce que j'ai été fusionnéEn fait je suis capable de le faire parce que j'ai fusionné le trucDonc maintenant c'est df mergeLatitudeEt la longitudeC'est df mergeCette fois ci la longitude
00:53:34 :Donc là déjà on va voirÇa fonctionne bienAllons-yAlorsPourquoi il ne m'affiche pasParce queJe ne l'ai pas mis je penseOn va voir déjà si ça fonctionneJe ne lui ai pas mis d'info en faitOk donc làOn a tout çaEt en fait il faut que je définisse
00:54:46 :Ce que je veuxComme nous on avait dit que c'était le scoreIl va me manquer quelque choseC'estLa tronche de la carteAttendez je vais aller voir dans un scriptQue j'avais déjà faitPour ne pas perdre trop de tempsNon c'est pas celui làAttendezIl retrouve juste le truc qu'il faut
00:55:50 :Il y a une petiteAlors qu'est-ce qui nous manqueAh oui c'est le styleJe pense que c'est à cause de çaOui oui non mais j'ai enlevéParce que je récupère sur un autre scriptJe vérifie juste çaOk essayons avec çaJe relance mon partageLà c'est bon c'est revenu chez vous
00:56:36 :OkEn fait ce qui me manquaitJe pense que c'est çaJe vais vérifier que ça marcheVoilà donc là déjàOn a des choses qui s'affichentJe vais enleverJe vais mettre un zoomZoom à 4Donc là déjà vous voyez qu'en faitIl m'a tracé automatiquementUne carte de France avec un point
00:57:18 :Sur chaqueSur chaque endroitLongitude latitudeQu'est-ce que je raconteLongitude latitudeQue je lui ai définiDonc ça déjà c'est pas malMoi c'est queQuand je passe ma souris dessusLà vous voyez qu'il me donne juste l'info de latitude longitudeCe que je peux lui direC'est
00:57:44 :Hover dataEn fait hover c'est commePour ceux qui font du webC'est en html ou en cssC'est qu'est-ce qui se passe quand je passe ma souris dessusMoi je veux qu'il m'afficheLe nom de la villeDonc on va direC'est du cityCity codeIl me semble
00:58:06 :Donc là déjà vous voyezQuand je passe ma sourisAprès c'est peut-être un peu petit sur l'htmlJe zoom ça fait pas très beauMais au moins vous voyez la carteVous voyez quand je passe ma sourisIl m'affiche le city codeDonc là mes doigtsLà on est à peine marche
00:58:24 :Là on est à Armentière c'est pas loin de chez moiBaudemangeVoilà et en fait vous pouvez ajouterDes infos comme çaIl me semble que si je metsIci là je metsLe scoreLà vous voyezEn plus il m'affiche le scoreEt le truc qui est vraiment super
00:58:46 :Je trouve c'est queJe peuxSi je dis sizeEt que tu me l'attribue en fonction du scoreVous voyez en fait il me met un pointQui est coloriséEt proportionnel au scoreDonc là typiquementOn peut voirQue les petites villes iciIls ont fait un petit score sur la France
00:59:08 :Là vous voyez qu'encoreS'ils ont pas été superIls ont un score de 1C'est le plus petit scoreEt si on définit aussi la couleurEn fonction du data city codeOn va avoir un point en fonctionDe la villeEt puis bon bah voilàAvec PlotlistCe qui est pas mal c'est que
00:59:30 :Je dézoome un peuOn peut faireLa sélectionVous voyez ici on peut justeHighlighter juste certains pointsOn peut revenirEt cette viewBox selectOn peut tout sélectionnerOn peut faire pas mal de trucsOn peut zoomerOn peut voir directement iciVoilàOui tu peuxAvoir des précisions
01:00:08 :Qu'est ce que tu aimerais comme précisionAxelOui en faitJ'ai vu que c'était de la rédactionHTML que tu faisaisA l'intérieur du code PythonEn faitEst ce queTu vois ce que c'estUn frameworkOuiEn fait Streamlit c'est un frameworkPythonNon mais en fait si tu vois ce que c'est qu'un framework
01:00:38 :Tu peux comprendre ce que c'est StreamlitParce que Streamlit c'est un framework PythonQui justement permet de faire de la rédactionDe webappDonc en fait ici quand je lui disOverdataEn fait au sensPythonC'est un argument de fonction tu voisScatter Map Box c'est une fonction Python
01:00:58 :Et je t'ai dit une bêtiseC'est leFramework Streamlit et aussiPlotly qui est une librairiePython qui permet justement d'écrireDes graphes HTMLEt donc là tu vois il transforme l'argumentDe fonction OverdataEn un codeHTML tu vois j'ai même pas eu besoin d'allerVoir dans le HTML le Overdata
01:01:22 :Il me l'a mis dans une balise HTMLJ'imagineC'est pour ça que je posais la questionJe sais pas si c'est toi qui l'avais fait ouNon mais c'est çaTout le principeEt la beauté des frameworks et des librairiesC'est queImaginons toi tu connais le HTMLMais moi si je connais pas bien du tout
01:01:42 :Mais je connais PythonJe peux rentrer grâce à la fonctionLe lien entrePython etEt le HTMLOk superEt puis tu voisQue c'est un trucC'est interactif en faitSi jamais tu veuxTu pourrais faire tourner çaSur une webapp ou mêmeOn peut même exporter le HTML
01:02:08 :Tu vois si je faisJe pourrais rajouter un boutonEt direst .boutondownloaddownloadgraphOn peut direC'estpx .Est-ce qu'on peut faire çafig.write
01:02:42 :htmlEt donc là on va direoutput .htmlEt donc en faitSi je retourne là dessus je vais dézoomer un peuLà tu vois que maintenantJe vais même mettre un truc plus joliC'était quoi déjàJe crois que c'est le levelNon c'estle styleJe trouve plus ce que je peux mettre
01:03:10 :DoncTypeJe vais mettre primaryPour avoir une belle couleur sur le petit boutonDonc voilà si je fais downloadgraphIl m'a normalement téléchargéUn output.html si je vais le voir
01:03:30 :Là dedansEn fait là après tu voisImagine que je coupeMon applicationTu vois ici je quitte tout çaJ'ai plus rien. Normalement si j'ouvre
01:03:42 :Ici avecGoogleJ'ai encore le htmlBon après j'avais déjà vu que quand on faisait un exportDes htmlIl y a un problème avec les couleursMais voilà ça se règle facilementIl faut aller modifier le cssIl y avait unC'était ma prochaine questionCa intègre aussi du css
01:04:04 :Bah en faitSi je faisJe crois que c'est F12Pour voir le code sourceJe fais un clic droitJe sais pas si je peuxDroit c'est Windows peut-êtreOuais là c'estJ'ai pas l'habitude de chrome avecMacOù est-ce que c'est déjàFichierOptions pour les développeurs
01:04:38 :Code sourceSi tu veux avoir le code sourceEn fait là par contre c'est un petit peuC'est un peu indigesteMais en gros t'as ton code sourcePour moi c'est pas indigesteLà je suis chez moiCe que je voulais dire c'est que ce truc là tu vois
01:04:56 :AprèsJe pense que ouiOk okC'est génialAh bah oui ouiTu peux faire ce que tu veuxCe qui est pas mal c'est queEn gros avec çaC'est un fichier htmlJe sais pas si vous avez déjà luDes librairies comme matplotlibEn fait matplotlib c'est très bien
01:05:22 :Là si par exempleJe vais allerInstallMatplotlibJe pourrais faireUn boutonImport matplotlibMachin et je pourrais faireIl faut aussi que je lanceLe truc au mapDonc là j'ai mon dfmergeNormalementJe pourrais direPlt.scatter
01:05:52 :Ouais en fait je pourrais faire çaJe pourrais faire directement là dessusPlt.scatterLà je vais faireDfmergeDonc là je vais mettreLatitude en abscisseJe crois que c'est ça c'est latitude en abscisseLatitudeLà en faitJ'utilise une autre librairieQui permet de faire des graphes que Plotlib
01:06:24 :C'est matplotlib mais c'est une librairie qui est cette fois ciStatiqueDfmergeLongitudeEtLà je vais mettre le sizeJe vais dire que c'estDfmergeLe scoreJe crois que ça ça peut marcherJe suis pas sûrOkEt donc là si je faisPlt.show
01:06:58 :Bon là c'estJe sais pas exactementCe qui m'a fichuMais en grosFaudrait imaginer qu'il y a la France quelque partJe sais pas si ça fonctionneMais en gros çaSi je fais saveLà ce qui est pas mal c'est queJe peux encore zoomer et me déplacer
01:07:18 :Faire des choses comme çaPar contre une fois que j'ai enregistréC'est un pngDonc le png il est statique et si je le partageA quelqu'un il pourra pas naviguerComme moi je le fais iciAlors qu'avec la librairie PlotlibOn a sortiUn html et ça je peux le partager
01:07:36 :A n'importe qui même quand mon scriptIl tourne plus et là pour le coupIl aura toujours accès aux fonctionnalitésDynamiquesDu htmlEt là on peutSi je double cliqueSur les trucsOn peut isolerC'est MatplotlibAlorsLe truc juste avantCe truc là c'estÇa c'est Matplotlib
01:08:04 :EtCe que j'ai montré là en interactifAvec le dashboard c'estPlotlibLà si je vais avecStreamlitDonc Streamlit c'est la librairie qui permet de faire les dashboardsEtPlotlibC'est celle qui permet de faire ça donc là je peux isolerSi je recliqueSur unSi je clique
01:08:32 :Je peux isoler les trucsOkJe vois que Streamlit ça apparaît un peu partoutC'est beaucoup beaucoup utiliséPlotlibEn fait moi j'ai découvert ce frameworkPeut être 2 ou 3 ansEt depuis je l'utilise beaucoupEn fait dès que j'ai un rendu graphiqueA faire sur la data
01:08:52 :Parce que moi je fais beaucoup de dataEt dès que j'ai un rendu graphiqueOrganisé un peuJ'utilise StreamlitMais il y en a d'autresIl y a d'autres frameworks comme StreamlitQui font çaOkMerci pour tous les détailsPas de soucisC'est un plaisirAmbassadeur StreamlitC'est vrai que
01:09:18 :C'est vrai que je leur fais pas mal de pubAvec vousJ'espère qu'il y a bienL'enregistrementVoilàC'était un peu ce que je voulaisJ'avais prévu de faire un peu de database là dedansMais là on n'aura pas le tempsJe penseVoilà ce que je voulaisVous montrer
01:09:50 :BonsoirÇa passe vite le tempsOuaisMerciPour vos commentairesEst-ce que vous avez des choses que vous voulez voirEn particulierQue je serai capable de vous montrer la prochaine foisLà j'ai une petite questionÇa va la rediff quand est-ce qu'elle est dispoJe pense queJe sais pas les autres corrigez moi
01:10:20 :Mais dans la soirée ça sera dispoOk superJe vais pas te le faire tant qu'on est chaudJe crois que c'estLe plot de la vidéo il se fait automatiquementThibaut il a mis ça en place automatiquementEt après je pense que ça va viteVoilàEst-ce qu'il y a des choses que vous voulez voir
01:10:42 :Que je serai capable de vous montrerParce que typiquement je penseDes fois il y a des questionsNotamment de Gabriel sur DjangoAuxquelles je suis incapable de répondreDonc voilà si vous avez des chosesEt que je peux vous aiderLes importsMoi je découvre doncJ'aurai pas beaucoup de questions pour l'instant
01:11:02 :Mais je te remercie pour ce petit tour d'horizonD'EkawaxOkTrès bien c'est cool si ça peut vous aiderJe vois dans les commentairesLes importsOkOn pourra essayer de regarder ça la prochaine foisPeut-être les packagesCa pourrait être intéressantOuaisJe fais beaucoup d'organisationsPour faire des dossiers comme ça
01:11:28 :Avec les packagesOuais avec le vignesQuand tu maîtrises après c'est trop bienOuaisOk on pourra essayerD'aborder çaOuais celui-làAlloOuaisVous m'entendezOui oui on t'entendBon je sais pasJ'avais juste penséPeut-êtrePeut-être une fois surSi c'est pas chez moiDésolé je sais pas si c'est moi
01:12:02 :Je sais pas si c'est moiLes autres vous pouvez me confirmerJe comprends pasOn entend pas très bienAlloOn t'entend mais c'est pas hyper clairAh c'est bonAh là c'est beaucoup mieuxOkJe pensais àM2 par exemple surChatJPT peut-êtreMoi aujourd'hui j'utilise beaucoupMais des fois je galère à avoir
01:12:34 :Les bonnes réponsesC'est vrai ça m'aide beaucoupMais des fois je peux l'envoyer des chosesEt après il m'envoie vraiment des choses bidonsQue je comprends pasJe voulais juste savoir siIl y a des réponses aussiOuais on peut discuter de çaUn peu la prochaine foisC'est vrai que t'avais posé la question
01:12:54 :Je me souviens en plus des ArizekaWorksMais oui on pourra aborder çaComment en tout cas moi je faisPeut-être ça sera l'occasion d'échangerAvec les autres comment vous vous faitesComment vous l'utilisezOn pourra s'échangerNos idées comme çaVoilàJe vais noter les quelques idéesAlorsOn a les imports
01:13:22 :On aLes packagesChatGPTEt puisSi vous avez d'autres trucsVous hésitez pas sur le DiscordOuais bien sûrBien sûrAh oui du coupOn peut sur le Discord faire des suggestionsPar rapport à la questionOuais en faitSi jamais t'as une questionVraiment technique et que t'es bloqué
01:13:56 :Faut vraiment la poser sur la plateformeDoxtring questionsParce que en fait sur DiscordComme il y a plein de channels etcLà t'entends pas ?
01:14:08 :Ah ok pardonOuais ce que je disais c'est queSi t'as vraiment une questionQue tu veux avancerIl faut la poser surLa plateforme DoxtringAu niveau des questionsParce que c'est plus facile à suivreParce que si t'as une questionTu la poses sur DiscordComme il y a plein de channels et beaucoup de discussions
01:14:34 :C'est dur à suivreMais par contre oui tout ce qui est propositionsMentora etcIl faut juste me notifierDans le channel MentoraTu metsComme ça j'aurai une notifEt puis je l'ouvrirai aussiD'accordOk c'est génial merciMoi je suis pas encore courri sur Discord pour l'instant
Aucune occurrence trouvée pour « ».
00:04:30
Présentation des activités et des outils
00:08:43
Explication des args et kwargs
00:14:03
Unpacking des arguments avec kwargs
00:24:39
Discussion sur les exemples pratiques et les frameworks
00:37:34
Exercice pratique : création d'une carte interactive
01:04:34
Utilisation de Streamlit et Plotly
01:10:04
Discussion finale et questions des participants