…alebo prečo je Streamlit naša nová obľúbená dátová hračka
V rámci projektov (napríklad Business Roentgen) skúšame a vyhodnocujeme nové nástroje a postupy spracovania a prezentácie dát s cieľom zjednodušiť a zrýchliť našu prácu. Vyskúšali sme množstvo proprietárnych aj open-source BI nástrojov. Chceli sme nájsť riešenie, ktoré nám umožní rýchlo a jednoducho prezentovať zistenia z desiatok gigabytov otvorených dát, ktoré sme postupne nahromadili. Okrem klasického reportu sme potrebovali pre našich konzultantov, analytikov a zákazníkov vytvoriť prostredie, ktoré umožní interaktívnu prácu s dátami a grafmi – výber vzorky dát, prepínanie a nastavenie vizualizácií, alebo spúštanie machine-learning modelov. Pri krabicových alebo cloudových ETL a BI nástrojoch sme limitovaní peniazmi, našimi skúsenosťami a malou flexibilitou týchto nástrojov. Preto zber a spracovanie dát robíme v pythone. Python je skvelý jazyk. Dá sa rýchlo naučiť a ponúka množstvo knižníc na prácu s dátami a všetko čo potrebujeme.
Problém väčšinou býva so zdieľaním výsledkov s kolegami, ktorí nemajú skúsenosti so spúšťaním a konfigurovaním skriptov. Museli by pracovať s nejakým exportom dát alebo by si nechali vytvoriť prototyp webových aplikácií (dashboardov), ktoré vo frameworkoch ako Plotly Dash alebo Flask trvajú dlhšie alebo ich možnosti zdieľania sú limitované (PowerBI Desktop vo Free verzii).
Náš život je jednoduchší odkedy sme natrafili na Streamlit. Podľa ich stránky je Streamlit open-source aplikačným rámcom pre tímy strojového učenia a dátovej vedy. Streamlit umožňuje jednoduchý a rýchly spôsob vytvárania webových aplikácií. Poskytuje plne programovateľné prostredie, jednoduché a ľahko čitateľné. Aplikácie je možné spustiť a zdieľať lokálne, alebo publikovať prostredníctvom ich cloud platformy.
Nižšie uvádzame krátku ukážku toho, ako pomocou Streamlit pripraviť interaktívny webový prehliadač otvorených dát ITMS2014+ na pár riadkoch kódu.
Streamlit je možné nainštalovať z PyPI pomocou nasledujúceho príkazu:
pip install streamlit
Následne vytvoríme nový Python súbor s názvom itms_app.py. Otvoríme ho pomocou IDE alebo textového editora. Importujeme streamlit, pandas a pyplot, pre následnú prácu s dátami.
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
Cez cmd spustíme streamlit aplikáciu. V prehliadači sa otvorí nová karta. Zatiaľ bude prázdna.
streamlit run first_app.py
Do nášho súboru pridáme nový riadok s názvom aplikácie
st.title("ITMS prehliadač")
V otvorenom okne sa objaví názov a tlačidlo na opakovanie behu aplikácie. Môžeme stlačiť „rerun“ pre jedno opakovanie alebo „always rerun“ pre opakovanie pri každej zmene skriptu. Takto vieme v reálnom čase sledovať zmeny skriptu v okne prehliadača. No nie je to super?
V ďalšom kroku stiahneme zoznam podaných eurofondových žiadostí z otvorených dát systému ITMS2014+. Jednotlivé API endpointy sú zdokumentované tu https://opendata.itms2014.sk/swagger/?url=/v2/swagger.json. K funkcii pripojíme dekorátor @st.cache, ktorý nám zabezpečí, že súbor sa stiahne iba pri prvom spustení programu a uloží sa v pamäti. To výrazne zrýchli chod programu.
@st.cache
def zoznam_projektov():
df = pd.read_json("https://opendata.itms2014.sk/v2/zonfp/prijate")
return df
Následne vykreslíme tabuľku, v ktorej bude zoznam prijatých projektov
df = zoznam_projektov()
st.dataframe(df)
Pod tabuľku môžeme pridať napríklad aj nejaké štatistické ukazovatele
col1, col2 = st.columns(2)
with col1:
st.metric(label="Celkový počet projektov", value=len(zoznam_projektov()))
with col2:
dotacie_mean = df["sumaZiadanaNFP"].mean().round(2)
st.metric(label="Priemerná výška dotácie na 1 projekt", value=f"€{dotacie_mean}")
alebo si jednoducho zobraziť distribúciu dotácií:
plot = df.sumaZiadanaNFP.plot(kind='hist', bins=20)
st.write(plot)
Výsledok vyzerá takto:


Tamás Szöke
partner Centire, grantové poradenstvo, regionálny rozvoj a digitálne inovácieTamás pracuje v spoločnosti Centire už vyše 15 rokov, riadi tím zodpovedný za poskytovanie grantového poradenstva. Oblasti regionálneho rozvoja sa venuje od roku 2004. Počas svojej profesionálnej kariéry sa venoval projektom a programom financovaných zo štrukturálnych fondov EÚ nie len z pozície konzultanta pre beneficientov, ale aj z pozície programového manažéra riadiaceho orgánu. Je nadšencom digitálnych inovácií.
Podobné články

Vakcína pre podniky? Digitalizácia.
Pred pár týždňami som na medzinárodnej vedeckej konferencii predniesol príspevok, v ktorom som označil digitálnu transformáciu…

Naozaj meriate to, čo chcete zistiť?
Stretávame sa s tým v praxi často. Firmy, samosprávy či organizácie venujú veľa pozornosti spracovávaniu dát a prehľadov,…

Školenie – online komunikačné nástroje
Vážení zamestnávatelia, Pripravili sme si pre vás online bezplatné školenie, v ktorom vás naučíme používať…

Koronakríza ukázala priestor pre lepšie vyhodnocovanie dát
Pandémia koronavírusu poukázala na tri oblasti, ktorých zefektívnenie sa pretaví do okamžitej konkurenčnej výhody: Správne…