Z nuly k dashboardu s Czechitas

První tři měsíce letošního roku se o víkendech a po práci vcelku intenzivně bavím programem Digitální Akademie s Czechitas (za podpory Google.org). Jedná se o tříměsíční kurz datové analýzy. Po absolvování předmětů jako SQL, Python a Data Tools máme vypracovat závěrečný projekt, ve kterém využijeme získané znalosti. A právě projektu bych chtěla věnovat tento příspěvek.
Pro ulehčení práce na projektu je vám přidělen mentor, kterého si můžete vybrat a který si může vybrat vás na tzv. “speed datingu”. Po krátkých rozhovorech si vy i mentoři napíšete preference a Czechitas to pak zoptimalizují. Můj vybraný a přidělený mentor měl tu smůlu, že se večera a speed datingu nemohl účastnit a tedy se ani bránit. Nevím, jestli takovou chybu ještě někdy zopakuje.
Martina Matějka z Keboola nám na víkendovém workshopu představoval Keboola a Tableau a jejich využití pro analýzu dat. Říkal, že žádný projekt vést nechtěl, ale že ho holky přemluvily, a že teda jednu práci si vezme, ale frekventantka musí mít vlastní super nápad.
A ten jsem měla. Teda v počáteční vlně mi přišel jako super. Pak zas ne, pak zas jo, pak ne, pak zas jo…
O čem můj projekt tedy je:
1.vlna
Ráda jezdím na kole. Jezdí nás celá parta. Na silničním i na MTB. Na takové amatérské úrovni zpestřené občas hobby závodem. Všichni používáme sportovní aplikaci Strava. (Nemá to nic společného s jídlem, je to švédský překlad anglického slova strive - snažit se, usilovat). Nejdřív mě přišlo ujetý si sledovat sportovní výkony. Ale moc holek okolo Prahy na silničním kole nejezdí a ještě méně jich používá Stravu. Takže když jsem po první vyjíždce nasbírala na segmentech (označené úseky) asi deset trofejí “Queen of the Mountains”, tak jsem tu aplikaci vzala na milost. A teď už se bez ní neobejdu. Přesně ve smyslu jejich sloganu. “If it's not on Strava, it didn't happen”.
Takže jsem si říkala, že vydoluju data ze Stravy, mojí i kamarádů, a udělám nám pěkný týmový dashboard. Jak kdo trénuje, jak se komu vede na zásadních segmentech u Prahy, kdo je v top 10 a kdo v top 10%.
Takže skvělý nápad, téma, ke kterému mám vztah, a bavilo by mě. Odvážila jsem se teda napsat si Martina jako mentora.  

2. vlna
Cvičně si zkouším dát ve Stravě “export data”. A panika. Naprostá. Jediné, co se mi stáhne je csv plné GPS souřadnic z mých výletů. Nic o kamarádech. Nic o segmentech.
To fakt nebyl dobrý nápad a téma projektu.

3. vlna
Při hodině pythonu nám Světlana vysvětlovala, co je to API. Zkouším teda googlit sofistikovaněji. “Strava API” a ejhle. Ono asi nějak ty data z aplikace získat jdou.
To bude skvělý projekt.

4. vlna
Ono nejenže ty data z aplikací získat jdou. Ale lidé to i dělají. Existuje i Strava Developer challenge, při které vznikají fakt cool aplikace.
Ten projekt bude úplně zbytečný.

5. vlna
Ale oni ty neplacené verze aplikací mají vždy jen limitovaný počet posledních aktivit a není to pro náš klub a kamarády. Udělám něco svého a aspoň si vyzkouším v praxi, co jsme se učili.  
Je to skvěly nápad!

Takže můžu začít. Ale jak? Fakt netuším. Respektive tuším, že použiju Keboola, když je odsud mentor, a k něčemu nám bude tato vygooglená stránka https://strava.github.io/api/ pro vývojáře. Pro vývojáře?! Jediné, co jsem schopná poznat je, že v odkazu je JSON, protože to má složený závorky (narozdíl od XML, na což nás upozorňovala Světlana:). Ale kam se to jako píše? Bylo na čase se sejít s Martinem a utřepat, jak projekt budeme realizovat.
Tedy, v Keboola Connection existuje "Generic Extractor", který umí získat data z téměř jakékoliv aplikace s rozhraním RESTful API. V JSON je třeba jen vydefinovat která. Pak provedu transformace pomocí SQL a vyčištěná data vyexportuji do Tableau, kde už půjdou klikáním krásně vizualizovat.  Vypadá to vcelku pochopitelně.
ZÍSKÁVÁNÍ DAT ZE STRAVA
Pro optimalizaci práce a ušetření času vždy nejdřív příkaz zkouším v intuitivním Postman - rozšíření pro Chrome.
Postman - zkouška metody "GET"
I když člověk JSON viděl předtím jednou a to jen z dálky, ten kód se dá pěkně přečíst. V této fázi by bylo ideální v JSON nadefinovat, co chci přesně získat za data. Ale ono je něco jiného "trochu chápat napsaný kód" versus "snažit se jej napsat". Proto volíme metodu brod. Vždy vyextrahujeme všechny nabízené proměnné a úpravy provedu až následně pomocí SQL, které už jsem aspoň někdy dříve viděla. Přesně pětkrát na pěti lekcích.

Běhěm fáze získávání dat se objevily dva problémy. Jeden s autorizací a tokenem. Druhý s limitem počtu dat, co Strava dovoluje stáhnout během časového úseku. To už je pro mě však “vyšší dívčí”. A já pochopila, proč Martin nechtěl vést žádnou práci. V této fázi s ní měl rozhodně více práce než já. Já sice po důkladném studiu dokumentace našla, jak lze vyřešit limit. Ale dejte malému dítěti, co zná maximálně pár písmenek, přečíst návod, jak se hrajou třeba "Dostihy a sázky"... Naštěstí Najloš z Keboola to očividně hrát umí a vyřešilo se to.
Keboola - Generic Extractor - získávání dat

TRANSFORMACE DAT
Nicméně dat bylo hodně, ne všechny použitelné nebo v rozumném formátu. Pro transformaci dat si v Keboola můžete zvolit různé způsoby, od Pythonu, Rka, až po SQL (MySQL, Snowflake). Já používala Snowflake, které jsme si ukazovali na kurzu. A zde jsem se přesvědčila, že čištění dat opravdu zabere 90% času a závěrečná analýza už je třešinka na dortu. Když člověk není zběhlý v SQL a ještě zjistí, že není SQL jako SQL (MySQL versus Snowflake třeba), že logika je stejná, ale občas se používají pro to samé různé symboly, tak se tato fáze až neúměrně prodloužila. Občas to bylo až bolestné, kdy hodinu řešíte, proč nějaký relativně primitivní příkaz nefunguje, a pak zjistíte, že tam máte “jen” čárku navíc. Chvílemi přicházela vlna 6. proč jsem si to vlastně vymyslela, že to vůbec není dobrý nápad. Ale když pak něco konečně zafungovalo, zase se to střídalo s vlnou 7., že je to super. Ale tato vlna často přicházela až v pozdně nočních hodinách, kdy mi prostě nedalo, to opustit nefunkční.
Keboola - transformace dat

VIZUALIZACE DAT
Tableau mě přijde jako skvělý dynamický nástroj na vizualizace dat. Akorát s ním moc neumím, takže se opět opakovaly vlny zoufalství (8. to nejde) a nadšení (9. to mají opravdu promakané). Při vizualizaci a analýze dat se také objevily nějaké chyby v datech a já se tak dostala do kolečka, kdy jsem se musela vícekrát vrátit zpět k transformaci. Tableau - Keboola -Tableau - Keboola - Tableau...(Libore, díky:-)

K čemu jsem dospěla aneb 10. vlna: Hip, hip, hurá, něco vzniklo! 
Ve finálním dahboardu, si můžete vybrat sportovce z týmu (jednoho i více, nebo třeba všechny holky) a zjistit, jak trénují. Kolik za poslední měsíc uběhli, ujeli, uběžkovali? Jaké zdolali převýšení, kolik hodin strávili při sportu, nebo zda dostal více "lajků" (v řeči Stravy "kudos") Pepa nebo Honza?  Další dimenzí jsou osobní rekordy na vybraných segmentech u Prahy. Kolikátá jsem v celkovém žebříčku na Točnou? Kolik Kraťasovi chybí na toho nejlepšího na Řevničáku?
Dashboard týmu v Tableau
V hlubším detailu "Segments") pak lze analyzovat všechny naše pokusy na vybraném úseku. (či ve vytuněnější verzi po kliknutí na mapičku).
Dashboard 2 - detaily pokusů
Co je skvělé, že když nám přibude člověk do týmu nebo nás začne zajímat jiný segment, tak se vše dá spustit znova a bez větších úprav se nám to promítne do aktualizovaného dashboardu. 
Jaký je přínos mého projektu:
Jde o prototyp aplikace Strava “My Team”, na které by bylo ještě hodně práce. Nicméně nápadů, jak to celé vytunit mám spoustu.
Největší přínos tohoto projektu tedy není pro lidstvo, ale pro mě. Strašně moc jsem si toho vyzkoušela a naučila. A zjistila, že v reálu je ta datová analýza fakt mazec. Že jsme se ve škole učili spíše těch 10% - jak hotová data zanalyzovat. I když třeba i “pokročile” pomocí vícerozměrné statistiky. Ale zjištuji, ze je to opravdu ta “třešinka” na dortu, která přijde až po náročné a zdlouhavé práci při získávání dat a jejich transformaci a propojení do smysluplné a použitelné podoby.

Komentáře