[PYTHON] CREATIOn automatique d'un audit de tes donnees avec pandas profiling et streamlit
On se retrouve pour un tuto assez court aujourd’hui mais qui peut s’avérer très utile pour un large spectre d’utilisateurs. Un des formats les plus utilisés pour stocker des données est le fameux fichier Excel ou CSV. On se retrouve souvent avec des dossiers remplis de fichiers qu’on a tenté tant bien que mal de renommer de la bonne manière pour ne pas passer une matinée « à la recherche des données souhaitées ». OK ! Mais ça c’était que la première étape. Maintenant qu’on détient le saint_Graal.csv, on est souvent confrontés à de nouvelles problématiques :
- Ouvrir ce fichier dans Excel pour comprendre sa structure à l’oeil nu
- Cibler les données qui ont de l’importance pour notre problématique
- Vérifier la qualité des données entrées
- Faire des visualisations basiques de certaines variables (histogrammes, box-plot…)
- Vérifier des relations entre des variables (interactions, correlation…)
Et si je te disais que ce tuto te permettra d’automatiser toutes les tâches dont je viens de te parler à l’instant. Si tu veux économiser un après-midi de galère et 1g de paracétamol contre trois cliques tu es définitivement au bon endroit !
Au menu : On part d’un jeu de données simple de l’INSEE, je t’explique comment on utilise pandas profiling et puis on met tout ça dans streamlit.
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 !
En trois cliques CHARGE ANALYSE EXPORTE TES DONNEES
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 quatre librairies : pandas, pandas_profiling, streamlit, streamlit_pandas_profilingdonc installez les avec pip ou conda. En bonus, je vais te montrer comment utiliser des « components » de streamlit (fonctionnalités développées par des gens de la communauté streamlit) qui rendent notre app encore plus belle ! Ici nous allons utiliser le « component » streamlit-on-Hover-tabs qui va nous permettre de rajouter un menu interactif.
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.
- Ouvre anaconda prompt
- Conda create -n test_tuto python=3.9
- Conda activate test-tuto
Dans ton terminal :
git clone
Place toi à la racine du dossier que tu viens de cloner.
pip install – r requirements.txt
Construction de app.py
Tout d’abord on va écrire deux ou trois lignes de code qui permettent de configurer notre application. Ce n’est pas nécessaire de t’expliquer pourquoi je fais ça mais si tu regardes attentivement le code et l’arborescence du projet, je suis sûr que tu comprendras vite !
Creation de l'architecture de l'app
Notre tuto va s’articuler en trois actions : charger son fichier .csv, l’analyser puis l’exporter. Nous allons donc créer un menu permettant de réaliser ces trois actions. On va utiliser st.sidebar pour créer notre menu à gauche de l’écran. Ensuite c’est ici que notre component on_hover_tabs rentre en jeu.
Si tu le souhaites tu peux déjà visualiser ton app. Place toi à la racine de ton dossier où se situe app.py avec ton terminal préféré.
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.
Upload des données
L’app fonctionne, notre mission maintenant est de la remplir correctement. On commence par l’onglet de chargement des données. Je vais te résumer les fonctionnalités à retenir. Tout d’abord st.file_uploader te permet d’insérer la fonction qui permet de charger notre fichier. Ensuite on transforme notre fichier en Dataframe à l’aide de pd.read_csv. J’ai du créer une petite condition car tous les csv ne sont pas construits avec le même séparateur. Ce n’est pas entièrement optimisé et je n’ai mis que les conditions pour les séparateurs les plus courants. BREF, tu as l’idée de la démarche.
Pour finir j’ai rajouté st.success | st.error qui permettent de faire apparaître une zone de texte colorée dans laquelle tu peux informer l’utilisateur de l’état du chargement de ses données.
Je t’invite à CTRL + S ton fichier python et F5 ton navigateur.
Analyse des données
Nous voici maintenant dans le cœur de notre app et tu vas être étonné à quel point ça tient en peu de lignes de code.
Pour commencer, on aime la clarté donc on met un petit titre avec st.header. Ensuite pour générer le rapport on utilise profile_report() de la librairie pandas_profiling. Pour afficher le tout dans notre app, on utilise st_profile_report(). Et pour finir on enregistre le rapport au format html.
CTRL + S F5 BELLE ANALYSE ?
Telecharger le rapport
Bon maintenant ce rapport on veut pouvoir le récupérer et potentiellement le partager à tous ses collègues. Avec streamlit, rien de plus simple. On utilise st.download_button qui va générer un bouton cliquable. L’utilisateur aura la possibilité de télécharger le rapport où il souhaite et de le renommer.
Petit bonus : essaye de télécharger un rapport, normalement après c’est la fête avec pleins de ballons !
CTRL + S F5 LES BALLONS SE SONT ENVOLES ?
Et bien bravo à toi d’être arrivé jusque là. Je finis ce tuto en mettant le code entier.
COde final
Conclusion
J’espère que ce tuto t’aura aidé à appréhender streamlit, son utilisation et surtout ce que 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
Merci bcp pour cet article très intéressant : une petite question en passant => et si on veut personnaliser certains graphs du rapport généré? Est-ce possible?
Merci par avance pour ta réponse et pour tes articles sur Streamlit!