Lag interaktive nettapplikasjoner for datavitenskap og maskinlæringsprosjekter med kun Python, alt takket være Streamlit!

Streamlit er et åpen kildekode Python-bibliotek for å lage webapplikasjoner for datavitenskap og maskinlæringsprosjekter. Den er designet for å brukes av dataforskere og maskinlæringsingeniører som ikke har omfattende ferdigheter i frontend-utvikling. Den har en enkel syntaks som lar deg lage interaktive nettapper med noen få linjer med kode.

Ved å kapsle inn komplekse tekniske detaljer bak et brukervennlig grensesnitt, lar Streamlit brukere fokusere på å utforske og presentere data, prototyper eller modeller i sanntid. Dette gjør det til et verdifullt verktøy for raskt å dele innsikt.

Installere Streamlit-biblioteket

Lag et nytt virtuelt miljø. Dette vil sikre at det ikke er noen pakkeversjonskonflikt etter installasjon Strømbelyst. Deretter bruk pip for å installere Strømlys ved å kjøre følgende kommando:

pip install streamlit

Kontroller deretter at installasjonen er riktig installert.

instagram viewer
streamlit --version

Hvis installasjonen er vellykket, vises den installerte Streamlit-versjonen.

Bygge en enkel app for datarensing og analyse

Du vil lage en enkel nettapplikasjon for å lære hvordan Streamlit fungerer og dens funksjoner. Denne applikasjonen vil kunne rense et opplastet datasett, utføre dataanalyse og til slutt visualisere dataene.

Den fullstendige kildekoden er tilgjengelig i en GitHub-depot.

Installere og importere de nødvendige bibliotekene

Start med å installere Pandas, Matplotlib og Seaborn i det samme virtuelle miljøet du installerte Streamlit ved å bruke følgende kommando:

pip install pandas matplotlib seaborn

Deretter oppretter du et nytt Python-skript og importerer alle installerte biblioteker.

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

Dette vil gjøre deg i stand til å bruke funksjonaliteten deres i koden din.

Laste opp et datasett og vise innholdet

Definer deretter en funksjon som skal lese et opplastet datasett. Den vil da returnere en DataFrame hvis leseoperasjonen er vellykket. Hvis ikke, vil den vise en feilmelding i sidefeltet. Feilen oppstå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 annen funksjon som vil bruke Steamlit til å vise DataFrame i et tabellformat. Det vil bare gjøre dette når brukeren sjekker Vis rådata avmerkingsboksen. Den vil bruke Streamlits avmerkingsboksen, Dataramme, og underoverskrift funksjoner.

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

Etter å ha opprettet DataFrame og vist rådata, må du nå rense dataene, analysere dem og til slutt visualisere dem.

Utføre datarensing

Start med å definere en funksjon som skal utføre datarensing. Denne funksjonen vil håndtere manglende verdier i DataFrame og dupliserte rader. Den rensede DataFrame vises deretter til brukeren som bruker st.dataramme funksjon hvis de sjekker Vis rensede data avmerkingsboksen.

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)

Funksjonen viser også antall fjernede dupliserte rader.

Utføre dataanalyse

Definer en dataanalysefunksjon. Denne funksjonen vil vise beskrivende statistikk for DataFrame og vise korrelasjonsmatrisens varmekart. Den vil utnytte st.pyplot funksjon for å vise varmekartet på brukergrensesnittet.

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 endre funksjonen ovenfor for å utføre mer dataanalyse. Dette vil hjelpe deg å få mer innsikt fra dataene dine.

Utføre datavisualisering

Datavisualisering er en av de avgjørende funksjonene til applikasjonen. Dette er fordi det gir et innblikk i dataene visuelt på en menneskevennlig måte. Denne funksjonaliteten skal derfor tillate brukerne å endre utseendet på tomtene.

For å oppnå dette, lag en funksjon som lar brukere velge en kolonne, angi antall binger og velge en farge for histogrammet. Den vil da generere et histogram og et boksplott og vise dem ved hjelp av st.pyplot funksjon.

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)

Nå har du alle kjernefunksjonene til appen.

Innhenting av brukernes tilbakemelding

Noen ganger kan det hende at en funksjonalitet ikke fungerer som forventet. Du trenger da en måte for brukerne å sende inn sine tilbakemeldinger. En måte er ved at brukerne når deg via en e-post. Streamlit gir grensesnittet for å samle brukerens tilbakemeldinger, men har ikke innebygd funksjonalitet for å sende e-poster direkte. Du kan imidlertid integrere eksterne biblioteker eller tjenester for å sende e-post fra appen din.

For å samle brukerens tilbakemeldinger, definer en funksjon for å presentere brukeren med et skjema.

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!")

Dette skjemaet vil samle inn brukerens e-post og tilbakemelding og sende det til deg via en e-post.

Kontrollere flyten av programmet og kjøre appen

Til slutt trenger du en hovedfunksjon som vil sette alle disse funksjonene sammen og kontrollere flyten av programmet. Denne funksjonen vil også sikre at brukerne godtar personvernvilkårene dine før applikasjonen behandler det opplastede datasettet.

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 kjøre programmet ditt uavhengig eller importere det som en modul ved å bruke if __name__ == '__main__':-konstruksjonen.

if __name__ == '__main__':
main()

Fortsett til terminalen og naviger til banen der prosjektet ditt ligger. Kjør deretter følgende kommando for å starte appen:

streamlit run main.py

Erstatte main.py med det faktiske navnet på manuset ditt. Etter å ha kjørt kommandoen vil Streamlit generere en lokal URL og en nettverks-URL. Du kan bruke hvilken som helst av disse nettadressene til å samhandle med appen din.

Utgangen av programmet er som følger:

Det har aldri vært enklere å lage interaktive nettapper for datavitenskap. Du trenger ikke avanserte ferdigheter i webutvikling for å lage et brukergrensesnitt for applikasjonen din.

Bør du fortsatt lære webutvikling?

Det avhenger av dine spesifikke mål. Hvis du forventer å bygge komplekse, funksjonsrike webapplikasjoner som krever omfattende brukere grensesnittdesign og avanserte funksjoner, så kan det å lære webutviklingsteknologi være gunstig. Dette er fordi du i Streamlit har begrenset kontroll over den finmaskede tilpasningen av appens utseende og oppførsel.