You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

13 KiB

Vizualizacija količina

 Sketchnote by (@sketchthedocs)
Vizualizacija količina - Sketchnote by @nitya

U ovoj lekciji istražit ćete kako koristiti jednu od mnogih dostupnih Python biblioteka za stvaranje zanimljivih vizualizacija vezanih uz koncept količine. Koristeći očišćeni skup podataka o pticama Minnesote, možete naučiti mnoge zanimljive činjenice o lokalnom životinjskom svijetu.

Kviz prije predavanja

Promatranje raspona krila pomoću Matplotliba

Izvrsna biblioteka za stvaranje jednostavnih i sofisticiranih grafova i dijagrama različitih vrsta je Matplotlib. Općenito, proces vizualizacije podataka pomoću ovih biblioteka uključuje identificiranje dijelova vašeg dataframea koje želite ciljati, provođenje potrebnih transformacija podataka, dodjeljivanje vrijednosti za x i y osi, odlučivanje o vrsti grafika koji želite prikazati, te prikazivanje grafika. Matplotlib nudi veliki izbor vizualizacija, ali za ovu lekciju fokusirat ćemo se na one najprikladnije za vizualizaciju količine: linijski grafikoni, raspršeni grafikoni i stupčasti grafikoni.

Koristite najbolji grafikon koji odgovara strukturi vaših podataka i priči koju želite ispričati.

  • Za analizu trendova kroz vrijeme: linijski
  • Za usporedbu vrijednosti: stupčasti, kolonski, tortni, raspršeni grafikoni
  • Za prikaz odnosa dijelova prema cjelini: tortni
  • Za prikaz distribucije podataka: raspršeni, stupčasti grafikoni
  • Za prikaz trendova: linijski, kolonski
  • Za prikaz odnosa između vrijednosti: linijski, raspršeni, mjehuričasti grafikoni

Ako imate skup podataka i trebate otkriti koliko je određene stavke uključeno, jedan od prvih zadataka bit će pregled njezinih vrijednosti.

Dostupni su vrlo dobri 'cheat sheets' za Matplotlib ovdje.

Izradite linijski grafikon o vrijednostima raspona krila ptica

Otvorite datoteku notebook.ipynb u korijenu ove mape lekcije i dodajte ćeliju.

Napomena: podaci se nalaze u korijenu ovog repozitorija u mapi /data.

import pandas as pd
import matplotlib.pyplot as plt
birds = pd.read_csv('../../data/birds.csv')
birds.head()

Ovi podaci su mješavina teksta i brojeva:

Ime ZnanstvenoIme Kategorija Red Porodica Rod StatusOčuvanja MinDuljina MaxDuljina MinTjelesnaMasa MaxTjelesnaMasa MinRasponKrila MaxRasponKrila
0 Crno-trbušni zviždukavi patak Dendrocygna autumnalis Patke/Guske/Vodene ptice Anseriformes Anatidae Dendrocygna LC 47 56 652 1020 76 94
1 Žuto-smeđi zviždukavi patak Dendrocygna bicolor Patke/Guske/Vodene ptice Anseriformes Anatidae Dendrocygna LC 45 53 712 1050 85 93
2 Snježna guska Anser caerulescens Patke/Guske/Vodene ptice Anseriformes Anatidae Anser LC 64 79 2050 4050 135 165
3 Rossova guska Anser rossii Patke/Guske/Vodene ptice Anseriformes Anatidae Anser LC 57.3 64 1066 1567 113 116
4 Velika bijelo-čela guska Anser albifrons Patke/Guske/Vodene ptice Anseriformes Anatidae Anser LC 64 81 1930 3310 130 165

Započnimo s vizualizacijom nekih numeričkih podataka pomoću osnovnog linijskog grafikona. Pretpostavimo da želite vidjeti maksimalni raspon krila ovih zanimljivih ptica.

wingspan = birds['MaxWingspan'] 
wingspan.plot()

Max Raspon Krila

Što odmah primjećujete? Čini se da postoji barem jedan izniman podatak - to je prilično velik raspon krila! Raspon krila od 2300 centimetara iznosi 23 metra - lutaju li Pterodaktili Minnesotom? Istražimo.

Iako biste mogli brzo sortirati podatke u Excelu kako biste pronašli te iznimne podatke, koji su vjerojatno tipografske pogreške, nastavite proces vizualizacije radeći iz samog grafikona.

Dodajte oznake na x-os kako biste prikazali o kojim se pticama radi:

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()

raspon krila s oznakama

Čak i s rotacijom oznaka postavljenom na 45 stupnjeva, previše ih je za čitanje. Pokušajmo drugačiju strategiju: označimo samo te iznimne podatke i postavimo oznake unutar grafikona. Možete koristiti raspršeni grafikon kako biste dobili više prostora za označavanje:

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()

Što se ovdje događa? Koristili ste tick_params za skrivanje donjih oznaka, a zatim ste stvorili petlju preko skupa podataka o pticama. Prikazujući grafikon s malim plavim točkama pomoću bo, provjerili ste ima li ptica s maksimalnim rasponom krila većim od 500 i prikazali njihovu oznaku pored točke ako je tako. Oznake ste malo pomaknuli na y osi (y * (1 - 0.05)) i koristili ime ptice kao oznaku.

Što ste otkrili?

iznimni podaci

Filtrirajte svoje podatke

I ćelavi orao i prerijski sokol, iako vjerojatno vrlo velike ptice, čini se da su pogrešno označeni, s dodatnom 0 dodanom njihovom maksimalnom rasponu krila. Malo je vjerojatno da ćete sresti ćelavog orla s rasponom krila od 25 metara, ali ako se to dogodi, molimo vas da nas obavijestite! Stvorimo novi dataframe bez ta dva iznimna podatka:

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()

Filtriranjem iznimnih podataka, vaši podaci sada su kohezivniji i razumljiviji.

raspršeni grafikon raspona krila

Sada kada imamo čišći skup podataka barem u smislu raspona krila, istražimo više o ovim pticama.

Iako linijski i raspršeni grafikoni mogu prikazati informacije o vrijednostima podataka i njihovim distribucijama, želimo razmišljati o vrijednostima inherentnim u ovom skupu podataka. Mogli biste stvoriti vizualizacije kako biste odgovorili na sljedeća pitanja o količini:

Koliko kategorija ptica postoji i koji su njihovi brojevi?
Koliko ptica je izumrlo, ugroženo, rijetko ili uobičajeno?
Koliko ih ima u različitim rodovima i redovima prema Linnaeusovoj terminologiji?

Istražite stupčaste grafikone

Stupčasti grafikoni su praktični kada trebate prikazati grupiranje podataka. Istražimo kategorije ptica koje postoje u ovom skupu podataka kako bismo vidjeli koja je najčešća po broju.

U datoteci notebook stvorite osnovni stupčasti grafikon.

Napomena, možete ili filtrirati dvije iznimne ptice koje smo identificirali u prethodnom odjeljku, urediti tipografske pogreške u njihovom rasponu krila ili ih ostaviti za ove vježbe koje ne ovise o vrijednostima raspona krila.

Ako želite stvoriti stupčasti grafikon, možete odabrati podatke na koje se želite fokusirati. Stupčasti grafikoni mogu se stvoriti iz sirovih podataka:

birds.plot(x='Category',
        kind='bar',
        stacked=True,
        title='Birds of Minnesota')

svi podaci kao stupčasti grafikon

Ovaj stupčasti grafikon, međutim, nije čitljiv jer ima previše negrupiranih podataka. Trebate odabrati samo podatke koje želite prikazati, pa pogledajmo duljinu ptica na temelju njihove kategorije.

Filtrirajte svoje podatke kako biste uključili samo kategoriju ptica.

Primijetite da koristite Pandas za upravljanje podacima, a zatim dopuštate Matplotlibu da obavi vizualizaciju.

Budući da postoji mnogo kategorija, možete prikazati ovaj grafikon vertikalno i prilagoditi njegovu visinu kako bi obuhvatio sve podatke:

category_count = birds.value_counts(birds['Category'].values, sort=True)
plt.rcParams['figure.figsize'] = [6, 12]
category_count.plot.barh()

kategorija i duljina

Ovaj stupčasti grafikon pruža dobar pregled broja ptica u svakoj kategoriji. Na prvi pogled vidite da je najveći broj ptica u ovoj regiji u kategoriji Patke/Guske/Vodene ptice. Minnesota je 'zemlja 10.000 jezera', pa to nije iznenađujuće!

Isprobajte neke druge brojeve na ovom skupu podataka. Iznenađuje li vas nešto?

Usporedba podataka

Možete isprobati različite usporedbe grupiranih podataka stvaranjem novih osi. Isprobajte usporedbu maksimalne duljine ptice na temelju njezine kategorije:

maxlength = birds['MaxLength']
plt.barh(y=birds['Category'], width=maxlength)
plt.rcParams['figure.figsize'] = [6, 12]
plt.show()

usporedba podataka

Ništa ovdje nije iznenađujuće: kolibrići imaju najmanju maksimalnu duljinu u usporedbi s pelikanima ili guskama. Dobro je kada podaci imaju logičan smisao!

Možete stvoriti zanimljivije vizualizacije stupčastih grafikona superponiranjem podataka. Superponirajmo minimalnu i maksimalnu duljinu na određenu kategoriju ptica:

minLength = birds['MinLength']
maxLength = birds['MaxLength']
category = birds['Category']

plt.barh(category, maxLength)
plt.barh(category, minLength)

plt.show()

Na ovom grafikonu možete vidjeti raspon po kategoriji ptica za minimalnu i maksimalnu duljinu. Možete sigurno reći da, prema ovim podacima, što je ptica veća, to je veći raspon njezine duljine. Fascinantno!

superponirane vrijednosti

🚀 Izazov

Ovaj skup podataka o pticama nudi bogatstvo informacija o različitim vrstama ptica unutar određenog ekosustava. Pretražite internet i provjerite možete li pronaći druge skupove podataka o pticama. Vježbajte izradu grafikona i dijagrama o ovim pticama kako biste otkrili činjenice koje niste znali.

Kviz nakon predavanja

Pregled i samostalno učenje

Ova prva lekcija dala vam je neke informacije o tome kako koristiti Matplotlib za vizualizaciju količina. Istražite druge načine rada s skupovima podataka za vizualizaciju. Plotly je jedan od alata koji nećemo pokriti u ovim lekcijama, pa pogledajte što on može ponuditi.

Zadatak

Linije, Raspršeni grafikoni i Stupčasti grafikoni


Odricanje od odgovornosti:
Ovaj dokument je preveden pomoću AI usluge za prevođenje Co-op Translator. Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane ljudskog prevoditelja. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda.