- Nevíte, který vizualizační nástroj použít? Rozebral jsem pro vás výhody a nevýhody jednotlivých knihoven
- Data
- Matplotlib
- Pros
- Zápory
- Takeaway: Matplotlib dokáže vykreslit cokoli, ale složité grafy mohou vyžadovat mnohem více kódů než jiné knihovny
- Pros
- Udělejte běžně používané grafy hezčí
- Nevýhody
- Plotly
- Pros
- Snadné vytváření interaktivních grafů
- Altair
- Pros
- Nevýhody
- Bokeh
- Pros
- Cons
- Folium
- Pros
- Závěr
Nevíte, který vizualizační nástroj použít? Rozebral jsem pro vás výhody a nevýhody jednotlivých knihoven
Vizualizace z jednotlivých knihoven budu vkládat pomocí Datapane, což je framework a API pro publikování a sdílení sestav v jazyce Python. Pokud chcete vidět více reálných příkladů, podívejte se na sestavy vytvořené uživateli v galerii Datapane.
Pro sledování článku si buď stáhněte soubor csv odsud, nebo získejte data přímo z Datapane Blob.
import datapane as dpdp.Blob.get(name='github_data', owner='khuyentran1401').download_df()
Pokud chcete používat Blob, nezapomeňte se předem přihlásit do Datapane pomocí svého tokenu. Mělo by to trvat méně než 1 minutu
Matplotlib
Matplotlib je pravděpodobně nejrozšířenější knihovna jazyka Python pro vizualizaci dat. Každý, kdo se zajímá o datovou vědu, pravděpodobně alespoň jednou použil knihovnu Matplotlib.
Pros
- Snadné zobrazení vlastností dat
Při analýze dat může být ideální mít rychlý pohled na rozložení.
Pokud se například chci rychle podívat na rozložení 100 uživatelů s největším počtem sledujících, obvykle mi stačí použít knihovnu Matplotlib.
I když osa x v Matplotlibu nevypadá dobře, máme při pohledu na graf lepší představu o rozložení dat.
2. Dokáže vykreslit cokoli
Matplotlib je velmi univerzální, což znamená, že dokáže vykreslit jakýkoli druh grafu, který si dokážete představit. Webové stránky Matplotlibu obsahují velmi obsáhlou dokumentaci a různé grafy v galerii, díky čemuž snadno najdete návody na jakýkoli šílený graf, který vás napadne.
Třeba takový text:
Zápory
Matplotlib dokáže vykreslit cokoli, ale může být složité vykreslit jiné než základní grafy nebo upravit grafy tak, aby vypadaly hezky.
I když je graf dostatečně dobrý pro vizualizaci rozdělení, pokud chcete svá data prezentovat ostatním, budete muset opravit osu x, osu y, což vyžaduje hodně úsilí. Je to proto, že Matplotlib má extrémně nízkoúrovňové rozhraní.
Takeaway: Matplotlib dokáže vykreslit cokoli, ale složité grafy mohou vyžadovat mnohem více kódů než jiné knihovny
Seaborn je knihovna pro vizualizaci dat v Pythonu založená na Matplotlib. Poskytuje nad knihovnou obal vyšší úrovně, který usnadňuje její používání.
Pros
- Méně kódu
Poskytuje rozhraní vyšší úrovně pro podobné grafy. Jinými slovy, seaborn obecně poskytuje podobné grafy jako matplotlib, ale s menším množstvím kódu a hezčím designem.
Použijeme stejná data jako dříve a vykreslíme podobnou heatmapu grafu.
Získáme lepší heatmapu bez nastavování značek x a y!
Udělejte běžně používané grafy hezčí
Mnoho lidí se rozhodne pro seaborn, pokud jde o oblíbené grafy, jako jsou sloupcové grafy, krabicové grafy, grafy počtů, histogramy atd. nejen proto, že je lze vytvořit s menším množstvím kódu, ale také vypadají mnohem hezčí. Jak můžeme vidět na našem příkladu výše, barvy také vypadají lépe než výchozí z Matplotlibu.
Nevýhody
Seaborn je omezenější a nemá tak širokou kolekci jako matplotlib
Výhody: Seaborn je vyšší verze Matplotlib. Přestože nemá tak širokou kolekci jako Matplotlib, seaborn umožňuje vytvářet populární grafy, jako jsou sloupcové grafy, krabicové grafy, heatmapy atd. tak, aby vypadaly pěkně v menším množství kódu.
Plotly
Knihovna Pythonu pro tvorbu grafů Plotly umožňuje snadno vytvářet interaktivní grafy v publikační kvalitě. Umí také vytvářet podobné grafy jako Matplotlib a seaborn, jako jsou čárové grafy, grafy rozptylu, plošné grafy, sloupcové grafy atd.
Pros
- Podobně jako R
Pokud jste fanoušky grafů v R a při přechodu na Python vám chybí jeho funkce, Plotly vám poskytne stejně kvalitní grafy pomocí Pythonu!
Mým favoritem je Plotly Express, protože umožňuje opravdu snadno a ještě rychleji vytvářet skvělé grafy z jediného řádku jazyka Python.
Snadné vytváření interaktivních grafů
Plotly také umožňuje snadno vytvářet interaktivní grafy. Interaktivní grafy jsou nejen hezké, ale také usnadňují divákům bližší pohled na jednotlivé datové body.
Pamatujete si na sloupcový graf, který jsme dříve vytvořili pomocí matplotlib? Podívejme se, jak to dopadne s Plotly
Přibližně se stejnými řádky kódu vytvoříme interaktivní graf, který bychom mohli najet myší na každý sloupec, abychom viděli, jakého uživatele a počet sledujících sloupec představuje. To znamená, že konzument vaší vizualizace ji může sám prozkoumat.
3. Složité grafy snadno
Pomocí Plotly lze snadno vytvořit některé grafy, jejichž vytvoření je obvykle náročné.
Příklad pokud bychom chtěli vytvořit mapu pro vizualizaci polohy uživatelů Githubu, můžeme zjistit jejich zeměpisné šířky a délky, jak je uvedeno zde, a pak tato data použít k tomu, abychom na mapě spatřili umístění uživatelů takto
Pomocí několika řádků kódů jsou na mapě krásně znázorněna umístění všech uživatelů. Barva bublinek představuje počet rozcestí a jejich velikost celkový počet hvězdiček
Výběr:
Altair
Altair je deklarativní statistická vizualizační knihovna pro Python založená na vega-lite, díky čemuž je ideální pro grafy, které vyžadují mnoho statistických transformací.
Pros
1. Jednoduchá vizualizační gramatika
Gramatika použitá k vytvoření vizualizace je snadno pochopitelná. Je třeba pouze zmínit vazby mezi sloupci dat na kódovací kanály a zbytek vykreslení je řešen automaticky. Zní to abstraktně, ale při práci s daty to má velký význam a vizualizace informací je díky tomu opravdu rychlá a intuitivní.
Například u výše uvedených titěrných dat bychom chtěli spočítat počet lidí v jednotlivých třídách, stačí použít count()
v y_axis
2. Snadná transformace dat
Altair také umožňuje opravdu snadnou transformaci dat při vytváření grafu
Pokud bychom například chtěli zjistit průměrný věk jednotlivých pohlaví v titulu, místo abychom transformaci prováděli předem jako Plotly, mohli bychom transformaci provést v rámci kódu pro vytvoření grafu.
Mohli bychom také zajistit, aby třída byla nominální data (kategoriální data bez jakéhokoli pořadí). pomocí :N
nebo se ujistit, že mean_age je kvantitativní údaj (míra hodnot, například čísla) pomocí :Q
Podívejte se na úplný seznam transformací dat zde
3. Snadné propojení grafů
Altair také umožňuje provádět působivé propojení mezi grafy, například pomocí intervalového výběru filtrovat obsah připojeného histogramu.
Pokud bychom například chtěli vizualizovat počet lidí v jednotlivých třídách v rámci intervalu, který vybereme v bodovém grafu mezi věkem a tarifem, mohli bychom udělat něco takového.
Když tažením myši vybereme interval v rámci grafu rozptylu, mohli bychom vidět změnu ve sloupcovém grafu níže. V kombinaci s transformacemi a výpočty z dřívějška to znamená, že můžete vytvářet extrémně interaktivní grafy, které provádějí výpočty za běhu – dokonce bez nutnosti spuštěného serveru Python!“
Nevýhody
Pokud nezadáte vlastní stylování, jednoduché grafy, jako je sloupcový graf, nevypadají tak stylizovaně jako seaborn nebo Plotly. Altair také nedoporučuje datové sady s více než 5000 vzorky a namísto toho doporučuje, abyste data před vizualizací agregovali.
Takeaway: Altair je ideální pro sofistikované grafy pro zobrazení statistik. Altair si neporadí s daty nad 5000 vzorků a některé jednoduché grafy nevypadají ve srovnání s Plotly nebo Seaborn tak stylově.
Bokeh
Bokeh je flexibilní interaktivní vizualizační knihovna, která se zaměřuje na zobrazení ve webových prohlížečích.
Pros
- Interaktivní verze Matplotlibu
Pokud budeme řadit mezi výše uvedené interaktivní vizualizační knihovny, Bokeh se pravděpodobně umístí na prvním místě s ohledem na podobnost s Matplotlibem.
Matplotlib dokáže vytvořit jakýkoli graf, protože se jedná o nízkoúrovňovou vizualizační knihovnu. Bokeh lze použít jako vysokoúrovňové i nízkoúrovňové rozhraní; může tedy vytvářet mnoho sofistikovaných grafů, které vytváří Matplotlib, ale s menším počtem řádků kódu a vyšším rozlišením.
Například, kruhový graf Matplotlibu
mohl být také vytvořen s lepším rozlišením a větší užitečností pomocí Bokeh
2. Propojení mezi pozemky
Bokeh také umožňuje opravdu snadné propojení mezi pozemky. Změna aplikovaná na jednom pozemku se uplatní i na jiném pozemku s podobnou proměnnou.
Příklad pokud vytvoříme 3 grafy vedle sebe a chceme sledovat jejich vztah, můžeme použít propojené kartáčování
ColumnDataSource
umožňuje sdílení dat mezi grafy. Když tedy aplikujeme změnu na jeden graf, změní se odpovídajícím způsobem i ostatní grafy.
Cons
Protože Bokeh je knihovna, která má do jisté míry rozhraní střední úrovně, často vyžaduje méně kódu než Matplotlib, ale k vytvoření stejného grafu je potřeba více kódu než u Seabornu, Altairu nebo Plotly.
Například k vytvoření stejného grafu počtu při použití titěrných dat je kromě nutnosti data předem transformovat, musíme také nastavit šířku sloupce a barvu, pokud chceme, aby graf vypadal hezky
Pokud bychom nepřidali šířku pro sloupcový graf, graf by vypadal takto
Takto, musíme ručně upravit rozměry, aby byl graf hezčí
Pokud chcete vytvořit pěkný sloupcový graf v menším množství kódu, může to být nevýhoda Bokeh ve srovnání s jinými knihovnami
Vyjádření: Bokeh je jediná knihovna, jejíž rozhraní sahá od nejnižšího po nejvyšší, což usnadňuje tvorbu univerzální i elegantní grafiky. To je však spojeno s cenou, že pro vytvoření grafů v podobné kvalitě jako u jiných knihoven je u Bokeh obecně potřeba více kódu.
Folium
Folium umožňuje snadnou vizualizaci dat na interaktivní letákové mapě. Knihovna má řadu vestavěných sad dlaždic od OpenStreetMap, Mapbox a Stamen
Pros
- Snadné vytvoření mapy se značkami
I když Plotly, Altair, a Bokeh také umožňují vytvářet mapy, Folium používá otevřenou mapu ulic, která vám s minimem kódu přiblíží pocit mapy Google
Pamatujete si, jak jsme pomocí Plotly vytvořili mapu pro vizualizaci polohy uživatelů Githubu? Pomocí Folium bychom mohli mapu udělat ještě hezčí
Počáteční umístění v Brooklynu ve státě New York. Zvětšete zobrazení dalších míst na mapě. Pomocí několika řádků kódů jsme vytvořili skutečnou mapu zobrazující umístění uživatelů.
2. Přidání potenciálního umístění
Pokud chceme přidat potenciální umístění dalších uživatelů, Folium to usnadňuje tím, že umožňuje uživatelům přidávat značky
Kliknutím na mapu se nové umístění vygeneruje přímo v místě kliknutí.
3. Zásuvné moduly
Folium má řadu zásuvných modulů, které můžete s mapou používat – včetně zásuvného modulu pro Altair. Co když chceme zobrazit tepelnou mapu celkového počtu hvězdiček uživatelů Githubu na světě, abychom zjistili, kde je vysoký počet špičkových uživatelů Githubu s vysokým počtem celkových hvězdiček? Právě to vám umožní heatmapa v zásuvných modulech Folium.
Zvětšete si celý obraz heatmapy.
Vynechat: Folium umožňuje vytvořit interaktivní mapu pomocí několika řádků kódu. Díky tomu se můžete přiblížit zážitku z mapy Google.
Závěr
Gratuluji! Právě jste se seznámili se šesti různými vizualizačními nástroji pro vizualizaci. Doufám, že vám tento článek přiblížil, co která knihovna umí a kdy co použít. Pochopení klíčových vlastností jednotlivých knihoven vám umožní rychleji vytáhnout tu správnou knihovnu podle potřeby.
Pokud stále váháte, kterou knihovnu pro svá data použít, prostě si vyberte tu, která vám přijde dostatečně dobrá. Pokud je pak kód příliš dlouhý nebo graf nedopadne tak dobře, jak si představujete, prostě to zkuste s jinou knihovnou!
Neváhejte si kód tohoto článku rozkliknout a pohrát si s ním v tomto repozitáři Githubu.
Rád píšu o základních konceptech datové vědy a hraju si s různými algoritmy a nástroji datové vědy. Můžete se se mnou spojit na LinkedIn a Twitteru.
Pokud se chcete podívat na kódy všech článků, které jsem napsal, prohlédněte si toto repo. Sledujte mě na médiu Medium, abyste byli informováni o mých nejnovějších článcích z oblasti datové vědy, jako jsou tyto: