Sukurkite interaktyvias žiniatinklio programas duomenų mokslo ir mašininio mokymosi projektams naudodami tik Python – visa tai dėka Streamlit!

Streamlit yra atvirojo kodo Python biblioteka, skirta kurti žiniatinklio programas duomenų mokslo ir mašininio mokymosi projektams. Jis sukurtas naudoti duomenų mokslininkams ir mašininio mokymosi inžinieriams, kurie neturi plačių priekinio kūrimo įgūdžių. Ji turi paprastą sintaksę, leidžiančią kurti interaktyvias žiniatinklio programas su keliomis kodo eilutėmis.

Patogioje sąsajoje sudėjus sudėtingas technines detales, „Streamlit“ leidžia vartotojams sutelkti dėmesį į savo duomenų, prototipų ar modelių tyrinėjimą ir pateikimą realiuoju laiku. Dėl to jis yra vertingas įrankis greitai dalytis įžvalgomis.

„Streamlit“ bibliotekos diegimas

Sukurkite naują virtualią aplinką. Tai užtikrins, kad įdiegus nebus paketo versijos konflikto Srautas. Tada įdiegti naudokite pip Suaktyvinkite vykdydami šią komandą:

pip install streamlit

Tada patikrinkite, ar diegimas tinkamai įdiegtas.

streamlit --version

Jei diegimas sėkmingas, bus rodoma įdiegta Streamlit versija.

Sukurkite paprastą duomenų valymo ir analizės programą

Sukursite paprastą žiniatinklio programą, kad sužinotumėte, kaip veikia „Streamlit“ ir jos ypatybės. Ši programa galės išvalyti įkeltą duomenų rinkinį, atlikti duomenų analizę ir galiausiai vizualizuoti duomenis.

Visą šaltinio kodą rasite a GitHub saugykla.

Būtinų bibliotekų diegimas ir importavimas

Pradėkite diegdami Pandas, Matplotlib ir Seaborn toje pačioje virtualioje aplinkoje, kurią įdiegėte „Streamlit“ naudodami šią komandą:

pip install pandas matplotlib seaborn

Tada sukurkite naują Python scenarijų ir importuokite visas įdiegtas bibliotekas.

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

Tai leis jums naudoti jų funkcijas savo kode.

Duomenų rinkinio įkėlimas ir jo turinio rodymas

Tada apibrėžkite funkciją, kuri nuskaitys įkeltą duomenų rinkinį. Tada jis grąžins DataFrame, jei nuskaitymo operacija bus sėkminga. Jei ne, šoninėje juostoje bus rodomas klaidos pranešimas. Klaida įvyksta, kai failas nėra tinkamas CSV failas.

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

Apibrėžkite kitą funkciją, kuri naudos „Steamlit“, kad „DataFrame“ būtų rodoma lentelės formatu. Tai padarys tik tada, kai vartotojas patikrins Rodyti neapdorotus duomenis žymimasis langelis. Jis naudos Streamlit's žymimasis langelis, duomenų rėmelis, ir paantraštė funkcijas.

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

Sukūrę DataFrame ir parodžius neapdorotus duomenis, dabar turite išvalyti duomenis, juos išanalizuoti ir galiausiai vizualizuoti.

Duomenų valymo vykdymas

Pradėkite apibrėždami funkciją, kuri atliks duomenų valymą. Ši funkcija apdoros trūkstamas reikšmes DataFrame ir pasikartojančias eilutes. Tada išvalytas DataFrame rodomas vartotojui st.dataframe funkcija, jei jie patikrins Rodyti išvalytus duomenis žymimasis langelis.

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 taip pat rodo pašalintų pasikartojančių eilučių skaičių.

Duomenų analizės atlikimas

Apibrėžkite duomenų analizės funkciją. Ši funkcija parodys aprašomąją DataFrame statistiką ir koreliacijos matricos šilumos schemą. Jis naudos st.pyplot funkcija vartotojo sąsajoje rodyti šilumos žemėlapį.

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)

Galite modifikuoti aukščiau nurodytą funkciją, kad atliktumėte daugiau duomenų analizės. Tai padės gauti daugiau įžvalgų iš duomenų.

Duomenų vizualizavimo vykdymas

Duomenų vizualizacija yra viena iš svarbiausių programos funkcijų. Taip yra todėl, kad jis leidžia vizualiai suprasti duomenis žmonėms patogiu būdu. Todėl ši funkcija turėtų leisti vartotojams pakeisti sklypų išvaizdą.

Norėdami tai padaryti, sukurkite funkciją, kuri leis vartotojams pasirinkti stulpelį, nustatyti dėžių skaičių ir pasirinkti histogramos spalvą. Tada jis sugeneruos histogramą ir langelio diagramą ir parodys juos naudodamas 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)

Iki šiol turite visas pagrindines programos funkcijas.

Rinkti vartotojų atsiliepimus

Kartais funkcija gali neveikti taip, kaip tikėtasi. Tada jums reikia būdo, kad vartotojai galėtų pateikti atsiliepimus. Vienas iš būdų yra naudotojai susisiekti su jumis el. paštu. „Streamlit“ suteikia sąsają, leidžiančią rinkti vartotojo atsiliepimus, tačiau nesuteikia integruotos funkcijos tiesiogiai siųsti el. laiškus. Tačiau galite integruoti išorines bibliotekas ar paslaugas, kad galėtumėte siųsti el. laiškus iš savo programos.

Norėdami surinkti naudotojo atsiliepimus, apibrėžkite funkciją, kuria vartotojui pateikiama forma.

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

Ši forma surinks vartotojo el. paštą ir atsiliepimus bei išsiųs juos el. paštu.

Programos srauto valdymas ir programos vykdymas

Galiausiai, jums reikia pagrindinės funkcijos, kuri sujungs visas šias funkcijas ir valdys programos eigą. Ši funkcija taip pat užtikrins, kad vartotojai sutiktų su jūsų duomenų privatumo sąlygomis, kol programa apdoros jų įkeltą duomenų rinkinį.

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

Galite paleisti programą atskirai arba importuoti ją kaip modulį naudojant if __name__ == '__main__': konstrukciją.

if __name__ == '__main__':
main()

Eikite į terminalą ir eikite į kelią, kuriame yra jūsų projektas. Tada paleiskite šią komandą, kad paleistumėte programą:

streamlit run main.py

Pakeiskite pagrindinis.py su tikruoju scenarijaus pavadinimu. Paleidus komandą Streamlit sugeneruos vietinį URL ir tinklo URL. Norėdami sąveikauti su programa, galite naudoti bet kurį iš šių URL.

Programos išvestis yra tokia:

Kurti interaktyvias žiniatinklio programas duomenų mokslui dar niekada nebuvo taip paprasta. Norint sukurti savo programos vartotojo sąsają, jums nereikia pažangių žiniatinklio kūrimo įgūdžių.

Ar vis tiek turėtumėte mokytis interneto kūrimo?

Tai priklauso nuo jūsų konkrečių tikslų. Jei planuojate sukurti sudėtingas, daug funkcijų turinčias žiniatinklio programas, kurioms reikia daug naudotojų sąsajos dizainas ir pažangios funkcijos, tuomet būtų galima mokytis žiniatinklio kūrimo technologijų naudingas. Taip yra todėl, kad naudodami „Streamlit“ galite ribotai valdyti smulkų programos išvaizdos ir veikimo tinkinimą.