# Wizualizacja ilości |![ Sketchnote autorstwa [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/09-Visualizing-Quantities.png)| |:---:| | Wizualizacja ilości - _Sketchnote autorstwa [@nitya](https://twitter.com/nitya)_ | W tej lekcji dowiesz się, jak korzystać z jednej z wielu dostępnych bibliotek Pythona, aby tworzyć ciekawe wizualizacje związane z pojęciem ilości. Korzystając z oczyszczonego zestawu danych o ptakach z Minnesoty, możesz poznać wiele interesujących faktów o lokalnej faunie. ## [Quiz przed wykładem](https://ff-quizzes.netlify.app/en/ds/quiz/16) ## Obserwacja rozpiętości skrzydeł za pomocą Matplotlib Doskonałą biblioteką do tworzenia zarówno prostych, jak i zaawansowanych wykresów oraz diagramów różnego rodzaju jest [Matplotlib](https://matplotlib.org/stable/index.html). Ogólnie rzecz biorąc, proces tworzenia wykresów za pomocą tych bibliotek obejmuje identyfikację części ramki danych, które chcesz wykorzystać, przeprowadzenie niezbędnych transformacji danych, przypisanie wartości osi x i y, wybór rodzaju wykresu, a następnie jego wyświetlenie. Matplotlib oferuje szeroką gamę wizualizacji, ale w tej lekcji skupimy się na tych najbardziej odpowiednich do wizualizacji ilości: wykresach liniowych, wykresach punktowych i wykresach słupkowych. > ✅ Wybierz najlepszy typ wykresu, który pasuje do struktury Twoich danych i historii, którą chcesz opowiedzieć. > - Aby analizować trendy w czasie: linia > - Aby porównywać wartości: słupki, kolumny, koło, wykres punktowy > - Aby pokazać, jak części odnoszą się do całości: koło > - Aby pokazać rozkład danych: wykres punktowy, słupki > - Aby pokazać trendy: linia, kolumny > - Aby pokazać relacje między wartościami: linia, wykres punktowy, bąbelkowy Jeśli masz zestaw danych i chcesz dowiedzieć się, ile danego elementu jest zawarte, jednym z pierwszych zadań będzie inspekcja jego wartości. ✅ Dostępne są bardzo dobre 'ściągi' dla Matplotlib [tutaj](https://matplotlib.org/cheatsheets/cheatsheets.pdf). ## Tworzenie wykresu liniowego dotyczącego rozpiętości skrzydeł ptaków Otwórz plik `notebook.ipynb` znajdujący się w głównym folderze tej lekcji i dodaj komórkę. > Uwaga: dane są przechowywane w głównym folderze tego repozytorium w katalogu `/data`. ```python import pandas as pd import matplotlib.pyplot as plt birds = pd.read_csv('../../data/birds.csv') birds.head() ``` Te dane to mieszanka tekstu i liczb: | | Nazwa | NazwaNaukowa | Kategoria | Rząd | Rodzina | Rodzaj | StatusOchrony | MinDługość | MaxDługość | MinMasaCiała | MaxMasaCiała | MinRozpiętość | MaxRozpiętość | | ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: | | 0 | Czarnobrzuchy gwizduś | Dendrocygna autumnalis | Kaczki/Gęsi/Wodne | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | | 1 | Płowy gwizduś | Dendrocygna bicolor | Kaczki/Gęsi/Wodne | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | | 2 | Gęś śnieżna | Anser caerulescens | Kaczki/Gęsi/Wodne | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | | 3 | Gęś Ross'a | Anser rossii | Kaczki/Gęsi/Wodne | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | | 4 | Gęś białoczelna | Anser albifrons | Kaczki/Gęsi/Wodne | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | Zacznijmy od wykreślenia niektórych danych liczbowych za pomocą podstawowego wykresu liniowego. Załóżmy, że chcesz zobaczyć maksymalną rozpiętość skrzydeł tych interesujących ptaków. ```python wingspan = birds['MaxWingspan'] wingspan.plot() ``` ![Max Rozpiętość](../../../../3-Data-Visualization/09-visualization-quantities/images/max-wingspan-02.png) Co zauważasz od razu? Wydaje się, że jest co najmniej jeden odstający wynik - to całkiem imponująca rozpiętość skrzydeł! Rozpiętość skrzydeł wynosząca 2300 centymetrów to 23 metry - czy w Minnesocie latają pterodaktyle? Zbadajmy to. Chociaż możesz szybko posortować dane w Excelu, aby znaleźć te odstające wyniki, kontynuuj proces wizualizacji, pracując bezpośrednio z wykresem. Dodaj etykiety do osi x, aby pokazać, o jakie ptaki chodzi: ``` plt.title('Max Wingspan in Centimeters') plt.ylabel('Wingspan (CM)') plt.xlabel('Birds') plt.xticks(rotation=45) x = birds['Name'] y = birds['MaxWingspan'] plt.plot(x, y) plt.show() ``` ![Rozpiętość z etykietami](../../../../3-Data-Visualization/09-visualization-quantities/images/max-wingspan-labels-02.png) Nawet przy obrocie etykiet o 45 stopni jest ich zbyt wiele, aby je odczytać. Spróbujmy innej strategii: oznacz tylko te odstające wyniki i umieść etykiety na wykresie. Możesz użyć wykresu punktowego, aby zrobić więcej miejsca na etykiety: ```python plt.title('Max Wingspan in Centimeters') plt.ylabel('Wingspan (CM)') plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) for i in range(len(birds)): x = birds['Name'][i] y = birds['MaxWingspan'][i] plt.plot(x, y, 'bo') if birds['MaxWingspan'][i] > 500: plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12) plt.show() ``` Co tu się dzieje? Użyłeś `tick_params`, aby ukryć dolne etykiety, a następnie stworzyłeś pętlę nad zestawem danych o ptakach. Tworząc wykres z małymi okrągłymi niebieskimi punktami za pomocą `bo`, sprawdziłeś, czy którykolwiek ptak ma maksymalną rozpiętość skrzydeł większą niż 500 i wyświetliłeś jego etykietę obok punktu, jeśli tak. Przesunąłeś etykiety nieco na osi y (`y * (1 - 0.05)`) i użyłeś nazwy ptaka jako etykiety. Co odkryłeś? ![Odstające wyniki](../../../../3-Data-Visualization/09-visualization-quantities/images/labeled-wingspan-02.png) ## Filtruj swoje dane Zarówno Bielik amerykański, jak i Sokół preriowy, choć prawdopodobnie bardzo duże ptaki, wydają się być błędnie oznaczone, z dodatkowym `0` dodanym do ich maksymalnej rozpiętości skrzydeł. Mało prawdopodobne, że spotkasz Bielika z rozpiętością skrzydeł 25 metrów, ale jeśli tak, daj nam znać! Stwórzmy nową ramkę danych bez tych dwóch odstających wyników: ```python plt.title('Max Wingspan in Centimeters') plt.ylabel('Wingspan (CM)') plt.xlabel('Birds') plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) for i in range(len(birds)): x = birds['Name'][i] y = birds['MaxWingspan'][i] if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']: plt.plot(x, y, 'bo') plt.show() ``` Po odfiltrowaniu odstających wyników, Twoje dane są teraz bardziej spójne i zrozumiałe. ![Wykres punktowy rozpiętości skrzydeł](../../../../3-Data-Visualization/09-visualization-quantities/images/scatterplot-wingspan-02.png) Teraz, gdy mamy czystszy zestaw danych przynajmniej pod względem rozpiętości skrzydeł, odkryjmy więcej o tych ptakach. Podczas gdy wykresy liniowe i punktowe mogą przedstawiać informacje o wartościach danych i ich rozkładach, chcemy pomyśleć o wartościach zawartych w tym zestawie danych. Możesz tworzyć wizualizacje, aby odpowiedzieć na następujące pytania dotyczące ilości: > Ile kategorii ptaków istnieje i jakie są ich liczby? > Ile ptaków jest wymarłych, zagrożonych, rzadkich lub pospolitych? > Ile jest różnych rodzajów i rzędów w terminologii Linneusza? ## Eksploracja wykresów słupkowych Wykresy słupkowe są praktyczne, gdy chcesz pokazać grupowanie danych. Zbadajmy kategorie ptaków, które istnieją w tym zestawie danych, aby zobaczyć, która jest najliczniejsza. W pliku notebooka stwórz podstawowy wykres słupkowy. ✅ Uwaga, możesz albo odfiltrować dwa odstające ptaki, które zidentyfikowaliśmy w poprzedniej sekcji, poprawić błąd w ich rozpiętości skrzydeł, albo pozostawić je w tych ćwiczeniach, które nie zależą od wartości rozpiętości skrzydeł. Jeśli chcesz stworzyć wykres słupkowy, możesz wybrać dane, na których chcesz się skupić. Wykresy słupkowe można tworzyć z surowych danych: ```python birds.plot(x='Category', kind='bar', stacked=True, title='Birds of Minnesota') ``` ![Pełne dane jako wykres słupkowy](../../../../3-Data-Visualization/09-visualization-quantities/images/full-data-bar-02.png) Ten wykres słupkowy jest jednak nieczytelny, ponieważ jest zbyt wiele niegrupowanych danych. Musisz wybrać tylko dane, które chcesz wykreślić, więc spójrzmy na długość ptaków w zależności od ich kategorii. Przefiltruj swoje dane, aby uwzględnić tylko kategorię ptaków. ✅ Zauważ, że używasz Pandas do zarządzania danymi, a następnie pozwalasz Matplotlib na tworzenie wykresów. Ponieważ jest wiele kategorii, możesz wyświetlić ten wykres pionowo i dostosować jego wysokość, aby uwzględnić wszystkie dane: ```python category_count = birds.value_counts(birds['Category'].values, sort=True) plt.rcParams['figure.figsize'] = [6, 12] category_count.plot.barh() ``` ![Kategoria i długość](../../../../3-Data-Visualization/09-visualization-quantities/images/category-counts-02.png) Ten wykres słupkowy pokazuje dobry widok liczby ptaków w każdej kategorii. Na pierwszy rzut oka widzisz, że największa liczba ptaków w tym regionie należy do kategorii Kaczki/Gęsi/Wodne. Minnesota to 'kraina 10 000 jezior', więc to nie jest zaskakujące! ✅ Spróbuj innych obliczeń na tym zestawie danych. Czy coś Cię zaskoczyło? ## Porównywanie danych Możesz spróbować różnych porównań grupowanych danych, tworząc nowe osie. Spróbuj porównać MaxDługość ptaka w zależności od jego kategorii: ```python maxlength = birds['MaxLength'] plt.barh(y=birds['Category'], width=maxlength) plt.rcParams['figure.figsize'] = [6, 12] plt.show() ``` ![Porównywanie danych](../../../../3-Data-Visualization/09-visualization-quantities/images/category-length-02.png) Nic tu nie zaskakuje: kolibry mają najmniejszą MaxDługość w porównaniu do pelikanów czy gęsi. Dobrze, gdy dane mają logiczny sens! Możesz tworzyć bardziej interesujące wizualizacje wykresów słupkowych, nakładając dane. Nałóż Minimalną i Maksymalną Długość na daną kategorię ptaków: ```python minLength = birds['MinLength'] maxLength = birds['MaxLength'] category = birds['Category'] plt.barh(category, maxLength) plt.barh(category, minLength) plt.show() ``` Na tym wykresie możesz zobaczyć zakres dla każdej kategorii ptaków w odniesieniu do Minimalnej i Maksymalnej Długości. Możesz śmiało powiedzieć, że na podstawie tych danych, im większy ptak, tym większy zakres jego długości. Fascynujące! ![Nakładanie wartości](../../../../3-Data-Visualization/09-visualization-quantities/images/superimposed-02.png) ## 🚀 Wyzwanie Ten zestaw danych o ptakach oferuje bogactwo informacji o różnych typach ptaków w określonym ekosystemie. Poszukaj w internecie innych zestawów danych związanych z ptakami. Ćwicz tworzenie wykresów i diagramów dotyczących tych ptaków, aby odkryć fakty, których wcześniej nie znałeś. ## [Quiz po wykładzie](https://ff-quizzes.netlify.app/en/ds/quiz/17) ## Przegląd i samodzielna nauka Ta pierwsza lekcja dostarczyła Ci informacji o tym, jak korzystać z Matplotlib do wizualizacji ilości. Przeprowadź badania na temat innych sposobów pracy z zestawami danych w celu wizualizacji. [Plotly](https://github.com/plotly/plotly.py) to jedna z opcji, której nie omówimy w tych lekcjach, więc sprawdź, co może zaoferować. ## Zadanie [Linie, Punkty i Słupki](assignment.md) --- **Zastrzeżenie**: Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego języku źródłowym powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia.