Pierwsze kroki ze Streamlit: Praktyczny przewodnik
Streamlit to biblioteka Python o otwartym kodzie źródłowym do tworzenia aplikacji internetowych do nauki o danych i projektów uczenia maszynowego. Została zaprojektowana do użytku przez naukowców zajmujących się danymi i inżynierów uczenia maszynowego, którzy nie mają rozległych umiejętności programowania front-end. Ma prostą składnię pozwalającą na tworzenie interaktywnych aplikacji internetowych za pomocą kilku wierszy kodu.
Streamlit ułatwia proces tworzenia interaktywnych aplikacji, zapewniając intuicyjną platformę, która upraszcza prezentację skomplikowanych aspektów technicznych. W rezultacie użytkownicy mogą skoncentrować się na badaniu i prezentowaniu swoich danych, prototypów lub modeli w czasie rzeczywistym. W rezultacie funkcja ta umożliwia im szybkie i skuteczne rozpowszechnianie spostrzeżeń.
Instalowanie biblioteki Streamlit
Tworzenie nowego środowiska wirtualnego. Zapewni to brak konfliktu wersji pakietu po zainstalowaniu Streamlit . Następnie użyj pip, aby zainstalować Streamlit, uruchamiając następujące polecenie:
pip install streamlit
Następnie należy zweryfikować poprawność instalacji.
streamlit --version
Po pomyślnym zainstalowaniu Streamlit, zostanie wyświetlona aktualna wersja Streamlit, która została zainstalowana.
Tworzenie prostej aplikacji do czyszczenia i analizy danych
Aby uzyskać biegłość w korzystaniu z możliwości Streamlit i zrozumieniu jego zakresu funkcjonalności, opracujesz przyjazną dla użytkownika aplikację internetową, która umożliwia użytkownikom przesyłanie ich zestawów danych w celu oczyszczenia, późniejszej analizy danych, a ostatecznie wizualizacji tych informacji.
Pełny kod źródłowy jest dostępny za pośrednictwem repozytorium GitHub, które jest łatwo dostępne dla publicznego dostępu i współpracy.
Instalowanie i importowanie niezbędnych bibliotek
Aby rozpocząć, zainstaluj Pandas, Matplotlib i Seaborn w środowisku wirtualnym, w którym zainstalowałeś Streamlit za pomocą następującego polecenia:
pip install pandas matplotlib seaborn
Aby rozpocząć, najpierw utworzymy nowy skrypt Pythona i włączymy do niego wszystkie wcześniej zainstalowane moduły.
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
Leave a reply
Uploading a Dataset and Displaying Its Contents
Podane zadanie wymaga zaimplementowania funkcji obsługującej odczyt wgranego zbioru danych i jego odpowiednie przetworzenie. Funkcja ta powinna zweryfikować, czy dostarczony plik jest rzeczywiście prawidłowym plikiem CSV (Comma-Separated Values), czy też nie. W przypadku, gdy plik nie jest zgodny z tym formatem, funkcja wyświetli odpowiedni komunikat o błędzie na pasku bocznym aplikacji. I odwrotnie, jeśli plik zostanie pomyślnie odczytany jako CSV, funkcja powinna utworzyć DataFrame do dalszej analizy.
def load_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.')
return None
Oto przykład, w jaki sposób można zdefiniować nową funkcję o nazwie display_raw_data
przy użyciu Streamlit’s checkbox
, dataframe
, i subheader
functions:pythondef display_raw_data():# Sprawdź, czy pole wyboru “Pokaż nieprzetworzone dane” jest zaznaczoneif st. button(“Pokaż nieprzetworzone dane”, type=“markdown”):# Wyświetl nieprzetworzone dane jako tabledf = pd. DataFrame(raw_data)title = “Raw Data “st.table(df, subcaption=title)
def explore_raw_data(df):
st.subheader('Raw Data')
if st.checkbox('Show Raw Data'):
st.dataframe(df)
Po wygenerowaniu DataFrame i przedstawieniu surowych danych w ich oryginalnej formie, konieczne jest przeprowadzenie dokładnego procesu czyszczenia danych w celu usunięcia wszelkich niespójności lub błędów, które mogły wystąpić podczas gromadzenia danych. Obejmuje to identyfikację i korektę wszelkich brakujących wartości, duplikatów lub nieprawidłowych wpisów. Po zakończeniu tego kroku, kolejnym etapem jest przeprowadzenie analizy danych przy użyciu technik statystycznych, takich jak analiza regresji lub testowanie hipotez w celu odkrycia wzorców i relacji w danych. Wreszcie, po przeanalizowaniu danych, można utworzyć różne rodzaje wykresów i grafów, aby wizualnie przedstawić wyniki analizy w celu lepszego zrozumienia i interpretacji przez innych.
Wykonywanie czyszczenia danych
Proces rozpoczyna się od utworzenia funkcji odpowiedzialnej za operacje czyszczenia danych na dostarczonej ramce DataFrame. Obejmuje to zajęcie się wszelkimi przypadkami brakujących wartości w ramach, a także identyfikację i eliminację wszelkich zduplikowanych wpisów wierszy. Następnie, po pomyślnym wykonaniu tych zadań, wynikowa ramka danych, po dokładnym zbadaniu i udoskonaleniu, zostanie przedstawiona użytkownikowi końcowemu za pomocą metodologii st.dataframe
. Dopiero po potwierdzeniu przez użytkownika poprzez przełączenie przełącznika boolean “Show Cleaned Data”, ten skrupulatnie oczyszczony zestaw danych zostanie wyświetlony.
def data_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 dodatkowo wyświetla całkowitą liczbę wyeliminowanych zduplikowanych wierszy.
Wykonywanie analizy danych
Oczywiście, oto przykładowy fragment kodu w Pandas, który pokazuje, jak zdefiniować funkcję analizy danych do wyświetlania statystyk opisowych i mapy cieplnej korelacji przy użyciu biblioteki seaborn:pythonimport pandas as pdimport seaborn as snsfrom scipy import statsdef analyze_data(df):# Wyświetl podsumowanie statystyksprint(“Summary Statistics:\n”, df. describe())# Wyświetl korelacje między kolumnamicorr = df.corr()print("\nCorrelations:\n”)sns. heatmap(corr, annot=True)return Noneanalyze_data(df)W tym przykładzie najpierw importujemy niezbędne biblioteki, w tym Pandas, Seaborn i SciPy
def data_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)
Powyższa funkcja może zostać zmieniona w celu ułatwienia dodatkowych analiz danych, umożliwiając w ten sposób wydobycie dalszych spostrzeżeń z danego zbioru danych.
Wykonywanie wizualizacji danych
Wizualizacja danych pełni istotną funkcję w aplikacji, zapewniając użytkownikom środki do zrozumienia i interpretacji danych za pomocą wizualnej reprezentacji, która jest zarówno dostępna, jak i przyjazna dla użytkownika. Możliwość dostosowania wyglądu wykresów jest zatem niezbędna, umożliwiając użytkownikom dostosowanie wizualizacji do ich konkretnych preferencji lub wymagań.
Aby wykonać to zadanie, konieczne jest opracowanie funkcji, która umożliwia użytkownikom wybranie konkretnej kolumny, określenie żądanej liczby podziałów binów i określenie konkretnego koloru histogramu. Następnie funkcja powinna wygenerować zarówno histogram, jak i wykres pudełkowy oraz wyświetlić te wizualizacje przy użyciu modułu st.pyplot w Pythonie.
def data_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)
Obecnie posiadasz podstawowe możliwości aplikacji.
Zbieranie opinii użytkowników
W niektórych przypadkach można sobie wyobrazić, że funkcja może wykazywać nieprzewidziane zachowanie. W takich przypadkach konieczne staje się umożliwienie użytkownikom przekazywania swoich odczuć na ten temat. Powszechnym podejściem do osiągnięcia tego celu jest wykorzystanie poczty elektronicznej jako środka komunikacji. Chociaż Streamlit oferuje środki do zbierania opinii użytkowników za pośrednictwem intuicyjnego interfejsu, z natury nie obsługuje możliwości bezpośredniej transmisji e-mail. Niemniej jednak można włączyć dodatkowe biblioteki lub usługi innych firm, aby ułatwić wysyłanie wiadomości e-mail z poziomu samej aplikacji.
W celu uzyskania opinii i informacji zwrotnej od użytkownika, konieczne jest stworzenie funkcjonalnego interfejsu, który umożliwia użytkownikom wypełnienie ankiety lub kwestionariusza w formie formularza internetowego. Można to osiągnąć poprzez zdefiniowanie funkcji w bazie kodu, która przedstawia użytkownikowi interaktywny formularz zawierający różne pola wejściowe do wprowadzania odpowiedzi. Formularz może zawierać zarówno pytania zamknięte (np. wielokrotnego wyboru), jak i pytania otwarte (np. pola wprowadzania tekstu), w zależności od pożądanego poziomu szczegółowości i specyfiki wymaganej od opinii użytkownika. Ponadto funkcja powinna zapewniać odpowiednie mechanizmy walidacji i obsługi błędów w celu zapewnienia integralności danych i użyteczności.
def feedback_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!")
Prosimy o wypełnienie poniższego formularza z podaniem danych kontaktowych i opinii, które zostaną przesłane do nas pocztą elektroniczną w celu sprawdzenia i podjęcia odpowiednich działań.
Kontrolowanie przepływu programu i uruchamianie aplikacji
Wreszcie, konieczne jest wdrożenie podstawowej funkcji, która integruje różne funkcje opisane powyżej i reguluje postęp oprogramowania. Ponadto funkcja ta powinna nakazywać użytkownikowi przestrzeganie określonych postanowień dotyczących prywatności danych przed przetworzeniem jakichkolwiek przesłanych zestawów danych.
def main():
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 is not None and agree_terms:
df = load_data(uploaded_file)
if df is not None:
explore_raw_data(df)
data_cleaning(df)
data_analysis(df)
data_visualization(df)
feedback_form()
Podczas uruchamiania skryptu Pythona istnieje możliwość wykonania go jako niezależnego samodzielnego programu lub poprzez zaimportowanie jego zawartości jako modułu za pomocą konstrukcji if __name__ == '__main__'
. Pozwala to na elastyczność w sposobie wykonywania kodu i umożliwia modułowość w ramach większych projektów.
if __name__ == '__main__':
main()
Przejdź do terminala i znajdź katalog, w którym przechowywany jest twój projekt. Po przejściu do tej lokalizacji wykonaj następujące polecenie, aby zainicjować aplikację:
streamlit run main.py
Po wykonaniu określonej operacji w pliku głównym, oznaczonym jako “main.py”, Streamlit automatycznie utworzy dwa różne adresy URL - jeden dla dostępu lokalnego i drugi dla połączenia zdalnego. Te adresy URL są do Twojej dyspozycji i mogą być wykorzystane do ułatwienia interakcji z aplikacją.
Późniejsze dane wyjściowe produktu są wyrażone w następujący sposób:
Twoja przeglądarka nie obsługuje tagu wideo.
Proces tworzenia dynamicznych aplikacji internetowych do nauki o danych stał się coraz bardziej dostępny, wymagając minimalnej biegłości w tworzeniu stron internetowych w celu stworzenia intuicyjnego interfejsu dla własnego projektu.
Czy nadal powinieneś uczyć się tworzenia stron internetowych?
Zakres, w jakim należy rozwijać umiejętności tworzenia solidnych aplikacji internetowych o skomplikowanych funkcjach, zależy od indywidualnych celów. W przypadkach, w których wymagany jest kompleksowy zestaw możliwości, w tym rozbudowany projekt interfejsu użytkownika i zaawansowane funkcje, opanowanie technologii tworzenia stron internetowych może okazać się korzystne. Należy jednak pamiętać, że podczas korzystania ze Streamlit istnieje mniejsza elastyczność w manipulowaniu najdrobniejszymi szczegółami wizualnej prezentacji i funkcjonalności aplikacji w porównaniu z innymi metodami.