Създавайте интерактивни уеб приложения за проекти за наука за данни и машинно обучение, като използвате само Python, всичко това благодарение на Streamlit!
Streamlit е библиотека на Python с отворен код за създаване на уеб приложения за проекти за наука за данни и машинно обучение. Той е проектиран да се използва от специалисти по данни и инженери по машинно обучение, които нямат обширни умения за разработка в предния край. Има прост синтаксис, който ви позволява да създавате интерактивни уеб приложения с няколко реда код.
Чрез капсулиране на сложни технически детайли зад удобен за потребителя интерфейс, Streamlit позволява на потребителите да се съсредоточат върху изследването и представянето на своите данни, прототипи или модели в реално време. Това го прави ценен инструмент за бързо споделяне на прозрения.
Инсталиране на библиотеката Streamlit
Създайте нова виртуална среда. Това ще гарантира, че няма конфликт на версията на пакета след инсталирането Осветен от поток. Тогава използвайте pip за инсталиране Streamlit чрез изпълнение на следната команда:
pip install streamlit
След това проверете дали инсталацията е инсталирана правилно.
streamlit --version
Ако инсталацията е успешна, ще се покаже инсталираната версия на Streamlit.
Изграждане на просто приложение за почистване и анализ на данни
Ще създадете просто уеб приложение, за да научите как работи Streamlit и неговите функции. Това приложение ще може да изчисти качен набор от данни, да извърши анализ на данни и накрая да визуализира данните.
Пълният изходен код е достъпен в a GitHub хранилище.
Инсталиране и импортиране на необходимите библиотеки
Започнете с инсталирането на Pandas, Matplotlib и Seaborn в същата виртуална среда, в която сте инсталирали Streamlit, като използвате следната команда:
pip install pandas matplotlib seaborn
След това създайте нов скрипт на Python и импортирайте всички инсталирани библиотеки.
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
Това ще ви позволи да използвате техните функции във вашия код.
Качване на набор от данни и показване на съдържанието му
След това дефинирайте функция, която ще чете качен набор от данни. След това ще върне DataFrame, ако операцията за четене е успешна. Ако не, ще покаже съобщение за грешка в страничната лента. Грешката възниква, когато файлът не е валиден 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
Дефинирайте друга функция, която ще използва Steamlit за показване на DataFrame в табличен формат. Ще направи това само когато потребителят провери Показване на необработени данни отметка. Ще използва Streamlit's отметка, рамка от данни, и подзаглавие функции.
defexplore_raw_data(df):
st.subheader('Raw Data')
if st.checkbox('Show Raw Data'):
st.dataframe(df)
След като сте създали DataFrame и сте показали необработени данни, сега трябва да почистите данните, да ги анализирате и накрая да ги визуализирате.
Извършване на почистване на данни
Започнете с дефиниране на функция, която ще извършва почистване на данни. Тази функция ще обработва липсващи стойности в DataFrame и дублиращи се редове. След това почистеният DataFrame се показва на потребителя чрез st.dataframe функция, ако проверят Показване на изчистени данни отметка.
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)
Функцията също така показва броя на премахнатите дублирани редове.
Извършване на анализ на данни
Дефинирайте функция за анализ на данни. Тази функция ще покаже описателна статистика на DataFrame и ще покаже топлинната карта на корелационната матрица. Ще използва st.pyplot функция за показване на топлинната карта на потребителския интерфейс.
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)
Можете да промените горната функция, за да извършвате повече анализи на данни. Това ще ви помогне да извлечете повече представа от вашите данни.
Извършване на визуализация на данни
Визуализацията на данни е една от ключовите функции на приложението. Това е така, защото дава представа за данните визуално по удобен за хората начин. Следователно тази функционалност трябва да позволи на потребителите да променят облика на графиките.
За да постигнете това, създайте функция, която ще позволи на потребителите да избират колона, да задават броя на контейнерите и да избират цвят за хистограмата. След това ще генерира хистограма и квадратна графика и ще ги покаже с помощта на st.pyplot функция.
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)
Досега имате всички основни функции на приложението.
Събиране на обратна връзка от потребителите
Понякога дадена функционалност може да не работи според очакванията. След това се нуждаете от начин потребителите да изпращат своите отзиви. Един от начините е потребителите да се свържат с вас чрез имейл. Streamlit предоставя интерфейс за събиране на обратна връзка от потребителя, но не предоставя вградена функционалност за директно изпращане на имейли. Можете обаче да интегрирате външни библиотеки или услуги, за да изпращате имейли от вашето приложение.
За да съберете обратна връзка от потребителя, дефинирайте функция, която да представи на потребителя формуляр.
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!")
Този формуляр ще събере имейла и отзивите на потребителя и ще ви ги изпрати по имейл.
Контролиране на потока на вашата програма и стартиране на приложението
И накрая, имате нужда от основна функция, която ще обедини всички тези функции и ще контролира потока на програмата. Тази функция също така ще гарантира, че потребителите са съгласни с вашите условия за поверителност на данните, преди приложението да обработи техния качен набор от данни.
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()
Можете да стартирате програмата си самостоятелно или да я импортирате като модул използвайки конструкцията if __name__ == '__main__':.
if __name__ == '__main__':
main()
Продължете до терминала и навигирайте до пътя, в който се намира вашият проект. След това изпълнете следната команда, за да стартирате приложението:
streamlit run main.py
Сменете main.py с действителното име на вашия скрипт. След изпълнение на командата Streamlit ще генерира локален URL адрес и мрежов URL адрес. Можете да използвате който и да е от тези URL адреси, за да взаимодействате с приложението си.
Резултатът от програмата е както следва:
Създаването на интерактивни уеб приложения за наука за данни никога не е било по-лесно. Не се нуждаете от напреднали умения за уеб разработка, за да създадете потребителски интерфейс за вашето приложение.
Трябва ли все пак да научите уеб разработка?
Зависи от вашите конкретни цели. Ако очаквате да изграждате сложни, богати на функции уеб приложения, които изискват обширни потребители дизайн на интерфейс и разширени функционалности, тогава изучаването на технологии за уеб разработка може да бъде благотворно. Това е така, защото в Streamlit имате ограничен контрол върху финото персонализиране на външния вид и поведението на вашето приложение.