Luo interaktiivisia verkkosovelluksia datatieteen ja koneoppimisprojekteihin käyttämällä vain Pythonia, kaikki Streamlitin ansiosta!

Streamlit on avoimen lähdekoodin Python-kirjasto verkkosovellusten luomiseen datatieteen ja koneoppimisprojekteihin. Se on suunniteltu datatieteilijöille ja koneoppimisinsinööreille, joilla ei ole laajoja etupään kehitystaitoja. Siinä on yksinkertainen syntaksi, jonka avulla voit luoda interaktiivisia verkkosovelluksia muutamalla koodirivillä.

Kapseloimalla monimutkaisia ​​teknisiä yksityiskohtia käyttäjäystävällisen käyttöliittymän taakse Streamlit antaa käyttäjille mahdollisuuden keskittyä tietojen, prototyyppien tai mallien tutkimiseen ja esittämiseen reaaliajassa. Tämä tekee siitä arvokkaan työkalun oivallusten nopeaan jakamiseen.

Streamlit-kirjaston asentaminen

Luo uusi virtuaaliympäristö. Tämä varmistaa, ettei paketin versioristiriita ole asennuksen jälkeen Virtaviivainen. Sitten asenna pip Virtaviivaista suorittamalla seuraava komento:

pip install streamlit

Varmista sitten, että asennus on asennettu oikein.

streamlit --version

Jos asennus onnistuu, asennettu Streamlit-versio tulee näkyviin.

Yksinkertaisen tietojen puhdistus- ja analysointisovelluksen rakentaminen

Luot yksinkertaisen verkkosovelluksen oppiaksesi Streamlitin toiminnasta ja sen ominaisuuksista. Tämä sovellus pystyy puhdistamaan ladatun tietojoukon, suorittamaan data-analyysin ja lopulta visualisoimaan tiedot.

Täysi lähdekoodi on saatavilla a GitHub-arkisto.

Tarvittavien kirjastojen asentaminen ja tuonti

Aloita asentamalla Pandas, Matplotlib ja Seaborn samaan virtuaaliympäristöön, jonka asensit Streamlitin seuraavalla komennolla:

pip install pandas matplotlib seaborn

Luo sitten uusi Python-skripti ja tuo kaikki asennetut kirjastot.

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

Näin voit käyttää niiden toimintoja koodissasi.

Tietojoukon lataaminen ja sen sisällön näyttäminen

Määritä sitten funktio, joka lukee ladatun tietojoukon. Se palauttaa sitten DataFramen, jos lukutoiminto onnistuu. Jos ei, se näyttää virheilmoituksen sivupalkissa. Virhe ilmenee, kun tiedosto ei ole kelvollinen CSV-tiedosto.

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

Määritä toinen toiminto, joka käyttää Steamlitiä DataFramen näyttämiseen taulukkomuodossa. Se tekee tämän vain, kun käyttäjä tarkistaa Näytä raakatiedot valintaruutu. Se hyödyntää Streamlitiä valintaruutu, datakehys, ja alaotsikko toimintoja.

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

Kun olet luonut DataFramen ja näyttänyt raakadatan, sinun on nyt puhdistettava tiedot, analysoitava ne ja lopuksi visualisoitava ne.

Suorittaa tietojen puhdistusta

Aloita määrittämällä toiminto, joka suorittaa tietojen puhdistamisen. Tämä toiminto käsittelee puuttuvat arvot DataFrame-kehyksestä ja päällekkäisiä rivejä. Puhdistettu DataFrame näytetään sitten käyttäjälle st.dataframe toimivat, jos he tarkistavat Näytä puhdistetut tiedot valintaruutu.

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)

Funktio näyttää myös poistettujen kaksoisrivien lukumäärän.

Data-analyysin suorittaminen

Määritä tietojen analysointitoiminto. Tämä toiminto näyttää kuvaavat tilastot DataFramesta ja näyttää korrelaatiomatriisin lämpökartan. Se hyödyntää st.pyplot -toiminto näyttää lämpökartan käyttöliittymässä.

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)

Voit muokata yllä olevaa toimintoa suorittaaksesi enemmän data-analyysiä. Tämä auttaa sinua saamaan enemmän oivalluksia tiedoistasi.

Tietojen visualisoinnin suorittaminen

Tietojen visualisointi on yksi sovelluksen tärkeimmistä toiminnoista. Tämä johtuu siitä, että se antaa käsityksen datasta visuaalisesti ihmisystävällisellä tavalla. Tämän toiminnon pitäisi siksi antaa käyttäjien muuttaa kaavioiden ulkoasua.

Suorita tämä luomalla toiminto, jonka avulla käyttäjät voivat valita sarakkeen, asettaa lokeroiden määrän ja valita värin histogrammille. Sitten se luo histogrammin ja laatikkokaavion ja näyttää ne käyttämällä st.pyplot toiminto.

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)

Tähän mennessä sinulla on kaikki sovelluksen ydintoiminnot.

Käyttäjien palautteen kerääminen

Joskus toiminto ei ehkä toimi odotetulla tavalla. Sitten tarvitset tavan, jolla käyttäjät voivat lähettää palautetta. Yksi tapa on käyttäjien tavoittaa sinut sähköpostitse. Streamlit tarjoaa käyttöliittymän käyttäjien palautteen keräämiseen, mutta se ei sisällä sisäänrakennettua toimintoa sähköpostien lähettämiseen suoraan. Voit kuitenkin integroida ulkoisia kirjastoja tai palveluita sähköpostien lähettämiseen sovelluksestasi.

Kerää käyttäjän palautetta määrittämällä toiminto, joka esittää käyttäjälle lomakkeen.

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

Tämä lomake kerää käyttäjän sähköpostit ja palautteen ja lähettää sen sinulle sähköpostitse.

Ohjelman kulun hallinta ja sovelluksen suorittaminen

Lopuksi tarvitset päätoiminnon, joka yhdistää kaikki nämä toiminnot ja ohjaa ohjelman kulkua. Tämä toiminto varmistaa myös, että käyttäjät hyväksyvät tietosuojaehdot, ennen kuin sovellus käsittelee ladatun tietojoukon.

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

Voit ajaa ohjelman itsenäisesti tai tuoda sen moduulina käyttämällä if __name__ == '__main__': -rakennetta.

if __name__ == '__main__':
main()

Jatka terminaaliin ja navigoi polulle, jolla projektisi sijaitsee. Käynnistä sitten sovellus suorittamalla seuraava komento:

streamlit run main.py

Korvata main.py käsikirjoituksesi todellisella nimellä. Komennon suorittamisen jälkeen Streamlit luo paikallisen URL-osoitteen ja verkko-URL-osoitteen. Voit käyttää mitä tahansa näistä URL-osoitteista vuorovaikutuksessa sovelluksesi kanssa.

Ohjelman tulos on seuraava:

Interaktiivisten verkkosovellusten luominen datatieteeseen ei ole koskaan ollut näin helppoa. Et tarvitse edistyneitä verkkokehitystaitoja luodaksesi käyttöliittymän sovelluksellesi.

Pitäisikö sinun silti opetella verkkokehitystä?

Se riippuu erityisistä tavoitteistasi. Jos aiot rakentaa monimutkaisia, monipuolisia verkkosovelluksia, jotka vaativat laajan käyttäjän käyttöliittymäsuunnittelua ja edistyneitä toimintoja, niin verkkokehitystekniikoiden oppiminen voisi olla hyödyllistä. Tämä johtuu siitä, että Streamlitissa sinulla on rajoitettu hallinta sovelluksesi ulkoasun ja toiminnan hienojakoiseen mukauttamiseen.