Retour au catalogue
Season 41 8 Épisodes 28 min 2026

Folium

v0.20 — Édition 2026. Maîtrisez Folium v0.20 dans ce cours audio édition 2026. Apprenez à faire le pont entre l'écosystème de données de Python et Leaflet.js pour créer des cartes web interactives et puissantes.

Analyse géospatiale Cartographie interactive Visualisation de données
Folium
Lecture en cours
Click play to start
0:00
0:00
1
Le pont Folium
Découvrez l'abstraction fondamentale de Folium : faire le pont entre l'écosystème de données de Python et Leaflet.js. Apprenez à initialiser une Map, à définir l'emplacement de départ et à générer votre première carte HTML interactive.
3m 38s
2
Personnalisation du canevas
Apprenez à transformer le style visuel de votre carte à l'aide de tilesets et de bounds. Nous couvrons xyzservices, les tuiles de carte personnalisées et la façon de restreindre le défilement de l'utilisateur.
3m 30s
3
Localisation des données
Maîtrisez l'art de placer des repères sur votre carte Folium. Nous explorons les Markers, les Icons personnalisés et la différence cruciale entre les Tooltips et les Popups.
3m 33s
4
Interactivité riche dans les Popups
Faites passer vos popups au niveau supérieur en y intégrant du contenu riche. Apprenez à analyser du HTML, à intégrer des DataFrames Pandas, à injecter des graphiques Vega et à optimiser avec le lazy loading.
3m 58s
5
Organisation des vecteurs et des calques
Dessinez des chemins et regroupez vos données pour garder des cartes claires. Nous explorons les PolyLines, les FeatureGroups et la manière de donner le contrôle aux utilisateurs avec les LayerControls.
3m 20s
6
Superpositions spatiales avec GeoJSON
Débloquez des fonctionnalités spatiales avancées en important du GeoJSON dans Folium. Apprenez à cartographier des frontières et à les intégrer de manière transparente avec les DataFrames GeoPandas.
3m 19s
7
Distributions avec les Choropleths
Combinez géographie et statistiques à l'aide des cartes Choropleth. Apprenez à lier des DataFrames Pandas à des régions GeoJSON pour visualiser les distributions de données.
3m 49s
8
Performances et Plugins
Boostez vos cartes avec les plugins Folium. Découvrez les MarkerClusters pour les ensembles de données de points massifs, les HeatMaps pour la densité et les outils Draw pour les interactions sur la carte.
3m 18s

Épisodes

1

Le pont Folium

3m 38s

Découvrez l'abstraction fondamentale de Folium : faire le pont entre l'écosystème de données de Python et Leaflet.js. Apprenez à initialiser une Map, à définir l'emplacement de départ et à générer votre première carte HTML interactive.

Télécharger
Salut, c'est Alex de DEV STORIES DOT EU. Folium, épisode 1 sur 8. Tu as un dataset massif de coordonnées géographiques, et tu as besoin d'une carte interactive pour leur donner du sens. Le problème, c'est que créer des cartes interactives implique généralement de sortir de Python et de te battre avec des librairies JavaScript. Le bridge Folium est la solution exacte à cette prise de tête. Folium est une librairie Python qui sert de traducteur entre tes workflows de données et Leaflet point js. Leaflet est une librairie JavaScript open-source très populaire, utilisée pour créer des cartes interactives mobile-friendly. En tant que data scientist, tu préfères faire le gros du travail, la manipulation, le filtrage et l'analyse de données, en Python. Folium te permet de rester dans cet environnement. Il prend tes objets Python et génère le HTML et le JavaScript nécessaires pour faire le rendu d'une carte Leaflet. Tu obtiens l'interactivité d'une web map sans écrire une seule ligne de code frontend. Pour démarrer, c'est super simple. Tu installes la librairie en utilisant des package managers standards comme pip, en lançant pip install folium. Une fois installée, le workflow principal tourne autour de la création d'un objet map de base. Disons que tu évalues des coordonnées potentielles pour l'emplacement d'un nouveau magasin. Tu as la latitude et la longitude exactes, et tu as besoin de voir le quartier autour. Dans ton script, tu importes la librairie folium. Tu appelles ensuite la fonction Map attachée à cette librairie. Cette fonction a besoin d'une information critique pour être utile tout de suite : le point central de départ. Tu passes ce point central en utilisant le paramètre location. Le paramètre location attend une simple list ou un tuple contenant deux nombres. La latitude en premier, suivie de la longitude. Par exemple, tu passes 45.52 pour la latitude et moins 122.68 pour la longitude. Quand tu exécutes ça, Folium construit un objet map centré précisément sur ces coordonnées. Maintenant, tu as un objet map qui existe en mémoire. Comment est-ce que tu le vois concrètement ? Folium propose deux chemins principaux, selon ton workspace. Si tu travailles dans un Jupyter Notebook, le processus est transparent. Tu tapes simplement le nom de ton objet map sur la dernière ligne de la cellule et tu l'exécutes. L'environnement du notebook reconnaît la représentation HTML riche de l'objet et fait automatiquement le rendu de la carte Leaflet interactive directement sous ta cellule de code. Tu peux immédiatement faire un pan et un zoom pour inspecter cet emplacement potentiel de magasin. Cependant, tu as souvent besoin de partager cette carte avec des stakeholders qui n'utilisent pas Jupyter. C'est là qu'intervient la deuxième méthode. Tu prends ton objet map et tu appelles la méthode save dessus. Tu passes un nom de fichier sous forme de string à cette méthode, comme index point html. Folium prend toute la logique Leaflet sous-jacente, les coordonnées et les instructions de rendu, et les écrit dans un fichier HTML standalone sur ton disque dur. N'importe qui peut double-cliquer sur ce fichier et ouvrir une carte interactive entièrement fonctionnelle dans son navigateur web standard. Aucun environnement Python n'est requis pour voir le résultat final. Voici le point clé. Folium ne fait pas le rendu des cartes nativement en Python ; c'est simplement un moteur qui génère le code web nécessaire pour qu'un navigateur en fasse le rendu. Il agit strictement comme un bridge vers Leaflet, rendant tes données Python instantanément web-ready. Si tu trouves ces épisodes utiles et que tu veux soutenir l'émission, tu peux chercher DevStoriesEU sur Patreon, chaque petite aide nous permet de faire tourner la boutique. C'est tout pour celui-ci. Merci d'avoir écouté, et continue à build !
2

Personnalisation du canevas

3m 30s

Apprenez à transformer le style visuel de votre carte à l'aide de tilesets et de bounds. Nous couvrons xyzservices, les tuiles de carte personnalisées et la façon de restreindre le défilement de l'utilisateur.

Télécharger
Salut, c'est Alex de DEV STORIES DOT EU. Folium, épisode 2 sur 8. Tu crées une magnifique carte interactive d'un parc national, mais dès que l'utilisateur clique et glisse, il se retrouve au large, perdu dans un océan gris infini. Tu as besoin des bonnes images de fond, et tu dois verrouiller la caméra exactement là où se trouvent tes données. C'est tout l'enjeu de la personnalisation du Canvas. Quand tu initialises une carte Folium, elle utilise par défaut les tiles OpenStreetMap standard. Ce sont ces images carrées assemblées par le navigateur pour former le fond de la carte. Les cartes routières standard ne sont pas toujours le bon choix. Tu changes ça en utilisant le paramètre tiles quand tu crées ta carte. Si tu veux un fond atténué et minimaliste pour que tes données ressortent, tu peux passer une simple string comme cartodb positron. Mais pour un parc national, tu veux sûrement des images de terrain ou satellite. C'est là que Folium s'intègre avec un package appelé xyzservices. Tu n'as pas besoin de chercher des liens de serveurs de cartes tiers. Folium embarque des centaines de providers préconfigurés. Tu accèdes simplement au dictionary providers depuis le module map de Folium et tu choisis celui qu'il te faut. Tu peux choisir une carte topographique Esri ou un flux satellite spécifique. Tu passes cet object provider directement au paramètre tiles, et Folium gère les requêtes serveur en arrière-plan. Parfois, ton organisation possède un serveur de cartes privé, ou tu as besoin d'un overlay très spécifique qui n'est pas dans la liste intégrée. Dans ce cas, tu peux passer une string d'URL custom au paramètre tiles. Les serveurs de cartes utilisent une structure d'URL standardisée contenant des placeholders pour le niveau de zoom, généralement représenté par Z, ainsi que les coordonnées X et Y de la tile. Tu fournis directement ce template d'URL. Il y a une condition stricte ici. Quand tu utilises une URL custom, Folium t'oblige à inclure un second paramètre appelé attr, qui signifie attribution. Tu dois fournir une string qui crédite la source des données. Sans le paramètre attribution, Folium refusera de render les tiles custom. Maintenant, ta carte a le fond topographique parfait. Mais tu as toujours le problème de panning. Les utilisateurs peuvent scroller très loin du parc national. Tu empêches ça en définissant des limites de viewport. Quand tu crées l'object map, tu définis une bounding box en utilisant quatre paramètres spécifiques : latitude minimum, latitude maximum, longitude minimum et longitude maximum. Tu passes les frontières de coordonnées de ton parc à ces paramètres. Voici le point clé. Le simple fait de définir ces quatre coordonnées n'empêche pas l'utilisateur de faire du panning. Pour verrouiller activement le viewport, tu dois aussi définir le paramètre max bounds sur true. Quand tu actives ça, Folium indique au moteur de cartographie sous-jacent de replacer la caméra si l'utilisateur essaie de drag la vue en dehors de ton rectangle spécifié. Ils sont libres de zoomer et dézoomer pour explorer les sentiers, mais la carte les empêche physiquement de s'égarer dans l'océan. Définir des frontières strictes permet à ton public de rester concentré sur la géographie pertinente, et faire correspondre ces frontières avec les bonnes tiles de terrain donne à tes données le contexte exact qu'elles méritent. C'est tout pour cet épisode. Merci d'avoir écouté, et continue à créer !
3

Localisation des données

3m 33s

Maîtrisez l'art de placer des repères sur votre carte Folium. Nous explorons les Markers, les Icons personnalisés et la différence cruciale entre les Tooltips et les Popups.

Télécharger
Salut, ici Alex de DEV STORIES DOT EU. Folium, épisode 3 sur 8. Une carte n'est vraiment qu'une image statique tant que tu ne commences pas à y placer des marqueurs pour mettre en évidence des lieux précis. Mais ces marqueurs n'ont pas tous besoin de ressembler à la même goutte bleue par défaut. Localiser des données efficacement, c'est donner à tes utilisateurs des repères visuels et un contexte interactif directement au niveau des coordonnées. Pour placer un point d'intérêt sur ta carte, tu utilises la classe folium point Marker. Le seul prérequis absolu pour créer un marqueur, c'est le paramètre location. Tu lui passes une séquence de deux nombres, avec la latitude en premier, suivie de la longitude. Une fois que tu as créé cet objet marqueur dans ton code, tu l'attaches à ta carte de base en utilisant la méthode add to. Ça te donne un marqueur standard placé exactement à ces coordonnées. Mais un simple marqueur dit seulement à l'utilisateur que quelque chose existe à cet endroit. Il faut qu'il communique ce qu'est cette chose. Folium te donne deux moyens principaux d'attacher du texte à un marqueur, et les développeurs les confondent constamment. La distinction est simple. Un tooltip, c'est du texte au survol. Un popup, c'est un label au clic. Imagine une carte montrant différentes stations de ski à travers une chaîne de montagnes. Tu veux que le tooltip contienne le nom de la station, comme Aspen ou Snowbird. Ça permet à l'utilisateur de scanner rapidement la carte en déplaçant son curseur de marqueur en marqueur, en voyant instantanément les noms apparaître et disparaître. Le popup est réservé aux informations secondaires qui demandent une intention de lecture. Quand l'utilisateur clique activement sur le marqueur d'Aspen, le popup révèle des détails comme un dénivelé de trois mille pieds ou les conditions météo actuelles. Tu utilises le tooltip pour une identification rapide, et le popup pour un contexte plus approfondi. Tu configures les deux en passant du texte aux paramètres tooltip et popup lors de la création de ton marqueur. Maintenant, regarder cinquante marqueurs bleus identiques, c'est une mauvaise expérience utilisateur. Tu peux les différencier visuellement en utilisant la classe folium point Icon. Quand tu crées ton marqueur, tu peux passer un objet Icon personnalisé à son paramètre icon. Ça te permet de modifier la couleur du marqueur lui-même et le graphique affiché à l'intérieur. Pour le paramètre color, Folium accepte plusieurs noms de string standards comme red, green, purple ou orange. Pour en revenir à nos stations de ski, tu pourrais les catégoriser visuellement en marquant les stations pour débutants en vert, et les stations pour experts en rouge. Pour changer le symbole à l'intérieur du marqueur, tu utilises le paramètre icon dans la classe Icon. Par défaut, Folium utilise les glyphicons de Bootstrap. Tu peux passer des noms comme cloud ou info dash sign pour obtenir ces graphiques spécifiques à l'intérieur de ton marqueur. Si la librairie par défaut n'a pas le symbole exact dont tu as besoin, tu peux passer aux icônes Font-Awesome. Tu fais ça en réglant le paramètre prefix de ton objet Icon sur la string f a. Une fois que tu as changé le prefix, tu peux passer n'importe quel nom Font-Awesome standard au paramètre icon. Ça t'ouvre une librairie massive de symboles, te permettant de placer un graphique de flocon de neige sur tes stations d'hiver au lieu d'une forme générique. Voici l'idée clé. Les marqueurs sur ta carte portent la véritable narration de tes données spatiales. Combiner des couleurs distinctes, des symboles reconnaissables, et la bonne répartition entre le texte au survol et les actions au clic transforme une simple grille de coordonnées en une interface ultra lisible. Merci d'avoir écouté. Prenez soin de vous, tout le monde.
4

Interactivité riche dans les Popups

3m 58s

Faites passer vos popups au niveau supérieur en y intégrant du contenu riche. Apprenez à analyser du HTML, à intégrer des DataFrames Pandas, à injecter des graphiques Vega et à optimiser avec le lazy loading.

Télécharger
Salut, c'est Alex de DEV STORIES DOT EU. Folium, épisode 4 sur 8. Tu cliques sur un marker sur une carte en espérant obtenir des infos détaillées, mais à la place, tu te retrouves face à un bloc de plain text étriqué et illisible. Tu pourrais penser que les pins sur une carte ne servent qu'à afficher des petits labels. Mais en fait, tu peux embed une data table interactive complète ou un mini-chart directement à l'intérieur de ce pin. C'est ce qu'on va voir aujourd'hui : l'interactivité riche dans les popups. Par défaut, les popups Folium prennent une simple string de texte. Mais elles sont conçues pour gérer bien plus que ça. Prends l'exemple d'une carte immobilière. Quand un user clique sur le pin d'une maison, une adresse ne suffit pas. Tu veux afficher une photo du bien et une data table propre et formatée avec les stats immobilières. Tu obtiens ça en traitant la popup comme une page web isolée. D'abord, tu peux passer des strings HTML brutes directement à la popup. En mettant l'argument parse html à true, tu dis à Folium de render la string comme des éléments web structurels plutôt que d'afficher littéralement les chevrons à l'écran. Ça te permet d'inclure des tags d'image, des headers et du formatage web standard directement dans le marker. Pour des layouts plus avancés, tu utilises un composant spécifique du framework sous-jacent de Folium qui s'appelle la Branca IFrame. Une IFrame crée une fenêtre isolée et scrollable à l'intérieur de la popup. C'est crucial quand tu embed des structures complexes, parce que ça empêche le styling interne de la popup ou les grandes images de fuiter et de casser le layout principal de ta carte. Tu crées ta string HTML, tu la passes à l'objet IFrame, tu set une width et une height fixes, et ensuite tu passes cette IFrame directement dans ta Popup. Ce workflow se marie parfaitement avec les librairies d'analyse de data. Tu n'as pas besoin de construire manuellement des tables HTML pour afficher tes métriques. Si tu as un DataFrame Pandas qui contient les stats de la propriété, tu as juste à appeler la méthode standard Pandas to html. Tu prends cette string HTML générée, tu la passes à ton IFrame, et ton pin sur la carte contient maintenant une data table précise et complètement formatée. Tu peux pousser ça encore plus loin en utilisant les classes Folium Vega et VegaLite. Ces classes te permettent d'embed des visualisations interactives. Au lieu de passer du HTML, tu passes une spécification JSON d'un chart à la classe Vega, et tu l'assignes directement à la popup. Maintenant, cliquer sur le pin de la maison affiche un line chart dynamique des valeurs historiques du bien, juste à côté de la data table. Voici le point crucial. Charger tout ce contenu riche crée un énorme bottleneck de performance. Si ta carte immobilière a cinq mille pins de maisons, et que chaque popup contient une data table, un lien d'image et un chart Vega, le browser va essayer de render ces cinq mille structures cachées au moment où la carte charge. La page va freeze instantanément. Pour résoudre ça, l'objet Popup accepte un paramètre qui s'appelle lazy. En mettant lazy à true, Folium n'injecte pas le contenu de la popup dans la page web au départ. La carte render les markers, mais le HTML lourd, les IFrames et les charts sont complètement ignorés. Le browser va fetch et render le contenu uniquement au moment exact où le user clique sur un pin spécifique. Ça diffère le coût de calcul, ce qui veut dire qu'une carte avec des milliers de popups lourdes et interactives va charger aussi vite qu'une carte avec des text labels standards. La vraie puissance d'une web map, ce n'est pas là où tu places les pins, mais la quantité de contexte que tu peux pack à l'intérieur sans dégrader l'expérience user. Merci d'avoir écouté. Prenez soin de vous, tout le monde.
5

Organisation des vecteurs et des calques

3m 20s

Dessinez des chemins et regroupez vos données pour garder des cartes claires. Nous explorons les PolyLines, les FeatureGroups et la manière de donner le contrôle aux utilisateurs avec les LayerControls.

Télécharger
Salut, c'est Alex de DEV STORIES DOT EU. Folium, épisode 5 sur 8. Tu traces cinquante itinéraires de livraison et une douzaine d'entrepôts sur une seule carte. Le résultat, c'est un réseau chaotique de lignes qui s'entrecroisent et que personne ne peut lire. Il te faut un moyen de laisser les utilisateurs filtrer le bruit. C'est là que l'organisation des vecteurs et des layers entre en jeu. Tout d'abord, tu dois tracer les chemins. Pour représenter des coordonnées connectées sur une carte, tu utilises la classe PolyLine de Folium. Une PolyLine prend une séquence de paires de latitude et de longitude et trace des segments droits entre elles. Si tu as les traces GPS d'un camion de livraison, tu passes simplement cette liste de coordonnées à l'objet PolyLine. Tu peux configurer des propriétés visuelles comme la couleur, le weight et l'opacité. Ça te permet de tracer une ligne bleue épaisse pour un axe d'expédition principal et une ligne grise fine pour un itinéraire de livraison local. Si tu attaches une PolyLine directement à ta base map, elle est visible en permanence. Pour une carte logistique complexe, c'est une erreur. Voici l'idée clé. Au lieu d'attacher des formes directement à l'objet map, tu devrais les mettre dans un FeatureGroup. Un FeatureGroup est un conteneur logique. Il regroupe des éléments liés pour qu'ils puissent être gérés comme une seule unité. Dans notre scénario logistique, tu commences par créer deux FeatureGroups séparés. Tu nommes le premier Itinéraires de livraison et le deuxième Emplacements des entrepôts. Ensuite, quand tu génères tes éléments de carte, tu changes leur destination. Quand tu crées une PolyLine pour un trajet de camion, tu l'ajoutes au groupe Itinéraires de livraison. Quand tu crées un marker standard pour un bâtiment, tu l'ajoutes au groupe Emplacements des entrepôts. Une fois que tous tes éléments individuels sont triés dans leurs conteneurs respectifs, tu ajoutes les deux FeatureGroups à l'objet map principal. À ce stade, la carte générée est identique à celle où tout aurait été balancé directement sur le base layer. Le rendu visuel n'a pas changé, mais la structure de données sous-jacente, si. C'est cette structure qui permet l'interaction utilisateur. Pour exposer cette structure à l'utilisateur, tu instancies un LayerControl de Folium et tu l'ajoutes à la carte. Le LayerControl scanne l'objet map, trouve tous les FeatureGroups que tu as attachés, et construit automatiquement un menu interactif dans le coin supérieur de l'écran. Tes FeatureGroups deviennent des overlays activables. L'utilisateur verra une checkbox pour les Itinéraires de livraison et une autre checkbox pour les Emplacements des entrepôts. Si l'écran est trop encombré, il peut décocher les itinéraires pour n'inspecter que les installations. Le LayerControl sépare tes données cartographiques en deux catégories : les base layers et les overlays. Les base layers sont les tuiles de carte sous-jacentes, comme une vue des rues ou une vue satellite. Ils sont présentés avec des boutons radio, parce qu'une seule base map peut être active à la fois. Les overlays sont les vecteurs et les markers que tu as ajoutés via les FeatureGroups. Ils utilisent des checkboxes, ce qui permet à plusieurs ensembles de données de s'empiler les uns sur les autres. La règle la plus importante de l'interactivité d'une carte, c'est que l'interface utilisateur ne peut manipuler que ce que ta structure de données définit. Si tu attaches chaque ligne et chaque marker à la map racine, ton menu LayerControl sera vide et l'utilisateur ne contrôlera rien. C'est tout pour cette fois. À la prochaine !
6

Superpositions spatiales avec GeoJSON

3m 19s

Débloquez des fonctionnalités spatiales avancées en important du GeoJSON dans Folium. Apprenez à cartographier des frontières et à les intégrer de manière transparente avec les DataFrames GeoPandas.

Télécharger
Salut, c'est Alex de DEV STORIES DOT EU. Folium, épisode 6 sur 8. Placer mille markers individuels sur une carte, c'est simple. Mais comment tu fais quand tu dois dessiner les frontières exactes et irrégulières des cinquante États américains, ou les limites administratives sinueuses d'une ville entière ? Tracer chaque vertex à la main, c'est pas une option. Les overlays spatiaux avec GeoJSON, c'est comme ça que tu résous le problème. GeoJSON, c'est le format standard de l'industrie pour représenter des features géographiques complexes. Alors qu'un marker standard représente une seule coordonnée, GeoJSON gère les lignes, les polygones et les multi-polygones. Quand tu gères des frontières du monde réel, tu manipules des arrays qui contiennent des milliers de paires de latitude et longitude pour définir une seule shape. Folium utilise la classe GeoJson pour prendre ces données de frontières denses et les rendre sous forme d'overlay visuel sur ta base map. Prenons le scénario où tu dois mapper les frontières des quartiers d'une ville. Tu as les données spatiales de vingt quartiers, et tu as besoin de voir leurs contours sur une street map. Certains quartiers sont de simples polygones, alors que d'autres peuvent inclure des îles ou des zones déconnectées, ce qui nécessite des multi-polygones. Folium te donne plusieurs moyens d'ingérer ces données complexes. Tu peux passer une string qui contient une URL pointant directement vers un fichier GeoJSON hébergé en ligne. Tu peux passer un path vers un fichier local. Tu peux même passer un dictionnaire Python parsé si tu as déjà chargé les données en mémoire. Voici le point clé. Folium ne se contente pas de lire des fichiers texte statiques. Il s'intègre nativement à l'écosystème data science plus large de Python. La classe GeoJson accepte n'importe quel objet Python qui implémente la property standard geo-interface. C'est un protocole courant dans les librairies spatiales Python, qui permet à différents outils de partager des structures de données géographiques de façon transparente. Grâce à ce standard, tu n'as pas besoin d'extraire manuellement des strings JSON si tu utilises déjà des outils d'analyse modernes. Tu peux passer un GeoDataFrame GeoPandas directement à Folium. Pour faire ça, tu charges d'abord les frontières de tes quartiers dans un GeoDataFrame en utilisant GeoPandas. Ensuite, tu génères ta base map standard centrée sur la ville. Puis, tu appelles la classe GeoJson et tu lui passes simplement ton GeoDataFrame comme argument principal. Enfin, tu ajoutes cet objet GeoJson nouvellement créé à ta base map. Folium lit la geo-interface du dataframe, extrait les shapes géométriques pour les vingt quartiers de la ville, et dessine les frontières exactes sur les tiles de la map. Tu bypasses complètement la manipulation de fichiers bruts et tu passes directement d'une structure de données à une visualisation. Garde en tête que ce processus d'overlay spécifique sert uniquement à afficher des frontières spatiales. Il ne s'agit pas de joindre des données statistiques à ces frontières pour les colorer en fonction de la population ou des revenus. C'est un concept totalement différent. La classe GeoJson sert purement à définir les shapes physiques et à les mettre sur la map. La puissance du layer GeoJSON de Folium, ce n'est pas seulement qu'il peut dessiner des frontières géographiques complexes en plusieurs parties, mais qu'il sert de pont direct entre des objets analytiques comme un GeoDataFrame et ta map interactive finale, en demandant absolument zéro manipulation manuelle de coordonnées. C'est tout pour cet épisode. Merci d'avoir écouté, et continue à builder !
7

Distributions avec les Choropleths

3m 49s

Combinez géographie et statistiques à l'aide des cartes Choropleth. Apprenez à lier des DataFrames Pandas à des régions GeoJSON pour visualiser les distributions de données.

Télécharger
Salut, c'est Alex de DEV STORIES DOT EU. Folium, épisode 7 sur 8. La carte la plus reconnaissable en data science colore les régions géographiques en fonction d'une valeur statistique. Faire correspondre les frontières géographiques aux données de ton tableur nécessite généralement une opération de merge un peu galère dans une librairie spatiale séparée. Dans Folium, la classe Choropleth gère la géométrie, le data binding et le color scaling en une seule étape. Une carte choropleth bind des données numériques à des frontières géographiques. Tu fournis les formes, tu fournis les nombres, et la carte colore les formes en fonction de ces nombres. Prends l'exemple classique de la cartographie du taux de chômage dans les États américains. Pour la construire, tu instancies la classe Choropleth et tu lui passes quatre informations essentielles. Premièrement, les données géographiques. Tu passes un fichier GeoJSON contenant les frontières en polygones des États américains au paramètre geo data. Deuxièmement, les données statistiques. Tu passes ton DataFrame Pandas contenant les statistiques du chômage au paramètre data. Troisièmement, tu indiques à Folium quelles parties de ton DataFrame sont importantes. Tu fournis une liste d'exactement deux noms de colonnes au paramètre columns. La première colonne contient l'identifiant de la région, comme l'abréviation de l'État. La deuxième colonne contient la valeur numérique que tu veux visualiser, c'est-à-dire le taux de chômage. Voici le point clé. Le DataFrame et les formes géographiques sont des objets complètement séparés. Tu dois dire explicitement à Folium comment les lier ensemble en utilisant le paramètre key on. Ce paramètre prend une string qui représente le chemin précis dans le fichier GeoJSON où se trouve l'identifiant correspondant. Si ton GeoJSON définit un État en utilisant une propriété feature appelée id, ton paramètre key on sera la string feature point id. Ce chemin doit correspondre parfaitement à l'identifiant dans la première colonne de ton DataFrame. Quand ça matche, les données statistiques se bindent à la géométrie. Une fois que les données sont bindées, la carte applique les couleurs. Le paramètre fill color accepte des palettes standard comme YlGn pour un dégradé de jaune à vert. Par défaut, Folium prend les valeurs minimum et maximum de ton dataset et coupe le color scale en tranches mathématiques égales. Si tes données de chômage sont très asymétriques, ce découpage linéaire pourrait regrouper la plupart des États dans une seule bande de couleur, ce qui rendrait la carte inutile. Pour contrôler ça, passe une liste de seuils numériques spécifiques au paramètre bins. Ça force le color scale à changer exactement là où tes données se séparent naturellement, te donnant un contrôle total sur la distribution visuelle. Les datasets du monde réel ont souvent des trous. Si un État dans ton fichier de frontières GeoJSON n'a pas de ligne correspondante dans ton DataFrame, Folium dessinera quand même la frontière, mais laissera l'intérieur sans couleur. Tu gères ces régions vides avec le paramètre nan fill color. Régler ça sur une teinte neutre comme le gris t'assure que les données manquantes sont explicitement marquées sans distraire du reste de la carte. L'alignement entre la clé du DataFrame et le chemin de la propriété GeoJSON est le single point of failure pour la plupart des choropleths. Configure bien le paramètre key on, et la carte se construit toute seule. Si tu trouves ces deep dives techniques utiles, tu peux soutenir l'émission en cherchant DevStoriesEU sur Patreon. C'est tout pour celui-ci. Merci d'avoir écouté, et continue de développer !
8

Performances et Plugins

3m 18s

Boostez vos cartes avec les plugins Folium. Découvrez les MarkerClusters pour les ensembles de données de points massifs, les HeatMaps pour la densité et les outils Draw pour les interactions sur la carte.

Télécharger
Salut, c'est Alex de DEV STORIES DOT EU. Folium, épisode 8 sur 8. Afficher cent points sur une carte web, c'est facile. Affiche dix mille points, et ton navigateur va complètement freeze. Le Document Object Model ne peut tout simplement pas gérer autant d'éléments graphiques en même temps. La solution à ce bottleneck, c'est la performance et les plugins. Tu as un dataset de cent mille points de prise en charge de taxis dans une ville. Si tu loop sur cette liste et que tu ajoutes des markers standards directement à ta base map, la page va crash avant même d'avoir fini de charger. C'est là qu'intervient le plugin MarkerCluster. Au lieu d'attacher les points directement à la carte, tu crées un objet cluster dédié. Tu loop sur ton dataset, tu ajoutes chaque point de prise en charge à cet objet cluster, et ensuite tu attaches le cluster entier à la carte tout à la fin. Quand la carte charge avec un zoom arrière maximum, le navigateur n'essaie pas de dessiner cent mille pins. Il dessine quelques grands cercles avec des nombres à l'intérieur, qui représentent le nombre total de points dans cette grande zone. Quand tu zoomes, ces énormes clusters se divisent dynamiquement en clusters plus petits et localisés. Si tu cliques sur un cercle numéroté, la carte calcule automatiquement les boundaries et zoome sur cette région spécifique. Elle gère les calculs spatiaux en background, ce qui garantit que le navigateur va render les markers individuels uniquement quand tu es assez près pour vraiment les voir. Parfois, les localisations exactes des points ne sont pas ce que tu as vraiment besoin de communiquer. Tu veux voir la densité. Le plugin HeatMap prend cette même liste massive de coordonnées de taxis et va render un dégradé de couleurs fluide au lieu de milliers de pins qui se superposent. Tu passes ta liste brute de paires de latitude et longitude directement dans la fonction heatmap, et tu l'attaches à la carte. Le plugin calcule la concentration spatiale de tes données. Les zones de prise en charge à haute densité brillent intensément, tandis que les zones clairsemées s'estompent. C'est beaucoup moins lourd en calculs pour le navigateur de render cet overlay unique plutôt que des formes vectorielles distinctes, et ça révèle instantanément les hotspots sans transformer l'écran en un désordre chaotique d'icônes. Jusqu'à présent, les cartes étaient strictement en read-only. Le plugin Draw change complètement ce comportement. Il ajoute une toolbar interactive directement à l'interface utilisateur. Tu actives le plugin dans ton script Python, et quand l'utilisateur ouvre le fichier généré, il peut cliquer sur des outils pour dessiner des polygones personnalisés, tracer des lignes, ou placer ses propres markers sur tes données de taxis. Voici l'idée clé. Ces formes dessinées ne sont pas juste des pixels morts sur un écran. Elles génèrent des données spatiales valides. Un utilisateur peut dessiner une boundary autour d'un quartier spécifique avec une forte demande de taxis, et exporter cette forme exacte sous forme de fichier GeoJSON directement depuis la toolbar. Ça transforme ta visualisation d'un rapport statique en un outil actif de sélection et d'annotation. Les plugins Folium font le pont entre des scripts Python simples et du web mapping front-end lourd, en te donnant des performances navigateur avancées sans te forcer à écrire du JavaScript. Je t'encourage à explorer la documentation officielle, à tester ces outils hands-on, ou à visiter devstories dot eu pour suggérer des sujets dont tu aimerais entendre parler dans une future série. C'est tout pour cet épisode. Merci d'avoir écouté, et continue de build !