Keď som bol dieťa, mal som krásny nálepkový album od WWF fondu, na titulke ktorého bola veľká Panda. Hoci v našom regióne Pandy nežijú a človek by si oveľa ľahšie mohol obľúbiť srnku, zubra či sysľa, Pandy sa mi zapáčili. To som ešte netušil, ako sa do môjho života vkradnú opätovne.
Je len pomerne málo bežných slov, ktoré to dopracovali až do väčšiny životopisov serióznych a dobre platených ľudí. Názvy zvierat by ste teda medzi nimi určite nehľadali. Napriek tomu Pandas, ako najpoužívanejšia knižnica na prácu s dátovými tabuľkami v Pythone, to dopracoval na veľmi prominentné postavenie. Výberové konanie na dátového analytika, počas ktorého by tento výraz nezaznel aspoň raz, si aj dnes už aj ťažko predstaviť. (Ale no! Aj keď už dnes ste o krok ďalej na prvých projektoch vás to určite neobišlo). Preto by ste možno mali všetci spozornieť, že na Pandy budete musieť už čoskoro zabudnúť. Nie, nemyslím tým, že Ailuropoda melanoleuca , teda panda medvedík, vyhynie. Aj keď to má nahnuté už od môjho detstva. Mám na mysli, že na najbližšom projekte či pracovnom interview už s Pandas knižnicou pravdepodobne pohoríte. Čo?! Zdesení? Nuž tak čítajte ďalej, kam sme sa posunuli.
Pandičky, pandičky, kdeže ste sa vzali? Či ste z neba spadli, či …
S istou mierou odľahčenia by sa dalo povedať, že k Pandám som sa naozaj dostal až po presťahovaní do Berlína. (V Berlínskej Zoo totiž naozaj majú niekoľko jedincov tohto milého zvieratka, na ktoré som sme sa s rodinou už boli niekoľko krát pozrieť.) Samozrejme, v skutočnosti by to bol len jeden z mojich (nie všetkými oceňovaných) vtipov. Spracovanie dát v Pythone som totiž, samozrejme, potreboval pre svoje analytické pozície už na Slovensku a pomerné drsný test schopnosti analyzovať dáta v tomto jazyku (a spomínanej Pandas knižnici) bol súčasťou takmer každého pohovoru do zahraničia, ktorým som si prešiel. Pre svoj ľahký syntax a širokú škálu funkcií sa Pandas naozaj stal zlatým štandardom a je podkladom aj všetkých online kurzov. Preto správa, že Pandas je „na odstrel“, asi nejedného z nás zarazí.
Ale predsa je tomu tak. Pandas sa pomaly dostáva na okraj vyhynutia. Teda minimálne medzi teamami, ktoré sa snažia o napredovanie v analytike. Ak sa chcete zamestnať vo veľkej dátovej firme alebo zahviezdiť v nejakom boomujúcom start-upe, Pandas už nie je vaša karta. Je to skôr niečo ako Voldemort v Harry Potterovi, „meno-ktoré-sa-nevyslovuje“ alebo „veď-viete-čo“. Čo teda bude (fáze prípravy dát) vládnuť v budúcnosti?
Kráľ zomrel. Nech žije nový Kráľ!
Alternatívy k Pandám, samozrejme, vznikali už dlhšiu dobu. Isté obdobie sa vášnivo rozoberal DASK ako potenciálny nástupca pandičiek. Prirodzene, tí limitovaní Pandas slabými miestami skúšali neraz presedlať na PySpark. V našom teame sme poškuľovali po zavedení MODIN, najmä preto, že niektoré iné teamy v našej spoločnosti produkujú (pre nás) vstupné parquet súbory. Na meet-upoch sa občas objavovali názory drukujúce TURICREATE knižnici. Ak ste o týchto knižniciach pred tým nepočuli, uľavím vášmu svedomiu, ani už sa nežeňte to doštudovať. Strelka kompasu sa totiž jasne natočila niekam úplne inam. Budúcim štandardom v spracovaní veľkých dát bude zrejme VAEX.
Hovoriť o VAEXe len ako črtajúcom štandarde by bolo pre čitateľa málo užitočné. Poďme si teda túto Python knižnicu predstaviť v priamom kontraste s Pandas. Častým boľavým miestom Pandas je, že sa snaží utvoriť si materializovanú podobu dát priamo do RAMky (alebo inej dostupnej pamäte). Ak vytvoríte nový odvodený stĺpec, ktorý je napríklad kombináciou dvoch existujúcich stĺpcov v Dataframe, Pandas hodnoty pre každý riadok vypočíta a uloží do pamäte. Nevadí, kým sa hráte so státisícmi, zabolí, keď máte na stole gigabajty podkladových dát. VAEX používa princíp, ktorý sa volá lazy computing. “Lenivosť” výpočtu spočíva v tom, že sa realizuje len keď jeho treba. Takže ak napríklad vytvoríte nový odvodený stĺpec, ako bolo načrtnuté vyššie, VAEX reálne spočíta hodnoty až keď ich potrebujete použiť. Keď teda napríklad chcete overiť pomocou Df.head(10) len na niekoľkých riadkoch správnosť výpočtu nového stĺpca, Vaex fyzicky v pamäti zráta a uloží len tých pár riadkov. Rovnako tak môžete ma5 napísaných veľa agregovaných parametrov pre účely (feature engineeringu pre) Machine Learning model a táto knižnica ich spočíta až pred samotným trénovaním modelu. Vaex vás tak super rýchlo prenesie práve cez data preparation fázu modelovania.
Druhou podstatnou výhodou sú optimalizované postupy pre výpočet agregačných štatistík (mean, avg, count ,sum, …) ako aj pre tvorbu podskupín (groupby) či deduplikáciu. Vaex tu dosahuje 3 až 15 násobné zrýchlenie oproti Pandas. Áno čítate dobre, násobne rýchlejšie ako Pandas. Ak vás zaujíma nezávislé meranie, tak investujte cca 30 min čítania TU.
Tretím podstatným tromfom Vaex knižnice je, že dokáže ultra rýchlo čítať z diskov súbory HDF5 formátu, ktoré môžu byť uložené aj v S3 cloud bucketoch. Keď hovorím ultra rýchlo, mám na mysli rýchlosti okolo 10^9 riadkov za sekundu. To sú hodnoty, o ktorých sa, nielen Pandám v Berlíne, ani len nesníva.
Hviezdnu rýchlosť potvrdzuje Vaex aj pri JOINoch a FILTROVANIACH, ďalších bežných úkonoch fázy prípravy dát pre samotné modelovanie.
Čím Vaex zasadzuje ranu z milosti svojim súperom je fakt, že jeho syntax je úmyselne veľmi podobný tomu z Pandas. Veľa funkcií má úplne rovnakú implementáciu (napr. read_csv, .join , .groupby , …) vo Vaexe, ako keby ste ich napísali v Pandas. S istou mierou irónie sa teda dá povedať, že stačí vymeniť názov knižnice v “import Pandas“ a pipeline na prípravu dát vám pofrčí zásadne rýchlejšie. (V skutočnosti to, samozrejme, nemusí byť tak jednoduché). Určite to však pomáha prechodu z Pandas na Vaex. So všetkými tými výhodami oproti Pandas tak dochádzajú výhovorky, prečo sa vlastne stále ešte vracať k Pandas.
Podobne, ako stále nájdete funkčné programy v COBOLe, FoxPro či C++, asi aj v budúcnosti budú existovať riešenia ktoré budú stále používať Pandas. Legendárne Pandičky totiž vznikli ako univerzálna knižnica na prehrabávanie, prepočítavanie a explorovanie dát. A preto sú (či skôr bývavali) prvou voľbou pre predspracovanie dát. Autori Vaex knižnice sa však na problém pozreli pragmaticky a odstránili všetky často opakujúce sa nedostatky Pandasu. Prevzali (v dobrom slova zmysle) navyše syntax príkazov Pandasu a tak z Vaexu urobili najhorúcejšieho kandidáta na jeho nahradenie. Ak sa teda chystáte na nový projekt, či zvažujete zmenu práce, dajte si tú námahu pozrieť sa dokumentáciu Vaexu. A skúste si v hlave vymeniť Vaex namiesto Pandas. Určite tým príjemne prekvapíte.
Publikované dňa 26. 8. 2020.