Creëer interactieve webapplicaties voor data science- en machine learning-projecten met alleen Python, allemaal dankzij Streamlit!

Streamlit is een open-source Python-bibliotheek voor het maken van webapplicaties voor data science- en machine learning-projecten. Het is ontworpen voor gebruik door datawetenschappers en machine learning-ingenieurs die niet over uitgebreide front-end ontwikkelingsvaardigheden beschikken. Het heeft een eenvoudige syntaxis waarmee u met een paar regels code interactieve webapps kunt maken.

Door complexe technische details achter een gebruiksvriendelijke interface te plaatsen, stelt Streamlit gebruikers in staat zich te concentreren op het in realtime verkennen en presenteren van hun gegevens, prototypen of modellen. Dit maakt het een waardevol hulpmiddel om snel inzichten te delen.

De Streamlit-bibliotheek installeren

Creëer een nieuwe virtuele omgeving. Dit zorgt ervoor dat er na de installatie geen pakketversieconflicten ontstaan Gestroomlijnd. Dan gebruik pip om te installeren Streamlit door de volgende opdracht uit te voeren:

pip install streamlit

Controleer vervolgens of de installatie correct is geïnstalleerd.

streamlit --version

Als de installatie succesvol is, wordt de geïnstalleerde Streamlit-versie weergegeven.

Een eenvoudige app voor het opschonen en analyseren van gegevens bouwen

U maakt een eenvoudige webapplicatie om te leren hoe Streamlit werkt en wat de mogelijkheden ervan zijn. Deze applicatie kan een geüploade dataset opschonen, data-analyse uitvoeren en uiteindelijk de gegevens visualiseren.

De volledige broncode is beschikbaar in een GitHub-opslagplaats.

De benodigde bibliotheken installeren en importeren

Begin met het installeren van Pandas, Matplotlib en Seaborn in dezelfde virtuele omgeving waarin u Streamlit hebt geïnstalleerd met behulp van de volgende opdracht:

pip install pandas matplotlib seaborn

Maak vervolgens een nieuw Python-script en importeer alle geïnstalleerde bibliotheken.

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

Hierdoor kunt u hun functionaliteiten in uw code gebruiken.

Een dataset uploaden en de inhoud ervan weergeven

Definieer vervolgens een functie die een geüploade dataset leest. Het retourneert vervolgens een DataFrame als de leesbewerking succesvol is. Als dit niet het geval is, wordt er een foutmelding weergegeven in de zijbalk. De fout treedt op wanneer het bestand geen geldig CSV-bestand is.

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

Definieer een andere functie die Steamlit zal gebruiken om het DataFrame in tabelvorm weer te geven. Dit gebeurt alleen als de gebruiker de Toon ruwe gegevens selectievakje. Het zal gebruik maken van Streamlit's selectievakje, dataframe, En ondertitel functies.

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

Nadat u het DataFrame hebt gemaakt en onbewerkte gegevens hebt weergegeven, moet u nu de gegevens opschonen, analyseren en uiteindelijk visualiseren.

Gegevensopschoning uitvoeren

Begin met het definiëren van een functie die het opschonen van gegevens uitvoert. Deze functie verwerkt ontbrekende waarden in het DataFrame en dubbele rijen. Het opgeschoonde DataFrame wordt vervolgens aan de gebruiker getoond met behulp van st.dataframe functioneren als ze de Toon opgeschoonde gegevens selectievakje.

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)

De functie toont ook het aantal verwijderde dubbele rijen.

Het uitvoeren van data-analyse

Definieer een gegevensanalysefunctie. Deze functie toont beschrijvende statistieken van het DataFrame en geeft de correlatiematrix-heatmap weer. Er zal gebruik worden gemaakt van de st.pyplot functie om de heatmap op de gebruikersinterface weer te geven.

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)

U kunt de bovenstaande functie wijzigen om meer gegevensanalyse uit te voeren. Hierdoor kunt u meer inzichten uit uw gegevens halen.

Het uitvoeren van datavisualisatie

Datavisualisatie is een van de cruciale functionaliteiten van de applicatie. Dit komt omdat het op mensvriendelijke wijze visueel inzicht geeft in de data. Deze functionaliteit moet de gebruikers daarom in staat stellen het uiterlijk van de plots te veranderen.

Om dit te bereiken, maakt u een functie waarmee gebruikers een kolom kunnen selecteren, het aantal bakken kunnen instellen en een kleur voor het histogram kunnen kiezen. Vervolgens genereert het een histogram en een boxplot en geeft deze weer met behulp van st.pyplot functie.

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)

Inmiddels beschikt u over alle kernfunctionaliteiten van de app.

Het verzamelen van feedback van gebruikers

Soms werkt een functionaliteit niet zoals verwacht. Vervolgens hebt u een manier nodig waarop de gebruikers hun feedback kunnen indienen. Eén manier is dat gebruikers u bereiken via een e-mail. Streamlit biedt de interface om de feedback van de gebruiker te verzamelen, maar biedt geen ingebouwde functionaliteit om e-mails rechtstreeks te verzenden. U kunt echter externe bibliotheken of services integreren om e-mails vanuit uw app te verzenden.

Om de feedback van de gebruiker te verzamelen, definieert u een functie om de gebruiker een formulier te presenteren.

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

Dit formulier verzamelt de e-mail en feedback van de gebruiker en stuurt deze per e-mail naar u.

De stroom van uw programma beheren en de app uitvoeren

Ten slotte heb je een hoofdfunctie nodig die al deze functies samenbrengt en de stroom van het programma regelt. Deze functie zorgt er ook voor dat de gebruikers akkoord gaan met uw gegevensprivacyvoorwaarden voordat de applicatie hun geüploade dataset verwerkt.

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

U kunt uw programma zelfstandig uitvoeren of als module importeren met behulp van de if __name__ == '__main__': constructie.

if __name__ == '__main__':
main()

Ga naar de terminal en navigeer naar het pad waarin uw project zich bevindt. Voer vervolgens de volgende opdracht uit om de app te starten:

streamlit run main.py

Vervangen hoofd.py met de werkelijke naam van uw script. Na het uitvoeren van de opdracht genereert Streamlit een lokale URL en een netwerk-URL. U kunt elk van deze URL's gebruiken om met uw app te communiceren.

De uitvoer van het programma is als volgt:

Het creëren van interactieve web-apps voor data science is nog nooit zo eenvoudig geweest. U hebt geen geavanceerde vaardigheden op het gebied van webontwikkeling nodig om een ​​gebruikersinterface voor uw toepassing te maken.

Moet je nog steeds webontwikkeling leren?

Het hangt af van uw specifieke doelen. Als u verwacht complexe, veelzijdige webapplicaties te bouwen waarvoor veel gebruikers nodig zijn interface-ontwerp en geavanceerde functionaliteiten, dan zou het leren van webontwikkelingstechnologieën dat kunnen zijn gunstig. Dit komt omdat u in Streamlit beperkte controle heeft over de fijnmazige aanpassing van het uiterlijk en gedrag van uw app.