Python Streamlit Дашборди 2026-07-20 9 хв

Streamlit для аналітиків даних: інтерактивні дашборди на Python

Streamlit дозволяє аналітикам даних перетворити Python-скрипт на інтерактивний вебдашборд за лічені хвилини — без HTML, CSS або JavaScript. Цей посібник охоплює встановлення, ключові компоненти, підключення до SQL та реальні аналітичні кейси.

Ісаченко Андрій
Ісаченко Андрій
Аналітик даних · Відкритий до роботи

📋 Зміст

  1. Що таке Streamlit і для чого він аналітику
  2. Встановлення та перший запуск
  3. Ключові компоненти для аналітики
  4. Підключення до SQL бази даних
  5. Розгортання на Streamlit Cloud
  6. Streamlit vs Power BI vs Tableau

Що таке Streamlit і для чого він аналітику

Streamlit — це відкрита Python-бібліотека, яка перетворює звичайний скрипт на інтерактивний вебдодаток. Ви пишете код так само, як пишете аналіз у Jupyter Notebook, а Streamlit рендерить результат у браузері з готовими віджетами — слайдерами, фільтрами, таблицями, графіками.

Для аналітика даних це означає: більше не потрібно надсилати статичні Excel-звіти або чекати розробника для деплою дашборду. Ви пишете логіку самостійно і ділитесь посиланням.

"Streamlit — це як Jupyter Notebook, але з кнопками, фільтрами та URL для стейкхолдерів."

Коли Streamlit підходить аналітику:

Встановлення та перший запуск

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:

  1. Завантажте app.py та requirements.txt у GitHub-репозиторій
  2. Зайдіть на share.streamlit.io і увійдіть через GitHub
  3. Натисніть New app → виберіть репозиторій і файл
  4. Додайте секрети у розділі Advanced settings → Secrets
  5. Натисніть Deploy

Через 1–2 хвилини дашборд доступний за публічним посиланням вигляду yourapp.streamlit.app.

✅ Файл requirements.txt повинен містити всі залежності. Мінімальний для аналітичного дашборду: streamlit, pandas, plotly, sqlalchemy.

Streamlit vs Power BI vs Tableau

КритерійStreamlitPower BITableau
ВартістьБезкоштовно$10/міс (Pro)$70/міс
Потребує PythonТакНіНі
Кастомна логікаНеобмеженаОбмежена DAXОбмежена LOD
Час до першого дашборду15 хв30 хв1–2 год
ML інтеграціяНативнаОбмеженаОбмежена
Корпоративний шерінгGitHub / CloudPowerBI.comTableau Server
Підходить дляАналітик/DSБізнес-аналітикBI-фахівець

Streamlit не замінює Tableau або Power BI — він заповнює нішу між Jupyter Notebook і повноцінним BI-інструментом. Якщо вам потрібна корпоративна підписка, SSO і централізоване управління — беріть Power BI або Tableau. Якщо потрібен гнучкий Python-дашборд за нуль бюджету — Streamlit.

Теги: Streamlit Python Дашборди Pandas Plotly SQL