Выделение некоторых из наиболее распространенных функций

Веб-приложения - один из самых удобных способов продемонстрировать свою работу в области науки о данных. Создание веб-приложений может быть сложной задачей для многих специалистов по данным, если у них нет опыта веб-разработки. Однако с оптимизированной структурой веб-приложения больше не являются сложными для специалистов по данным - если вы знаете Python, вы можете создавать интерактивные веб-приложения с помощью streamlit - эта потрясающая структура делает все возможное, чтобы создавать и компоновку веб-элементов для нас под капотом. Мы просто сосредоточимся на части данных.

Чтобы установить оптимизированный фреймворк, используйте инструмент pip.

pip install streamlit

После установки вы можете проверить его версию.

streamlit --version

Если вы правильно установили streamlit, вы можете запустить демонстрационное приложение, выполнив следующее. В приложении у вас будет возможность увидеть различные возможности, которые вы можете сделать с помощью оптимизированного фреймворка.

streamlit hello

В демонстрационном приложении вы узнаете, что фреймворк Streamlit поддерживает множество интересных функций, и эти функции обычно необходимы специалистам по данным. В этой статье я хотел бы предоставить краткое руководство по началу работы с этой замечательной веб-платформой. Готов поспорить, что если вы знаете Python, вам понадобится всего несколько часов, чтобы получить разумное представление об этом инструменте.

Если вы хотите следовать этому руководству, вы можете найти скрипт на странице GitHub здесь. В рамках этого руководства мы будем использовать набор данных Titanic, чтобы продемонстрировать некоторые распространенные методы оптимизации с упором на интерактивные виджеты.

Там, где это возможно, я также добавлю несколько дополнительных виджетов, чтобы вы узнали больше по ходу дела.

Настройка проекта

По своей сути каждое оптимизированное веб-приложение представляет собой сценарий Python. Вверху файла мы импортируем необходимые зависимости. В этом случае мы будем использовать несколько модулей, как показано ниже.

import pandas as pd
import time
import streamlit as st
import plotly.express as px

Что касается набора данных, мы будем использовать набор данных titanic, который мы загрузим из Интернета.

Одна примечательная особенность - использование декоратора st.cache, который повысит скорость отклика сети из-за кеширования данных, которые были получены ранее. В этом случае титанический набор данных будет получен только один раз, а при обновлении веб-страницы он больше не будет получен. В связи с этим следует отметить, что сценарий будет запускаться снова, как только в вашем коде появятся какие-либо изменения, поэтому использование функции кэширования важно для улучшения взаимодействия с пользователем.

Чтобы просмотреть данные, мы можем просто запустить st.dataframe(titanic_data), и вы увидите что-то вроде того, что показано ниже.

1. Организационные элементы (например, заголовки)

В Streamlit есть несколько способов разместить заголовки на вашей веб-странице. Чтобы добавить заголовок к своей странице, вы можете запустить: st.title(“My First Streamlit App”).

Чтобы добавить дополнительные заголовки на двух разных уровнях, вы можете использовать st.header() и st.subheader().

В качестве альтернативы вы можете воспользоваться функцией уценки, вы можете добавить заголовки, такие как st.markdown(“#Just like a header”) и st.markdown(“#Just like a subheader”).

Помимо заголовков, важным организационным элементом в streamlit является боковая панель, где вы можете добавлять элементы конфигурации, которые изменяют элементы, отображаемые на главной странице. Чтобы добавить боковую панель, вы просто добавляете st.sidebar в свой скрипт. В частности, вы, вероятно, добавите больше элементов на боковую панель. Таким образом, вместо использования st.sidebar для ссылки на боковую панель рекомендуется создать ссылку на боковую панель, например, sidebar = st.sidebar.

2. Виджеты с множественным выбором

Для сбора ответов пользователей у нас есть несколько вариантов создания виджетов с множественным выбором. Первый виджет - это переключатель.

Вы увидите что-то вроде того, что показано ниже. Обратите внимание, что выбранный параметр будет фактическим значением отображаемых параметров, а не выбранным числовым индексом. В данном случае это будет текст.

Второй виджет - это selectbox, который представляет собой раскрывающийся список, из которого вы можете сделать свой выбор. Код будет таким.

selected_sex = st.selectbox("Select Sex", titanic_data['sex'].unique())
st.write(f"Selected Option: {selected_sex!r}")

Взаимодействие будет таким, как показано ниже.

Если вам требуется, чтобы пользователи вводили несколько вариантов, вы должны использовать виджет multiselect, как показано ниже.

selected_decks = st.multiselect("Select Decks", titanic_data['deck'].unique())
st.write("Selected Decks:", selected_decks)

Для этого виджета вы увидите что-то вроде того, что показано ниже.

3. Виджеты, связанные с числами

Когда вам нужно собрать числа в качестве входных данных, мы можем использовать виджет number_input. Как всегда, вы можете назвать виджет и установить значение для виджета.

В коде я также включил функцию «уведомления» в streamlit. Если вы хотите показать сообщение об ошибке, вы используете st.error(), а чтобы показать успешное сообщение, вы используете st.success(). Еще одна включенная функция - использование столбцов (st.beta_columns), что полезно, когда у вас есть параллельные виджеты, которые тесно связаны друг с другом. В этом случае целесообразно сгруппировать два виджета, которые собирают минимальный и максимальный возраст вместе.

С помощью приведенного выше кода мы увидим виджет, показанный ниже.

В дополнение к этому виджету streamlit также предоставляет виджет ползунка, который позволяет пользователю указывать ввод числа без ввода каких-либо клавиш. Вот код.

С помощью виджета slider вы указываете имя виджета. А пока вы устанавливаете минимальное и максимальное значения. Помимо виджета ползунка, приведенный выше код включает еще одну функцию, называемую расширителем (st.beta_expander). Эта функция полезна, когда вы хотите скрыть некоторые дополнительные виджеты. Вы можете указать, хотите ли вы, чтобы расширитель был расширен по умолчанию.

На следующем рисунке показан такой интерактивный виджет слайдера.

4. Текстовые виджеты

Для сбора текстовых данных мы можем использовать виджеты text_input и text_area. Основное отличие состоит в том, что виджет text_input хорош для сбора короткой текстовой строки, а виджет text_area предпочтительнее, если вы хотите собрать большой объем текстовых данных.

В приведенном выше коде показано, как отображать эти виджеты. Я также добавил две дополнительные функции. Один из них - это виджет отображения кода (st.echo), который будет показывать код, включенный в оператор with, в дополнение к виджету. Другая особенность - пасхальное яйцо, которое запускает связку воздушных шаров (st.balloons). См. Рисунок ниже, чтобы увидеть такую ​​функцию.

5. Основные характеристики некоторых других функций

Индикатор выполнения
Иногда, если ваше приложение работает с большим объемом данных и время ожидания превышает ожидаемое пользователем, рекомендуется использовать индикатор выполнения. Код показан ниже.

Так выглядит индикатор выполнения в приложении.

Markdown
Streamlit поддерживает записи уценки, которые открывают для нас множество возможностей. Чтобы использовать эту функцию, вам просто нужно использовать st.markdown. Чтобы узнать больше о синтаксисе уценки, вы можете перейти на GitHub.

Вот несколько часто используемых примеров.

Графики
Если ваше приложение хочет отображать графики, streamlit изначально поддерживает множество сторонних показателей. Вот список, взятый из его официальной документации.

write(mpl_fig): Displays a Matplotlib figure.
write(altair): Displays an Altair chart.
write(graphviz): Displays a Graphviz graph.
write(plotly_fig): Displays a Plotly figure.
write(bokeh_fig): Displays a Bokeh figure.

На следующем рисунке показан рисунок, созданный с помощью Plotly.

Выводы

В этой статье мы рассмотрели некоторые полезные функции, которые вы должны включить в свое интерактивное веб-приложение. Как видите, streamlit предоставляет множество функций, которые позволяют собирать числа, тексты, варианты выбора и отображать код, уценку и цифры. С Streamlit вам практически не нужно беспокоиться о веб-элементах. Вам просто нужно сосредоточиться на создании содержания веб-приложения.