Photo by oxana v on Unsplash

Ten przewodnik został zaktualizowany o kilka bardziej dogłębnych przykładów. Najnowszą wersję bloga można znaleźć tutaj.

Jeśli zaczynasz przygodę z wizualizacją w Pythonie, możesz być przytłoczony ilością bibliotek i przykładów:

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

Jeśli masz DataFrame czekającą na wizualizację, którą z nich powinieneś wybrać? Niektóre biblioteki mogą być lepsze w konkretnych przypadkach niż inne. Ten artykuł pokaże wady i zalety każdej z nich. Pod koniec artykułu powinieneś być w stanie rozróżnić różne cechy każdej z bibliotek i łatwiej wybrać optymalną.

Zrobimy to za pomocą przykładowego zbioru danych i zbadamy go przy użyciu każdej z bibliotek, skupiając się na kilku konkretnych atrybutach:

Interaktywność

Czy chcesz, aby twoja wizualizacja była interaktywna?

Niektóre biblioteki, takie jak Matplotlib, renderują wizualizacje jako obrazy; dlatego są one dobre do wyjaśniania pojęć (w referatach, zestawach slajdów lub prezentacjach).

Z drugiej strony, biblioteki takie jak Altair, Bokeh i Plotly pozwalają na tworzenie interaktywnych wykresów, w które użytkownicy mogą się zagłębić i zbadać je samodzielnie

Syntaktyka i elastyczność

Czym różni się składnia każdej z bibliotek? Biblioteki niższego poziomu, takie jak Matplotlib, pozwalają robić wszystko, co tylko można sobie wyobrazić – ale kosztem bardziej złożonego API. Niektóre biblioteki, takie jak Altair, są bardzo deklaratywne, co ułatwia mapowanie do twoich danych.

Typ danych i wizualizacji

Czy pracujesz z wyspecjalizowanym przypadkiem użycia, takim jak działka geograficzna, z dużymi danymi, lub używasz typu działki, który jest obsługiwany tylko przez określoną bibliotekę?

Dane

Aby ułatwić porównanie, użyję prawdziwych danych, które skrobię z Githuba w tym artykule:

Wizualizacje z każdej biblioteki będę osadzał za pomocą Datapane, który jest frameworkiem Pythona i API do publikowania i udostępniania raportów Pythona. Jeśli chcesz zobaczyć więcej przykładów z życia wziętych, sprawdź raporty stworzone przez użytkowników w galerii Datapane.

Aby śledzić artykuł, możesz albo pobrać plik csv stąd, albo uzyskać bezpośrednie dane z Datapane Blob.

import datapane as dpdp.Blob.get(name='github_data', owner='khuyentran1401').download_df()

Pamiętaj, aby wcześniej zalogować się do Datapane za pomocą swojego tokena, jeśli chcesz użyć Blob. Powinno to zająć mniej niż 1 minutę

Matplotlib

Matplotlib jest prawdopodobnie najbardziej popularną biblioteką Pythona do wizualizacji danych. Każdy, kto interesuje się nauką o danych, prawdopodobnie użył Matplotlib przynajmniej raz.

Pros

  1. Łatwe do zobaczenia własności danych

Podczas analizowania danych, szybkie spojrzenie na rozkład może być idealne.

Na przykład, jeśli chcę szybko spojrzeć na rozkład 100 użytkowników z największą liczbą zwolenników, użycie Matplotlib jest zazwyczaj wystarczające.

Nawet jeśli oś x w Matplotlib nie wygląda dobrze, mamy lepsze zrozumienie rozkładu danych patrząc na wykres.

2. Potrafi wykreślić wszystko

Matplotlib jest bardzo wszechstronny, co oznacza, że może wykreślić każdy rodzaj wykresu, jaki można sobie wyobrazić. Strona Matplotlib’a zawiera bardzo obszerną dokumentację i różne wykresy w galerii, co sprawia, że łatwo jest znaleźć tutoriale dla każdej zwariowanej fabuły, o której możesz pomyśleć.

Lubie jakiś tekst jak ten:

Konsekwencje

Matplotlib może wykreślić wszystko, ale może być skomplikowane wykreślanie nie-podstawowych działek lub dostosowanie działek, aby wyglądały ładnie.

Nawet jeśli wykres jest wystarczająco dobry do wizualizacji dystrybucji, jeśli chcesz reprezentować swoje dane innym, będziesz musiał naprawić oś x, oś y, co wymaga wiele wysiłku. Dzieje się tak, ponieważ Matplotlib ma niezwykle niskopoziomowy interfejs.

Takeaway: Matplotlib może wykreślić wszystko, ale złożone wykresy mogą wymagać znacznie więcej kodu niż inne biblioteki

Seaborn jest biblioteką wizualizacji danych Pythona opartą na Matplotlib. Dostarcza wyższego poziomu wrapper na bibliotekę, która czyni ją łatwiejszą w użyciu.

Pros

  1. Mniej kodu

Dostarcza interfejs wyższego poziomu dla podobnych działek. Innym słowem, seaborn generalnie zapewnia podobne działki jak matplotlib, ale z mniejszą ilością kodu i ładniejszym wyglądem.

Używamy tych samych danych co poprzednio, aby narysować podobną heatmapę wykresu.

Uzyskujemy lepszą heatmapę bez ustawiania etykiety x i y!

Uczyń często używane wykresy ładniejszymi

Wiele osób decyduje się na seaborn, jeśli chodzi o popularne wykresy, takie jak wykres słupkowy, wykres pudełkowy, wykres zliczania, histogramy, itp. nie tylko dlatego, że można je utworzyć za pomocą mniejszej ilości kodu, ale także dlatego, że wyglądają znacznie ładniej. Jak widać w naszym przykładzie powyżej, kolory również wyglądają lepiej niż domyślne w Matplotlib.

Konsekwencje

Seaborn jest bardziej ograniczony i nie ma tak szerokiej kolekcji jak matplotlib

Takeaway: Seaborn jest wersją Matplotlib na wyższym poziomie. Mimo że nie ma tak szerokiej kolekcji jak Matplotlib, seaborn sprawia, że popularne wykresy, takie jak bar plot, box plot, heatmap, itp. wyglądają ładnie w mniejszej ilości kodu.

Plotly

Biblioteka Pythona do tworzenia wykresów Plotly ułatwia tworzenie interaktywnych wykresów o jakości publikacji. Może ona również tworzyć podobne wykresy jak Matplotlib i seaborn, takie jak wykresy liniowe, wykresy rozrzutu, wykresy obszarowe, wykresy słupkowe itp.

Pros

  1. Like R

Jeśli jesteś fanem wykresów w R i tęsknisz za jego funkcjami po przejściu na Pythona, Plotly daje ci tę samą jakość wykresów przy użyciu Pythona!

Moim faworytem jest Plotly Express, ponieważ sprawia, że naprawdę łatwo i jeszcze szybciej można tworzyć wspaniałe wykresy z jednej linii Pythona.

Łatwe tworzenie interaktywnych wykresów

Plotly ułatwia również tworzenie interaktywnych wykresów. Interaktywne wykresy są nie tylko ładne, ale także ułatwiają oglądającym przyjrzenie się bliżej każdemu punktowi danych.

Pamiętasz wykres słupkowy, który stworzyliśmy wcześniej za pomocą matplotlib? Zobaczmy, jak to się skończy z Plotly

Z mniej więcej tymi samymi liniami kodu, produkujemy interaktywną działkę, którą możemy najechać myszką na każdy pasek, aby zobaczyć, jakiego użytkownika i liczbę zwolenników reprezentuje dany pasek. Oznacza to, że konsument twojej wizualizacji może ją samodzielnie zbadać.

3. Złożone wątki stają się łatwe

Z Plotly, niektóre wątki, które zazwyczaj są trudne do stworzenia, mogą być stworzone w prosty sposób.

Na przykład, jeśli chcielibyśmy stworzyć mapę wizualizującą lokalizacje użytkowników Githuba, możemy znaleźć ich szerokości i długości geograficzne, jak pokazano tutaj, a następnie użyć tych danych, aby zauważyć lokalizacje użytkowników na mapie w ten sposób

Z kilkoma liniami kodu, lokalizacje wszystkich użytkowników są pięknie przedstawione na mapie. Kolor bąbelków reprezentuje liczbę rozwidleń, a rozmiar reprezentuje całkowitą liczbę gwiazd

Takeaway: Plotly świetnie nadaje się do tworzenia interaktywnych wykresów o jakości publikacji za pomocą kilku linii kodu.

Altair

Altair to deklaratywna biblioteka wizualizacji statystycznej dla Pythona oparta na vega-lite, co czyni ją idealną do działek wymagających wielu transformacji statystycznych.

Pros

1. Prosta gramatyka wizualizacji

Gramatyka użyta do stworzenia wizualizacji jest łatwa do zrozumienia. Wystarczy tylko wspomnieć o powiązaniach między kolumnami danych a kanałami kodowania, a reszta jest obsługiwana automatycznie. Brzmi to abstrakcyjnie, ale ma duże znaczenie podczas pracy z danymi i sprawia, że wizualizacja informacji jest naprawdę szybka i intuicyjna.

Na przykład, z danymi titanic powyżej, chcielibyśmy policzyć liczbę osób w każdej klasie, wszystko czego potrzebujemy to użyć count() w osi y

2. Łatwe przekształcanie danych

Altair umożliwia również bardzo łatwe przekształcanie danych podczas tworzenia wykresu

Na przykład, jeśli chcielibyśmy znaleźć średnią wieku każdej płci w Titanicu, zamiast wykonywać transformację z wyprzedzeniem jak w Plotly, moglibyśmy wykonać transformację w kodzie do tworzenia wykresu.

Moglibyśmy również upewnić się, że klasa jest danymi nominalnymi (dane kategoryczne bez żadnego porządku) używając :N lub upewnić się, że średnia_wieku to dane ilościowe (miary wartości, takie jak liczby) używając :Q

Zobacz pełną listę transformacji danych tutaj

3. Łatwe łączenie działek

Altair pozwala również na imponujące łączenie działek, takie jak użycie wyboru interwału do filtrowania zawartości dołączonego histogramu.

Na przykład, jeśli chcemy zwizualizować liczbę osób w każdej klasie w przedziale, który wybierzemy na wykresie punktowym między wiekiem a taryfą, możemy zrobić coś takiego.

Jak przeciągniemy myszą, aby wybrać przedział w wykresie rozproszonym, możemy zobaczyć zmianę na wykresie słupkowym poniżej. W połączeniu z wcześniejszymi przekształceniami i obliczeniami oznacza to, że można tworzyć niezwykle interaktywne wykresy, które wykonują obliczenia w locie – nie wymagając nawet działającego serwera Pythona!

Konsekwencje

Bez określenia niestandardowej stylizacji, proste wykresy, takie jak wykres słupkowy, nie wyglądają tak stylowo jak seaborn czy Plotly. Altair nie zaleca również zestawów danych z ponad 5000 próbek, a zamiast tego zaleca agregację danych przed wizualizacją.

Takeaway: Altair jest idealny do tworzenia zaawansowanych wykresów pokazujących statystyki. Altair nie radzi sobie z danymi powyżej 5000 próbek, a niektóre proste wykresy nie wyglądają tak stylowo jak Plotly lub Seaborn.

Bokeh

Bokeh jest elastyczną biblioteką interaktywnej wizualizacji, która jest przeznaczona do reprezentacji w przeglądarkach internetowych.

Pros

  1. Interaktywna wersja Matplotlib

Jeśli uszeregujemy biblioteki interaktywnej wizualizacji powyżej, Bokeh prawdopodobnie uplasuje się na pierwszym miejscu pod względem podobieństwa do Matplotlib.

Matplotlib może tworzyć dowolne wykresy, ponieważ jest niskopoziomową biblioteką wizualizacji. Bokeh może być używany zarówno jako interfejs wysokiego, jak i niskiego poziomu; dzięki temu może tworzyć wiele wyrafinowanych działek, które tworzy Matplotlib, ale z mniejszą liczbą linii kodu i wyższą rozdzielczością.

Na przykład, wykres kołowy z Matplotlib

Może być również utworzony o lepszej rozdzielczości i większej użyteczności za pomocą Bokeh

2. Łączenie pomiędzy działkami

Bokeh umożliwia również bardzo łatwe łączenie działek. Zmiana zastosowana w jednym wątku zostanie zastosowana w innym wątku z podobną zmienną.

Na przykład, jeśli utworzymy 3 wykresy obok siebie i chcemy obserwować ich związek, moglibyśmy użyć pędzla połączonego

ColumnDataSource umożliwia współdzielenie danych między działkami. Tak więc, gdy zastosujemy zmianę w jednym wątku, inne wątki również zostaną odpowiednio zmienione.

Konsekwencje

Ponieważ Bokeh jest biblioteką, która w pewnym sensie ma interfejs średniego poziomu, często wymaga mniej kodu niż Matplotlib, ale wymaga więcej kodu, aby wyprodukować ten sam wątek co Seaborn, Altair lub Plotly.

Na przykład, aby utworzyć tę samą działkę zliczającą przy użyciu danych titanic, oprócz potrzeby przekształcenia danych z góry, musimy również ustawić szerokość paska i kolor, jeśli chcemy, aby wykres wyglądał ładnie

Gdybyśmy nie dodali szerokości dla wykresu słupkowego, wykres wyglądałby tak

Tak więc, musimy ręcznie dopasować wymiary, aby wykres był ładniejszy

Jeśli chcesz stworzyć ładny wykres słupkowy w mniejszej ilości kodu, może to być wadą Bokeh w porównaniu z innymi bibliotekami

Wyciągnij: Bokeh jest jedyną biblioteką, której interfejs waha się od niskiego do wysokiego, co ułatwia tworzenie zarówno wszechstronnych, jak i eleganckich grafik. Wiąże się to jednak z kosztami, ponieważ Bokeh generalnie wymaga więcej kodu do tworzenia wykresów o jakości podobnej do innych bibliotek.

Folium

Folium ułatwia wizualizację danych na interaktywnej mapie ulotnej. Biblioteka posiada szereg wbudowanych tilesetów z OpenStreetMap, Mapbox, oraz Stamen

Pros

  1. Łatwe tworzenie mapy z markerami

Mimo, że Plotly, Altair, i Bokeh również umożliwiają nam tworzenie map, Folium wykorzystuje otwartą mapę uliczną, aby przy minimalnym kodzie dać Ci odczucie zbliżone do mapy Google

Pamiętasz, jak stworzyliśmy mapę do wizualizacji lokalizacji użytkowników Githuba za pomocą Plotly? Możemy sprawić, że mapa będzie wyglądała jeszcze ładniej dzięki Folium

Początkowa lokalizacja w Brooklynie, NY. Powiększ, aby zobaczyć inne lokalizacje na mapie. Za pomocą kilku linijek kodu stworzyliśmy prawdziwą mapę pokazującą lokalizacje użytkowników.

2. Dodaj potencjalną lokalizację

Jeśli chcemy dodać potencjalne lokalizacje innych użytkowników, Folium ułatwia to, pozwalając użytkownikom na dodawanie markerów

Kliknij na mapie, aby zobaczyć nową lokalizację wygenerowaną dokładnie w miejscu kliknięcia.

3. Wtyczki

Folium posiada wiele wtyczek, których możesz używać ze swoją mapą – w tym wtyczkę do Altair. Co jeśli chcemy zobaczyć mapę ciepła całkowitych gwiazd użytkowników Github na świecie, aby zidentyfikować, gdzie jest duża liczba najlepszych użytkowników Github z dużą liczbą całkowitych gwiazd? Mapa cieplna w wtyczkach Folium pozwala właśnie to zrobić.

Zoom out, aby zobaczyć pełny obraz mapy cieplnej.

Takeaway: Folium pozwala na stworzenie interaktywnej mapy za pomocą kilku linijek kodu. Daje to doświadczenie zbliżone do mapy Google.

Podsumowanie

Gratulacje! Właśnie dowiedziałeś się o sześciu różnych narzędziach wizualizacyjnych dla Twojej wizualizacji. Mam nadzieję, że ten artykuł dał Ci poczucie tego, co każda z bibliotek robi i kiedy czego używać. Uchwycenie kluczowych cech każdej z bibliotek sprawi, że szybciej wyciągniesz właściwą bibliotekę, gdy będziesz jej potrzebował.

Jeśli nadal jesteś zdezorientowany, której biblioteki użyć dla swoich danych, po prostu wybierz tę, którą uważasz za wystarczająco dobrą. Następnie, jeśli kod jest zbyt długi lub wykres nie jest tak dobry, jak sobie wyobrażasz, po prostu spróbuj z inną biblioteką!

Nie krępuj się rozwidlić i grać z kodem dla tego artykułu w tym Github repo.

Lubię pisać o podstawowych koncepcjach nauki o danych i grać z różnymi algorytmami i narzędziami nauki o danych. Możesz połączyć się ze mną na LinkedIn i Twitterze.

Zagwiazdkuj to repo, jeśli chcesz sprawdzić kody do wszystkich artykułów, które napisałem. Śledź mnie na Medium, aby być na bieżąco z moimi najnowszymi artykułami z dziedziny nauki o danych, takimi jak te:

.

admin

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

lg