13 KiB
Wizualizacja ilości
![]() |
---|
Wizualizacja ilości - Sketchnote autorstwa @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
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. 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.
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
.
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.
wingspan = birds['MaxWingspan']
wingspan.plot()
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()
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:
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ś?
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:
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.
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:
birds.plot(x='Category',
kind='bar',
stacked=True,
title='Birds of Minnesota')
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:
category_count = birds.value_counts(birds['Category'].values, sort=True)
plt.rcParams['figure.figsize'] = [6, 12]
category_count.plot.barh()
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:
maxlength = birds['MaxLength']
plt.barh(y=birds['Category'], width=maxlength)
plt.rcParams['figure.figsize'] = [6, 12]
plt.show()
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:
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!
🚀 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
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 to jedna z opcji, której nie omówimy w tych lekcjach, więc sprawdź, co może zaoferować.
Zadanie
Zastrzeżenie:
Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI 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.