<НА ГЛАВНУЮ

Проектирование продвинутой многостраничной аналитической панели

Создайте интерактивную панель с динамической фильтрацией и живыми KPI с использованием Panel.

Общий обзор руководства

В этом руководстве мы построим продвинутую многостраничную интерактивную панель с использованием Panel. Мы исследуем, как создавать синтетические данные, применять фильтры, визуализировать динамические временные ряды и даже моделировать обновления живых KPI, шаг за шагом изучая каждый компонент.

Настройка окружения

Установим все необходимые зависимости и загрузим Panel, hvPlot, Pandas и NumPy, чтобы панель работала без сбоев в Colab. Мы создадим полгода синтетических временных данных по сегментам и регионам, чтобы обеспечить богатый набор данных для исследования.

import sys, subprocess
 
def install_deps():
   pkgs = ["panel", "hvplot", "pandas", "numpy", "bokeh"]
   subprocess.check_call([sys.executable, "-m", "pip", "install", "-q"] + pkgs)
 
try:
   import panel as pn
   import hvplot.pandas
   import pandas as pd
   import numpy as np
except ImportError:
   install_deps()
   import panel as pn
   import hvplot.pandas
   import pandas as pd
   import numpy as np
 
pn.extension()
 
rng = np.random.default_rng(42)
dates = pd.date_range("2024-01-01", periods=365, freq="D")
segments = ["A", "B", "C"]
regions = ["North", "South", "East", "West"]
 
# Генерация синтетических данных
base = pd.DataFrame(...)
df = base.reset_index(drop=True)

Создание интерактивных виджетов

Мы создаем интерактивные виджеты и логику фильтрации, которые контролируют всю панель. Подключаем временной график к виджетам, позволяя мгновенные изменения по сегментам, регионам, метрикам и диапазонам дат.

segment_sel = pn.widgets.CheckBoxGroup(...)
region_sel = pn.widgets.MultiChoice(...)
metric_sel = pn.widgets.Select(...)
date_range = pn.widgets.DateRangeSlider(...)
smooth_slider = pn.widgets.IntSlider(...)

Визуализация данных

Мы создаем дополнительные визуальные уровни: столбчатую диаграмму по сегментам и тепловую карту по регионам. Эти графики реагируют на одни и те же глобальные фильтры, предоставляя глубокие аналитические данные.

@pn.depends(segment_sel, region_sel, metric_sel, date_range)
def segment_bar(...):
   ...
 
@pn.depends(segment_sel, region_sel, metric_sel, date_range)
def region_heatmap(...):
   ...

Симуляция обновлений KPI в реальном времени

Мы симулируем поток KPI, который обновляется каждую секунду, демонстрируя данные в реальном времени. Общий доход, средние конверсии и коэффициенты конверсии постоянно рассчитываются в рамках скользящего окна.

kpi_source = df.copy()
 
def compute_kpi(slice_df):
   ...
 
pn.state.add_periodic_callback(update_kpis, period=1000, start=True)

Сборка панели

Мы организуем все компоненты в аккуратный многостраничный макет с помощью вкладок, создавая интуитивно понятную навигацию.

controls = pn.WidgetBox(...)
 
dashboard = pn.Tabs(...)

Объединение всего воедино

Мы увидели, как легко комбинировать виджеты Panel, визуализации hvPlot и периодические обратные вызовы для построения мощной аналитической панели. Эта интерактивная система может послужить основой для реальных отчетов, экспериментов или панелей для промышленного использования.

🇬🇧

Switch Language

Read this article in English

Switch to English