Ustvarite interaktivne spletne aplikacije za projekte podatkovne znanosti in strojnega učenja z uporabo samo Pythona, vse zahvaljujoč Streamlitu!

Streamlit je odprtokodna knjižnica Python za ustvarjanje spletnih aplikacij za projekte podatkovne znanosti in strojnega učenja. Zasnovan je za uporabo podatkovnih znanstvenikov in inženirjev strojnega učenja, ki nimajo obsežnih veščin za front-end razvoj. Ima preprosto sintakso, ki vam omogoča ustvarjanje interaktivnih spletnih aplikacij z nekaj vrsticami kode.

Z vključevanjem zapletenih tehničnih podrobnosti za uporabniku prijazen vmesnik Streamlit omogoča uporabnikom, da se osredotočijo na raziskovanje in predstavitev svojih podatkov, prototipov ali modelov v realnem času. Zaradi tega je dragoceno orodje za hitro izmenjavo vpogledov.

Namestitev knjižnice Streamlit

Ustvarite novo virtualno okolje. To bo zagotovilo, da po namestitvi ne bo navzkrižja različic paketa Streamlit. Potem uporabite pip za namestitev Streamlit z izvajanjem naslednjega ukaza:

instagram viewer
pip install streamlit

Nato preverite, ali je namestitev pravilno nameščena.

streamlit --version

Če je namestitev uspešna, se prikaže nameščena različica Streamlit.

Izdelava preproste aplikacije za čiščenje in analizo podatkov

Ustvarili boste preprosto spletno aplikacijo, s katero boste izvedeli, kako deluje Streamlit in njegove funkcije. Ta aplikacija bo lahko očistila naložen nabor podatkov, izvedla analizo podatkov in na koncu vizualizirala podatke.

Celotna izvorna koda je na voljo v a Repozitorij GitHub.

Namestitev in uvoz potrebnih knjižnic

Začnite z namestitvijo Pandas, Matplotlib in Seaborn v isto virtualno okolje, v katerem ste namestili Streamlit, z naslednjim ukazom:

pip install pandas matplotlib seaborn

Nato ustvarite nov skript Python in uvozite vse nameščene knjižnice.

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

To vam bo omogočilo uporabo njihovih funkcij v vaši kodi.

Nalaganje nabora podatkov in prikaz njegove vsebine

Nato definirajte funkcijo, ki bo prebrala naložen nabor podatkov. Nato bo vrnil DataFrame, če je operacija branja uspešna. Če ne, bo v stranski vrstici prikazano sporočilo o napaki. Napaka se pojavi, ko datoteka ni veljavna datoteka CSV.

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

Določite drugo funkcijo, ki bo uporabljala Steamlit za prikaz DataFrame v obliki tabele. To bo storil šele, ko bo uporabnik označil Prikaži neobdelane podatke potrditveno polje. Uporabil bo Streamlit's potrditveno polje, podatkovni okvir, in podnaslov funkcije.

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

Ko ste ustvarili DataFrame in prikazali neobdelane podatke, morate zdaj podatke očistiti, analizirati in končno vizualizirati.

Izvajanje čiščenja podatkov

Začnite z definiranjem funkcije, ki bo izvajala čiščenje podatkov. Ta funkcija bo obravnavala manjkajoče vrednosti v DataFrame in podvojene vrstice. Očiščen DataFrame se nato prikaže uporabniku z uporabo st.dataframe funkcijo, če preverijo Prikaži očiščene podatke potrditveno polje.

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)

Funkcija prikazuje tudi število odstranjenih podvojenih vrstic.

Izvajanje analize podatkov

Definirajte funkcijo analize podatkov. Ta funkcija bo prikazala opisno statistiko DataFrame in prikazala toplotni zemljevid korelacijske matrike. Uporabil bo st.pyplot funkcijo za prikaz toplotne karte na uporabniškem vmesniku.

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)

Zgornjo funkcijo lahko spremenite, da izvedete več analiz podatkov. To vam bo pomagalo pridobiti več vpogledov iz vaših podatkov.

Izvajanje vizualizacije podatkov

Vizualizacija podatkov je ena izmed ključnih funkcionalnosti aplikacije. To pa zato, ker daje vpogled v podatke vizualno na človeku prijazen način. Ta funkcionalnost naj bi torej uporabnikom omogočala spreminjanje videza parcel.

Če želite to doseči, ustvarite funkcijo, ki bo uporabnikom omogočala, da izberejo stolpec, nastavijo število binov in izberejo barvo za histogram. Nato bo ustvaril histogram in škatlasti izris ter ju prikazal z uporabo st.pyplot funkcijo.

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)

Zdaj imate vse osnovne funkcije aplikacije.

Zbiranje povratnih informacij uporabnikov

Včasih funkcija morda ne bo delovala po pričakovanjih. Nato potrebujete način, da uporabniki pošljejo svoje povratne informacije. Eden od načinov je, da vas uporabniki kontaktirajo prek elektronske pošte. Streamlit ponuja vmesnik za zbiranje povratnih informacij uporabnikov, vendar ne nudi vgrajene funkcije za neposredno pošiljanje e-pošte. Vendar pa lahko integrirate zunanje knjižnice ali storitve za pošiljanje e-pošte iz vaše aplikacije.

Če želite zbrati povratne informacije uporabnika, definirajte funkcijo, ki bo uporabniku predstavila obrazec.

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

Ta obrazec bo zbral uporabnikovo e-pošto in povratne informacije ter vam jih poslal po e-pošti.

Nadzor poteka vašega programa in izvajanje aplikacije

Nazadnje potrebujete glavno funkcijo, ki bo združila vse te funkcije in nadzorovala potek programa. Ta funkcija bo tudi zagotovila, da se uporabniki strinjajo z vašimi pogoji zasebnosti podatkov, preden aplikacija obdela njihov naloženi nabor podatkov.

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()

Program lahko izvajate samostojno ali pa ga uvozite kot modul z uporabo konstrukcije if __name__ == '__main__':.

if __name__ == '__main__':
main()

Nadaljujte do terminala in se pomaknite do poti, na kateri je vaš projekt. Nato zaženite naslednji ukaz, da zaženete aplikacijo:

streamlit run main.py

Zamenjati main.py z dejanskim imenom vašega skripta. Po zagonu ukaza bo Streamlit ustvaril lokalni URL in omrežni URL. Za interakcijo s svojo aplikacijo lahko uporabite katerega koli od teh URL-jev.

Rezultat programa je naslednji:

Ustvarjanje interaktivnih spletnih aplikacij za podatkovno znanost še nikoli ni bilo lažje. Za ustvarjanje uporabniškega vmesnika za vašo aplikacijo ne potrebujete naprednih veščin spletnega razvoja.

Bi se morali še učiti spletnega razvoja?

Odvisno od vaših posebnih ciljev. Če predvidevate izdelavo zapletenih spletnih aplikacij, bogatih s funkcijami, ki zahtevajo obsežno uporabo oblikovanje vmesnika in napredne funkcionalnosti, bi lahko bilo učenje tehnologij spletnega razvoja koristno. To je zato, ker imate v Streamlitu omejen nadzor nad natančnim prilagajanjem videza in vedenja vaše aplikacije.