iiiData
  • Accueil
  • Solutions
    • Toutes nos solutions
    • iiiData Hub
  • Services
  • Blog
  • A propos
  • Contact
14 octobre 2022 par Martin Garrigos

14 octobre 2022 par Martin Garrigos

[PYTHON] Rapport dynamique de tes données en 5 minutes avec Streamlit

En tant que bon Data Scientist / Data Analyst / Data *mot anglais stylé* qui se respecte j’imagine que tu passes le plus clair de ton temps à martyriser tes données dans un amas de notebooks (plus ou moins organisés, ne t’inquiète pas c’est pas moi qui vais te juger pour ça). OK ! Jusqu’ici tout va bien mais quand on passe à la restitution, tout se complique pour nous…Voici une liste non exhaustive des stratégies bancales dont je vais te libérer : « allez je screen mes graphs et je fourre tout dans un PDF ou un PPT » , « bon je relance toutes mes cellules comme ça je serai prêt pour la présentation…j’espère que mon pc ne va pas me lâcher entre temps », « Ok maintenant ouvre un terminal et fais pip install -r requirements…ah mais t’as pas la bonne version de…attends laisse moi ton pc je vais le faire ». BREF, on s’est compris !

Je te propose un tuto pour régler ces problèmes avec un outil simple : un lien accessible à tous où sont centralisées toutes tes analyses.

Au menu : On part d’un jeu de données simple de l’INSEE, je fais un petit travail de visualisation des données avec plotly et on met tout dans Streamlit (l’outil magique dont tu ne te passeras plus) pour présenter le tout. 

L’intégralité du code est disponible sur un repo git. L’app est en ligne, n’hésite pas à aller la consulter pour visualiser ce que l’on va faire ! 

Repo Git
Voir l'app Streamlit

Pour des visualisations Dynamiques Accessibles à tous Esthétiques

Présentation des données

Chez iiiData on travaille beaucoup sur des open data territoriales. J’ai fait un petit travail en amont de recherche de données sur le site de l’INSEE. Nous allons nous placer à l’échelle du département. J’ai sélectionné 6 indicateurs de l’année 2021 que l’on pourra analyser sur des représentations spatiales et comparer entre départements. Les données que j’ai utilisées sont également disponibles sur le repo GitHub. 

Installations nécessaires

Je te conseille de te créer un nouvel environnement virtuel avec une version de python 3.9. Nous allons avoir besoin de trois librairies : pandas, plotly, streamlit donc installez les avec pip ou conda.

Je te propose une petite manière de faire avec un environnement virtuel Anaconda. Il existe d’autres manières de faire donc libre à toi de faire autrement. 

Environnement Anaconda
  1. Ouvre anaconda prompt
  2. Conda create -n test_tuto python=3.9
  3. Conda activate test-tuto
Clone du repo git

Dans ton terminal : 

git clone https://github.com/GARRIGOS-Martin/Plotly_map_with_Streamlit_Tuto.git

Installations des librairies

Place toi à la racine du dossier que tu viens de cloner.

pip install – r requirements/txt

Construction de app.py

Chargement des données

Tout d’abord je charge les données que j’ai récupérées de l’INSEE et stockées un fichier .csv. En plus, puisque je veux représenter mes données sous la forme de carte dynamique, je vais récupérer un geojson qui me permet de tracer les polygones de chaque département.

VOTRE ATTENTION SVP : ne fuyez pas ! Si vous ne comprenez ces histoires de geojson ou problématiques de représentations spatiales ça ne posera pas de problèmes pour la suite. On oublie pas le but suprême de ce tuto : représenter de manière dynamique et ergonomique ses données dans streamlit. 

Creation du tritre de notre dashboard

Et ben c’est pas mal, on est prêt. Commençons par mettre un titre (st.title) et puis pourquoi pas un sous-titre (st.header) pour bien faire comprendre le but de ce (futur) magnifique dashboard. 

Si tu le souhaites tu peux déjà visualiser ton dashboard. Place toi à la racine de ton dossier où se situe app.py avec ton terminal préféré.

streamlit run app.py

Logiquement une page de ton navigateur se lance toute seule. Si ce n’est pas le cas,  essaie d’y aller manuellement en tapant dans ton navigateur http://localhost:8501 (c’est le port local de ton pc où streamlit va envoyer ton chef d’oeuvre). 

TIPS : laisse ouverte cette page, quand tu ajouteras des fonctionnalités tu n’auras qu’a sauvegarder ton fichier app.py puis d’actualiser cette dernière.

Création d'une liste deroulante des indicateurs

L’app fonctionne, notre mission maintenant est de la remplir correctement. La plu value de Streamlit va résider dans le fait pouvoir changer d’indicateurs sur la même figure de manière à alléger le nombre de figures lorsque l’on présente des résultats. 

La première étape va être de créer une liste déroulante qui va nous permettre de choisir l’indicateur de l’on souhaite visualiser. Il existe plusieurs composants de streamlit qui permettent d’arriver sensiblement au même résultat. Dans notre cas nous utiliserons la *roulement de tambour* … selectbox.

Je t’invite à CTRL + S ton fichier python et F5 ton navigateur.

OK ready ? On s’attaque à la viz ! 

Création de la visualisation plotly

Pour commencer il y a une toute petite partie de gestion du geojson qui n’est absolument pas dans le but du tuto. Je ne vais donc pas surcharger ta RAM et on va passer outre. Retiens qu’il faut ajouter ça dans le code pour que tout fonctionne bien. 

Nous voilà plongés en plein Plotly. J’utilise la librairie plotly.express pour réaliser la représentation spatiale. 

Les points essentiels à comprendre :  

  1. La représentation ne se fera que si et seulement si l’indicateur choisi par l’utilisateur (via la selectbox) est différent du choix « aucun ».
  2.  La variable que nous avons appelé « indicateur » est le fer de lance de l’automatisation de notre représentation. Elle stocke l’indicateur choisi par l’utilisateur et permet de faire le lien pour représenter les données adéquates du DataFrame. 
  3. Habituellement on écrit fig.show() pour visualiser une figure plotly. Ici, streamlit possède sa propre fonction qui permet de ne pas ébranler l’architecture du dashboard.  

Et voilà le travail ! On test ? 

CTRL + S F5 ENJOY 🙂

on ajoutE une autre petite fonctionnalité ?

Bon en dessert, je te propose l’ajout de deux petites fonctionnalités super simples et qui te permettront d’en apprendre un peu plus sur streamlit (en plus d’embellir le dashboard).

Je propose qu’on ajoute une fonctionnalité qui permette de comparer les données entre les différents départements que l’utilisateur souhaite observer. Cette fois-ci, on sera sur une simple comparaison de données stockées dans un tableau. 

ET BONUS : l’utilisateur aura la possibilité d’extraire l’intégralité des données qu’il compare en un fichier .csv (avoue c’est classe). 

CTRL + S F5 ADMIRE

Et bien dernière fonctionnalité (la BONUS) dont l’utilité est loin d’être négligeable. Souvent, lorsque l’on met à dispositions des outils de visualisations, des acteurs type décisionnaires aimeraient garder sous la main une partie des données (seulement celles qui les intéressent à un instant t). Et bien dans streamlit, rien de plus simple.

Et bien bravo à toi d’être arrivé jusque là. Je finis ce tuto en mettant le code entier. D’ailleurs j’ai changé quelque chose par rapport à tout ce qu’on fait (qui change beaucoup l’aspect visuel !). T’as plus qu’à…

CTRL + S F5 ALORS ?

IMPORTANT Je ne vous ai pas parlé du déploiement de streamlit sur le service cloud (entièrement gratuit pour une app de cette envergure). Ce déploiement permet à n'importe qui (ou à ceux à qui vous donnez les droits) d'aller consulter votre app à partir d'une URL fixe. Cela pourra faire l'objet d'un autre tutoriel. RAPPEL : L'intégralité de l'app est en libre accès (données et code) sur le repo GitHub (lien en début d'article).

Conclusion

J’espère que ce tuto t’aura aidé à appréhender ce qu’est streamlit, son utilisation et surtout que ce cet outil peut t’apporter dans ton travail de tous les jours. En tout cas, chez iiiData streamlit nous sert beaucoup pour faire des comptes rendus dynamiques. 

N’hésite pas à me dire si tu veux plus de contenu sur streamlit, il existe pléthores de fonctionnalités que j’ai hâte de te montrer si ça t’intéresse. N’hésite pas à te rendre sur leur doc qui présente les outils principaux avec lesquels tu peux désormais t’amuser.

Si tu trouves des problèmes techniques pour réaliser ce tuto, n’hésite surtout pas à le faire savoir dans les commentaires ou en nous contactant directement sur Linkedin.

Amuse toi bien avec ce nouvel outil et à  bientôt pour un nouveau tuto 🙂

Martin Garrigos 

Data Scientist chez iiiDATA

Article suivant Tuto Pandas-Profiling et Streamlit : exploration et audit qualité de tes données

Laisser un commentaire Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Articles récents

Découverte d’Airbyte : un 1er connecteur SFTP vers PostgreSQL17 novembre 2022
Tuto Pandas-Profiling et Streamlit : exploration et audit qualité de tes données4 novembre 2022
14 octobre 2022

Catégories

  • Dataviz
  • Python
  • Streamlit
  • Tutorial

LIENS RAPIDES

  • Contact
  • CGU
  • RESPECT DES DONNÉES PERSONNELLES
  • Mentions légales

Articles récents

Découverte d’Airbyte : un 1er connecteur SFTP vers PostgreSQL17 novembre 2022
Tuto Pandas-Profiling et Streamlit : exploration et audit qualité de tes données4 novembre 2022
14 octobre 2022
SAS iiiData 2021

About This Sidebar

You can quickly hide this sidebar by removing widgets from the Hidden Sidebar Settings.

Articles récents

Découverte d’Airbyte : un 1er connecteur SFTP vers PostgreSQL17 novembre 2022
Tuto Pandas-Profiling et Streamlit : exploration et audit qualité de tes données4 novembre 2022
14 octobre 2022

Catégories

  • Dataviz
  • Python
  • Streamlit
  • Tutorial

Méta

  • Connexion
  • Flux des publications
  • Flux des commentaires
  • Site de WordPress-FR