fbpx

Webový prehľadávač otvorených dát ITMS

…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:

Informácie o pozícii nájdete na webe Profesia.sk

Bavia vás dáta?

Pošlite nám životopis a budeme vás kontaktovať!

Prihláste sa na odber noviniek

Podobné články