Nauč se Python > Kurzy > Datový kurz PyLadies > Interaktivní vizualizace a aplikace > Pokročilejší možnosti pro dashboardy

Pokročilejší dashboarding

V předchodí části jsme velice efektivně vytvořili jednoduchý a přesto užitečný dashboard na vizualizaci dat. Teď se podíváme na trochu rozsáhlejší aplikaci: Vrátíme se zpět k rybám, tučňákům a strojovému učení.

Fishboard

Když jsme zkoumali možnosti strojového učení (regrese, klasifikace, klastrování atd.), měnili jsme metody, (hyper)parametry a dívali jsme se, jak dobře se stroj naučil odhadovat nějakou vlastnost z dat. To je rozhodně příležitost pro pěkný dashboard, který nám takovou práci usnadní.

První verze

První verzi aplikace najdeš v Github repozitáři https://github.com/coobas/fishboard. K sobě si ji naklonuješ příkazem

git clone https://github.com/coobas/fishboard.git

Pro lokální vývoj takového dashboardu je rozumné vytvořit pro ni vlastní virtuální prostředí, aby se nemíchaly balíky z jiných projektů a aby tak chování aplikace bylo lokálně stejné jako na serveru. Můžeme postupovat takto:

cd fishboard
python3 -m venv .venv

Tím jsme vytvořili virtuální prostředí v adresáři .venv. Aktivujeme ho na Linuxu / Mac OS pomocí

source .venv/bin/activate

nebo na Windows

.venv/bin/activate.bat

A teď nainstalujeme všechny potřebné balíky:

python -m pip install -r requirements.txt

Pak by měl jít fishboard spustit už známým způsobem:

streamlit run fishboard.py

Přidáváme vizualizaci

Jistě si všichni všimli, že fishboard umí pracovat jen s rybími daty a navíc je neumí ani vykreslit. Ještě že máme tuto část připravenou z předchozí části a nic nám nebrání ji použít.

Úkol: Přidej do fishboardu naši předchozí aplikaci pro načítání a zobrazování dat. Asi bude potřeba někde místo st. použít col1..

Na co si dát pozor

Streamlit aplikace je vlastně takový skript. Spouští se pořád dokola, jakmile uživatel něco zadá, někam klikne. Je to záměr, tento design přináší opravdu přímočarý způsob psaní užitečných webových aplikací. Za tuto přímočarost ale samozřejmě platíme některými omezeními.

Rychlost

Od Streamlitu rozhodně nečekejte nejsvižnější uživatelské rozhraní, spíš naopak. Tím, že se aplikace spouští celá stále dokola, může docházet k menším i větším prodlevám (které ovšem nemusí zásadně vadit). Existují dva jednoduché způsoby, jak rychlost optimalizovat:

  1. Používat cache na pomalé funkce, tj. "schovávat" si výsledky těchto funkcí, a pokud se funkce zavolá s argumenty, pro které už je výsledek k dispozici, vytáhne se výsledek (rychle) z cache. Streamlit na to má velice užitečnou funkci st.cache, která se nejčastěji používá jako @dekorátor.
  2. Přidat tlačítko pro spuštění výpočtu, aby se drahé výpočty neprováděly po každé změně vstupu.

Složitost aplikace

Programování ve Streamlitu je přímočaré a taková by měla být i aplikace, kterou vytváříme. Pokud potřebujeme nestandardní komponenty (widgety), detailní rozložení komponent na stránce nebo komplexní interakce mezi komponenty, je potřeba sáhnout jinam: Ve světě čistého Pythonu nám mohou posloužit Dash nebo Panel. Největší možnosti pak přináší rozdělení aplikace na backend a frontend. Backend napíšeme samozřejmě v Pythonu (pomůže nám např. FastAPI), frontend pak třeba v TypeScript a React.

Domácí projekt

Přidej do fishboardu možnost klasifikace a / nebo klastrování (PCA). Aplikaci spusť na Heroku. Jako bonus můžeš dát svůj kód k dispozici na Githubu.


Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem.