Power Bi, Python, Визуализация, Графики

Разработка аналитических веб-приложений с использованием библиотеки Streamlit

Время прочтения: 3 мин.

Недавно посмотрел курс IBM по визуализации данных с использованием Python. Интерес вызвал раздел “построение дэшбордов”. В разделе перечислены как уже знакомые библиотеки Bokeh, Dash, так и незнакомые Streamlit, Panel. Библиотека Dash предоставляет богатый функционал для построения интерактивных отчетов или веб-приложений. К сожалению, в community версии нет возможности использовать часть тем. Возможности развернуть свой отчет на серверах Dash также нет.

Изменение интереса к библиотекам во времени

Streamlit – библиотека с открытым исходным кодом для языка программирования Python. На странице библиотеки разработчики обещают простой API, полностью бесплатную функциональность, а также быстрое и бесплатное развертывание на серверах.

Библиотека предоставляет собой декларативный подход к написанию веб-приложений. Напомню, что программисты разделяют два основных подхода к разработке: императивный и декларативный. Первый подход как решить задачу и описывает шаги для достижения результата. Декларативный подход противоположен, в нем указывается что вы хотите.

Большое преимущество Streamlight, в том, что вам не нужно писать backend, подключать frontend или писать на HTML, CSS или JS для красивой верстки вашего проекта.

К примеру, чтобы сделать форму, в которой будет содержаться текст и график, вам понадобится всего 5 строчек кода:

```python main.py``` 
import streamlit as st 
import pandas as pd
df = pd.read_csv("dataset.csv") 
st.write("линейный график") 
st.line_chart(df)

И запуск веб-приложения в командной строке:

```bash```
streamlit run main.app

Приятные аспекты разработки с использованием данной библиотеки:

  • Поддержка популярных библиотек, таких как Pandas, Matplotlib, Seaborn, Plotly, Bokeh, Altair, Folium;
  • Поддержка языков разметки Markdown, Latex;
  • Возможность добавлять интерактивные виджеты: слайдеры, выпадающие списки одной строкой;
  • Галерея приложений, разработанных с использованием этой библиотеки, в различных областях;
  • Быстрая поддержка;
  • Быстрое и понятное развертывание на серверах разработчиков.

Что не понравилось:

  • В документации содержалось мало примеров;
  • Плохая адаптивная верстка у Plotly и Bokeh.

Примеры реализованных приложений

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

Пример реализации функции математической морфологии
  • Загрузка своего изображения;
  • Операции эрозии, дилатации, вскрытия и закрытия;
  • Показ изображения до и после обработки;
  • Визуализация гистограмм изображений.

Во втором приложении реализованы функции интерактивной визуализации результатов экспериментов

Интерактивная визуализация экспериментов
  • Можно выбрать оси;
  • Выбор функции агрегирования;
  • Выбор метода интерполяции.

Развертывать приложения я решил на хостинге от streamlit. Для размещения приложения на серверах streamlit достаточно выполнить простые шаги, указанные в документации.

Вывод: библиотека Streamlit подходит для быстрой разработки и развертывания веб-приложений. На текущий момент библиотека имеет не более 10 интерактивных виджетов. Однако с их помощью можно создать действительно интересные программы. Подборку таких программ можно найти на официальном сайте библиотеки. Рекомендую ознакомится с библиотекой, она поможет в быстром создании веб-приложений.

Советуем почитать