Що таке Streamlit і для чого він аналітику
Streamlit — це відкрита Python-бібліотека, яка перетворює звичайний скрипт на інтерактивний вебдодаток. Ви пишете код так само, як пишете аналіз у Jupyter Notebook, а Streamlit рендерить результат у браузері з готовими віджетами — слайдерами, фільтрами, таблицями, графіками.
Для аналітика даних це означає: більше не потрібно надсилати статичні Excel-звіти або чекати розробника для деплою дашборду. Ви пишете логіку самостійно і ділитесь посиланням.
"Streamlit — це як Jupyter Notebook, але з кнопками, фільтрами та URL для стейкхолдерів."
Коли Streamlit підходить аналітику:
- Потрібен інтерактивний прототип дашборду швидше, ніж за день
- Дані в Python/Pandas, а не в Google Sheets
- Стейкхолдери мають змогу самостійно фільтрувати дані
- Потрібно показати ML-модель або результати A/B-тесту наочно
- Немає бюджету на Tableau або Power BI
Встановлення та перший запуск
pip install streamlit pandas plotly sqlalchemy
Створіть файл app.py і додайте:
import streamlit as st
import pandas as pd
import plotly.express as px
st.title("Мій перший дашборд")
df = pd.DataFrame({
"Місяць": ["Січ", "Лют", "Бер", "Кві", "Тра"],
"Виручка": [120000, 145000, 138000, 162000, 175000]
})
fig = px.bar(df, x="Місяць", y="Виручка", title="Виручка по місяцях")
st.plotly_chart(fig, use_container_width=True)
st.dataframe(df)
Запустіть:
streamlit run app.py
Браузер відкриється автоматично на http://localhost:8501. Будь-яке збереження файлу — дашборд оновлюється миттєво.
st.cache_data для кешування важких операцій — завантаження CSV або SQL-запитів. Без кешування Streamlit перезапускає весь скрипт при кожній взаємодії користувача.Ключові компоненти для аналітики
Фільтри та віджети
import streamlit as st
import pandas as pd
df = pd.read_csv("sales.csv")
# Сайдбар з фільтрами
st.sidebar.header("Фільтри")
regions = st.sidebar.multiselect(
"Регіон",
options=df["region"].unique(),
default=df["region"].unique()
)
date_range = st.sidebar.date_input(
"Діапазон дат",
value=(df["date"].min(), df["date"].max())
)
# Застосування фільтрів
filtered = df[
(df["region"].isin(regions)) &
(df["date"] >= str(date_range[0])) &
(df["date"] <= str(date_range[1]))
]
st.metric("Загальна виручка", f"${filtered['revenue'].sum():,.0f}")
st.dataframe(filtered)
Метрики KPI
col1, col2, col3 = st.columns(3)
col1.metric(
label="Виручка",
value="$162,400",
delta="+12.3% vs минулий місяць"
)
col2.metric(
label="Замовлення",
value="1,847",
delta="+8.1%"
)
col3.metric(
label="Середній чек",
value="$87.9",
delta="-2.1%",
delta_color="inverse" # червоний для зростання — коли менше = краще
)
Підключення до SQL бази даних
Streamlit має вбудований коннектор для більшості баз даних через st.connection (доступний з версії 1.22).
import streamlit as st
import pandas as pd
# Підключення через st.connection (рекомендовано)
conn = st.connection("postgresql", type="sql")
# Запит з кешуванням на 10 хвилин
@st.cache_data(ttl=600)
def load_sales():
return conn.query("""
SELECT
DATE_TRUNC('month', order_date) AS month,
region,
SUM(revenue) AS revenue,
COUNT(*) AS orders
FROM orders
WHERE order_date >= NOW() - INTERVAL '12 months'
GROUP BY 1, 2
ORDER BY 1
""", ttl=600)
df = load_sales()
st.line_chart(df.pivot(index="month", columns="region", values="revenue"))
Налаштування підключення зберігається у .streamlit/secrets.toml:
[connections.postgresql] dialect = "postgresql" host = "localhost" port = 5432 database = "analytics" username = "analyst" password = "your_password"
secrets.toml локально і Streamlit Secrets у хмарному деплої. Файл secrets.toml додайте до .gitignore.Розгортання на Streamlit Cloud
Streamlit Cloud — безкоштовний хостинг для публічних репозиторіїв GitHub:
- Завантажте
app.pyтаrequirements.txtу GitHub-репозиторій - Зайдіть на share.streamlit.io і увійдіть через GitHub
- Натисніть New app → виберіть репозиторій і файл
- Додайте секрети у розділі Advanced settings → Secrets
- Натисніть Deploy
Через 1–2 хвилини дашборд доступний за публічним посиланням вигляду yourapp.streamlit.app.
requirements.txt повинен містити всі залежності. Мінімальний для аналітичного дашборду: streamlit, pandas, plotly, sqlalchemy.Streamlit vs Power BI vs Tableau
| Критерій | Streamlit | Power BI | Tableau |
|---|---|---|---|
| Вартість | Безкоштовно | $10/міс (Pro) | $70/міс |
| Потребує Python | Так | Ні | Ні |
| Кастомна логіка | Необмежена | Обмежена DAX | Обмежена LOD |
| Час до першого дашборду | 15 хв | 30 хв | 1–2 год |
| ML інтеграція | Нативна | Обмежена | Обмежена |
| Корпоративний шерінг | GitHub / Cloud | PowerBI.com | Tableau Server |
| Підходить для | Аналітик/DS | Бізнес-аналітик | BI-фахівець |
Streamlit не замінює Tableau або Power BI — він заповнює нішу між Jupyter Notebook і повноцінним BI-інструментом. Якщо вам потрібна корпоративна підписка, SSO і централізоване управління — беріть Power BI або Tableau. Якщо потрібен гнучкий Python-дашборд за нуль бюджету — Streamlit.
