Интересный Python #14: визуализируем данные
Сегодня напишем вот такое приложение всего в 53 строки кода. Да, всего 53, без шуток. И всё благодаря Streamlit.
Что такое Streamlit?
Streamlit - это библиотека, которая позволяет создавать веб-интерфейс для приложений, работающих с данными. Так что если вы работаете с Pandas, используете Matplotlib, Bokeh, Altair и подобные инструменты, то с помощью Streamlit сможете оборачивать свои скрипты в интерактивные веб-интерфейсы и делиться ими с другими пользователями.
Для кого этот пост?
Для тех, кто уже неплохо знаком с Python и часто работает с данными. Для начинающих многие вещи будут сложноватыми.
Как установить Streamlit
1. Откройте терминал (командную строку);
2. Если умеете пользоваться виртуальным окружением, то создайте и активируйте его. Если нет, то пропустите этот шаг;
3. Выполните команду pip install streamlit.
Документация
Документация просто великолепная, очень удобная и красивая. Ознакомиться с ней можно здесь.
Дальше в посте будет много кода в виде скриншотов. Забрать его в виде текста можно здесь.
Интерфейс
Для начала соберём интерфейс приложения. Он будет состоять из:
- формы (контейнера для других элементов);
- нескольких слайдеров;
- пары полей для ввода чисел;
- кнопки;
- линейного графика.
Для каждого из этих элементов в Streamlit есть отдельный класс.
Форма нужна для того, чтобы скрипт не перезапускался полностью при каждом изменении слайдера или поля для ввода (по умолчанию в Streamlit реализовано именно такое поведение).
Пишем код
Задаём настройки страницы, добавляем заголовок «Симулятор ставок» и создаём форму с элементами.
Запускаем сервер
Чтобы запустить сервер Streamlit, выполните в терминале следующую команду:
python -m streamlit run main.py
Вместо main.py, конечно же, укажите имя вашего основного модуля.
Если всё сделано правильно, то спустя несколько секунд откроется окно браузера, в котором отрисуется интерфейс.
Важно: запускать программу с помощью интерпретатора Python не нужно, сервер Streamlit сам это сделает. Если вы внесёте изменения в исходный код, то достаточно будет просто обновить страницу, чтобы изменения вступили в силу.
Логика
Теперь реализуем внутреннюю логику. Нужно будет при каждом нажатии на кнопку в форме генерировать датафрейм с результатами ставок.
Начнём с импорта нужных модулей.
Так как нужно будет генерировать N наборов данных, построенных по одинаковому принципу, то упакуем начальные «настройки» в класс, и будем использовать их при вызове методов.
Соединяем интерфейс и логику
Осталось сделать так, чтобы при клике по кнопке приложение забирало данные из элементов интерфейса и отдавало их в Simulator.
Приложение готово. Обновите страницу в браузере, и Streamlit автоматически подтянет все изменения.
Деплой
Streamlit щедро раздаёт свои облачные ресурсы, так что развернуть приложение можно буквально в пару команд. Пушим код на Github, даём Streamlit ссылку на репозиторий, немного ждём и получаем ссылку на наше приложение в облаке. Подробности - в документации.







Программирование на python
929 постов11.9K подписчиков
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако!
Приветствуется:
• уважение к читателям и авторам
• конструктивность комментариев
• простота и информативность повествования
• тег python2 или python3, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
• нарушать правила Пикабу