Создавайте интерактивные веб-приложения для проектов по науке о данных и машинному обучению, используя только Python, и все благодаря Streamlit!
Streamlit — это библиотека Python с открытым исходным кодом для создания веб-приложений для проектов по науке о данных и машинному обучению. Он предназначен для использования учеными, работающими с данными, и инженерами по машинному обучению, которые не обладают обширными навыками фронтенд-разработки. Он имеет простой синтаксис, позволяющий создавать интерактивные веб-приложения с помощью нескольких строк кода.
Объединяя сложные технические детали в удобном интерфейсе, Streamlit позволяет пользователям сосредоточиться на изучении и представлении своих данных, прототипов или моделей в режиме реального времени. Это делает его ценным инструментом для быстрого обмена информацией.
Установка библиотеки Streamlit
Создайте новую виртуальную среду. Это гарантирует отсутствие конфликта версий пакета после установки. Стримлит. Затем используйте pip для установки Streamlit, выполнив следующую команду:
pip install streamlit
Затем убедитесь, что установка установлена правильно.
streamlit --version
Если установка прошла успешно, отобразится установленная версия Streamlit.
Создание простого приложения для очистки и анализа данных
Вы создадите простое веб-приложение, чтобы узнать, как работает Streamlit и его функции. Это приложение сможет очищать загруженный набор данных, выполнять анализ данных и, наконец, визуализировать данные.
Полный исходный код доступен в Репозиторий 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 флажок, кадр данных, и подзаголовок функции.
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 и отобразит тепловую карту корреляционной матрицы. Он будет использовать ул.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)
Вы можете изменить приведенную выше функцию, чтобы выполнить дополнительный анализ данных. Это поможет вам получить больше информации из ваших данных.
Выполнение визуализации данных
Визуализация данных — одна из важнейших функций приложения. Это связано с тем, что он дает представление о данных визуально и в удобной для человека форме. Таким образом, эта функция должна позволять пользователям изменять внешний вид графиков.
Для этого создайте функцию, которая позволит пользователям выбирать столбец, устанавливать количество интервалов и выбирать цвет гистограммы. Затем он сгенерирует гистограмму и коробчатую диаграмму и отобразит их с помощью ул.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 у вас есть ограниченный контроль над детальной настройкой внешнего вида и поведения вашего приложения.