Skapa interaktiva webbapplikationer för datavetenskap och maskininlärningsprojekt med endast Python, allt tack vare Streamlit!
Streamlit är ett Python-bibliotek med öppen källkod för att skapa webbapplikationer för datavetenskap och maskininlärningsprojekt. Den är designad för att användas av datavetare och maskininlärningsingenjörer som inte har omfattande färdigheter i frontend-utveckling. Den har en enkel syntax som låter dig skapa interaktiva webbappar med några rader kod.
Genom att kapsla in komplexa tekniska detaljer bakom ett användarvänligt gränssnitt tillåter Streamlit användare att fokusera på att utforska och presentera sina data, prototyper eller modeller i realtid. Detta gör det till ett värdefullt verktyg för att snabbt dela insikter.
Installera Streamlit Library
Skapa en ny virtuell miljö. Detta säkerställer att det inte finns någon paketversionskonflikt efter installationen Strömbelyst. Sedan använd pip för att installera Effektivisera genom att köra följande kommando:
pip install streamlit
Kontrollera sedan att installationen är korrekt installerad.
streamlit --version
Om installationen lyckas visas den installerade Streamlit-versionen.
Bygga en enkel app för datarensning och analys
Du kommer att skapa en enkel webbapplikation för att lära dig hur Streamlit fungerar och dess funktioner. Denna applikation kommer att kunna rensa en uppladdad datauppsättning, utföra dataanalys och slutligen visualisera data.
Den fullständiga källkoden finns tillgänglig i en GitHub-förråd.
Installera och importera nödvändiga bibliotek
Börja med att installera Pandas, Matplotlib och Seaborn i samma virtuella miljö som du installerade Streamlit med följande kommando:
pip install pandas matplotlib seaborn
Skapa sedan ett nytt Python-skript och importera alla installerade bibliotek.
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
Detta gör att du kan använda deras funktioner i din kod.
Ladda upp en datamängd och visa dess innehåll
Definiera sedan en funktion som ska läsa en uppladdad datauppsättning. Den kommer sedan att returnera en DataFrame om läsoperationen lyckas. Om inte, kommer det att visa ett felmeddelande i sidofältet. Felet uppstår när filen inte är en giltig CSV-fil.
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
Definiera en annan funktion som kommer att använda Steamlit för att visa DataFrame i ett tabellformat. Det kommer bara att göra detta när användaren kontrollerar Visa rådata kryssruta. Den kommer att använda Streamlits kryssruta, dataram, och underrubrik funktioner.
defexplore_raw_data(df):
st.subheader('Raw Data')
if st.checkbox('Show Raw Data'):
st.dataframe(df)
Efter att ha skapat DataFrame och visat rådata, måste du nu rensa data, analysera den och slutligen visualisera den.
Utför datarensning
Börja med att definiera en funktion som ska utföra datarensning. Denna funktion kommer att hantera saknade värden i DataFrame och dubbletter av rader. Den rengjorda DataFrame visas sedan för användaren som använder st.dataframe fungerar om de kontrollerar Visa rensade data kryssruta.
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)
Funktionen visar också antalet borttagna dubbletter.
Utföra dataanalys
Definiera en dataanalysfunktion. Denna funktion kommer att visa beskrivande statistik för DataFrame och visa korrelationsmatrisens värmekarta. Den kommer att använda st.pyplot funktion för att visa värmekartan i användargränssnittet.
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)
Du kan ändra ovanstående funktion för att utföra mer dataanalys. Detta kommer att hjälpa dig att få fler insikter från dina data.
Utföra datavisualisering
Datavisualisering är en av applikationens avgörande funktioner. Detta eftersom det ger en inblick i datan visuellt på ett människovänligt sätt. Denna funktion bör därför tillåta användarna att ändra utseendet på tomterna.
För att åstadkomma detta, skapa en funktion som tillåter användare att välja en kolumn, ställa in antalet fack och välja en färg för histogrammet. Det kommer sedan att generera ett histogram och en boxplot och visar dem med hjälp av st.pyplot fungera.
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)
Vid det här laget har du alla kärnfunktioner i appen.
Samla in användarnas feedback
Ibland kanske en funktion inte fungerar som förväntat. Du behöver då ett sätt för användarna att skicka in sin feedback. Ett sätt är att användarna når dig via ett e-postmeddelande. Streamlit tillhandahåller gränssnittet för att samla in användarens feedback men ger inte inbyggd funktionalitet för att skicka e-post direkt. Du kan dock integrera externa bibliotek eller tjänster för att skicka e-post från din app.
För att samla in användarens feedback, definiera en funktion för att presentera ett formulär för användaren.
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!")
Detta formulär samlar in användarens e-post och feedback och skickar det till dig via e-post.
Styra flödet av ditt program och köra appen
Slutligen behöver du en huvudfunktion som kommer att sätta ihop alla dessa funktioner och styra programmets flöde. Den här funktionen säkerställer också att användarna godkänner dina datasekretessvillkor innan applikationen behandlar deras uppladdade datauppsättning.
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()
Du kan köra ditt program självständigt eller importera det som en modul använder if __name__ == '__main__':-konstruktionen.
if __name__ == '__main__':
main()
Fortsätt till terminalen och navigera till sökvägen där ditt projekt ligger. Kör sedan följande kommando för att starta appen:
streamlit run main.py
Byta ut main.py med det faktiska namnet på ditt manus. Efter att ha kört kommandot kommer Streamlit att generera en lokal URL och en nätverks-URL. Du kan använda vilken som helst av dessa webbadresser för att interagera med din app.
Resultatet av programmet är som följer:
Att skapa interaktiva webbappar för datavetenskap har aldrig varit enklare. Du behöver inga avancerade kunskaper i webbutveckling för att skapa ett användargränssnitt för din applikation.
Ska du fortfarande lära dig webbutveckling?
Det beror på dina specifika mål. Om du räknar med att bygga komplexa, funktionsrika webbapplikationer som kräver omfattande användare gränssnittsdesign och avancerade funktioner, då kan det vara att lära sig webbutvecklingstekniker välgörande. Detta beror på att du i Streamlit har begränsad kontroll över den finkorniga anpassningen av din apps utseende och beteende.