Foto: oxana v na Unsplash

Tento průvodce byl aktualizován o některé podrobnější příklady. Její nejnovější verzi naleznete zde.

Pokud s vizualizací v Pythonu začínáte, můžete být zahlceni množstvím knihoven a příkladů:

  • Matplotlib
  • Seaborn
  • Plotly
  • Bokeh
  • Altair
  • Folium

Pokud máte DataFrame čekající na vizualizaci, kterou z nich byste měli vybrat? Některé knihovny mohou být ve specifických případech lepší než jiné. Tento článek vám ukáže výhody a nevýhody každé z nich. Na konci článku byste měli být schopni rozlišit různé vlastnosti jednotlivých knihoven a snadněji si vybrat tu optimální.

Uděláme to tak, že použijeme ukázkovou datovou sadu a prozkoumáme ji pomocí jednotlivých knihoven, přičemž se zaměříme na několik konkrétních vlastností:

Interaktivita

Chcete, aby vaše vizualizace byla interaktivní?

Některé knihovny, například Matplotlib, vykreslují vizualizace jako obrázky; hodí se tedy pro vysvětlování pojmů (v článku, prezentaci nebo prezentaci).

Na druhou stranu knihovny jako Altair, Bokeh a Plotly umožňují vytvářet interaktivní grafy, do kterých se uživatelé mohou ponořit a sami je zkoumat

Syntaxe a flexibilita

Jak se liší syntaxe jednotlivých knihoven? Knihovny nižší úrovně, jako je Matplotlib, vám umožňují dělat vše, co byste si mohli představit – ale za cenu složitějšího rozhraní API. Některé knihovny, jako je Altair, jsou velmi deklarativní, což usnadňuje mapování na vaše data.

Typ dat a vizualizace

Pracujete se specializovaným případem použití, jako je geografický graf, s velkými daty nebo používáte typ grafu, který podporuje pouze určitá knihovna?

Data

Pro snadnější porovnání budu v tomto článku používat skutečná data, která jsem seškrábal z Githubu:

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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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:

admin

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

lg