Créez des applications Web interactives pour des projets de science des données et d'apprentissage automatique en utilisant uniquement Python, tout cela grâce à Streamlit !
Streamlit est une bibliothèque Python open source permettant de créer des applications Web pour des projets de science des données et d'apprentissage automatique. Il est conçu pour être utilisé par des data scientists et des ingénieurs en apprentissage automatique qui ne possèdent pas de compétences approfondies en développement front-end. Il possède une syntaxe simple vous permettant de créer des applications Web interactives avec quelques lignes de code.
En encapsulant des détails techniques complexes derrière une interface conviviale, Streamlit permet aux utilisateurs de se concentrer sur l'exploration et la présentation de leurs données, prototypes ou modèles en temps réel. Cela en fait un outil précieux pour partager rapidement des informations.
Installation de la bibliothèque Streamlit
Créer un nouvel environnement virtuel
. Cela garantira qu'il n'y aura pas de conflit de version du package après l'installation Rationalisé. Alors utiliser pip pour installer Streamlit en exécutant la commande suivante :pip install streamlit
Ensuite, vérifiez que l'installation est correctement installée.
streamlit --version
Si l'installation réussit, la version Streamlit installée s'affichera.
Création d'une application simple de nettoyage et d'analyse des données
Vous créerez une application Web simple pour découvrir le fonctionnement de Streamlit et ses fonctionnalités. Cette application sera capable de nettoyer un ensemble de données téléchargé, d'effectuer une analyse des données et enfin de visualiser les données.
Le code source complet est disponible dans un Dépôt GitHub.
Installation et importation des bibliothèques nécessaires
Commencez par installer Pandas, Matplotlib et Seaborn dans le même environnement virtuel que celui dans lequel vous avez installé Streamlit à l'aide de la commande suivante :
pip install pandas matplotlib seaborn
Créez ensuite un nouveau script Python et importez toutes les bibliothèques installées.
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
Cela vous permettra d’utiliser leurs fonctionnalités dans votre code.
Télécharger un ensemble de données et afficher son contenu
Définissez ensuite une fonction qui lira un ensemble de données téléchargé. Il renverra ensuite un DataFrame si l'opération de lecture réussit. Sinon, il affichera un message d’erreur dans la barre latérale. L'erreur se produit lorsque le fichier n'est pas un fichier CSV valide.
defload_data(uploaded_file):
try:
df = pd.read_csv(uploaded_file)
return df
except Exception as e:
st.sidebar.error('Error occurred while loading the file.'
' Please make sure it is a valid CSV file.')
returnNone
Définissez une autre fonction qui utilisera Steamlit pour afficher le DataFrame sous forme de tableau. Il ne le fera que lorsque l'utilisateur vérifiera le Afficher les données brutes case à cocher. Il utilisera Streamlit case à cocher, trame de données, et sous-titre les fonctions.
defexplore_raw_data(df):
st.subheader('Raw Data')
if st.checkbox('Show Raw Data'):
st.dataframe(df)
Après avoir créé le DataFrame et affiché les données brutes, vous devez maintenant nettoyer les données, les analyser et enfin les visualiser.
Effectuer un nettoyage des données
Commencez par définir une fonction qui effectuera le nettoyage des données. Cette fonction gérera les valeurs manquantes dans le DataFrame et les lignes en double. Le DataFrame nettoyé est ensuite présenté à l'utilisateur à l'aide de st.dataframe fonctionner s'ils vérifient le Afficher les données nettoyées case à cocher.
defdata_cleaning(df):
st.header('Data Cleaning')# Remove Missing Values
st.subheader('Handling Missing Values')
df.dropna(inplace=True)
st.write("Missing values removed from the dataset.")# Remove Duplicate Rows
st.subheader('Removing Duplicate Rows')
initial_rows = len(df)
df.drop_duplicates(inplace=True)
final_rows = len(df)
st.write(f"Removed {initial_rows - final_rows} duplicate rows.")
if st.checkbox('Show Cleaned Data'):
st.dataframe(df)
La fonction affiche également le nombre de lignes en double supprimées.
Effectuer une analyse des données
Définir une fonction d'analyse de données. Cette fonction affichera des statistiques descriptives du DataFrame et affichera la carte thermique de la matrice de corrélation. Il utilisera le st.pyplot fonction pour afficher la carte thermique sur l’interface utilisateur.
defdata_analysis(df):
st.header('Data Analysis')# Descriptive Statistics
st.subheader('Descriptive Statistics')
st.write(df.describe())
# Correlation Matrix
st.subheader('Correlation Matrix')
corr_matrix = df.corr()
fig, ax = plt.subplots(figsize=(10, 8))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm',
center=0, ax=ax)
st.pyplot(fig)
Vous pouvez modifier la fonction ci-dessus pour effectuer davantage d'analyses de données. Cela vous aidera à tirer plus d’informations de vos données.
Effectuer une visualisation des données
La visualisation des données est l'une des fonctionnalités cruciales de l'application. En effet, cela donne un aperçu visuel des données d'une manière conviviale. Cette fonctionnalité devrait donc permettre aux utilisateurs de changer l'apparence des parcelles.
Pour ce faire, créez une fonction qui permettra aux utilisateurs de sélectionner une colonne, de définir le nombre de cases et de choisir une couleur pour l'histogramme. Il générera ensuite un histogramme et une boîte à moustaches et les affichera à l'aide de st.pyplot fonction.
defdata_visualization(df):
st.header('Data Visualization')# Histogram
st.subheader('Histogram')
selected_column = st.selectbox("Select a column to visualize:",
df.columns)
num_bins = st.slider("Select number of bins:",
min_value=5, max_value=50, value=20)
plot_color = st.color_picker("Select histogram color", "#1f77b4")
plt.figure(figsize=(8, 6))
plt.hist(df[selected_column], bins=num_bins, edgecolor='black',
color=plot_color, alpha=0.7)
plt.xlabel(selected_column)
plt.ylabel('Frequency')
st.pyplot(plt)
# Box Plot
st.subheader('Box Plot')
selected_column = st.selectbox("Select a column for box plot:",
df.columns)
plot_color = st.color_picker("Select box plot color", "#1f77b4")
plt.figure(figsize=(8, 6))
sns.boxplot(x=df[selected_column], color=plot_color)
plt.xlabel(selected_column)
plt.ylabel('Value')
st.pyplot(plt)
Vous disposez désormais de toutes les fonctionnalités de base de l’application.
Recueillir les commentaires des utilisateurs
Parfois, une fonctionnalité peut ne pas fonctionner comme prévu. Vous avez ensuite besoin d'un moyen permettant aux utilisateurs de soumettre leurs commentaires. Une solution consiste à ce que les utilisateurs vous contactent par e-mail. Streamlit fournit l'interface permettant de collecter les commentaires de l'utilisateur, mais ne fournit pas de fonctionnalité intégrée pour envoyer directement des e-mails. Cependant, vous pouvez intégrer des bibliothèques ou des services externes pour envoyer des e-mails depuis votre application.
Pour recueillir les commentaires de l'utilisateur, définissez une fonction pour présenter à l'utilisateur un formulaire.
deffeedback_form():
st.header('Feedback')
with st.form('Feedback Form'):
email = st.text_input("Your Email")
feedback = st.text_area("Feedback")
submitted = st.form_submit_button("Submit Feedback")
if submitted:
# Here, you can send the feedback to the developer's
# email using external services/APIs
st.success("Thank you for your feedback!")
Ce formulaire collectera l'e-mail et les commentaires de l'utilisateur et vous les enverra par e-mail.
Contrôler le flux de votre programme et exécuter l'application
Enfin, vous avez besoin d'une fonction principale qui rassemblera toutes ces fonctions et contrôlera le déroulement du programme. Cette fonction garantira également que les utilisateurs acceptent vos conditions de confidentialité des données avant que l'application ne traite leur ensemble de données téléchargé.
defmain():
st.title('Data Cleaning, Analysis, and Visualization App')st.sidebar.header('Upload Dataset')
uploaded_file = st.sidebar.file_uploader('Upload a CSV file', type=['csv'])agree_terms = st.sidebar.checkbox("I agree to the terms")
if uploaded_file isnotNoneand agree_terms:
df = load_data(uploaded_file)if df isnotNone:
explore_raw_data(df)
data_cleaning(df)
data_analysis(df)
data_visualization(df)
feedback_form()
Vous pouvez exécuter votre programme indépendamment ou l'importer en tant que module en utilisant la construction if __name__ == '__main__':.
if __name__ == '__main__':
main()
Accédez au terminal et accédez au chemin dans lequel réside votre projet. Exécutez ensuite la commande suivante pour démarrer l'application :
streamlit run main.py
Remplacer main.py avec le nom réel de votre script. Après avoir exécuté la commande Streamlit générera une URL locale et une URL réseau. Vous pouvez utiliser n'importe laquelle de ces URL pour interagir avec votre application.
Le résultat du programme est le suivant :
Créer des applications Web interactives pour la science des données n'a jamais été aussi simple. Vous n'avez pas besoin de compétences avancées en développement Web pour créer une interface utilisateur pour votre application.
Faut-il encore apprendre le développement Web?
Cela dépend de vos objectifs spécifiques. Si vous envisagez de créer des applications Web complexes et riches en fonctionnalités qui nécessitent un nombre étendu d'utilisateurs conception d'interface et fonctionnalités avancées, alors l'apprentissage des technologies de développement Web pourrait être bénéfique. En effet, dans Streamlit, vous disposez d'un contrôle limité sur la personnalisation fine de l'apparence et du comportement de votre application.