Skip to content
Tutoriels
Streamlit
Streamlit DataFrame: Displaying, Styling, and Optimizing Pandas DataFrames

Streamlit DataFrame : Affichage, Mise en forme et Optimisation des DataFrames Pandas

Dans le domaine de la science des données, la capacité à visualiser et interagir avec vos données est primordiale. Streamlit, une bibliothèque Python, a révolutionné la façon dont nous interagissons avec les données, facilitant ainsi la création d'applications web interactives riches en données. L'une des fonctionnalités les plus puissantes de Streamlit est sa capacité à travailler avec des DataFrames, la structure de données utilisée par la populaire bibliothèque de manipulation de données, Pandas. Dans cet article, nous plongerons dans le monde de Streamlit DataFrame, en explorant comment afficher, mettre en forme et optimiser vos DataFrames Pandas pour une expérience d'analyse de données fluide.

Qu'est-ce que Streamlit DataFrame ?

Streamlit DataFrame est une fonctionnalité de la bibliothèque Streamlit qui vous permet d'afficher des DataFrames Pandas de manière interactive et visuellement attrayante. C'est comme prendre votre DataFrame Pandas standard, qui est généralement consulté dans un format statique dans un notebook Jupyter ou un script Python, et le faire vivre dans une application web dynamique.

La fonctionnalité DataFrame de Streamlit est construite au-dessus de Pandas, qui est une puissante bibliothèque de manipulation de données en Python. Les DataFrames Pandas sont des structures de données tabulaires bidimensionnelles, de taille mutable et hétérogènes avec des axes étiquetés. Ils sont incroyablement polyvalents et sont indispensables dans la trousse à outils de tout scientifique des données. Streamlit améliore les fonctionnalités des DataFrames Pandas en fournissant une plateforme où ils peuvent être affichés et manipulés de manière interactive.

Tutoriel Streamlit DataFrame

Avez-vous entendu parler de cet outil incroyable d'analyse et de visualisation des données, qui peut facilement transformer votre application Streamlit en Tableau ?

PyGWalker (opens in a new tab) est une bibliothèque Python qui vous aide à incorporer facilement une interface utilisateur similaire à Tableau dans votre propre application Streamlit sans effort. Découvrez cette incroyable vidéo produite par Sven de Coding is Fun (opens in a new tab) démontrant les étapes détaillées pour renforcer votre application Streamlit avec cette puissante bibliothèque de visualisation de données Python !


Remerciements spéciaux à Sven et sa contribution exceptionnelle (opens in a new tab) à la communauté PyGWalker!

De plus, vous pouvez également consulter la page GitHub de PyGWalker (opens in a new tab) pour plus d'exemples de PyGWalker.

Commencer avec les DataFrames Streamlit

Pour commencer avec Streamlit DataFrame, vous devez d'abord installer Streamlit. Vous pouvez le faire en exécutant la commande pip install streamlit dans votre terminal. Une fois que Streamlit est installé, vous pouvez l'importer dans votre script Python avec Pandas.

import streamlit as st
import pandas as pd

Ensuite, créons un DataFrame simple à afficher. Pour cet exemple, nous utiliserons un DataFrame avec des données sur différents types de fruits.

data = {
    'Fruit': ['Pomme', 'Banane', 'Cerise', 'Date', 'Baie de sureau'],
    'Quantité': [10, 15, 20, 25, 30],
    'Prix': [0.5, 0.25, 0.75, 1.0, 2.0]
}
df = pd.DataFrame(data)

Pour afficher ce DataFrame dans Streamlit, il vous suffit d'utiliser la fonction st.dataframe().

st.dataframe(df)

Lorsque vous exécutez votre application Streamlit, vous verrez votre DataFrame affiché sous forme de tableau interactif. Vous pouvez trier le tableau en cliquant sur les en-têtes de colonne, et vous pouvez ajuster la largeur et la hauteur du tableau en faisant glisser les coins.

Ceci n'est qu'un exemple basique de ce que vous pouvez faire avec Streamlit DataFrame. Au fur et à mesure que nous approfondirons ce sujet, vous découvrirez une multitude de fonctionnalités et de techniques qui vous permettront de faire passer votre visualisation de données à un niveau supérieur.

Affichage des DataFrames dans Streamlit

Comment afficher un DataFrame comme un tableau interactif à l'aide de Streamlit

Afficher un DataFrame comme un tableau interactif dans Streamlit est aussi simple que d'utiliser la fonction st.dataframe(), comme nous l'avons vu dans la section précédente. Cependant, il y a plus que cela à faire que simplement afficher le DataFrame. Vous pouvez également personnaliser l'affichage selon vos besoins.

Par exemple, vous pouvez définir le nombre de lignes à afficher en utilisant le paramètre height. Cela peut être particulièrement utile lors de la manipulation de DataFrames volumineux. Voici un exemple :

st.dataframe(df, height=300)

Dans cet exemple, le DataFrame sera affiché avec une hauteur correspondant à 300 pixels, ce qui correspond approximativement à 10 lignes. Si le DataFrame comporte plus de 10 lignes, une barre de défilement apparaîtra, vous permettant de faire défiler les données.

Vous pouvez également mettre en évidence certaines cellules du DataFrame en fonction de certaines conditions. Par exemple, vous pouvez mettre en évidence les cellules contenant des valeurs supérieures à un certain seuil. Vous pouvez le faire en utilisant la méthode style du DataFrame, comme ceci :

st.dataframe(df.style.highlight_max(axis=0))

Dans cet exemple, les cellules avec les valeurs maximales de chaque colonne sont mises en évidence. Vous pouvez personnaliser la mise en évidence selon vos besoins en modifiant les conditions à l'intérieur de la méthode highlight_max().

Gérer les DataFrames volumineux dans Streamlit

Travailler avec des DataFrames volumineux dans Streamlit peut être un peu difficile, surtout en ce qui concerne les performances et l'ergonomie. Cependant, Streamlit offre plusieurs fonctionnalités qui peuvent vous aider à gérer efficacement les DataFrames volumineux. Une fonctionnalité de Streamlit est la pagination. La pagination vous permet d'afficher un grand DataFrame en petites parties plus gérables. Cela peut être particulièrement utile lorsque vous travaillez avec un DataFrame qui compte des centaines, voire des milliers de lignes.

Pour mettre en œuvre la pagination dans Streamlit, vous pouvez utiliser la fonction st.beta_container() avec une boucle for. Voici un exemple :

container = st.beta_container()
for i in range(0, len(df), 50):
    container.dataframe(df[i:i+50])

Dans cet exemple, le DataFrame est divisé en parties de 50 lignes chacune, et chaque partie est affichée dans un conteneur séparé. Vous pouvez naviguer à travers les parties en utilisant la barre de défilement.

Personnalisation des DataFrames dans Streamlit

Puis-je personnaliser un DataFrame en utilisant CSS dans Streamlit ?

Oui, vous pouvez personnaliser un DataFrame dans Streamlit en utilisant CSS. Streamlit vous permet d'appliquer des styles CSS à votre DataFrame en utilisant la fonction st.markdown(). Cette fonction vous permet d'écrire du code HTML et CSS directement dans votre application Streamlit.

Par exemple, vous pouvez changer la couleur de fond de votre DataFrame comme ceci :

st.markdown("""
<style>
table {background-color: #f0f0f0;}
</style>
""", unsafe_allow_html=True)
st.dataframe(df)

Dans cet exemple, la fonction st.markdown() est utilisée pour définir un style CSS qui change la couleur de fond du tableau en gris clair. Le paramètre unsafe_allow_html=True est nécessaire pour autoriser l'utilisation de HTML et de CSS dans le markdown.

Personnalisation des DataFrames dans Streamlit

En plus du CSS, Streamlit propose également plusieurs fonctions intégrées pour personnaliser votre DataFrame. Ces fonctions vous permettent d'appliquer divers styles à votre DataFrame, tels que la mise en évidence de cellules spécifiques, le changement de couleur du texte, et plus encore.

Par exemple, vous pouvez utiliser la fonction highlight_max() pour mettre en évidence les cellules contenant les valeurs maximales de chaque colonne, comme nous l'avons vu précédemment. Vous pouvez également utiliser la fonction background_gradient() pour appliquer un dégradé de couleurs à votre DataFrame, comme ceci :

st.dataframe(df.style.background_gradient(cmap='Blues'))

Dans cet exemple, un dégradé de couleurs est appliqué au DataFrame, la couleur de chaque cellule étant fonction de sa valeur. Le paramètre cmap spécifie la carte de couleurs à utiliser pour le dégradé.

Optimisation des DataFrames dans Streamlit

Comment optimiser un DataFrame Pandas avec Streamlit

L'optimisation d'un DataFrame Pandas dans Streamlit consiste à améliorer ses performances et son efficacité, surtout lorsqu'il s'agit de grands ensembles de données. Streamlit offre plusieurs fonctionnalités qui peuvent vous aider à optimiser votre DataFrame, telles que la mise en cache et l'optimisation de la mémoire.

La mise en cache dans Streamlit peut considérablement améliorer les performances de votre application lorsque vous travaillez avec de grands DataFrames. En utilisant le décorateur @st.cache, vous pouvez vous assurer que votre DataFrame n'est calculé qu'une seule fois, et que le résultat est stocké en cache pour les exécutions ultérieures. Voici un exemple :

@st.cache
def load_data():
    # Chargez votre DataFrame ici
    df = pd.read_csv('large_dataset.csv')
    return df
 
df = load_data()
st.dataframe(df)

Dans cet exemple, la fonction load_data(), qui charge un grand DataFrame à partir d'un fichier CSV, est décorée avec @st.cache. Cela signifie que le DataFrame n'est chargé qu'une seule fois, et que le résultat est stocké en cache. Lorsque vous exécutez à nouveau votre application Streamlit, le DataFrame est chargé à partir du cache au lieu d'être recalculé, ce qui peut vous faire gagner beaucoup de temps.

Mise en cache des DataFrames et conseils sur les performances de Streamlit

Exploiter la puissance de la mise en cache dans Streamlit peut considérablement améliorer les performances de votre application. Cependant, il est crucial de l'utiliser judicieusement pour éviter des comportements inattendus. Voici quelques points clés à retenir :

  • Paramètres d'entrée de la fonction : Le décorateur @st.cache met les résultats en cache en fonction des paramètres d'entrée de la fonction. Si ces paramètres changent, la fonction sera recomputée. Cette fonctionnalité peut être particulièrement utile lorsque vous souhaitez mettre à jour votre DataFrame en fonction de l'entrée de l'utilisateur.
@st.cache
def load_data(nom_fichier):
    # Chargez votre DataFrame ici
    df = pd.read_csv(nom_fichier)
    return df
 
# Entrée de l'utilisateur pour le nom du fichier
nom_fichier = st.text_input('Entrez le nom du fichier')
df = load_data(nom_fichier)
st.dataframe(df)
  • Mutation de la sortie : Streamlit vous permet de mettre en cache des fonctions qui modifient leur sortie en utilisant le paramètre allow_output_mutation=True dans le décorateur @st.cache. Cependant, faites attention car cela peut entraîner un comportement inattendu s'il n'est pas utilisé correctement.
@st.cache(allow_output_mutation=True)
def load_and_process_data(nom_fichier):
    # Chargez et traitez votre DataFrame ici
    df = pd.read_csv(nom_fichier)
    df['nouvelle_colonne'] = df['ancienne_colonne'].apply(une_fonction)
    return df
  • Limite d'affichage du DataFrame : Lorsque vous travaillez avec de grands DataFrames, il est conseillé de limiter la quantité de données affichées à la fois. Vous pouvez le faire en utilisant le paramètre height dans la fonction st.dataframe(). Cela peut considérablement améliorer les performances de votre application et améliorer l'expérience utilisateur.
# Affichez seulement une partie du DataFrame
st.dataframe(df, height=300)

DataFrame Streamlit : Cas d'utilisation avancés

Filtrage des DataFrames Streamlit

Le filtrage est une opération courante en analyse de données qui vous permet de sélectionner un sous-ensemble de vos données en fonction de certaines conditions. Dans Streamlit, vous pouvez facilement mettre en œuvre le filtrage des DataFrames en utilisant les widgets interactifs fournis par la bibliothèque.

Par exemple, vous pouvez utiliser une boîte de sélection pour permettre à l'utilisateur de sélectionner une colonne à filtrer, et un curseur pour sélectionner la plage de valeurs à inclure. Voici un exemple :

colonne = st.selectbox('Sélectionnez la colonne à filtrer', df.columns)
valeur_min, valeur_max = st.slider('Sélectionnez la plage de valeurs', min(df[colonne]), max(df[colonne]), (min(df[colonne]), max(df[colonne])))
df_filtre = df[(df[colonne] >= valeur_min) & (df[colonne] <= valeur_max)]
st.dataframe(df_filtre)

Dans cet exemple, l'utilisateur peut sélectionner une colonne sur laquelle filtrer à partir d'une boîte de sélection, et une plage de valeurs à partir d'un curseur. Le DataFrame est ensuite filtré en fonction de ces sélections, et le DataFrame filtré est affiché.

Les DataFrames Streamlit dans l'apprentissage automatique

Streamlit n'est pas seulement destiné à la visualisation de données ; c'est aussi un outil puissant pour l'apprentissage automatique. Vous pouvez utiliser Streamlit pour créer des applications interactives d'apprentissage automatique, où vous pouvez afficher vos données, entraîner vos modèles et visualiser vos résultats, le tout au même endroit.

Par exemple, vous pouvez utiliser une application Streamlit pour afficher un DataFrame de vos données d'entraînement, avec des options pour filtrer et trier les données. Vous pouvez ensuite utiliser un bouton pour entraîner un modèle d'apprentissage automatique sur ces données, et afficher les résultats dans un graphique interactif.

Voici un exemple simple :

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
 
# Afficher le DataFrame
st.dataframe(df)
 
# Bouton pour entraîner le modèle
if st.button('Entraîner le modèle'):
    # Diviser les données en ensembles d'entraînement et de test
    X_train, X_test, y_train, y_test = train_test_split(df.drop('target', axis=1), df['target'], test_size=0.2, random_state=42)
 
    # Entraîner le modèle
    model = RandomForestClassifier(n_estimators=100, random_state=42)
    model.fit(X_train, y_train)
 
    # Faire des prédictions et calculer l'exactitude
    y_pred = model.predict(X_test)
    accuracy = accuracy_score(y_test, y_pred)
 
    # Afficher l'exactitude
    st.write(f'Exactitude : {accuracy*100:.2f}%')

Dans cet exemple, un RandomForestClassifier est entraîné sur un DataFrame df, avec 'target' comme variable cible. L'exactitude du modèle est ensuite affichée dans l'application Streamlit.

Ceci n'est qu'un exemple simple de ce que vous pouvez faire avec Streamlit dans le domaine de l'apprentissage automatique. Les possibilités sont infinies, et avec la nature interactive de Streamlit, vous pouvez créer des applications d'apprentissage automatique puissantes et conviviales.

Conclusion

Streamlit a révolutionné la façon dont nous interagissons avec les données, en facilitant plus que jamais la création d'applications web interactives et riches en données. Sa capacité à fonctionner parfaitement avec les DataFrames Pandas a ouvert un monde de possibilités pour la visualisation et l'analyse des données. Que vous soyez un scientifique des données chevronné ou un débutant qui commence tout juste, Streamlit offre une plateforme puissante et conviviale pour afficher, styliser et optimiser vos DataFrames.

Alors, pourquoi attendre ? Plongez-y et commencez à explorer le monde des DataFrames Streamlit dès aujourd'hui !

Avez-vous entendu parler de cet outil génial d'analyse de données et de visualisation de données, qui transforme votre application Streamlit en Tableau ?

PyGWalker (opens in a new tab) est une bibliothèque Python qui vous aide à intégrer facilement une interface utilisateur similaire à Tableau dans votre propre application Streamlit sans effort.

PyGWalker pour la visualisation de données dans Streamlit (opens in a new tab)

Foire aux questions

  1. Comment puis-je styliser un DataFrame dans Streamlit ? Vous pouvez styliser un DataFrame dans Streamlit en utilisant à la fois le CSS et les fonctions de stylisation intégrées. Par exemple, vous pouvez changer la couleur de fond de votre DataFrame en utilisant CSS, ou appliquer un gradient de couleur en utilisant la fonction background_gradient().

  2. Comment puis-je filtrer un DataFrame dans Streamlit ? Streamlit propose des widgets interactifs que vous pouvez utiliser pour filtrer votre DataFrame. Par exemple, vous pouvez utiliser une boîte de sélection pour permettre à l'utilisateur de sélectionner une colonne sur laquelle filtrer, et un curseur pour sélectionner la plage de valeurs à inclure.

  3. Puis-je afficher des images dans un DataFrame dans Streamlit ? Oui, vous pouvez afficher des images dans un DataFrame dans Streamlit. Vous pouvez utiliser la fonction st.image() pour afficher des images stockées dans un DataFrame. Cependant, les images doivent être stockées sous forme d'URL ou de données binaires pour que cela fonctionne.