🐍 Создание интерактивных панелей с Streamlit и Python
В небольшом туториале мы расскажем, как за 12 простых шагов подготовить среду и создать интерактивную панель для визуализации данных.
Панель мониторинга (dashboards) – это графический пользовательский интерфейс для интерактивного отображения информации, а также визуализации ключевых показателей и тенденций данных. Разработка таких панелей является довольно утомительной задачей.
Создать интерактивные панели можно с использованием библиотек вроде Plotly и Bokeh. Мы расскажем о Streamlit – еще одной простой библиотеке Python с открытым исходным кодом, которая стремительно набирает популярность в области машинного обучения и Data Science. Она позволяет публиковать веб-приложения в открытом доступе, а также включает встроенный веб-сервер с возможностью развертывания в контейнере docker. В этом обзоре вы найдете подробную инструкцию о том, как самостоятельно разработать и опубликовать интерактивную панель для визуализации данных.
Подготовка
Подготовка среды
Начнем с установки Streamlit и запуска команды hello. Откройте терминал и запустите приведенные ниже команды:
Если приложение работает, вы увидите следующий результат:
Когда вы запустите приложение, в браузере автоматически откроется сервер localhost:
Tip💡
Чтобы выйти из запущенного приложения, используйте Ctrl+с.
Установка библиотек
Импортируем необходимые библиотеки для построения графиков и отображения информации.
Streamlit позволяет отображать текст по-разному:
st.title() – для установки заголовка;
st.text() – для записи описания для конкретного графика;
st.markdown() – для отображения текста в виде markdown;
st.latex() – для отображения математических выражений на панели мониторинга;
st.write() – помогает отображать все возможные детали, например, график, фрейм данных, функции, модель и т. д.;
st.sidebar() – для отображения данных на боковой панели;
st.dataframe() – для отображения фрейма данных;
st.map() – для отображения карты в одной строке кода и т. д.
Пример приложения
Подготовим данные
Чтобы приложение работало более эффективно, уменьшим размер данных, оставив только необходимые переменные:
Настройка заголовка и боковой панели для мониторинга
Tip💡
Добавьте изображение с помощью st.image().
Загружаем данные
На примере данных о COVID-19 Центра системных наук и инженерии (CSSE) Университета Джона Хопкинса, мы создадим визуализацию для интерактивной панели Streamlit.
st.sidebar.checkbox() - для отображения/скрытия данных;
st.sidebar.selectbox() – для выбора для отображения параметров.
Tip💡
Используйте флажки, чтобы выбрать данные для визуализации в разных категориях. В поле выбора отобразите raw data, а также кнопку выбора между количеством зараженных, смертельных или восстановленных случаев.
Далее мы также можем выбрать случаи в соответствии с требуемым параметрами. Метод st_write используется для визуализации набора данных.
Для построения графика мы используем метод библиотеки plotly.express, в формате который поддерживает Streamlit – st.plotly_chart().
Tip💡
Чтобы просмотреть фрейм данных в табличном представлении, воспользуйтесь st.dataframe() и st.table().
Соединяем все вместе
Вот и все, теперь мы можем опубликовать свое творение. Полный скрипт для интерактивного приложения выглядит так:
Публикация приложения
Создайте запрос
Теперь, когда вы создали свое приложение, вы можете поделиться им. Используйте Streamlit sharing, чтобы приложение с открытым кодом совершенно бесплатно. Оно будет развертываться непосредственно из вашего репозитория GitHub.
Совместное использование Streamlit – идеальное решение, если ваше приложение размещено в общедоступном репозитории GitHub, и вы хотите, чтобы любой человек в мире мог получить к нему доступ. Если это не так, присмотритесь к Streamlit для команд, чтобы получить дополнительную информацию о безопасном частном доступе к приложениям.
Если вы хотите разместить приложение с помощью другого хостинг-провайдера, это не станет проблемой.
Чтобы начать работу, сначала запросите приглашение по адресу streamlit.io/sharing. Как только вы получите электронное письмо, можно будет приступить к развертыванию. Для этого придется выполнить несколько шагов.
Поместите свое приложение на GitHub
Поместите ваше приложение Streamlit в публичное репозиторий GitHub. Добавьте файл requirements.txt для управления любыми внешними зависимостями. Streamlit просматривает имя файла ваших требований, чтобы определить, какой менеджер зависимостей Python использовать:
Войдите в систему
Зайдите на share.streamlit.io, нажмите на кнопку кнопка для входа в систему с помощью GitHub (используйте адрес электронной почты, связанный с вашей учетной записью).
Разверните приложение
Нажмите кнопку «Новое приложение», затем введите имя вашего репозитория, ветвь и путь к файлу и нажмите кнопку «Развернуть».
Разработанное в данном туториале приложение живет по адресу:
Когда вы сделаете git push, приложение будет обновлено. Если оно имеет много зависимостей, может потребоваться некоторое время для первого развертывания, но не касающиеся зависимостей изменения выполняются немедленно. Streamlit быстро определяет изменение зависимостей и в этом случае автоматически выполняет полное повторное развертывание приложения, что может занять немного больше времени.
Ваше приложение теперь живет по фиксированному URL в открытом доступе для имеющих ссылку. Достаточно нажать кнопку меню в правом верхнем углу и выбрать «Поделиться этим приложением».
Streamlit является одной из самых быстрорастущих и популярных платформ для создания интерактивных панелей визуализации данных машинного обучения и Data Science. Опробуйте ее с различными наборами данных, а для вдохновения загляните в Streamlit блог, где собраны примеры использования и полезные советы.
Комментарии