Creați aplicații web interactive pentru știința datelor și proiecte de învățare automată folosind doar Python, totul datorită Streamlit!
Streamlit este o bibliotecă Python open-source pentru crearea de aplicații web pentru știința datelor și proiecte de învățare automată. Este conceput pentru a fi utilizat de oamenii de știință de date și de inginerii de învățare automată care nu au abilități extinse de dezvoltare front-end. Are o sintaxă simplă care vă permite să creați aplicații web interactive cu câteva linii de cod.
Prin încapsularea detaliilor tehnice complexe în spatele unei interfețe ușor de utilizat, Streamlit permite utilizatorilor să se concentreze pe explorarea și prezentarea datelor, prototipurilor sau modelelor lor în timp real. Acest lucru îl face un instrument valoros pentru partajarea rapidă a informațiilor.
Instalarea bibliotecii Streamlit
Creați un nou mediu virtual. Acest lucru va asigura că nu există niciun conflict de versiune a pachetului după instalare Streamlit. Apoi utilizați pip pentru a instala Streamlit rulând următoarea comandă:
pip install streamlit
Apoi, verificați că instalarea este instalată corect.
streamlit --version
Dacă instalarea are succes, se va afișa versiunea Streamlit instalată.
Construirea unei aplicații simple de curățare și analiză a datelor
Veți crea o aplicație web simplă pentru a afla cum funcționează Streamlit și caracteristicile sale. Această aplicație va putea să curețe un set de date încărcat, să efectueze o analiză a datelor și, în sfârșit, să vizualizeze datele.
Codul sursă complet este disponibil în a Depozitul GitHub.
Instalarea și importarea bibliotecilor necesare
Începeți prin a instala Pandas, Matplotlib și Seaborn în același mediu virtual pe care l-ați instalat Streamlit folosind următoarea comandă:
pip install pandas matplotlib seaborn
Apoi creați un nou script Python și importați toate bibliotecile instalate.
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
Acest lucru vă va permite să utilizați funcționalitățile lor în codul dvs.
Încărcarea unui set de date și afișarea conținutului acestuia
Apoi definiți o funcție care va citi un set de date încărcat. Va returna apoi un DataFrame dacă operația de citire are succes. Dacă nu, va afișa un mesaj de eroare în bara laterală. Eroarea apare atunci când fișierul nu este un fișier CSV valid.
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
Definiți o altă funcție care va folosi Steamlit pentru a afișa DataFrame într-un format tabelar. Acesta va face acest lucru numai atunci când utilizatorul verifică Afișați datele brute Caseta de bifat. Va folosi Streamlit's Caseta de bifat, cadru de date, și subtitlu funcții.
defexplore_raw_data(df):
st.subheader('Raw Data')
if st.checkbox('Show Raw Data'):
st.dataframe(df)
După ce ați creat DataFrame și afișat datele brute, acum trebuie să curățați datele, să le analizați și, în sfârșit, să le vizualizați.
Efectuarea curățării datelor
Începeți prin a defini o funcție care va efectua curățarea datelor. Această funcție va gestiona valorile lipsă din DataFrame și rândurile duplicate. DataFrame curățat este apoi afișat utilizatorului folosind st.dataframe funcția dacă verifică Afișați datele curățate Caseta de bifat.
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)
Funcția arată, de asemenea, numărul de rânduri duplicate eliminate.
Efectuarea analizei datelor
Definiți o funcție de analiză a datelor. Această funcție va afișa statisticile descriptive ale DataFrame și va afișa harta termică a matricei de corelație. Acesta va utiliza st.pyplot funcția de afișare a hărții termice pe interfața cu utilizatorul.
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)
Puteți modifica funcția de mai sus pentru a efectua mai multe analize de date. Acest lucru vă va ajuta să obțineți mai multe informații din datele dvs.
Efectuarea vizualizării datelor
Vizualizarea datelor este una dintre funcționalitățile cruciale ale aplicației. Acest lucru se datorează faptului că oferă o perspectivă vizuală asupra datelor într-un mod prietenos pentru oameni. Prin urmare, această funcționalitate ar trebui să permită utilizatorilor să schimbe aspectul parcelelor.
Pentru a realiza acest lucru, creați o funcție care va permite utilizatorilor să selecteze o coloană, să seteze numărul de coșuri și să aleagă o culoare pentru histogramă. Va genera apoi o histogramă și un diagramă cu case și le va afișa folosind st.pyplot funcţie.
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)
Până acum aveți toate funcționalitățile de bază ale aplicației.
Colectarea feedback-ului utilizatorilor
Uneori, este posibil ca o funcționalitate să nu funcționeze conform așteptărilor. Apoi aveți nevoie de o modalitate prin care utilizatorii să-și trimită feedback-ul. O modalitate este ca utilizatorii să vă ajungă printr-un e-mail. Streamlit oferă interfața pentru a colecta feedback-ul utilizatorului, dar nu oferă funcționalitate încorporată pentru a trimite direct e-mailuri. Cu toate acestea, puteți integra biblioteci sau servicii externe pentru a trimite e-mailuri din aplicația dvs.
Pentru a colecta feedback-ul utilizatorului, definiți o funcție pentru a prezenta utilizatorului un formular.
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!")
Acest formular va colecta e-mailul și feedback-ul utilizatorului și vi le va trimite printr-un e-mail.
Controlarea fluxului programului dvs. și rularea aplicației
În cele din urmă, aveți nevoie de o funcție principală care va pune împreună toate aceste funcții și va controla fluxul programului. Această funcție va asigura, de asemenea, că utilizatorii sunt de acord cu termenii dvs. de confidențialitate a datelor înainte ca aplicația să prelucreze setul de date încărcat.
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()
Puteți rula programul rulat independent sau îl puteți importa ca modul folosind if __name__ == '__main__': construct.
if __name__ == '__main__':
main()
Mergeți la terminal și navigați la calea în care se află proiectul dvs. Apoi rulați următoarea comandă pentru a porni aplicația:
streamlit run main.py
A inlocui principal.py cu numele real al scenariului dvs. După rularea comenzii Streamlit va genera o adresă URL locală și o adresă URL de rețea. Puteți folosi oricare dintre aceste adrese URL pentru a interacționa cu aplicația dvs.
Rezultatul programului este după cum urmează:
Crearea de aplicații web interactive pentru știința datelor nu a fost niciodată mai ușoară. Nu aveți nevoie de abilități avansate de dezvoltare web pentru a crea o interfață de utilizator pentru aplicația dvs.
Ar trebui să mai înveți dezvoltarea web?
Depinde de obiectivele tale specifice. Dacă anticipați să construiți aplicații web complexe, bogate în funcții, care necesită un utilizator extins design de interfață și funcționalități avansate, apoi învățarea tehnologiilor de dezvoltare web ar putea fi benefic. Acest lucru se datorează faptului că în Streamlit aveți un control limitat asupra personalizării fine a aspectului și comportamentului aplicației dvs.