1. Введение в Streamlit
1.1. Что такое Streamlit?
- История создания и назначение библиотеки.
- Основные цели: быстрый и простой способ превратить скрипты на Python в интерактивные веб-приложения без веб-фреймворков.
- Сравнение с другими инструментами (Dash, Voila, Gradio).
1.2. Области применения
- Демонстрационные прототипы моделей машинного обучения.
- Интерактивные дашборды для аналитиков и научных сотрудников.
- Визуализация данных и быстрый обмен результатами работы с коллегами.
2. Установка и настройка рабочей среды
2.1. Установка Streamlit
- Требования к окружению (Python 3.7+, pip).
pip install streamlit
– базовая установка.- Работа с виртуальными окружениями (venv, conda).
2.2. Структура приложения
- Обычный .py файл с кодом.
- Запуск приложения:
streamlit run app.py
. - Горячая перезагрузка при изменении кода.
3. Базовые элементы и компоненты интерфейса
3.1. Отображение текста и заголовков
st.title("Заголовок")
, st.header("Подзаголовок")
, st.write("Простой текст")
.- Маркдаун поддержка:
st.markdown("**Выделение жирным**")
.
3.2. Отображение данных и таблиц
st.dataframe(df)
и st.table(df)
для отображения DataFrame и статичных таблиц.- Отображение JSON:
st.json()
.
3.3. Отображение графики и изображений
- Встроенная поддержка
matplotlib
, plotly
, altair
. st.image("path/to/image.png")
– работа с изображениями.
3.4. Ввод данных пользователем
- Текстовые поля:
st.text_input()
, st.text_area()
. - Числовые и дата-пикеры:
st.number_input()
, st.date_input()
. - Слайдеры, чекбоксы, радио-кнопки:
st.slider()
, st.checkbox()
, st.radio()
.
3.5. Боковая панель
st.sidebar
для вынесения элементов интерфейса в боковую панель.- Организация структуры приложения для удобства.
4. Продвинутые возможности Streamlit
4.1. Состояние и кэширование
- Использование
st.cache_data()
(замена устаревшего st.cache
) для оптимизации загрузки данных. st.cache_resource()
для долгоживущих ресурсов, таких как подключение к базе данных.- Пример: кэширование тяжелой функции загрузки данных из API.
4.2. Лэйауты и контейнеры
- Использование
st.container()
, st.columns()
, st.expander()
для организации интерфейса. - Пример: создание адаптивного лэйаута для сравнительного анализа графиков.
4.3. Взаимодействие с сессией
st.session_state
для хранения глобальных состояний между взаимодействиями.- Пример: шаговый ввод данных пользователем и сохранение результатов.
4.4. Загрузка и скачивание файлов
st.file_uploader()
для загрузки файлов.st.download_button()
для скачивания обработанных данных.
5. Новые возможности и фичи в последних обновлениях
5.1. Новые функции Streamlit Components
- Обзор новых или улучшенных компонентов из официальных релизов.
- Возможность интеграции своих React-компонентов через
streamlit-component-template
.
5.2. Поддержка WebSocket и более быстрый рендеринг
- Улучшения производительности.
- Примеры обновленных API для работы в реальном времени (если релизы это включают).
5.3. Улучшения в кэшировании
- Поддержка
st.cache_data()
и st.cache_resource()
. - Новые параметры: максимальное время жизни кэша, инвалидация кэша.
5.4. Улучшения в работе с темизацией
- Настройка тем: светлая, темная тема, или кастомный дизайн.
- Добавление новых параметров конфигурации в
~/.streamlit/config.toml
.
5.5. Улучшенная поддержка Plotly и Data Editor
st.data_editor()
– интерактивное редактирование таблиц напрямую в веб-интерфейсе.- Новые аргументы у
st.dataframe()
для настройки внешнего вида. - Более тесная интеграция с Plotly-объектами и анимациями.
6. Примеры приложений
6.1. Простое приложение для визуализации данных
- Загрузка CSV-файла, отображение таблицы.
- Отрисовка графиков Plotly на основе выбранных фильтров.
- Демонстрация боковой панели для выбора параметров графика.
6.2. Машинное обучение в реальном времени
- Обучение простой модели (например, логистической регрессии) на загружаемых данных.
- Перебор параметров модели через слайдеры.
- Отображение метрик качества и ROC-кривой.
6.3. Приложение для анализа изображений
- Загрузка изображения пользователем.
- Запуск небольшой модели классификации или сегментации.
- Отображение результатов поверх оригинального изображения.
6.4. Демонстрация новых фич: Data Editor и Cache
- Использование
st.data_editor()
для интерактивного редактирования данных. - Кэширование вычислительной функции с
st.cache_data()
.
7. Развертывание и эксплуатация
7.1. Развертывание на Streamlit Cloud
- Инструкция по быстрому деплою на Streamlit Cloud (раньше Streamlit Sharing).
- Контроль версий и обновления приложения.
7.2. Развертывание на Heroku, Google Cloud, AWS
- Использование Docker для упаковки приложения.
- Подготовка
requirements.txt
и Procfile
.
8. Практические советы и лучшие практики
8.1. Оптимизация производительности
- Минимизация перерисовок.
- Профилирование кода и кеширование.
8.2. Работа с секретами и конфигурациями
- Использование
st.secrets
для безопасного хранения ключей API. - Настройка тем и параметров в
config.toml
.
8.3. Общие рекомендации по архитектуре приложения
- Логическое разделение кода на модули.
- Легкое масштабирование и поддержка кода.
9. Ответы на вопросы и обсуждение
- Разбор часто встречающихся проблем и ошибок.
- Ресурсы для дальнейшего изучения: официальная документация, сообщество Streamlit.
- Направления развития проекта и будущие планы.