Crea applicazioni web interattive per progetti di data science e machine learning utilizzando solo Python, tutto grazie a Streamlit!
Streamlit è una libreria Python open source per la creazione di applicazioni Web per progetti di data science e machine learning. È progettato per essere utilizzato da data scientist e ingegneri di machine learning che non dispongono di ampie competenze di sviluppo front-end. Ha una sintassi semplice che ti consente di creare app Web interattive con poche righe di codice.
Incapsulando dettagli tecnici complessi dietro un'interfaccia intuitiva, Streamlit consente agli utenti di concentrarsi sull'esplorazione e sulla presentazione dei propri dati, prototipi o modelli in tempo reale. Ciò lo rende uno strumento prezioso per condividere rapidamente informazioni.
Installazione della libreria Streamlit
Creare un nuovo ambiente virtuale. Ciò garantirà che non vi siano conflitti di versione del pacchetto dopo l'installazione Illuminato. Poi usa pip per installare Semplifica eseguendo il seguente comando:
pip install streamlit
Quindi, verificare che l'installazione sia stata eseguita correttamente.
streamlit --version
Se l'installazione ha esito positivo, verrà visualizzata la versione Streamlit installata.
Creazione di una semplice app per la pulizia e l'analisi dei dati
Creerai una semplice applicazione web per scoprire come funziona Streamlit e le sue funzionalità. Questa applicazione sarà in grado di pulire un set di dati caricato, eseguire l'analisi dei dati e infine visualizzare i dati.
Il codice sorgente completo è disponibile in a Repositorio GitHub.
Installazione e importazione delle librerie necessarie
Inizia installando Pandas, Matplotlib e Seaborn nello stesso ambiente virtuale in cui hai installato Streamlit utilizzando il seguente comando:
pip install pandas matplotlib seaborn
Quindi crea un nuovo script Python e importa tutte le librerie installate.
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
Ciò ti consentirà di utilizzare le loro funzionalità nel tuo codice.
Caricamento di un set di dati e visualizzazione del suo contenuto
Quindi definire una funzione che leggerà un set di dati caricato. Restituirà quindi un DataFrame se l'operazione di lettura ha esito positivo. In caso contrario, verrà visualizzato un messaggio di errore nella barra laterale. L'errore si verifica quando il file non è un file CSV valido.
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
Definire un'altra funzione che utilizzerà Steamlit per visualizzare DataFrame in un formato tabellare. Lo farà solo quando l'utente controlla il file Mostra dati grezzi casella di controllo. Utilizzerà Streamlit casella di controllo, frame dati, E sottointestazione funzioni.
defexplore_raw_data(df):
st.subheader('Raw Data')
if st.checkbox('Show Raw Data'):
st.dataframe(df)
Dopo aver creato DataFrame e mostrato i dati grezzi, ora è necessario pulire i dati, analizzarli e infine visualizzarli.
Esecuzione della pulizia dei dati
Inizia definendo una funzione che eseguirà la pulizia dei dati. Questa funzione gestirà i valori mancanti nel DataFrame e le righe duplicate. Il DataFrame pulito viene quindi mostrato all'utente utilizzando st.dataframe funzione se controllano il Mostra dati puliti casella di controllo.
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 funzione mostra anche il numero di righe duplicate rimosse.
Esecuzione dell'analisi dei dati
Definire una funzione di analisi dei dati. Questa funzione mostrerà le statistiche descrittive del DataFrame e visualizzerà la mappa termica della matrice di correlazione. Utilizzerà il st.pyplot funzione per visualizzare la mappa termica sull'interfaccia utente.
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)
È possibile modificare la funzione precedente per eseguire ulteriori analisi dei dati. Ciò ti aiuterà a ricavare più approfondimenti dai tuoi dati.
Esecuzione della visualizzazione dei dati
La visualizzazione dei dati è una delle funzionalità cruciali dell'applicazione. Questo perché fornisce una visione visiva dei dati in modo a misura d'uomo. Questa funzionalità dovrebbe quindi consentire agli utenti di modificare l'aspetto dei grafici.
A tale scopo, crea una funzione che consentirà agli utenti di selezionare una colonna, impostare il numero di contenitori e scegliere un colore per l'istogramma. Genererà quindi un istogramma e un box plot e li visualizzerà utilizzando st.pyplot funzione.
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)
Ormai hai tutte le funzionalità principali dell'app.
Raccolta dei feedback degli utenti
A volte, una funzionalità potrebbe non funzionare come previsto. È quindi necessario un modo in cui gli utenti possano inviare il loro feedback. Un modo è che gli utenti ti raggiungano tramite un'e-mail. Streamlit fornisce l'interfaccia per raccogliere il feedback dell'utente ma non fornisce funzionalità integrate per inviare direttamente e-mail. Tuttavia, puoi integrare librerie o servizi esterni per inviare email dalla tua app.
Per raccogliere il feedback dell'utente, definire una funzione per presentare all'utente un modulo.
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!")
Questo modulo raccoglierà l'e-mail e il feedback dell'utente e te li invierà tramite un'e-mail.
Controllo del flusso del programma ed esecuzione dell'app
Infine, è necessaria una funzione principale che metta insieme tutte queste funzioni e controlli il flusso del programma. Questa funzione garantirà inoltre che gli utenti accettino i termini sulla privacy dei dati prima che l'applicazione elabori il set di dati caricato.
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()
Puoi eseguire il tuo programma in modo indipendente o importarlo come modulo utilizzando il costrutto if __name__ == '__main__':.
if __name__ == '__main__':
main()
Procedi al terminale e vai al percorso in cui risiede il tuo progetto. Quindi esegui il comando seguente per avviare l'app:
streamlit run main.py
Sostituire main.py con il nome effettivo del tuo script. Dopo aver eseguito il comando Streamlit genererà un URL locale e un URL di rete. Puoi utilizzare uno qualsiasi di questi URL per interagire con la tua app.
L'output del programma è il seguente:
Creare app Web interattive per la scienza dei dati non è mai stato così semplice. Non sono necessarie competenze avanzate di sviluppo web per creare un'interfaccia utente per la tua applicazione.
Dovresti ancora imparare lo sviluppo web?
Dipende dai tuoi obiettivi specifici. Se prevedi di creare applicazioni Web complesse e ricche di funzionalità che richiedono utenti esperti progettazione dell'interfaccia e funzionalità avanzate, quindi potrebbe essere l'apprendimento delle tecnologie di sviluppo web benefico. Questo perché in Streamlit hai un controllo limitato sulla personalizzazione dettagliata dell'aspetto e del comportamento della tua app.