Session du 18 avril 2024 à 20h00
Data Science & IA
DevOps & Environnement
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
Python débutant, SSH et data science
Introduction pratique aux environnements Python, à la connexion SSH avec VS Code et à la manipulation de données avec pandas, NumPy et matplotlib.
00:00:00 :Salut, bonsoir à tous, bonsoir, on va attendre un petit peu que les gens arrivent, ce soiril ne faut pas qu'on déborde parce qu'il y a le mentorat TOSA juste après, donc ilne faut pas qu'on déborde, salut, salut, j'ai lancé l'enregistrement, j'attends unpeu que les gens arrivent, alors on va bientôt commencer, juste si là, j'ai vu que tu avais
00:01:17 :posé sur Discord, tu voulais voir les logins Django, donc on a vu avec Thibault, ce seraplutôt Thibault qui parlera de ça, moi je ne suis pas assez expert dans le domaine Djangoet logins, donc je préfère que ce soit lui qui en parle, donc soit il fera, je ne sais
00:01:36 :pas s'il fera un vocal sur Discord ou si ce sera l'objet d'un mentorat, mais en tout casce sera fait. Ok super, merci. Je t'en prie. Ok, bon bah je vais, pas de soucis Axel, je
00:01:55 :vais partager mon écran. Ok, donc normalement vous devez voir, ça je vais enlever, voilà,alors vous l'avez vu sur le programme, on va essayer de faire un truc un petit peu plus,en fait avant, parce que souvent quand je prépare les mentorats, je fais exactement tout ce que je
00:02:30 :veux faire pendant le mentorat avant, mais ça veut dire que le truc est un petit peu cadré,je sais exactement ce qu'on fait, là j'ai réfléchi à un petit exercice qu'on peut faire ensemble,comme ça chacun peut proposer sa solution, ou on pourra voir ensemble et puis on verra,
00:02:46 :on débugera en même temps parce que je ne suis pas sûr que ça marchera du premier coup à chaquefois, donc on pourra le débugger ensemble, ça pourrait être intéressant et je vais essayer quece soit un petit peu plus débutant, sans être du tout péjoratif, mais bon, ça fait pas mal de
00:03:03 :séances encore qu'on a vu du docker, du docker compose, etc, donc quand il y en a qui commencent,ça peut être un peu rude pour les mentorats, même si bon, vous pouvez trouver ça intéressant,c'est quand même, l'idée c'est pas non plus que c'est totalement perdu, donc là on va essayer de
00:03:17 :faire des choses un petit peu plus, vraiment plus pitons, abordables, pour tout le monde,si ça vous va, un rythme intéressant, voilà, je sais pas si vous avez le programme, ça seraplutôt orienté data, l'exercice, après au fil des discussions, ça peut changer, mais c'est plutôtdata, et avant je voulais vous montrer un truc que j'utilise beaucoup, et vous pouvez aussi vous
00:03:47 :en servir si vous avez plusieurs serveurs, ça peut être vachement intéressant, je vais vous montreravec un exemple, alors en fait c'est sur vs code, vous voyez bien mon écran là, oui, sur vs code,mais je pense que ça existe aussi, je vais enlever ma caméra, sur PyCharm, c'est sûr même, c'est
00:04:11 :une extension qui s'appelle ssh remote, où en fait vous pouvez, donc le ssh c'est quoi, c'est unprotocole qui permet de communiquer avec des machines distantes, qui sont, distantes commeson nom l'indique, donc ça peut être typiquement un serveur, par exemple si vous avez une machineAWS qui tourne sur le cloud, vous avez une adresse IP avec cette machine et vous pouvez y accéder, et
00:04:41 :donc le ssh c'est quoi, je vais vous montrer pour ceux qui ne connaissent pas, c'est, donc vous avez montréla dernière fois par exemple le Raspberry Pi, j'avais, je vous ai montré qu'il y avait un Raspberry Pi,donc le Raspberry Pi il est sur mon réseau local, c'est une petite machine, il n'y a pas d'écran, il n'y a
00:04:59 :pas de clavier, il n'y a rien du tout, donc si je veux faire de l'administration du Raspberry Pi, il fautque je me connecte en mode console dessus, mais ça peut très bien être un serveur sur Linode, sur AWS,sur Google Cloud Platform, sur Azure, tout ce que vous voulez. Donc le protocole s'appelle ssh, je
00:05:15 :sais pas exactement ce que ça veut dire, mais en gros ça veut dire que la communication entre votremachine locale et la machine distante se fait via un tunnel crypté, avec un algorithme qui s'appelleRSA, qui est hyper, enfin de nos jours avec une machine classique, on peut pas, il faudrait un
00:05:35 :temps infini pour craquer en brute force la clé RSA, ça peut changer avec les ordinateurs quantiques,craquer une clé RSA je pense que c'est possible avec un ordinateur quantique, mais on n'y est pasencore, et donc voilà, pour l'instant on a de beaux, enfin le ssh a toujours de beaux jours devant lui,
00:05:54 :et donc là vous voyez mon écran, vous voyez la console, donc là je suis vraiment sur un terminalsur mon local, sur ma machine, et je peux faire ssh, en fait je fais ssh pierpi, donc ça c'est le nomd'utilisateur sur ma machine distante, donc là sur ma machine locale, sur mon Mac, je m'appelle Pierre
00:06:17 :André, mais sur ma machine distante c'est Pierre Pi, et ça c'est l'adresse IP locale du Raspberry Pi,donc là c'est 192.168.1.198, c'est vraiment une adresse locale, parce que le Raspberry Pi et ma
00:06:32 :machine locale sont sur le même réseau, sur la même box, si mon Raspberry Pi, enfin si moi je suisavec mon Mac, et que je suis à l'hôtel, je sais pas, dans un pays étranger, je peux pas accéder àcette adresse IP locale, parce que comme son nom l'indique c'est local, donc il faut que je sois sur
00:06:48 :le même réseau, après on peut faire ça avec un VPN, par exemple NordVPN ou des choses comme ça,vous pouvez faire comme si vous êtes sur votre réseau local grâce au VPN, mais là c'est pasl'objet, et donc là vous voyez je suis en ssh sur mon Raspberry Pi, vous voyez si je fais ls ici,
00:07:06 :et si je quitte le ssh, si je fais ls, j'ai pas la même chose, parce que j'ai pas le même bureau en fait,ouais Gabriel, j'ai une question, pour ça est-ce qu'il faut des, non en local il faut pas de clé,du coup j'imagine, si en local il faut aussi une clé, là en fait normalement, tu te connectes avec
00:07:26 :un mot de passe, tu dis, en fait au moment où tu vas faire ssh machin, lui il va te dire ok c'estquoi ton mot de passe, et en fait le mot de passe, c'est le mot de passe de session, typiquement surLinux, c'est un mot de passe de session d'utilisateur, c'est ce mot de passe là que tu
00:07:40 :dois rentrer, là moi je l'ai pas à la rentrée, parce que j'ai mis en place justement une clé ssh,en fait il y a deux types de connexions, soit vous connectez avec user mot de passe classique,soit vous connectez avec la clé ssh, et la clé ssh, c'est ce qu'on avait vu la dernière fois,
00:08:01 :ok merci, je t'en prie, donc là comme je disais, vous voyez que là si je fais ls,et que je fais exit, et que je fais ls, juste pour vous en convaincre, je suis pas sur le même,ici le ls pour dire liste, le directory, bah j'ai ce type de fichier, alors que sur mon mac,
00:08:28 :j'ai ça comme type de fichier, donc vous voyez bien que je suis pas sur le même bureau, voilà,mais donc le truc c'est que bon voilà, là on est dessus, imaginons que je veux aller dans apps,vous voyez je veux aller configurer ce qu'il se passe dans mon home page, donc je vais là dessus,
00:08:45 :je dis ok je veux aller configurer ça, donc je suis obligé d'aller faire settings, vous voyez enfait je suis en mode un vide de commande pour aller modifier mes fichiers de settings sur monserveur, là mon serveur en l'occurrence c'est le raspberry pi, donc bon c'est sympa, mais ça peut
00:09:05 :être un petit peu un peu chiant à les configurer, d'aller mettre ça en mode console etc, il y a uneextension qui est super sur vs code et qui doit exister sur pike farm, ça s'appelle ssh, enfinexplorateur distant, et en fait vous pouvez naviguer dans vos serveurs via vs code comme
00:09:24 :si vous étiez sur votre local, donc une fois que vous avez installé l'extension, vous faites ceconnecter à l'hôte, là vous définissez plusieurs hôtes, en fait il suffit de rentrer les adresses ip,mais bon je suis juste en train de vous montrer, donc vous n'êtes pas forcément en train de le
00:09:39 :faire en même temps, et vous verrez que si vous le faites au moment, là où j'ai rentré l'adresseip, il suffit de dire pierpiat192.168.1.188, et donc là vous voyez en fait il m'ouvre une
00:09:57 :toute nouvelle instance de vs code, donc là ça change pas, mais ce qui est ouf c'est que vous voyezici maintenant quand je fais, je peux aller naviguer directement dans mon raspberry, sansavoir à faire un vide de commande, là vous voyez ici le truc que j'ai fait tout à l'heure, c'est
00:10:19 :des apps home page config, je peux le retrouver ici, home page config, et donc là je peux allermodifier directement mes fichiers, vous voyez ici pour vous en convaincre, si je vous montrenano settings, je vais diminuer un peu, vous voyez que ce que j'ai ici dans l'interface en ligne de
00:10:38 :commande, c'est exactement ce que j'ai ici dans mon vs code, et dans mon vs code je peux allermodifier, voilà avec ma souris, avec mon clavier, c'est quand même beaucoup plus sympa que d'allerdans une invite de commande ici pour aller faire ces modifications. Pareil en fait ici vous êtes là
00:10:56 :vous pouvez aller créer des nouveaux fichiers directement depuis vs code etc, donc c'estvachement pratique et vous pouvez en plus, vous pouvez, c'est peut-être un peu petit pour vous,mais bon vous avez compris l'idée, vous pouvez vous connecter à plein de serveurs distants autantque vous voulez, toutes les machines distantes que vous avez, vous pouvez les gérer comme ça,
00:11:17 :je trouve que c'est vachement intéressant et donc par exemple imaginez que vous ayez,je sais pas, sur Python Anywhere vous avez déployé un projet Django, si vous avez un compte payantnormalement vous pouvez vous connecter en SSH à votre compte Python Anywhere, et donc là on peutimaginer que vous pourriez faire la même chose, au lieu d'aller vous emmerder, vous savez quand
00:11:45 :on se connecte à la console et tout c'est un peu chiant, vous pourriez faire votre configurationdirectement ici depuis vs code. Voilà bon je sais pas si ça parle à tout le monde parce que vous
00:12:03 :avez peut-être pas de machines distantes à gérer, mais pour ceux qui en ont et qui connaissaient pas,je pense que ça peut être intéressant, je sais pas, dites-moi dans les chats si ça vous parleou si c'est des choses que vous faites pas du tout et donc vous n'avez pas besoin. Mais voilà
00:12:21 :en tout cas pensez-y parce que c'est beaucoup plus simple à gérer. Ouais Gabriel ? Ouais c'estplus simple, ça m'intéresse en fait, parce que là je suis sur Python Anywhere, mais apparemmentle SSH c'est utile pour tout ce qui est, je crois que tu utilises quoi toi, Linode je crois,
00:12:40 :ou DigitalOcean ? Linode ouais. Donc c'est pareil en fait, si tu utilises ton SSH c'est utile. Ah ouioui carrément, tu vois ici j'ai donc se connecter à l'autre, j'en ai rentré plusieurs, moi tu voissur Linode, donc là j'avais déjà rentré l'IP du Linode, là si je vais dessus, ouvrir le dossier,
00:13:00 :ok là tu vois je suis dans mon application, enfin dans mon instance Linode, donc là tu vois j'aiplein de trucs, des applications que j'ai déjà mis en production sur mon instance Linode,ça pourrait être pareil sur DigitalOcean, il y a tout quoi. En plus Linode je pense que c'est
00:13:27 :moins cher que Python Anywhere non ? En fait je crois que Python Anywhere c'est 5 euros par moisnon ? Ouais quand tu as deux applications web c'est 15 euros. Ah oui c'est beaucoup plus cher,
00:13:40 :mais c'est pas tout à fait la même chose, parce qu'en fait Python Anywhere il s'occupe de tout,du déploiement etc, alors que sur un truc genre Linode ou DigitalOcean, il faut toi-même ledéployer, mais bon franchement honnêtement quand t'es un petit peu avancé, je pense effectivementPython Anywhere c'est bien au début pour relancer rapidement un truc, mais sinon c'est beaucoup
00:14:06 :mieux une instance serveur Linode ou je sais pas quoi. En plus là comme vous voyez si par exemplevous avez un serveur et que vous avez des images dessus, avec le terminal vous pouvez pas voir lesimages forcément, alors que là avec VS Code il n'y a pas de souci, vous pouvez afficher des png
00:14:29 :sans souci, il y a plein de trucs donc c'est quand même vachement intéressant. Moïse c'est unequestion ou pas Moïse de ce que tu dis, ou c'est plutôt une information ? Une question,
00:14:57 :connecter un serveur, un hébergeur, bah ouais c'est un peu ce qu'on venait de dire avec Gabriel,un serveur ou un hébergeur, en fait ça marche avec un serveur, à partir du moment où il y ala connexion SSH qui est autorisée sur le serveur, ça fonctionne. Après un hébergeur,
00:15:14 :en fait un hébergeur c'est large, parce que par exemple AWS ça peut être un hébergeur,c'est plutôt, il faut vraiment que ça soit un serveur, mais tu peux faire ça, tu vois moi jel'ai montré, j'ai différents, tu vois j'ai Linode, Contabo etc, ça marche exactement de la même
00:15:31 :manière, il suffit juste de setup le SSH et voilà après t'as pas de soucis. T'as tout qui estdispo, tu peux éditer tes Docker Compose, tu peux éditer tes fichiers Docker etc, donc c'estvachement intéressant. Voilà pour la petite extension VS Code que je trouvais intéressante
00:15:56 :à montrer. Est-ce que ça va pour vous ? Vous avez des questions là-dessus ou vous voulezqu'on passe à la suite ? Une dernière question et puis j'arrête. Non mais vas-y c'est avec plaisir
00:16:18 :Gabriel. Parce que moi il n'y a pas de problème au niveau du code, tout ça, il n'y a aucun souci,c'est plus au niveau des serveurs. Quand t'es en production par exemple, t'as pas ton serveur de
00:16:30 :production Blango forcément, ton serveur de test forcément. Donc là c'est pareil, c'est Pythonet Numerq qui le gèrent pour moi. Du coup je ne sais pas exactement ce qu'ils utilisent derrière,
00:16:39 :je pense que c'est Nginx parce que c'est Ubuntu qui tourne dessus. Des fois il y en a qui parlentd'Apache, ça va être quoi la différence par exemple ? En fait c'est forcément quand t'es
00:16:57 :en local en développement, quand tu fais le run serveur, ça te lance un serveur de développementqui est celui de Django. Par contre quand t'es en production, effectivement il faut que ce soit un
00:17:14 :serveur qui sert en gros ton application. Quand t'es en production, je pense que t'as pas vu situ utilises Python Anywhere, la commande c'est pas manage py run serveur, la commande c'estjunicorn, c'est lui qui va faire le lien entre ton script Python et les requêtes HTTP. C'est lui
00:17:43 :qui transcrit ça et effectivement c'est un serveur Nginx qui sert le serveur qui est derrière ça,c'est un serveur Nginx. Après t'as les serveurs Apache HTTP mais là en l'occurrence il me
00:17:59 :semble que c'est bien Nginx. Ok mais sinon dans ce cas il n'y a pas de grande différence que t'aiesl'un ou l'autre. Parce que je sais que tu utilises un serveur de production, c'est pas le serveur de
00:18:08 :test de développement, je ne sais pas trop quel avantage tu as utilisé un plus qu'un autre, jene savais pas s'il y avait une grande différence. Non franchement après je pense que les experts
00:18:19 :ils doivent avoir leur truc, ça doit être des trucs de compatibilité. Après je sais que parexemple Nginx il peut gérer les fichiers statiques, tu sais quand tu fais le collecte statique etc.
00:18:32 :Nginx le gère bien, pour Apache et tout ça honnêtement je ne sais pas trop, je ne sais pastrop non plus mais bon là tu vois c'est vachement dans les entrailles du truc. C'est aussi à ça
00:18:44 :que servent les frameworks, c'est pour pouvoir mettre des couches d'abstraction sur des chosesque tu veux pas gérer toi même. Parce qu'à ce moment là tu vois, à ce moment là si tu dis bon
00:18:54 :c'est bien de savoir mais par exemple Django, en fait c'est juste une couche d'abstraction autourde ton code Python etc. Tu pourrais très bien servir ton code Python avec ton serveur etc. Mais
00:19:08 :bon après tu t'imagines le bordel quoi. Ouais c'est pour ça, ils font beaucoup de trucs pour moi,j'ai mes dossiers statiques et mes liens et après ça roule quoi. Ouais après pourquoi pas,
00:19:18 :il n'y a pas de... Voilà pour cette longue intro mais c'était pour présenter un outilintéressant. Donc là sur la suite, vous me dites ce que vous en pensez, si vous voulez qu'on change,
00:19:37 :on change y'a pas de souci. Ce que je vous propose c'est qu'on aille se chercher de l'open data quiest disponible sur, j'ai trouvé un site opendataparis.fr qui met à dispo de la data,
00:19:52 :donc il la met à dispo sous forme, celle là je vais la garder parce que je veux pas, sous formed'API, sous forme de fichier, enfin y'a plein de choses. Donc là par exemple, subvention aux
00:20:02 :associés votés, je sais pas exactement ce que c'est, mais voilà ils mettent de la data quiest disponible, vous pouvez la visualiser de plusieurs manières, sous forme de tableau,donc là ça vous permet un peu de voir les différents trucs, donc là vous voyez,je sais pas, numéro de dossier, donc y'a plein de data, et y'a une API aussi, où l'API en fait
00:20:24 :ils vous disent voilà ce que vous pouvez faire comme requête avec des filtres, y'a plein dechoses. Là si par exemple si on testait l'API, vous voyez si je fais ça, je vais aller dans
00:20:40 :postman comme d'hab, et que je fais un get, ben voilà je pourrais récupérer, est-ce que si jezoom, je pourrais récupérer les informations via l'API, donc typiquement si je voulais quemon application elle se mette à jour avec les datas à jour, je pourrais utiliser l'API,mais nous pour notre exercice on va utiliser l'export, qui est en fait ici, on peut télécharger
00:21:06 :le jeu de données sous format CSV, JSON ou Excel, ou même par quête, par quête c'est un truc un peucomme le PQL que j'avais déjà montré, c'est des fichiers binaires que vous pouvez lire avec Python.
00:21:17 :Donc voilà un peu comment se présente l'open data, et moi ce que je vous propose c'est qu'onaille chercher de la data là-dedans, donc on se télécharge un gros fichier CSV, et après ons'amuse avec. Donc est-ce que je l'avais dit, j'ai au moins téléchargé ce fichier là,
00:22:00 :donc là je vous le montre, je vous le présente un peu. Donc c'est un gros fichier, combien il y ade lignes, il y en a 1921. Ah oui il y a cette petite extension là, je ne sais pas si vous
00:22:16 :connaissez, je la désactive, juste pour vous montrer ce qu'elle fait. Il a l'air de continuer à l'utiliser.Bon c'est pas grave. Je l'ai déjà montré ce truc là une fois dans un mentorail il me semble.
00:22:46 :Ah ouais ? Mais en tout cas pour ceux qui n'étaient pas là, en fait c'est une petite extension quivous permet, parce que quand vous avez un fichier CSV, c'est un truc séparé par un séparateur,donc là c'est un point virgule, mais ça peut être une virgule quoi, et en fait quand vous regardez
00:23:01 :le fichier CSV depuis VS Code par exemple, vous ne voyez rien du tout. Ah oui, vous voyez en faitlà je mets Rainbow Off, ça c'est la tronche du fichier CSV si vous n'avez pas l'extension queje vous montre, et si vous le mettez On, voilà la tronche. Donc en gros il vous colorise les headers
00:23:21 :de votre fichier, donc là il vous met le type d'acte, ça va être en gris, l'année ça va être engris. Donc ça veut dire qu'après quand vous vous descendez, vous voyez en fait ça vous permet de
00:23:32 :faire le tri un peu dans vos datas visuellement. Là je sais que directement c'est l'arrondissementparce que la couleur elle est comme ça, et lui c'est le nombre parce que la couleur elle estcomme ça. Donc vous voyez déjà c'est intéressant, je pense que sur PyCharm ça doit exister ce genre
00:23:46 :de truc. Voilà donc ce que je vous propose c'est qu'avec ce gros fichier là, donc c'est un fichierCSV, c'est un fichier plat, c'est pas un truc qui est voué à être utilisé pour faire de la data,la data on la fait surtout avec des bases de données. Donc je vous propose qu'on se crée
00:24:07 :une base de données SQLite, qu'on balance toute cette data là dans la base de données en faisantquelques transformations, parce que voilà ça 12e arrondissement ça va être un petit peu compliquéà gérer par exemple, et une fois qu'on a notre base de données, on fera des petits traitements,
00:24:21 :on fera un script qui nous permet justement d'aller chercher de la data là-dedans et defaire des statistiques, des graphiques ou des choses comme ça. Est-ce que ça vous intéresse
00:24:31 :ou pas ? Si vous voulez on change de programme en fonction de ce que vous me dites. Ok bon bah on yva alors. Donc on pourrait très bien en fait avec la librairie Panda, on pourrait très bien prendre
00:24:49 :le fichier et le balancer directement dans la database, mais nous on va le faire un petit peucomme des warriors, on va créer nous-mêmes la base de données et on va créer les tables etc.
00:25:04 :nous-mêmes en requête SQL, parce que voilà ça nous fait pas peur. Donc ici on va aller créer,on va juste initialiser une connexion, donc pour ça je fais import SQLite3, donc SQLite3 c'est unebibliothèque qui existe dans Python de base, et on va créer une connexion. Donc connexion
00:25:27 :égale SQLite.connect, et donc là on va dire ParisDatabase.db, et s'il fait withConnexionAsConet que je ne vais faire rien. En fait ça, quand vous écrivez ce morceau de code là dans,
00:25:51 :voilà qu'est-ce qu'il fait, si vous écrivez ce morceau de code dans, en fait il va essayer defaire une connexion avec une database qui s'appelle ParisDatabase.db, ici là quand je vais faire
00:26:03 :withConnexionAsCon et passe, et en fait comme il ne va pas la trouver, il va la créer, et une foisqu'elle sera créée, DogStringWarrior, c'est ça, une fois qu'elle sera créée, soit il va se connecterdessus ou soit il va la, enfin voilà vous avez compris le truc. Donc là vous voyez pour l'instant
00:26:19 :ici j'ai rien, j'ai pas de database, si je lance ici mon code, voilà il m'a bien créé une database,donc là pour l'instant j'ai rien dans la database parce qu'elle est vide, c'est normal. Est-ce que
00:26:34 :je vais pouvoir zoomer là-dessus, je vais voir parce que, j'aimerais bien pouvoir zoomer un peu plus,ça j'en ai pas besoin, peut-être que je vais le virer.
00:27:03 :Attendez, je vais essayer, est-ce que si je fais ça,non c'est toujours un peu petit là je pense.Je vais essayer de zoomer encore un petit peu, parce qu'en fait il me zoom tout à chaque fois, c'est idiot.
00:27:42 :Du coup il n'y a pas de SQL Chimie là du tout. Non là on va vraiment faire brut, on va mettre lesmêmes temps quoi. Je comprends pas pourquoi il me le met tout petit. Ce que je vais faire c'est
00:28:08 :qu'en fait je vais écrire les requêtes, en fait je peux les écrire ici, je suis con.En fait avec SQLite vous pouvez écrire votre requête, query ici, et vous pouvez l'envoyerdirectement dans la database. Donc ce qu'on va écrire nous, on va dire create, on va
00:28:45 :créer une table en fait, donc la table elle va s'appeler ParisData, et puis je vais lemettre comme ça, create ParisData, et là on va mettre en fait les valeurs qu'on veut.
00:29:10 :Donc il va falloir que la base de données qu'on crée, il faudra qu'elle a ces colonnes là.Donc on va l'écrire comme ça, je vais l'écrire et puis vous allez voir qu'en fait c'est assezsimple, je vais l'écrire comme ça. En fait pour, il vaut mieux quand même, ça marche mais il vaut
00:29:40 :mieux pas d'accent, comme ça on est sûr de pas se tromper, arrondissement, et nombre comme ceci,et donc voilà. Donc là en fait c'est un peu, si vous faites du Django, c'est un peu ce qu'on fait
00:29:57 :là, on va créer, quand vous créez des modèles avec Django, vous créez en fait une base dedonnées, une table. Donc c'est pas mal aussi que nous là on le fasse à la main brutalement,
00:30:05 :parce que comme ça vous voyez un peu ce qui se passe en background quand vous créez un modèledans Django, ce qu'il fait c'est qu'il crée une table, une base de données, MySQL, Postgre,ce que vous voulez, mais en SQL. Donc là ce qu'on fait c'est qu'on dit create ParisData,
00:30:21 :donc là ça va être créer la table, donc là typiquement si vous avez un modèle dans Django,je sais pas, vous faites create, enfin vous avez un modèle qui s'appelle Books,bah ça Books ça va être le nom de la table. Et après les attributs que vous renseignez,
00:30:36 :donc les attributs de la classe, c'est les tables que vous êtes en train de créer. Donc là moitype d'acte, ce que je dis, j'ai oublié d'y mettre le ID, donc là on va dire ID,ID, Integer, j'écris après, Integer, Primary, OK. Type d'acte, on va juste dire que c'est
00:31:01 :texte, année on va le mettre en Integer, arrondissement pareil, Integer, et le nombrepareil en Integer. Donc en gros là ce qu'on fait à la main c'est qu'on va créer la table dans
00:31:22 :la base de données. Ouais en fait dans Django, en fait c'est exactement ça, c'est l'ORM deDjango qui crée automatiquement les tables dans la base de données. C'est ça que sert un ORM en
00:31:36 :fait, c'est pour faire le lien entre ta classe et ta base de données. Donc si tu dis ça c'est quetu as vraiment bien compris ce qu'il se passait. Donc là je vous montre, donc normalement là on
00:31:49 :a créé notre query, donc c'est notre requête SQL qui va être balancée dans la base de données.Donc ce que je vais mettre aussi c'est create table, j'ai oublié, et je vais mettre if notexist, parce qu'en fait comme on va relancer plusieurs fois notre code, il ne faut pas qu'il
00:32:11 :nous la recrée à chaque fois. Donc voilà, create table if not exist, ParisData, ID, donc ça c'estpour dire qu'on veut un ID en clé primaire qui sera unique. Le type d'acte qui est un texte,
00:32:23 :l'année intégre, arrondissement intégre pareil, et le nombre intégre. Et donc là si on veutbalancer ça dans la database, il suffit de faire normalement con.executeQuery et con.commit. En
00:32:48 :fait commit c'est juste pour dire, bon ben voilà, ça en fait il va la mettre en mémoire cache,et tant que vous n'avez pas fait le commit, il ne va pas vous balancer la requête. Donc on va
00:32:59 :tester ça, ok, on va aller voir dans la database. Voilà donc là, le fait d'aller visualiser ladatabase depuis directement VS Code, c'est encore une nouvelle extension, mais en fait ça me permetde vous montrer bien proprement, parce que si je vous montre avec le SQLite Browser, vous ne voyez
00:33:18 :parce que ça ne zoome pas bien, mais là vous voyez qu'en fait on a notre table et on a lescolonnes qu'on a créées. Donc type acte, année, machin. Donc ce qu'on peut faire maintenant c'est
00:33:32 :que on va dire, en fait on va créer, je vais vous montrer juste un exemple de comment on pourraitcréer le truc, on va le faire en interpréteur ici, je vais faire un pip install, non épitome je penseque je l'ai déjà, ouais je l'ai déjà. Donc on va se connecter ici à notre base de données, donc
00:33:57 :comme on l'a fait ici. Ok et donc là on va dire, on va se créer une query qui va aller insérerquelque chose dans la base de données et après on va le faire automatiquement avec tout le fichierqu'on a eu. Donc on va dire query, c'est insert into, donc la table elle s'appelle comment, parry
00:34:27 :data, on va dire, ça en fait on dit les valeurs qu'on veut lui rentrer, donc le ID on ne va pasle mettre parce qu'il va le mettre automatiquement. Nous ce qu'on va vouloir renseigner c'est le type
00:34:41 :acte, année, arrondissement et puis nombre et donc là on va lui dire values, donc en fait comme çail sait que dans l'ordre, les values que je vais lui rentrer c'est ce que je lui ai demandé demettre. Donc type d'acte, on va dire comme on lui a demandé de mettre un texte, on va dire que c'est
00:35:06 :une naissance. Ensuite qu'est-ce qu'on doit renseigner, l'année, donc on va dire en 2000,2000 donc je rentre plutôt un integer. Ensuite l'arrondissement, on va dire dans le douzième
00:35:26 :arrondissement et en nombre on va dire qu'il y a eu 1200 naissances enregistrées, voilà. Donc çac'est notre query, je ne l'ai pas fermé, ça c'est notre query, maintenant on va dire pareil con.execute
00:35:47 :query et con.commit, donc là normalement si je fais ça, il va aller m'insérer quelque chose,je vais vérifier si je refresh, voilà j'ai bien une nouvelle entrée, oui Gabriel?
00:36:04 :Avec Django, tu as fait un create. Avec Django, tu vois mon instance, c'est une instance dont lesattributs type acte, année, arrondissement seraient ça et je vais l'envoyer là-dedans. Donc avec
00:36:24 :l'ORM de Django, c'est ça qu'il fait, après il ne fait pas ça exactement parce que c'estune post-create, mais c'est vraiment le principe qu'il y a derrière. Ma question c'est là, pour
00:36:38 :insérer plein de données d'un coup, tu pourrais faire une boucle, tu l'as fait comment ta raquettedéjà? Tu pourrais faire une boucle et en fait pour chaque élément, tu les passes en variable.
00:36:55 :Exactement, tu as tout compris, c'est ce qu'on va faire maintenant en fait. Donc vous voyez quelà juste avec ça, on a créé, on a juste mis une entrée. Nous ce qu'on aimerait c'est balancer
00:37:13 :carrément tout ça. Donc pour ça, il va y avoir plusieurs étapes. La première étape, ça va êtrede lire le fichier. Ensuite, une fois qu'on aura lu le fichier, il va falloir un petit peu transformer
00:37:24 :arrondissement parce que typiquement, vous voyez comment il écrit, il écrit en mode texte et nouson l'a renseigné comme si c'était un type Integer. Donc il faut transformer ça en Integer et ensuite
00:37:37 :il va falloir parcourir tout ça et aller venir modifier ici ce qu'on a écrit là-dedans. Donc çac'était juste pour vous faire un exemple, parce que voilà on ne va pas le faire à la main. Donc
00:37:51 :ce qu'on peut faire ici, est-ce que je peux directement supprimer ? Non, en fait il faudraitque j'écrive une requête pour aller supprimer, mais moi je vais faire le bourrin, je vaiscarrément supprimer la database et voilà. Donc est-ce que ça va ? Vous comprenez, vous voyez le
00:38:11 :truc ? Je vais faire, je vais écrire des fonctions, ça sera plus simple. On va diredef create db avec on va dire database passname, comme ça en fait quand je vais exécuter monfichier, il ne va pas le faire à chaque fois. Là on va mettre database passname, donc là c'est
00:38:46 :pour créer la database, retourne non. Oui Cédric ? Ouais t'as changé le nom là, t'as misdatabase passname et je vois qu'au niveau de ta query tu n'as pas changé, c'est normal ?
00:39:12 :En fait c'est un peu différent, le database passname ça va être le nom de la database,tu vois le fichier qu'on avait tout à l'heure, le .db, alors que ici c'est ça dont tu parles,
00:39:29 :ça c'est le nom de la table à l'intérieur, parce qu'en fait dans une database tu peux avoir plusieurstables. D'accord. Tu vois imagine là on a les datas pour Paris, mais si on avait le même fichier
00:39:40 :pour Marseille par exemple, la database serait la même. C'est comme si tu avais plusieurs onglets.Exactement, dans un fichier Excel tu as un onglet et c'est une table. Ok ça marche,
00:39:53 :merci. Je t'en prie. Donc là on va définir database passname, donc là on va aller créer,là je vais dire citydata parce qu'effectivement si on avait d'autres on aurait plusieurs tables,donc citydata.db et on va dire create db, donc en fait create db grâce à notre petite option ici,
00:40:19 :il va la créer que si elle n'existe pas, si elle existe il va la laisser tranquille,il va rien faire. Donc create db database passname, ok donc là normalement je vais quitter
00:40:32 :ça et si je lance, donc il nous a bien créé le citydata avec parisdata et si je relance,il ne se passe rien parce qu'elle existe déjà, donc là on est bien. Ok donc maintenant ce qu'on
00:40:54 :va faire c'est qu'il va falloir qu'on aille chercher les informations. Donc on va créer unefonction dev get data from file et donc là on va mettre file passname, ok. Retourne non pour
00:41:12 :l'instant. Ok donc là ça va être un fichier csv, donc on va dire with open, donc là c'est le filepassname en mode lecture, donc ça c'est un truc qui permet de lire, d'ailleurs on a beau faire unbulk create, as handle, donc j'écris et pour ceux qui ne connaissent pas je reviens dessus après,
00:41:39 :on va faire data égale handle.readlines et on va voir déjà ce que ça donne. Là je vais rentreren mode debug, en fait debug ça permet d'interrompre le code à l'endroit que j'ai défini ici dans lagouttière. Donc là il va créer la database, en fait j'ai même pas besoin, donc je vais dire
00:42:09 :file passname égale, donc c'est dans data source, data src, et on va dire get data from file,file passname, et donc là normalement avec mon debug il va m'arrêter ici, donc ça veut direque data j'aurai accès directement avec le debug. Donc là vous voyez il s'est arrêté ici, et si je
00:42:46 :vais dans console débug, en fait comme mon point rouge il est là, normalement j'ai accès à data,donc si je fais data, ouais j'ai bien accès à data. Donc maintenant qu'est ce qu'on a, je vous le
00:42:59 :redis, si ça ne tenait qu'à moi, j'aurais fait un import avec panda, il m'aurait importé directementla data facilement dans un tableau, mais là c'est juste pour vous montrer un petit peu, pour qu'onmette les mains dedans un petit peu plus brutalement, un peu plus sauvage. Parce que c'est bien aussi
00:43:17 :de savoir se débrouiller avec ça. Donc là le data ça a marché, en fait data ce qui nous sort c'estune liste. Si je fais type data, j'ai bien une liste. Par exemple si je fais data 0, le premier
00:43:36 :élément de la liste c'est la colonne. Moi ce que je veux c'est que toutes les lignes, je ne veux pasla première, donc en fait moi je vais prendre ici 1 à la fin, donc si je relance et que je regardemaintenant mon data 0, voilà j'ai bien récupéré uniquement le premier parce que je sais déjà dans
00:44:04 :quelle ordre ils sont. Alors ici là pour ceux qui ne connaissent pas, en fait le, je vais zoomer unpeu, le 1, 2 points c'est juste pour quand vous avez un itérable, donc là en l'occurrence une liste,vous pouvez dire, donc ça c'est du slicing, ça veut dire que je prends que à partir du deuxième
00:44:26 :élément, deuxième élément pourquoi parce que c'est 1, et 2 points pour dire jusqu'à la fin.Ouais par exemple Gabriel c'est au choix, mais donc là typiquement si on parcourait, si on avaitnotre liste là, pour l'instant c'est pas, moi ce que j'aimerais je pense c'est une liste de tuplés
00:44:50 :avec dans chaque élément de la liste le tuplé, c'est ce que je veux, donc l'acte ici civil,l'année, donc là elle est déjà facile, et ici il va falloir travailler un petit peu sur le troisième.
00:45:02 :Donc ce qu'on va pouvoir se dire, on va faire là dessus, on va dire, on va travailler là dessus eton le fera en global, myString ça va être le data 0, donc le myString c'est ça, ce qu'on peutfaire déjà c'est un split, split en fait ça fait quoi, ça vous découpe la chaîne de caractère,
00:45:27 :ici en l'occurrence c'est ça, ça vous le découpe en suivant le caractère que vous lui dites,là vous voyez si je fais split, il m'a découpé ma chaîne de caractère en une liste de chaînes decaractères séparées par tout ce que je veux, donc je sais que le premier je vais pouvoir l'avoir,
00:45:45 :donc en fait on va aller parcourir lmInData, donc on va se créer un truc ici, on va diredataToStore et on va l'initialiser, bon ça c'est pas hyper performant mais juste pour l'exercice onfait comme ça, et on va dire que, ok donc le premier élément ça va être assez simple,
00:46:11 :dataToStore, on va l'écrire comme ça, je vais le mettre comme ça,teplay égale, voilà comme ça, donc le premier ça va être assez simple, lm normalement,attendez je vais écrire d'abord comme ça, mySpring égale, en fait nous ce qu'on veut c'est que,pour chaque, donc chaque, en fait chaque élément de data, ils vont être sous ce format là, donc
00:46:51 :pour chaque il va falloir faire un split, donc on va d'abord faire un split, donc on va dire lm,je décompose tout mais c'est pour que ce soit plus clair, lm split égale lm.split comme ça,
00:47:05 :on sait que la naissance ça va être le premier élément facile parce que il n'y a rien à fairelà dessus, donc on va dire lm.split 0, on va voir déjà ça ce que ça donne, je vais mettre en fait
00:47:24 :ici un point d'arrêt, donc il va s'arrêter à chaque élément de bouclage, donc là il boucle,ok, donc là lm pour l'instant, pour l'instant il n'existe pas, si je fais un pas en avant dansma boucle, j'arrive ici, donc là vous voyez que lm il vaut ça, parce qu'on a parcouru les lignes
00:47:49 :en mode texte, si je fais un pas en avant encore, j'ai maintenant le lm.split qui est disponible,et donc si je fais encore un pas en avant et que je regarde comment il est mon teuplé, il me l'amis comme ça, c'est parce qu'il faut, pourquoi oublier, en fait si vous ne mettez pas la virgule
00:48:12 :comme ça sur un teuplé, il ne comprend pas qu'il y a plusieurs éléments dans le teuplé, donc si jefais teuplé, voilà, donc j'ai bien mon premier élément, je suis content, c'est une naissance.
00:48:22 :Maintenant si je retourne voir, je vais avancer d'un coup, et je vais faire le lm.split, mondeuxième élément ça va être pareil, donc ça va être assez simple, je vais juste faire lm.split le
00:48:41 :deuxième élément, ok, et celui là il va falloir un petit peu le travailler parce que nous ce qu'onveut récupérer c'est uniquement par exemple 11, 12, machin, donc comment on peut faire,il y a plein de moyens de le faire, je sais pas ce que, comment, ouais Cédric ? ça va peut-être
00:48:59 :être une question con, mais tu n'avais pas mis que normalement les autres trucs devaient être desentiers ? c'est pas du tout une question con, c'est très bonne remarque, donc il va falloir
00:49:11 :le convertir ici en entier, très bien, donc là normalement il n'y aura pas de soucis parce que jesais que tous les strings 2005, après comme le mettait Gabriel, on pourrait faire un truc pluspropre en vérifiant que c'est bien un digit, etc, et puis on le transformerait, mais là pour
00:49:27 :l'exercice on va le faire comme ça, donc c'est une bonne remarque, ouais Gabriel ? ouais pourl'arrondissement, je sais pas si tu t'embêterais à faire une compréhension de liste ou pas ? pour
00:49:41 :l'arrondissement qu'est ce qu'on peut faire, donc là on va voir lmsplit, donc là déjà arrondissementen mode string, c'est le lmsplit, c'est le 2, donc comment on pourrait le faire, il y a pleinde moyens de le faire, déjà on pourrait dire qu'on fait un split de l'espace, parce qu'on voit
00:50:04 :qu'il y a toujours un split, et on prend le premier, donc là déjà on récupère ça, et ensuite sinonon peut carrément dégager, c'est un peu dégueulasse ce que je fais, mais ça va marcher je pense,voilà on peut faire ça, et après on peut dire carrément, voilà est-ce que ça vous va ? encore
00:50:29 :mieux, parce que je vous l'ai fait, c'est un peu trash, mais ouais mais une compréhension de liste çabouffe son mémoire aussi peut-être, je sais pas, parce que j'aurais carrément fait vraiment un trucgenre transformé en liste, ah ici directement dedans, et j'aurais été, ah oui bien sûr,oui c'est ce que j'aurais fait aussi, mais là c'est plus pour décomposer, c'est plus didactique tu
00:50:58 :vois, mais oui sinon c'est clair que c'est plus rapide avec une liste compréhension. Donc c'estce que tu voulais dire, j'ai pas dit de bêtises, tu voulais la faire directement à cet endroit làoù tu es ou pas ? c'est pas ce que tu viens de dire ? je pensais à un truc comme ça, c'est ce
00:51:27 :que j'aurais fait, mais là c'est comme en fait le fait de le découper comme ça, ça permet à toutle monde de voir exactement ce qu'on fait. Donc là on va vérifier toujours que notre tuple
00:51:42 :il fait pas n'importe quoi, donc là typiquement on a une numérale, ça doit être quelque chose degenre, il manque la parenthèse du int, ah oui la parenthèse du int, la ferme pas, donc ce serait,non, attends, parce que là elle est là, ah oui en fait là en fait c'est là, elle a pas lieu d'être,
00:52:07 :lm2splitreplace, là il faut la fermer, c'est ici, tu parles de la parenthèse, ouais c'est ça,ça rigole, ok, on est là, ça marche, on va voir ce que ça donne,ça a l'air d'être bien, on va voir le debug,pourquoi il n'existe pas,parce que normalement il existe, ok, donc là vous voyez qu'on est, c'est bon là on a tout ce
00:52:53 :qu'il faut non, on a type, année, arrondissement, ah oui il nous manque le nombre, mais le nombre çava être facile, ça va juste être, si celui là, ok normalement avec ça on est pas mal,voilà, donc là on a eu en 2004 6 naissances dans le cinquième arrondissement, ok, donc là on a
00:53:35 :notre, je vais dézoomer un peu, je rezoome après vous en faites pas, donc là on a notre script quiva chercher la data, donc je ne sais pas si vous avez vu, on a utilisé le debugger, je trouve quec'est sympa, ça permet de voir pas à pas, donc là on a la data, donc maintenant ce que je fais
00:53:55 :c'est que je fais data to store point append mon tuple, ok, et donc là je retourne data to store,je vais essayer d'aller un peu plus vite parce que là il faut qu'on remplisse la database,get data from file, et donc data to store égale get data from file, ok donc là normalement
00:54:28 :on devrait avoir ce qu'il faut, qu'est-ce qu'il n'aime pas, c'est bizarre qu'il me dise ça parce quetout à l'heure, ah oui, ah putain, vous voyez le problème c'est qu'en fait pour premier ça marchepas, il va falloir qu'on mette une condition, ah putain c'est chiant, en fait ici pour premier
00:55:08 :arrondissement ça va pas marcher parce que nous on a mis un SM, c'est un truc un peu à la con,donc je vais le mettre ici, arrondissement, en fait if lm, donc c'est celui là, if lm.split
00:55:29 :machin, donc zéro, on va dire if, donc c'est quoi ces premiers,comme ça, et sinon, if lm, c'était quoi, c'était comme ça, on va mettre,arrondissement, et là directement on va mettre, ça ça devrait marcher, ok donc là si on va voirdata to store, on a tout ce qu'on veut, et donc là il n'y a plus qu'à changer la query, donc là
00:56:56 :on va mettre data from file, et donc là on va faire def insert into db, donc là c'est pareil c'estfile passname qui va être le nom de la database dans lequel on le met, et justement la data tostore, donc là il faut qu'on se crée un peu de la même manière ici, la query, donc là on fait la
00:57:33 :connexion, et la query, on va modifier la query, on va dire, for tuple in data to store, on va mettre à jour la query,donc là c'est insert into, ça on n'en a pas besoin, ça je ne vais pas réécrire les types parce que là je suis justeen train d'insérer, et là on va mettre values, et donc là maintenant on n'a plus qu'à mettre, donc là je vais mettre un fstring,
00:58:39 :donc là c'est tuple 0, tuple 1, 2, c'est ça il y en a 4 aussi, voilà, et donc ça, ça devrait marcher, j'aurais pu l'écrireun peu plus proprement, je vais mettre un truc comme ça, n'importe, tqdm, je vais l'installer, tqdm en fait c'est une petite librairiequi permet de voir un peu, ah non il me fait chier, qu'est-ce qu'il me veut, ah il me fait chier, bon ben tant pis on n'aura pas le tqdm, c'était pour afficher le pourcentage
00:59:47 :là où est-ce qu'on en est, je vais faire un environnement virtuel, je m'excuse je dois y aller, j'ai un prothéose avec Thibaut, non aucun souci, c'est moi qui m'excuse,amusez-vous bien pour ceux qui ont le mentor à Thosa, merci Thibaut, c'était cool, merci beaucoup Gabriel, je change de Jongo, au moins vous voyez les entrailles de Jongo,
01:00:31 :donc là vous voyez en fait on a un peu changé, on a mis à jour la query, on va faire une boucle, et ce que je vais faire ici c'est tqdm, donc là vous voyez que j'ai juste à faire tqdm,et là vous verrez qu'on va avoir une barre de progrès quand on va lancer data to store, et donc là je fais insert into db, donc le filename pour dire où est-ce qu'elle est la database, et la data to store,
01:01:14 :donc là vous voyez pour l'instant on a rien, et je lance le script, ok, ah oui c'est tqdm import tqdm, petit problème d'import, ok si je reviens là, je zoome un peu parce que je pense que ça va se lancer,alors où est-ce que j'ai un problème maintenant, j'ai un problème dans ma requête, si quelqu'un voit où est-ce que je pourrais avoir un problème, je vais aller voir, je vais le mettre en mode debug comme ça,
01:02:06 :c'est les champs là, ouais il doit y avoir un problème, je vais aller voir, je vais mettre un debug comme ça je vais pouvoir voir la tronche de ma query, moi je vais voir type act, je ne sais pas si c'est comme ça on l'a nommé dans,je vais aller voir la tronche en fait de la query avec le debugger,
01:02:47 :et normalement si je vais là dessus, est-ce que ma query existe,alors, ah je sais pourquoi, parce qu'en fait ici il faut que je rajoute, vous voyez ici dans ma query, ça il n'y a pas de problème, pour les entiers il n'y a pas de soucis, mais ici naissance si je ne mets pas les guillemets que j'ai rajouté ici,
01:03:36 :il ne comprend pas que c'est un string, c'est une chaîne de caractère, SQL il ne comprend pas si je mets pas ça, réessayons en croisant les doigts, alors c'est quoi le problème maintenant,bon ben on y retourne,qu'est-ce qu'il n'aime pas, ah je sais, c'est vraiment, il est hyper sensible, SQL c'est comme tout langage de programmation mais il faut faire attention aux virgules et tout ça, Python il est un petit peu plus laxiste là dessus,
01:04:38 :mais SQL la moindre virgule ça peut faire foirer, donc là vous voyez on a eu, ça a été rapide parce que ça va vite, mais on a eu la petite barre de chargement, et donc maintenant si je vais voir dans CityData,on a un peu toutes les datas qui sont dispo, donc là vous voyez qu'on a juste mis dans une base de données, c'est pas extraordinaire mais on a mis dans une database toutes les datas automatiquement,
01:05:03 :et ce qui est pas mal parce que l'intérêt d'une database c'est qu'il y a de l'indexation, c'est que les recherches sont hyper rapides, donc là par exemple si moi je veux afficher que les naissances,je peux faire comme ça, donc là je peux peut-être pas le faire directement là dessus, il faut que je le fasse via le DB Browser, mais bon vous allez voir un petit peu moins c'est dommage,
01:05:33 :là vous voyez que j'ai ma database, donc là directement si par exemple je veux juste filtrer sur 2004, 2004 peut-être pas, voilà 2004 j'ai juste à taper 2004, j'ai tout ce qu'il faut,je pourrais taper ici directement ici, si je mettais le signe supérieur à 100, il me sort tous ceux qui sont supérieurs à 100, si je mets inférieur à 100, voilà j'ai la liste de ceux qui sont inférieurs à 100,
01:06:07 :donc on peut vraiment faire plein de choses, dire naissance, voilà, et après ce qu'on peut faire aussi, si on peut faire de la requête SQL, donc là on pourrait dire, là vous voyez peut-être pas bien,si je fais ça et je run, il me sort tout ce que je veux, et après je peux faire des requêtes, et je peux dire groupe by naissance,
01:07:03 :Qu'est-ce qu'il n'aime pas, select min nombre from paridata group by, ça c'est peut-être que ça marche, bon bah voilà je vais pas rester planté là sur les requêtes SQL,mais en gros vous pouvez faire ce type d'opération, je vais juste remettre, voilà là on a groupé par type d'act, donc changement de nom, changement de prénom, décès, mariage, naissance, pax, renaissance,
01:07:46 :voilà, et on pourrait dire bah sort moi le maximum de décès par arrondissement, des choses comme ça.Voilà donc là on a juste rempli la base de données, après il faudrait faire des statistiques et des graphiques etc, mais déjà on est rentré un peu, on y était à la main comme on dit, ouais Cédric je t'écoute.
01:08:49 :Ok super.Allo ?Ouais allo ?L'outil là où tu étais pour faire la requête, c'est Pandas ?Où ça ?Là où tu étais en train de faire la requête.
01:09:08 :Ah ça là ?Ouais.Non ça c'est DB Browser.DB Browser.C'est un outil gratuit pour aller visiter puis même faire des requêtes SQL.C'est n'importe quel site, pardon c'est n'importe quel DB ?
01:09:26 :C'est du SQLite, ça marche pas sur une base de données sur un serveur.Parce que Postgre, ok ça marche pas.Je pense pas, parce que en fait Postgre il te faut du pgadmin ou des choses comme ça, il faut un serveur de base de données en fait, tu peux pas le faire, parce que là SQLite c'est des fichiers en dur qui sont sur ton pc en local, c'est pas des serveurs de base de données.
01:09:49 :Ah ouais.Et je crois que j'avais vu un truc aussi sur, ah oui ça c'est pas mal, j'aurais peut-être dû faire ça.Regardez là, quand je clique sur le fichier DB, VS Code il me dit try SQLite viewer web.
01:10:05 :Oh ok.Donc en fait il vous ouvre un truc web.Genre un admin en fait.Ouais c'est ça.Et en fait vous pouvez faire open file, donc là on va aller ouvrir notre database.
01:10:22 :Donc on est dans Python Project.Où est-ce que je suis ?Comment il s'appelle ? Je suis perdu.Ouais c'est celui-là.Citydata, ouais merci.Et donc là vous voyez que, alors il me l'ouvre ou pas ce con ?
01:10:42 :Voilà donc là je suis dans un web browser et vous voyez qu'on peut faire try, qu'est-ce qu'il me dit ?Waouh il y a des trucs pas mal ici.
01:10:54 :C'est quoi ça ?Donc là par contre je peux zoomer pour vous, c'est plus simple.Donc là vous voyez que je suis là-dessus, donc j'ai quelques infos.
01:11:02 :Et donc ce que je faisais tout à l'heure vous voyez c'est que je dis donne-moi juste ceux qui sont ici,par exemple les nombres, ceux qui sont inférieurs à 4.
01:11:16 :Ça marche pas.Bon ça marche pas comme ça.Search column.Ouais ça marche moins bien que ce que j'avais moi sur...Mais bon c'est quand même pas mal, c'est open source.
01:11:31 :Qu'est-ce qu'il me dit ? Ouais vous pouvez trier.Vous pouvez faire plein de choses.J'ai fait quoi là ? J'ai ping des trucs.Reset filter.
01:11:45 :J'aimerais bien savoir si on peut faire des requêtes directement là-dedans.Ça serait intéressant.C'est juste de l'inspection, mais je crois pas qu'on peut faire des requêtes directement.
01:12:00 :Apparemment non.Je pense pas, c'est juste un visuel.Limite en passant avec ça, t'avais pas besoin de faire des IDs en fait, ils y sont directs.
01:12:10 :C'est vrai, mais c'est juste de l'affichage, il faut faire attention parce qu'en fait ça de l'ID,tu vas en avoir besoin si par exemple tu faisais des tables,si on faisait une autre table avec des clés étrangères.
01:12:25 :Si t'as pas d'ID là-dedans, tu vas avoir des problèmes pour faire tes jointures ou des choses comme ça.Mais oui, typiquement, là on pourrait déjà voir ça.
01:12:39 :C'est pas mal ça.Là il y a la petite flèche.Si je fais la flèche, il m'affiche le détail de cet enregistrement là.Ah putain, je peux les parcourir comme ça ici à la main.
01:12:58 :Avec la petite flèche, je peux parcourir les différents enregistrements.C'est plutôt bien foutu, c'est pas mal ce truc.Qu'est-ce qu'on peut chercher ? Tout ce qu'il y a en 2009.
01:13:14 :Il y a 80 records.Bah voilà, écoutez, je pense que c'est pas mal pour aujourd'hui.Est-ce que, ouais ?Euh, allô ?Ouais ?Peut-être prochainement on peut utiliser Madame Pandas pour faire les stats.
01:13:47 :Typiquement, si vous voulez, la prochaine fois, je peux vous montrer exactement ce qu'on a fait,mais avec Panda, vous verrez qu'en trois lignes, on peut le faire.
01:13:57 :Non, je veux savoir, est-ce qu'avec la base donnée, on peut utiliser Pandas ?Avec la base donnée là, c'est-à-dire, lui dire d'aller dans la base donnée,ou bien c'est pas possible, il faut un fichier ?
01:14:08 :Si, si, c'est possible.Avec Panda, vraiment, tout est possible.Donc là, en fait, avec Panda, tu peux faire une requête SQL directement.Tu pourrais dire, importe-moi toute ma database dans un DataFrame Panda.
01:14:22 :Voilà, exactement.Si tu veux, on peut faire ça la prochaine fois.Merci, Axel.Oui, c'est vrai, effectivement, on a fait un petit peu de débugage en live,donc c'est toujours intéressant, je pense.
01:14:41 :Et puis bon, la prochaine fois, si vous voulez, on peut...Ah oui, en fait, ce que j'avais prévu pour la suite de l'exercice,c'est que là, vous voyez, arrondissement, il dit par exemple, arrondissement, c'est le sixième.
01:14:53 :Ça serait bien qu'on ait, dans notre base donnée, une autre table qui décrit les arrondissements,et typiquement, dans l'autre table, on dirait arrondissement,donc on n'aurait que 12 lignes dans la table,ou 20 lignes, parce qu'il y a 20 arrondissements,et chaque ligne, elle décrirait l'arrondissement.
01:15:10 :Donc par exemple, l'arrondissement numéro 6,on dirait c'est quoi la ville la plus importante de l'arrondissement,quelle est sa latitude et sa longitude,et ce qui nous permettrait de mettre sur une carte, par exemple,affiché sur une carte, le nombre de naissances qu'on a eues par arrondissement,au global, pour chaque année, par exemple,
01:15:33 :et grâce à la longitude et la longitude, on pourrait placer les points sur une carte,et on pourrait faire des jointures,parce qu'en fait, là, on n'a que l'info de l'arrondissement,mais on n'a pas l'info de la latitude et de la longitude de l'arrondissement.
01:15:46 :Donc si on avait une autre table, arrondissement,avec la description de l'arrondissement, on pourrait faire des joints,et on pourrait lier les deux tables.Si ça vous intéresse, on peut faire ça aussi la prochaine fois sur cette base de données là.
Aucune occurrence trouvée pour « ».
00:14:51
Linode, PythonAnywhere
00:15:07
Linode, PythonAnywhere
00:15:58
SSH et SetUp
00:18:11
apache explication - Production (G.Unicorn) serveur NGINX
00:20:15
Utilisation de Data
00:20:39
opendata.paris.fr
00:20:51
IDE Postman à voir!
00:24:16
Création de BD SQLite avec Raw Data
00:25:13
Création de tables en requêtes SQL (a la main) VS Panda
00:27:01
DB Browser pour SQLite. graphiques, visuels etc
00:37:24
Etapes pour passer Données et les enregistrer dans une BD
01:10:22
SQLite viewer web app