Vytvářejte interaktivní webové aplikace pro datovou vědu a projekty strojového učení pouze pomocí Pythonu, to vše díky Streamlit!

Streamlit je open-source Python knihovna pro vytváření webových aplikací pro datovou vědu a projekty strojového učení. Je navržen tak, aby jej mohli používat datoví vědci a inženýři strojového učení, kteří nemají rozsáhlé dovednosti v oblasti front-endového vývoje. Má jednoduchou syntaxi, která vám umožňuje vytvářet interaktivní webové aplikace s několika řádky kódu.

Zapouzdřením složitých technických detailů do uživatelsky přívětivého rozhraní umožňuje Streamlit uživatelům soustředit se na zkoumání a prezentaci jejich dat, prototypů nebo modelů v reálném čase. Díky tomu je cenným nástrojem pro rychlé sdílení poznatků.

Instalace knihovny Streamlit

Vytvořte nové virtuální prostředí. Tím zajistíte, že po instalaci nedojde ke konfliktu verzí balíčku Streamlit. Pak k instalaci použijte pip Streamlit spuštěním následujícího příkazu:

pip install streamlit

Poté ověřte, zda je instalace správně nainstalována.

instagram viewer
streamlit --version

Pokud je instalace úspěšná, zobrazí se nainstalovaná verze Streamlit.

Vytvoření jednoduché aplikace pro čištění a analýzu dat

Vytvoříte si jednoduchou webovou aplikaci, ve které se dozvíte, jak Streamlit funguje a jaké má funkce. Tato aplikace bude schopna vyčistit nahranou datovou sadu, provést analýzu dat a nakonec data vizualizovat.

Úplný zdrojový kód je k dispozici v a úložiště GitHub.

Instalace a import potřebných knihoven

Začněte instalací Pandas, Matplotlib a Seaborn ve stejném virtuálním prostředí, ve kterém jste nainstalovali Streamlit pomocí následujícího příkazu:

pip install pandas matplotlib seaborn

Poté vytvořte nový skript Python a importujte všechny nainstalované knihovny.

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

To vám umožní používat jejich funkce ve vašem kódu.

Nahrání datové sady a zobrazení jejího obsahu

Poté definujte funkci, která bude číst nahranou datovou sadu. Pokud je operace čtení úspěšná, vrátí DataFrame. Pokud ne, zobrazí se na postranním panelu chybová zpráva. K chybě dojde, když soubor není platný soubor 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

Definujte další funkci, která bude používat Steamlit k zobrazení DataFrame v tabulkovém formátu. Udělá to pouze tehdy, když uživatel zkontroluje Zobrazit nezpracovaná data zaškrtávací políčko. Bude využívat Streamlit's zaškrtávací políčko, datový rámec, a podnadpis funkcí.

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

Po vytvoření DataFrame a zobrazení nezpracovaných dat je nyní potřeba data vyčistit, analyzovat a nakonec vizualizovat.

Provádění čištění dat

Začněte definováním funkce, která bude provádět čištění dat. Tato funkce zpracuje chybějící hodnoty v DataFrame a duplicitní řádky. Vyčištěný DataFrame se pak zobrazí uživateli pomocí st.dataframe funkce, pokud zkontrolují Zobrazit vyčištěná data zaškrtávací políčko.

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)

Funkce také zobrazuje počet odstraněných duplicitních řádků.

Provádění analýzy dat

Definujte funkci analýzy dat. Tato funkce zobrazí popisnou statistiku DataFrame a zobrazí teplotní mapu korelační matice. Bude využívat st.pyplot funkce pro zobrazení teplotní mapy na uživatelském rozhraní.

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)

Výše uvedenou funkci můžete upravit a provést další analýzu dat. To vám pomůže získat z vašich dat více informací.

Provádění vizualizace dat

Vizualizace dat je jednou z klíčových funkcí aplikace. Je to proto, že umožňuje nahlédnout do dat vizuálně způsobem přátelským pro člověka. Tato funkcionalita by tedy měla uživatelům umožnit měnit vzhled pozemků.

Chcete-li toho dosáhnout, vytvořte funkci, která uživatelům umožní vybrat sloupec, nastavit počet přihrádek a vybrat barvu pro histogram. Poté vygeneruje histogram a krabicový graf a zobrazí je pomocí st.pyplot funkce.

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)

Nyní máte všechny základní funkce aplikace.

Shromažďování zpětné vazby od uživatelů

Někdy funkce nemusí fungovat podle očekávání. Pak potřebujete způsob, jak mohou uživatelé odeslat zpětnou vazbu. Jedním ze způsobů je, že vás uživatelé kontaktují prostřednictvím e-mailu. Streamlit poskytuje rozhraní pro shromažďování zpětné vazby od uživatelů, ale neposkytuje vestavěné funkce pro přímé odesílání e-mailů. Můžete však integrovat externí knihovny nebo služby pro odesílání e-mailů z vaší aplikace.

Chcete-li získat zpětnou vazbu od uživatele, definujte funkci, která uživateli nabídne formulář.

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

Tento formulář shromáždí e-mail a zpětnou vazbu uživatele a zašle vám je prostřednictvím e-mailu.

Řízení toku vašeho programu a spouštění aplikace

Nakonec potřebujete hlavní funkci, která spojí všechny tyto funkce dohromady a bude řídit tok programu. Tato funkce také zajistí, aby uživatelé souhlasili s vašimi podmínkami ochrany osobních údajů předtím, než aplikace zpracuje jejich nahranou datovou sadu.

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

Svůj program můžete spustit samostatně nebo jej importovat jako modul pomocí konstrukce if __name__ == '__main__':.

if __name__ == '__main__':
main()

Pokračujte k terminálu a přejděte na cestu, ve které se nachází váš projekt. Poté spusťte následující příkaz pro spuštění aplikace:

streamlit run main.py

Nahradit main.py se skutečným názvem vašeho skriptu. Po spuštění příkazu Streamlit vygeneruje místní URL a síťovou URL. K interakci s aplikací můžete použít kteroukoli z těchto adres URL.

Výstup programu je následující:

Vytváření interaktivních webových aplikací pro datovou vědu nebylo nikdy jednodušší. K vytvoření uživatelského rozhraní pro vaši aplikaci nepotřebujete pokročilé dovednosti v oblasti vývoje webu.

Měli byste se stále učit vývoj webových aplikací?

Záleží na vašich konkrétních cílech. Pokud očekáváte vytváření složitých webových aplikací s bohatými funkcemi, které vyžadují rozsáhlé uživatele design rozhraní a pokročilé funkce, pak učení technologií pro vývoj webových aplikací by mohlo být příznivý. Je to proto, že ve Streamlit máte omezenou kontrolu nad jemným přizpůsobením vzhledu a chování vaší aplikace.