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.
- Направления развития проекта и будущие планы.