Se rendre au contenu

Streamlit 🎈

Découvrez comment créer des applications web interactives en Python 🐍

La data science et la visualisation de données ont connu un essor considérable ces dernières années. Avec l'augmentation des volumes de données, les scientifiques des données recherchent des outils plus performants pour créer des visualisations interactives et partager leurs découvertes. Streamlit est l'un de ces outils. Il permet de transformer des scripts Python en applications web interactives en un temps record. Dans cette section, nous allons découvrir ce qu'est Streamlit, ses principaux avantages et comment il se positionne parmi les autres outils de visualisation de données.

Qu'est-ce que Streamlit ?

Streamlit est un framework open-source conçu pour faciliter la création d'applications web interactives à partir de scripts Python de manière simple et intuitive. L'un des principaux avantages de Streamlit est sa capacité à permettre aux utilisateurs de créer des interfaces interactives sans avoir besoin de connaissances en HTML, CSS ou JavaScript. Une compréhension de base de Python suffit pour commencer à utiliser Streamlit.

Pour plus d'informations sur Streamlit, consultez la documentation officielle.

Avantages de Streamlit

Streamlit présente de nombreux avantages pour les data scientists et les développeurs :

  1. Simplicité : Avec Streamlit, il est possible de créer des applications web interactives en quelques lignes de code.
  2. Flexibilité : La bibliothèque permet d'intégrer facilement des bibliothèques de visualisation populaires comme Matplotlib, Seaborn, Plotly et Altair.
  3. Interactivité : Les widgets intégrés de Streamlit permettent d'ajouter facilement des éléments interactifs tels que des boutons, des sliders, des formulaires, etc.
  4. Temps réel : Les changements dans votre code sont automatiquement reflétés dans l'application, ce qui permet un développement itératif rapide.

Comparaison avec d'autres outils

Il existe plusieurs autres outils de création d'applications web pour la data science, comme Dash par Plotly ou Shiny pour R. Streamlit se distingue par :

  • Une courbe d'apprentissage plus douce : Avec Dash, il est nécessaire de comprendre le concept de callbacks, tandis que Shiny requiert des connaissances en R. Streamlit, en revanche, est conçu pour être facile à apprendre pour ceux qui connaissent déjà Python.
  • Des mises à jour en temps réel : Contrairement à Dash où les mises à jour peuvent nécessiter le redémarrage du serveur, Streamlit applique les changements immédiatement.

Pour une comparaison approfondie entre Streamlit et d'autres outils similaires, vous pouvez consulter cet article détaillé.

Installation de Streamlit

Pour commencer avec Streamlit, vous devez d'abord l'installer. Vous pouvez installer Streamlit via pip:

pip install streamlit

Une fois installé, vous pouvez vérifier que Streamlit fonctionne correctement en exécutant la commande suivante dans votre terminal :

streamlit hello

Cette commande lancera une application de démonstration qui vous donnera un aperçu des fonctionnalités de Streamlit.


Création d'une application simple avec Streamlit

Après avoir découvert ce qu'est Streamlit et ses avantages, il est temps de mettre la théorie en pratique et de créer une application simple. Dans cette section, nous allons guider pas à pas la création de votre première application Streamlit, en utilisant un exemple concret.

Initialisation du Projet

Tout d'abord, assurez-vous que vous avez correctement installé Streamlit. Si ce n'est pas déjà fait, vous pouvez revenir à la section précédente pour les instructions d'installation. Ensuite, créez un nouveau fichier Python, par exemple app.py.

# app.py
import streamlit as st

st.title('Hello, Streamlit!')
st.write('Bienvenue dans votre première application Streamlit.')

Pour lancer votre application, exécutez la commande suivante dans votre terminal :

streamlit run app.py

Cette commande ouvrira une nouvelle fenêtre de navigateur avec votre application Streamlit.

Structuration de l'Application

Streamlit permet une structuration claire et hiérarchisée de votre application. Utilisons st.header() et st.subheader() pour organiser les sections de notre application.

# app.py (suite)
st.header('Introduction')
st.write('Streamlit est cool!')
st.subheader('Pourquoi Streamlit?')
st.write('Voici quelques raisons pour lesquelles vous devriez utiliser Streamlit.')

Étant donné que Streamlit est basé sur Python, l’ajout de contenu à votre application est aussi simple que d’écrire du code Python.

Ajout de Widgets Interactifs

Le véritable pouvoir de Streamlit réside dans sa capacité à ajouter des widgets interactifs facilement. Examinons quelques exemples courants :

Boutons et Sliders

Vous pouvez ajouter des boutons et des sliders pour interagir dynamiquement avec votre application.

# Bouton
if st.button('Cliquez-moi'):
    st.write('Le bouton a été cliqué!')

# Slider
valeur_slider = st.slider('Sélectionnez une valeur', 0, 100, 50)
st.write('La valeur sélectionnée est:', valeur_slider)

Saisie de Texte

Streamlit permet également de saisir du texte via des champs de saisie.

# Champ de saisie
nom_utilisateur = st.text_input('Quel est votre nom ?')
st.write('Bonjour, ' + nom_utilisateur + '!')

Ces widgets ne sont qu'un aperçu de ce que Streamlit offre. Vous pouvez explorer une liste complète des widgets directement dans la documentation de Streamlit.

Intégration de Visuels

L'un des aspects les plus attrayants de Streamlit est la facilité avec laquelle vous pouvez intégrer des graphiques et des visualisations. Par exemple, vous pouvez utiliser Matplotlib pour créer des graphiques et les afficher dans votre application Streamlit.

import matplotlib.pyplot as plt
import numpy as np

# Générer des données de test
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Créer une figure avec Matplotlib
fig, ax = plt.subplots()
ax.plot(x, y)

# Afficher la figure avec Streamlit
st.pyplot(fig)

Cette simple intégration de Matplotlib vous montre comment vous pouvez améliorer votre application avec des visualisations interactives.

Exemple Complet

Voici un exemple complet intégrant tous les éléments mentionnés ci-dessus :

import streamlit as st
import matplotlib.pyplot as plt
import numpy as np

st.title('Hello, Streamlit!')
st.write('Bienvenue dans votre première application Streamlit.')

st.header('Introduction')
st.write('Streamlit est cool!')
st.subheader('Pourquoi Streamlit?')
st.write('Voici quelques raisons pour lesquelles vous devriez utiliser Streamlit.')

if st.button('Cliquez-moi'):
    st.write('Le bouton a été cliqué!')

valeur_slider = st.slider('Sélectionnez une valeur', 0, 100, 50)
st.write('La valeur sélectionnée est:', valeur_slider)

nom_utilisateur = st.text_input('Quel est votre nom ?')
st.write('Bonjour, ' + nom_utilisateur + '!')

# Générer des données de test
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Créer une figure avec Matplotlib
fig, ax = plt.subplots()
ax.plot(x, y)

# Afficher la figure avec Streamlit
st.pyplot(fig)

Et voilà! Vous avez maintenant une base solide pour créer des applications interactives avec Streamlit.


Utilisation de widgets interactifs

Les widgets interactifs sont au cœur de la magie de Streamlit. Ils permettent aux utilisateurs d'interagir avec l'application et de personnaliser les données en temps réel. Dans cette section, nous allons explorer divers widgets disponibles dans Streamlit et comment les intégrer dans vos applications pour un maximum d'interactivité.

Types de Widgets Interactifs

Streamlit offre une multitude de widgets interactifs tels que les boutons, les sliders, les champs de texte, les sélecteurs de valeurs, les cases à cocher, et bien plus encore. Voyons comment utiliser certains des plus courants.

Boutons et Actions

Les boutons sont des widgets simples mais puissants qui déclenchent des actions lorsqu'ils sont cliqués. Utilisez st.button pour ajouter un bouton à votre application :

if st.button('Cliquez ici'):
    st.write('Bouton cliqué!')

Sliders et Sélection de Valeurs

Les sliders permettent aux utilisateurs de sélectionner une valeur numérique à partir d'une plage définie. Voici comment utiliser un slider pour choisir une valeur entre 0 et 100 :

valeur = st.slider('Choisissez une valeur', 0, 100, 25)
st.write('Valeur sélectionnée:', valeur)

Champs de Saisie de Texte

Les champs de saisie de texte permettent aux utilisateurs d'entrer des informations directement. Vous pouvez récupérer et afficher ces informations dans votre application :

nom = st.text_input('Entrez votre nom:')
st.write('Votre nom est', nom)

Cases à Cocher et Boutons Radio

Les cases à cocher et les boutons radio permettent aux utilisateurs de sélectionner des options binaires ou multiples. Utilisez st.checkbox pour une case à cocher et st.radio pour des boutons radio :

# Case à cocher
afficher_texte = st.checkbox('Afficher le texte')
if afficher_texte:
    st.write('Le texte est affiché!')

# Boutons radio
genre = st.radio('Choisissez votre genre:', ('Homme', 'Femme', 'Autre'))
st.write('Vous avez sélectionné:', genre)

Utilisation Avancée des Widgets

Pour des applications plus complexes, vous pouvez combiner plusieurs widgets et utiliser les valeurs d'entrée pour générer des sorties dynamiques.

Combinaisons de Widgets

Par exemple, vous pouvez combiner un champ de texte et un bouton pour afficher un message personnalisé :

# Exemple complexe
nom = st.text_input('Entrez votre nom:')
if st.button('Soumettre'):
    st.write(f'Bonjour {nom}, bienvenue sur Streamlit!')

Utilisation des Sélecteurs

Les sélecteurs permettent de choisir parmi une liste d'options prédéfinies. Ils peuvent être utilisés pour créer des menus déroulants ou des listes :

# Sélecteur de valeur unique
choix = st.selectbox('Choisissez une couleur:', ['Rouge', 'Vert', 'Bleu'])
st.write('Vous avez choisi:', choix)

# Sélecteur de valeurs multiples
langues = st.multiselect('Quelles langues parlez-vous?', ['Anglais', 'Français', 'Espagnol', 'Allemand'])
st.write('Vous parlez:', ', '.join(langues))

Interaction avec des Graphiques

Vous pouvez également rendre vos visualisations interactives en combinant les widgets avec des graphiques. Par exemple, utilisez un slider pour mettre à jour un graphique en temps réel :

import matplotlib.pyplot as plt
import numpy as np

# Générer des données dynamiques
valeurs = st.slider('Nombre de points', 0, 100, 50)
x = np.linspace(0, 10, valeurs)
y = np.sin(x)

# Créer le graphique
fig, ax = plt.subplots()
ax.plot(x, y)
st.pyplot(fig)

Utilisation d'une Interface à Onglets

Streamlit permet également d’organiser des widgets en utilisant des onglets pour structurer l'interface utilisateur :

# Création d'onglets
onglet1, onglet2 = st.tabs(['Onglet 1', 'Onglet 2'])

with onglet1:
    st.write('Contenu de l’onglet 1')
    nom = st.text_input('Votre nom (Onglet 1):')

with onglet2:
    st.write('Contenu de l’onglet 2')
    valeur = st.slider('Sélectionnez une valeur (Onglet 2):')

Les widgets interactifs de Streamlit offrent une flexibilité incroyable pour créer des applications dynamiques et engageantes. En utilisant ces widgets, vous pouvez transformer des scripts Python de base en expériences interactives riches, adaptées aux besoins de vos utilisateurs.

Pour plus d’informations sur les widgets et leurs usages, la documentation officielle de Streamlit est une référence incontournable.


Intégration de graphiques interactifs

L'un des principaux atouts de Streamlit est sa capacité à intégrer facilement des graphiques interactifs dans les applications. Que vous utilisiez des bibliothèques de visualisation comme Matplotlib, Plotly, or Altair, Streamlit supporte une large gamme d'outils pour créer des visualisations riches et dynamiques. Dans cette section, nous allons explorer comment intégrer divers types de graphiques.

Intégration avec Matplotlib

Matplotlib est une bibliothèque très populaire pour la création de graphiques statiques, animés et interactifs en Python. Pour afficher un graphique Matplotlib dans Streamlit, utilisez la fonction st.pyplot().

import streamlit as st
import matplotlib.pyplot as plt
import numpy as np

# Générer des données
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Créer une figure avec Matplotlib
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set(title='Graphique Sinus')

# Afficher la figure dans Streamlit
st.pyplot(fig)

Intégration avec Plotly

Plotly est une bibliothèque de visualisation open-source qui permet de créer des graphiques interactifs et publication-ready. Pour intégrer un graphique Plotly, utilisez st.plotly_chart().

import plotly.express as px

# Créer des données
df = px.data.iris()

# Créer un graphique interactive avec Plotly
fig = px.scatter(df, x='sepal_width', y='sepal_length', color='species', title='Graphique Interactif Plotly')

# Afficher le graphique dans Streamlit
st.plotly_chart(fig)

Utilisation d'Altair

Altair est une autre bibliothèque de visualisation déclarative qui offre une syntaxe élégante et puissante. Pour intégrer un graphique Altair, utilisez st.altair_chart().

import altair as alt
import pandas as pd

# Créer des données
df = pd.DataFrame({'x': np.arange(100), 'y': np.random.randn(100).cumsum()})

# Créer un graphique interactive avec Altair
chart = alt.Chart(df).mark_line().encode(x='x', y='y', title='Graphique Interactif Altair')

# Afficher le graphique dans Streamlit
st.altair_chart(chart)

Combinaison avec des Widgets Interactifs

Pour des visualisations vraiment dynamiques, vous pouvez combiner des widgets interactifs avec vos graphiques. Par exemple, utilisez un slider pour mettre à jour un graphique Matplotlib en temps réel.

import matplotlib.pyplot as plt
import streamlit as st
import numpy as np

# Utiliser un slider pour transformer les données
points = st.slider('Nombre de points', 0, 100, 50)
x = np.linspace(0, 10, points)
y = np.sin(x)

# Créer et afficher le graphique
fig, ax = plt.subplots()
ax.plot(x, y)
st.pyplot(fig)

Animation de Graphiques avec Plotly

Plotly permet également de créer des graphiques animés. Voici un exemple de graphique animé représentant la variation des températures au cours du temps.

import plotly.express as px
import plotly.graph_objects as go
import pandas as pd

# Créer des données
df = px.data.gapminder()

# Créer un graphique animé avec Plotly
fig = px.scatter(df, x="gdpPercap", y="lifeExp", animation_frame="year", animation_group="country",
                 size="pop", color="continent", hover_name="country", log_x=True, size_max=55, range_x=[100,100000], range_y=[25,90])
fig.update_layout(title='Animation des Graphiques avec Plotly')

# Afficher le graphique
st.plotly_chart(fig)

Utilisation Avancée avec Vega-Lite

Pour des visualisations plus avancées, vous pouvez utiliser Vega-Lite avec Altair. Cette approche offre une grande flexibilité pour créer des graphiques complexes et interactifs.

import altair as alt
import pandas as pd

# Créer des données
source = pd.DataFrame({'a': list('CCCDDDEEE'), 'b': [2, 7, 4, 1, 2, 6, 8, 4, 7]})

# Créer un graphique avancé avec Vega-Lite via Altair
chart = alt.Chart(source).mark_bar().encode(x='a', y='b', tooltip=['a', 'b'])

# Afficher le graphique
st.altair_chart(chart, use_container_width=True)

Ces exemples illustrent le potentiel des graphiques interactifs dans Streamlit. Ils permettent de rendre les données plus compréhensibles et engageantes pour l'utilisateur. Pour plus de détails et d'exemples sur les différentes bibliothèques de visualisation, consultez la documentation officielle de Streamlit.


Déploiement avec Streamlit Cloud

Streamlit Cloud est le moyen le plus simple et direct de déployer une application Streamlit. Il est spécifiquement conçu pour héberger des applications créées avec Streamlit.

  1. Créez un compte : Inscrivez-vous sur Streamlit Cloud si vous n'avez pas encore de compte.

  2. Préparez votre dépôt GitHub : Assurez-vous que votre application est hébergée sur GitHub. Votre dépôt doit inclure tous les fichiers nécessaires, y compris un requirements.txt listant toutes les dépendances.

plaintext streamlit matplotlib pandas plotly

  1. Connectez à GitHub : Dans Streamlit Cloud, connectez votre compte GitHub.

  2. Déployez l'application : Sélectionnez le dépôt contenant votre application, indiquez le chemin du fichier principal (par exemple, app.py), et cliquez sur le bouton de déploiement.

Pour des instructions détaillées, consultez la documentation officielle de Streamlit Cloud.

Business Intelligence
Comprendre la Business Intelligence pour les entreprises