Pandas – k čemu slouží, k čemu jej raději nepoužijeme a jeho alternativy | Mňamka #435
Úvodem
Knihovny jazyka Python jsou sady nástrojů, které obsahují předem napsaný kód, který nám pomáhá zjednodušit složité úlohy a urychlit vývoj. Jedna z takových knihoven je knihovna Pandas, která je speciálně navržena pro práci s daty. V této mňamce se podíváme na to, kde Pandas použít, jak si stojí v porovnání s ostatními knihovnami, a kde ho naopak nepoužívat.
Pandas je jako datový švýcarský nůž. Umožňuje načítat různé formáty, jako jsou CSV a Excel soubory nebo databáze SQL. Po načtení dat je umožňuje očistit, filtrovat podle různých kritérií, vykreslovat grafy, a nebo napočítávat souhrnné statistiky. Jeho výhodou je jednoduchá a intuitivní syntaxe, a taky rychlost, takže můžeme zpracovávat velké soubory dat, pokud na to máme dostatečně výkonný počítač. Na druhou stranu je Pandas poměrně náročný na paměť.
Kde Pandas použít?
Kdo zakopl o termín Pandas už pravděpodobně zakopl i o termín Data Science. Cílem Data Science je dostat z dat informace, které bychom nezískali pouhým vykreslením dat do grafu nebo jednoduchou sql transformací. Data Science zahrnuje činnosti jako shromažďování, čištění, transformaci, analýzu a vizualizaci velkých a komplexních datových souborů s cílem identifikovat vzory, trendy a vztahy. V tomto nám Pandas může hodně pomoci.
Ve své praxi se k této knihovně často obracím, když klient potřebuje rychlou ad hoc analýzu (např. potvrzení existence nějakého trendu, který, pokud se jeho existence potvrdí, budeme dále zpracovávat klasicky pomocí SQL), potřebuje se podívat, jaká data vlastně má a jak jsou kvalitní (viz EDA níže).
Pandas se velmi často používá v kombinaci s Jupyter Notebookem, což je editor, který obsahuje kód, popisy, obrázky, grafy, matematické vzorce a dokonce i interaktivní prvky. Pomocí Jupyter Notebooku bude celá analýza přehledně na jednom místě, takže je jasné, na co jsme jak přišli. Klientovi pak můžeme přímo ukázat grafy, a zároveň je v případě jeho dotazů upravovat či generovat nové.
👉 Exploratory Data Analysis (EDA neboli průzkumná analýza dat)
Před sestavením jakýchkoliv modelů potřebují datoví vědci často prozkoumat a vizualizovat svá data, aby věděli, jak data vypadají a jaká je jejich kvalita (Chybí nějaké záznamy? Vyskytují se v datovém souboru nějaké extrémní hodnoty? Můžeme z nich získat informace, které potřebujeme?).
Pandas poskytuje mnoho funkcí pro shrnutí a vizualizaci dat, například describe(), value_counts(), info() a plot(). Podrobnější popis těchto funkcí shrnuje např. tento článek: https://www.analyticsvidhya.com/blog/2021/04/20-must-known-pandas-function-for-exploratory-data-analysis-eda/.
Hezký příklad na EDA v čestině je zpracován tady: https://naucse.python.cz/2020/pydata-ostrava-jaro/pydata/univariate/.
👉 Čištění dat
Čištění dat je proces identifikace a oprav chyb, nesrovnalostí a chybějících hodnot v souboru dat. Pandas poskytuje několik funkcí pro čištění dat, například dropna(), fillna() a replace().
👉 Feature engineering
Feature engineering je technika strojového učení, která se využívá u vytváření Machine Learning modelů. Využívá stávající data k vytvoření nových proměnných, které nejsou v trénovací množině, s cílem zjednodušit a urychlit transformaci dat, a zároveň zvýšit přesnost modelu. Velmi jednoduchým příkladem může být vytvoření proměnné “plocha objektu”, která může být pro model daleko snáze uchopitelná, než používání délek stran objektu. Více o feature engineering se můžeme dočíst např. tady: https://towardsdatascience.com/what-is-feature-engineering-importance-tools-and-techniques-for-machine-learning-2080b0269f10.
👉 Analýza časových řad
Časové řady jsou typem dat, u nichž se měření provádí v průběhu času. Jde například o ceny akcií nebo údaje o počasí. Jednoduchý příklad v češtině, jak pracovat s časovými řadami, najdeme na stránkách naucse.python.cz - https://naucse.python.cz/2020/pydata-ostrava-jaro/pydata/timeseries/.
👉 Strojové učení
Strojové učení je podoblast datové vědy, která zahrnuje vytváření modelů, které se mohou učit z dat a provádět předpovědi nebo rozhodnutí (Odejde mi tento zákazník? Jaká bude cena nemovitostí za půl roku? Je na rentgenovém snímku zdravý orgán?). Tady často Pandas používáme s dalšími knihovnami, které jsou pro strojové učení přímo určeny (scikit-learn, pytorch…). O tom, jestli jsou data připravena na stavbu modelu, jsme psali nedávno tady: https://www.bizztreat.com/blog/machine-learning-modelovani-predikce-jsou-na-ne-vase-data-pripravena-mnamka-192.
Další knihovny pro zpracování dat
👉 Pandas vs CSV knihovna
Knihovna csv nepřekvapivě obsahuje funkce pro práci se soubory CSV (comma-separated value). Jedná se o základní modul, který poskytuje pouze základní funkce, jako je čtení a zápis souborů CSV, zatímco modul Pandas je výkonnější a poskytuje širší škálu nástrojů pro analýzu dat. Modul Pandas například umožňuje snadné filtrování, agregaci a slučování dat, což by při použití standardního modulu csv bylo mnohem obtížnější.
Pokud však potřebujete provádět pouze základní operace s malými soubory dat, je standardní modul csv lepší volbou. Je lehký a snadno použitelný, takže je ideální pro jednoduché skripty. Pokud potřebujeme pouze otevřít csv soubor, je zbytečné načítat velkou knihovnu Pandas. Přečtěte si velmi dobrou Mňamku Toma Votavy na toto téma: https://www.bizztreat.com/blog/kdyz-se-bere-kanon-na-mouchu-mnamka-52.
👉 Pandas vs Numpy
NumPy je balíček, který poskytuje numerické operace s poli (maticemi). Ačkoli není speciálně určen pro práci s daty, lze jej použít pro mnoho stejných operací jako Pandas, například k slicingu, filtrování nebo agregaci dat. Používá se především pro matematické operace, pro práci s tenzory, multidimenzionálními maticemi. Oproti Pandas bychom jej použili ve chvíli, kdy bychom pracovali čistě s numerickými daty a prováděli na nich matematické operace. Při práci s poli (arrays) je NumPy rychlejší a méně náročné na pamět. Naopak Pandas poskytuje podporu pro heterogenní data, což znamená, že můžeme snadněji pracovat s daty, která mají smíšené typy, například text a čísla.
👉 Pandas vs Dask
Dask je balíček, který poskytuje paralelní výpočetní možnosti pro analýzu dat v jazyce Python. Stejně jako Pandas poskytuje nástroje pro manipulaci s daty a jejich analýzu, ale s přidanou možností paralelní práce s většími soubory dat.
Pokud pracujeme s velmi velkými datovými sadami, které se nevejdou do paměti, může být Dask lepší volbou než Pandas. Pokud však pracujete s menšími datovými sadami, které se do paměti vejdou, je Pandas obecně rychlejší, intuitivnější a jednodušší na používání.
Obecně platí, že volba mezi Pandas a jinými metodami zpracování dat v jazyce Python závisí na konkrétním případu použití. Navíc je nutno dodat, že nástroje často kombinujeme.
Základní pojmy v datovém modelování | Mňamka #457
Co je to datový model? Jaký je rozdíl mezi konceptuálním a logickým modelem? A k čemu slouží proces tzv. normalizace? Bez datového modelování se dnes v BI obejdete už jen stěží, Kuba si o něm proto připravil krátkou minisérii, ve které si vše probereme od úplných základů. V prvním díle se seznámíme s nejdůležitějšími pojmy, které byste v této souvislosti měli znát, a na jednoduchém příkladu z oblasti sales si ukážeme, jak takový datový model vlastně vypadá. Tak pojďme na to!
MAQL II. - MAQL Reuse factů & Nesting metrik | Mňamka #454
Proč se vyplatí recyklovat metriky v MAQL? Máme tady pokračování naší krátké minisérie o dotazovacím jazyku MAQL od Péti. V minulém díle jsme si osvětlili základní rozdíl mezi SQL a MAQL a dnes se zaměříme na výhody metrik vytvořených pomocí MAQL a jejich recyklaci. Funguje to přitom podobně jako v případě klasické recyklace surovin. Pokud ji dělat nebudete, ušetříte si možná půl minutky práce, v budoucnu se vám to ale může velmi nepříjemně vrátit. Tak se na to pojďte podívat!
Šaty dělají kód aneb Proč je někdy lepší kebab než velbloud | Mňamka #441
I špatný standard může být lepší než žádný standard. Bez toho totiž ve vašem kódu velmi snadno zavládne chaos. V praxi se např. často stává, že lidé halabala kombinují různé druhy uvozovek, míchají malá a velká písmena v pojmenování proměnných nebo se pro jistotu vůbec žádných jmenných konvencí nedrží. Ostatně, Tomáš už se o tom mnohokrát přesvědčil na vlastní pěst. Sepsal pro vás proto mňamku, ve které si připomeneme, proč byste přece jen nějaký standard při psaní kódu mít měli!