Opret interaktive webapplikationer til datavidenskab og maskinlæringsprojekter ved kun at bruge Python, alt takket være Streamlit!

Streamlit er et open source Python-bibliotek til at skabe webapplikationer til datavidenskab og maskinlæringsprojekter. Det er designet til at blive brugt af datavidenskabsmænd og maskinlæringsingeniører, som ikke har omfattende frontend-udviklingsfærdigheder. Den har en simpel syntaks, der giver dig mulighed for at oprette interaktive webapps med et par linjer kode.

Ved at indkapsle komplekse tekniske detaljer bag en brugervenlig grænseflade giver Streamlit brugerne mulighed for at fokusere på at udforske og præsentere deres data, prototyper eller modeller i realtid. Dette gør det til et værdifuldt værktøj til hurtigt at dele indsigt.

Installation af Streamlit-biblioteket

Opret et nyt virtuelt miljø. Dette sikrer, at der ikke er nogen pakkeversionskonflikt efter installation Strømbelyst. Derefter brug pip til at installere Strømbelyst ved at køre følgende kommando:

instagram viewer
pip install streamlit

Kontroller derefter, at installationen er installeret korrekt.

streamlit --version

Hvis installationen lykkes, vises den installerede Streamlit-version.

Opbygning af en simpel app til datarensning og -analyse

Du vil oprette en simpel webapplikation for at lære, hvordan Streamlit fungerer og dets funktioner. Denne applikation vil være i stand til at rense et uploadet datasæt, udføre dataanalyse og til sidst visualisere dataene.

Den fulde kildekode er tilgængelig i en GitHub-depot.

Installation og import af de nødvendige biblioteker

Start med at installere Pandas, Matplotlib og Seaborn i det samme virtuelle miljø, som du installerede Streamlit ved hjælp af følgende kommando:

pip install pandas matplotlib seaborn

Opret derefter et nyt Python-script og importer alle de installerede biblioteker.

import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

Dette vil gøre dig i stand til at bruge deres funktionaliteter i din kode.

Upload af et datasæt og visning af dets indhold

Definer derefter en funktion, der vil læse et uploadet datasæt. Det vil derefter returnere en DataFrame, hvis læseoperationen er vellykket. Hvis ikke, vil den vise en fejlmeddelelse i sidebjælken. Fejlen opstår, når filen ikke er en gyldig 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

Definer en anden funktion, der vil bruge Steamlit til at vise DataFrame i et tabelformat. Det vil kun gøre dette, når brugeren tjekker Vis rådata afkrydsningsfeltet. Det vil bruge Streamlit's afkrydsningsfeltet, dataramme, og underoverskrift funktioner.

defexplore_raw_data(df):
st.subheader('Raw Data')
if st.checkbox('Show Raw Data'):
st.dataframe(df)

Efter at have oprettet DataFrame og vist rådata, skal du nu rense dataene, analysere dem og til sidst visualisere dem.

Udførelse af datarensning

Start med at definere en funktion, der skal udføre datarensning. Denne funktion vil håndtere manglende værdier i DataFrame og dublerede rækker. Den rensede DataFrame vises derefter til brugeren, der bruger st.dataramme funktion, hvis de tjekker Vis rensede data afkrydsningsfeltet.

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 viser også antallet af fjernede dubletrækker.

Udførelse af dataanalyse

Definer en dataanalysefunktion. Denne funktion vil vise beskrivende statistik for DataFrame og vise korrelationsmatrix-varmekortet. Det vil udnytte st.pyplot funktion til at vise varmekortet på brugergrænsefladen.

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 ændre ovenstående funktion for at udføre mere dataanalyse. Dette vil hjælpe dig med at få mere indsigt fra dine data.

Udførelse af datavisualisering

Datavisualisering er en af ​​de afgørende funktioner i applikationen. Det giver nemlig et indblik i dataene visuelt på en menneskevenlig måde. Denne funktionalitet skulle derfor give brugerne mulighed for at ændre udseendet af plottene.

For at opnå dette skal du oprette en funktion, der giver brugerne mulighed for at vælge en kolonne, indstille antallet af beholdere og vælge en farve til histogrammet. Det vil derefter generere et histogram og et boksplot og viser dem vha st.pyplot fungere.

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)

Nu har du alle kernefunktionerne i appen.

Indsamling af brugernes feedback

Nogle gange fungerer en funktion muligvis ikke som forventet. Du har så brug for en måde, hvorpå brugerne kan sende deres feedback. En måde er ved at brugerne kontakter dig via en e-mail. Streamlit giver grænsefladen til at indsamle brugerens feedback, men har ikke indbygget funktionalitet til at sende e-mails direkte. Du kan dog integrere eksterne biblioteker eller tjenester for at sende e-mails fra din app.

For at indsamle brugerens feedback skal du definere en funktion til at præsentere brugeren for en 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!")

Denne formular vil indsamle brugerens e-mail og feedback og sende den til dig via en e-mail.

Styring af dit programs flow og kørsel af appen

Til sidst har du brug for en hovedfunktion, der vil sætte alle disse funktioner sammen og styre programmets flow. Denne funktion vil også sikre, at brugerne accepterer dine databeskyttelsesvilkår, før applikationen behandler deres uploadede datasæt.

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øre dit program uafhængigt eller importere det som et modul ved at bruge if __name__ == '__main__': konstruktionen.

if __name__ == '__main__':
main()

Fortsæt til terminalen og naviger til stien, hvor dit projekt ligger. Kør derefter følgende kommando for at starte appen:

streamlit run main.py

Erstatte main.py med det faktiske navn på dit manuskript. Efter at have kørt kommandoen genererer Streamlit en lokal URL og en netværks-URL. Du kan bruge enhver af disse webadresser til at interagere med din app.

Udgangen af ​​programmet er som følger:

Det har aldrig været nemmere at skabe interaktive webapps til datavidenskab. Du behøver ikke avancerede webudviklingsfærdigheder for at skabe en brugergrænseflade til din applikation.

Skal du stadig lære webudvikling?

Det afhænger af dine specifikke mål. Hvis du forventer at bygge komplekse, funktionsrige webapplikationer, der kræver omfattende brugere grænsefladedesign og avancerede funktionaliteter, så kunne lære webudviklingsteknologier være gavnlig. Dette skyldes, at du i Streamlit har begrænset kontrol over den finmaskede tilpasning af din apps udseende og adfærd.