Izradite interaktivne web aplikacije za projekte znanosti o podacima i strojnog učenja koristeći samo Python, a sve zahvaljujući Streamlitu!

Streamlit je Python biblioteka otvorenog koda za izradu web aplikacija za projekte znanosti o podacima i strojnog učenja. Osmišljen je da ga koriste znanstvenici koji se bave podacima i inženjeri strojnog učenja koji nemaju opsežne vještine front-end razvoja. Ima jednostavnu sintaksu koja vam omogućuje stvaranje interaktivnih web aplikacija s nekoliko redaka koda.

Sažimanjem složenih tehničkih detalja iza korisničkog sučelja, Streamlit omogućuje korisnicima da se usredotoče na istraživanje i predstavljanje svojih podataka, prototipova ili modela u stvarnom vremenu. To ga čini vrijednim alatom za brzo dijeljenje uvida.

Instaliranje Streamlit Library

Stvorite novo virtualno okruženje. Ovo će osigurati da nakon instalacije nema sukoba verzija paketa Potočno osvijetljen. Zatim koristite pip za instalaciju Streamlit pokretanjem sljedeće naredbe:

pip install streamlit

Zatim provjerite je li instalacija ispravno instalirana.

streamlit --version

Ako je instalacija uspješna, prikazat će se instalirana Streamlit verzija.

Izrada jednostavne aplikacije za čišćenje i analizu podataka

Napravit ćete jednostavnu web aplikaciju kako biste saznali kako Streamlit radi i njegove značajke. Ova će aplikacija moći očistiti učitani skup podataka, izvršiti analizu podataka i na kraju vizualizirati podatke.

Puni izvorni kod dostupan je u a GitHub spremište.

Instalacija i uvoz potrebnih biblioteka

Počnite instalirati Pandas, Matplotlib i Seaborn u istom virtualnom okruženju u kojem ste instalirali Streamlit pomoću sljedeće naredbe:

pip install pandas matplotlib seaborn

Zatim izradite novu Python skriptu i uvezite sve instalirane biblioteke.

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

To će vam omogućiti korištenje njihovih funkcija u vašem kodu.

Prijenos skupa podataka i prikazivanje njegovog sadržaja

Zatim definirajte funkciju koja će čitati učitani skup podataka. Zatim će vratiti DataFrame ako je operacija čitanja uspješna. Ako nije, prikazat će poruku o pogrešci na bočnoj traci. Pogreška se javlja kada datoteka nije važeća CSV datoteka.

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

Definirajte drugu funkciju koja će koristiti Steamlit za prikaz DataFramea u tabličnom formatu. To će učiniti samo kada korisnik označi Prikaži neobrađene podatke potvrdni okvir. Koristit će Streamlit's potvrdni okvir, podatkovni okvir, i podnaslov funkcije.

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

Nakon što ste izradili DataFrame i prikazali neobrađene podatke, sada trebate očistiti podatke, analizirati ih i konačno vizualizirati.

Izvođenje čišćenja podataka

Započnite definiranjem funkcije koja će izvršiti čišćenje podataka. Ova će funkcija obraditi vrijednosti koje nedostaju u DataFrameu i duplicirane retke. Očišćeni DataFrame zatim se prikazuje korisniku pomoću st.dataframe funkcioniraju ako provjere Prikaži očišćene podatke potvrdni okvir.

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 također prikazuje broj uklonjenih duplih redaka.

Izvođenje analize podataka

Definirajte funkciju analize podataka. Ova funkcija će prikazati deskriptivnu statistiku DataFramea i prikazati toplinsku kartu korelacijske matrice. Iskoristit će st.pyplot funkciju za prikaz toplinske karte na korisničkom sučelju.

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)

Gornju funkciju možete izmijeniti kako biste izvršili više analiza podataka. To će vam pomoći da steknete više uvida iz svojih podataka.

Izvođenje vizualizacije podataka

Vizualizacija podataka jedna je od ključnih funkcionalnosti aplikacije. To je zato što daje uvid u podatke vizualno na čovjeku prihvatljiv način. Ova bi funkcionalnost stoga trebala omogućiti korisnicima promjenu izgleda parcela.

Da biste to postigli, izradite funkciju koja će korisnicima omogućiti odabir stupca, postavljanje broja spremnika i odabir boje za histogram. Zatim će generirati histogram i okvirni dijagram i prikazati ih pomoću st.pyplot funkcija.

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)

Do sada imate sve osnovne funkcije aplikacije.

Prikupljanje povratnih informacija korisnika

Ponekad funkcija možda neće raditi kako se očekuje. Zatim vam je potreban način na koji korisnici mogu poslati svoje povratne informacije. Jedan način je da vam se korisnici obrate putem e-pošte. Streamlit pruža sučelje za prikupljanje povratnih informacija korisnika, ali ne pruža ugrađenu funkciju za izravno slanje e-pošte. Međutim, možete integrirati vanjske biblioteke ili usluge za slanje e-pošte iz svoje aplikacije.

Da biste prikupili povratne informacije korisnika, definirajte funkciju koja će korisniku prikazati obrazac.

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

Ovaj obrazac će prikupiti korisničku e-poštu i povratne informacije i poslati vam ih putem e-pošte.

Kontrola tijeka vašeg programa i pokretanje aplikacije

Na kraju, potrebna vam je glavna funkcija koja će spojiti sve ove funkcije i kontrolirati tijek programa. Ova funkcija također će osigurati da korisnici pristanu na vaše uvjete privatnosti podataka prije nego što aplikacija obradi njihov učitani skup podataka.

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

Možete pokrenuti svoj program samostalno ili ga uvesti kao modul pomoću if __name__ == '__main__': konstrukcije.

if __name__ == '__main__':
main()

Nastavite do terminala i navigirajte do staze na kojoj se nalazi vaš projekt. Zatim pokrenite sljedeću naredbu za pokretanje aplikacije:

streamlit run main.py

Zamijeniti glavni.py sa stvarnim nazivom vaše skripte. Nakon pokretanja naredbe Streamlit će generirati lokalni URL i mrežni URL. Možete koristiti bilo koji od ovih URL-ova za interakciju sa svojom aplikacijom.

Izlaz programa je sljedeći:

Stvaranje interaktivnih web-aplikacija za znanost o podacima nikada nije bilo lakše. Za izradu korisničkog sučelja za vašu aplikaciju nisu vam potrebne napredne vještine web razvoja.

Trebate li i dalje učiti web razvoj?

Ovisi o vašim specifičnim ciljevima. Ako predviđate izgradnju složenih web aplikacija bogatih značajkama koje zahtijevaju opsežan broj korisnika dizajn sučelja i napredne funkcionalnosti, onda bi učenje tehnologija web razvoja moglo biti blagotvorno. To je zato što u Streamlitu imate ograničenu kontrolu nad preciznom prilagodbom izgleda i ponašanja svoje aplikacije.