Twórz interaktywne aplikacje internetowe do projektów związanych z analityką danych i uczeniem maszynowym, używając wyłącznie języka Python, a wszystko to dzięki Streamlit!

Streamlit to biblioteka Pythona typu open source do tworzenia aplikacji internetowych na potrzeby projektów związanych z analizą danych i uczeniem maszynowym. Został zaprojektowany z myślą o badaczach danych i inżynierach zajmujących się uczeniem maszynowym, którzy nie mają rozległych umiejętności programowania front-end. Ma prostą składnię, która pozwala tworzyć interaktywne aplikacje internetowe za pomocą kilku linijek kodu.

Hermetyzując złożone szczegóły techniczne za przyjaznym dla użytkownika interfejsem, Streamlit pozwala użytkownikom skupić się na eksplorowaniu i prezentowaniu danych, prototypów lub modeli w czasie rzeczywistym. Dzięki temu jest to cenne narzędzie do szybkiego dzielenia się spostrzeżeniami.

Instalowanie biblioteki Streamlit

Utwórz nowe środowisko wirtualne. Dzięki temu po instalacji nie będzie konfliktu wersji pakietu

instagram viewer
Usprawniony. Następnie użyj pip, aby zainstalować Usprawnij, uruchamiając następujące polecenie:

pip install streamlit

Następnie sprawdź, czy instalacja została poprawnie zainstalowana.

streamlit --version

Jeśli instalacja się powiedzie, wyświetli się zainstalowana wersja Streamlit.

Tworzenie prostej aplikacji do czyszczenia i analizy danych

Stworzysz prostą aplikację internetową, dzięki której poznasz działanie Streamlit i jego możliwości. Ta aplikacja będzie w stanie wyczyścić przesłany zbiór danych, przeprowadzić analizę danych i na koniec wizualizować dane.

Pełny kod źródłowy jest dostępny w formacie a Repozytorium GitHuba.

Instalowanie i importowanie niezbędnych bibliotek

Zacznij od zainstalowania Pand, Matplotlib i Seaborn w tym samym środowisku wirtualnym, w którym zainstalowałeś Streamlit, za pomocą następującego polecenia:

pip install pandas matplotlib seaborn

Następnie utwórz nowy skrypt Pythona i zaimportuj wszystkie zainstalowane biblioteki.

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

Dzięki temu będziesz mógł wykorzystać ich funkcjonalności w swoim kodzie.

Przesyłanie zbioru danych i wyświetlanie jego zawartości

Następnie zdefiniuj funkcję, która będzie czytać przesłany zbiór danych. Następnie zwróci ramkę danych, jeśli operacja odczytu zakończy się pomyślnie. Jeśli nie, wyświetli się komunikat o błędzie na pasku bocznym. Błąd występuje, gdy plik nie jest prawidłowym plikiem 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

Zdefiniuj inną funkcję, która użyje Steamlit do wyświetlenia DataFrame w formacie tabelarycznym. Zrobi to tylko wtedy, gdy użytkownik sprawdzi plik Pokaż surowe dane pole wyboru. Będzie wykorzystywać Streamlit pole wyboru, ramka danych, I podtytuł Funkcje.

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

Po utworzeniu DataFrame i pokazaniu surowych danych należy teraz oczyścić dane, przeanalizować je i na koniec zwizualizować.

Wykonywanie czyszczenia danych

Zacznij od zdefiniowania funkcji, która wykona czyszczenie danych. Ta funkcja obsłuży brakujące wartości w ramce danych i zduplikowane wiersze. Oczyszczona ramka DataFrame jest następnie pokazywana użytkownikowi za pomocą st.ramka danych działać, jeśli sprawdzą Pokaż oczyszczone dane pole wyboru.

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)

Funkcja pokazuje również liczbę usuniętych zduplikowanych wierszy.

Wykonywanie analizy danych

Zdefiniuj funkcję analizy danych. Ta funkcja pokaże statystyki opisowe DataFrame i wyświetli mapę cieplną macierzy korelacji. Będzie korzystać z st.pyplot funkcja wyświetlania mapy cieplnej w interfejsie użytkownika.

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)

Możesz zmodyfikować powyższą funkcję, aby przeprowadzić większą analizę danych. Pomoże Ci to wyciągnąć więcej wniosków z danych.

Wykonywanie wizualizacji danych

Wizualizacja danych to jedna z kluczowych funkcjonalności aplikacji. Dzieje się tak dlatego, że umożliwia wizualny wgląd w dane w sposób przyjazny dla człowieka. Funkcjonalność ta powinna zatem umożliwiać użytkownikom zmianę wyglądu działek.

Aby to osiągnąć, utwórz funkcję, która pozwoli użytkownikom wybrać kolumnę, ustawić liczbę pojemników i wybrać kolor histogramu. Następnie wygeneruje histogram i wykres pudełkowy i wyświetli je za pomocą st.pyplot funkcjonować.

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 tej pory masz wszystkie podstawowe funkcje aplikacji.

Zbieranie opinii Użytkowników

Czasami dana funkcjonalność może nie działać zgodnie z oczekiwaniami. Następnie potrzebujesz sposobu, aby użytkownicy mogli przesłać swoje opinie. Jednym ze sposobów jest skontaktowanie się z Tobą przez użytkowników za pośrednictwem poczty elektronicznej. Streamlit zapewnia interfejs do zbierania opinii użytkowników, ale nie zapewnia wbudowanej funkcjonalności umożliwiającej bezpośrednie wysyłanie wiadomości e-mail. Możesz jednak zintegrować zewnętrzne biblioteki lub usługi, aby wysyłać wiadomości e-mail z aplikacji.

Aby zebrać informację zwrotną od użytkownika, zdefiniuj funkcję prezentującą użytkownikowi formularz.

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

W tym formularzu będą zbierane wiadomości e-mail i opinie użytkownika, a następnie wysyłane do Ciebie e-mailem.

Kontrolowanie przepływu programu i uruchamianie aplikacji

Na koniec potrzebujesz głównej funkcji, która połączy wszystkie te funkcje i będzie kontrolować przebieg programu. Ta funkcja zapewni również, że użytkownicy zgodzą się na warunki prywatności danych, zanim aplikacja przetworzy przesłany zestaw danych.

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żesz uruchomić swój program niezależnie lub zaimportować go jako moduł używając konstrukcji if __name__ == '__main__':.

if __name__ == '__main__':
main()

Przejdź do terminala i przejdź do ścieżki, w której znajduje się Twój projekt. Następnie uruchom następujące polecenie, aby uruchomić aplikację:

streamlit run main.py

Zastępować main.py z rzeczywistą nazwą skryptu. Po uruchomieniu polecenia Streamlit wygeneruje lokalny adres URL i adres sieciowy. Do interakcji z aplikacją możesz używać dowolnego z tych adresów URL.

Dane wyjściowe programu są następujące:

Tworzenie interaktywnych aplikacji internetowych do nauki o danych nigdy nie było łatwiejsze. Nie potrzebujesz zaawansowanych umiejętności tworzenia stron internetowych, aby stworzyć interfejs użytkownika dla swojej aplikacji.

Czy nadal powinieneś uczyć się tworzenia stron internetowych?

To zależy od Twoich konkretnych celów. Jeśli przewidujesz budowanie złożonych, bogatych w funkcje aplikacji internetowych, które wymagają dużej liczby użytkowników projektowania interfejsów i zaawansowanych funkcjonalności, to może być nauka technologii tworzenia stron internetowych korzystny. Dzieje się tak, ponieważ w Streamlit masz ograniczoną kontrolę nad szczegółowym dostosowywaniem wyglądu i zachowania aplikacji.