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

Memvisualisasikan Kuantitas

 Sketchnote oleh (@sketchthedocs)
Memvisualisasikan Kuantitas - Sketchnote oleh @nitya

Dalam pelajaran ini, Anda akan mengeksplorasi cara menggunakan salah satu dari banyak pustaka Python yang tersedia untuk belajar membuat visualisasi menarik seputar konsep kuantitas. Dengan menggunakan dataset yang telah dibersihkan tentang burung-burung di Minnesota, Anda dapat mempelajari banyak fakta menarik tentang satwa liar lokal.

Kuis sebelum pelajaran

Mengamati rentang sayap dengan Matplotlib

Salah satu pustaka yang sangat baik untuk membuat plot dan grafik sederhana maupun kompleks dari berbagai jenis adalah Matplotlib. Secara umum, proses memplot data menggunakan pustaka ini mencakup mengidentifikasi bagian dari dataframe yang ingin Anda targetkan, melakukan transformasi data yang diperlukan, menetapkan nilai sumbu x dan y, memutuskan jenis plot yang akan ditampilkan, dan kemudian menampilkan plot tersebut. Matplotlib menawarkan berbagai macam visualisasi, tetapi untuk pelajaran ini, mari kita fokus pada jenis yang paling sesuai untuk memvisualisasikan kuantitas: grafik garis, scatterplot, dan diagram batang.

Gunakan grafik terbaik yang sesuai dengan struktur data Anda dan cerita yang ingin Anda sampaikan.

  • Untuk menganalisis tren dari waktu ke waktu: garis
  • Untuk membandingkan nilai: batang, kolom, pie, scatterplot
  • Untuk menunjukkan bagaimana bagian-bagian berhubungan dengan keseluruhan: pie
  • Untuk menunjukkan distribusi data: scatterplot, batang
  • Untuk menunjukkan tren: garis, kolom
  • Untuk menunjukkan hubungan antar nilai: garis, scatterplot, bubble

Jika Anda memiliki dataset dan perlu mengetahui seberapa banyak suatu item tertentu, salah satu tugas pertama yang harus Anda lakukan adalah memeriksa nilainya.

Ada banyak 'cheat sheet' yang sangat bagus untuk Matplotlib di sini.

Membuat grafik garis tentang nilai rentang sayap burung

Buka file notebook.ipynb di root folder pelajaran ini dan tambahkan sebuah sel.

Catatan: data disimpan di root repositori ini dalam folder /data.

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

Data ini adalah campuran teks dan angka:

Nama NamaIlmiah Kategori Ordo Famili Genus StatusKonservasi PanjangMin PanjangMax BeratMin BeratMax RentangSayapMin RentangSayapMax
0 Itik bersiul perut hitam Dendrocygna autumnalis Bebek/Angsa/Burung Air Anseriformes Anatidae Dendrocygna LC 47 56 652 1020 76 94
1 Itik bersiul fulvous Dendrocygna bicolor Bebek/Angsa/Burung Air Anseriformes Anatidae Dendrocygna LC 45 53 712 1050 85 93
2 Angsa salju Anser caerulescens Bebek/Angsa/Burung Air Anseriformes Anatidae Anser LC 64 79 2050 4050 135 165
3 Angsa Ross Anser rossii Bebek/Angsa/Burung Air Anseriformes Anatidae Anser LC 57.3 64 1066 1567 113 116
4 Angsa putih besar Anser albifrons Bebek/Angsa/Burung Air Anseriformes Anatidae Anser LC 64 81 1930 3310 130 165

Mari kita mulai dengan memplot beberapa data numerik menggunakan grafik garis dasar. Misalkan Anda ingin melihat rentang sayap maksimum untuk burung-burung menarik ini.

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

Max Wingspan

Apa yang langsung Anda perhatikan? Tampaknya ada setidaknya satu outlier - itu adalah rentang sayap yang luar biasa! Rentang sayap 2300 sentimeter setara dengan 23 meter - apakah ada Pterodactyl berkeliaran di Minnesota? Mari kita selidiki.

Meskipun Anda bisa melakukan pengurutan cepat di Excel untuk menemukan outlier tersebut, yang mungkin adalah kesalahan pengetikan, lanjutkan proses visualisasi dengan bekerja dari dalam plot.

Tambahkan label ke sumbu x untuk menunjukkan jenis burung yang dimaksud:

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

wingspan with labels

Bahkan dengan rotasi label diatur ke 45 derajat, masih terlalu banyak untuk dibaca. Mari coba strategi yang berbeda: beri label hanya pada outlier dan atur label di dalam grafik. Anda dapat menggunakan scatter chart untuk memberikan lebih banyak ruang untuk pelabelan:

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

Apa yang terjadi di sini? Anda menggunakan tick_params untuk menyembunyikan label bawah dan kemudian membuat loop pada dataset burung Anda. Dengan memplot grafik menggunakan titik biru kecil dengan bo, Anda memeriksa burung mana saja yang memiliki rentang sayap maksimum di atas 500 dan menampilkan label mereka di sebelah titik jika memenuhi syarat. Anda menggeser label sedikit pada sumbu y (y * (1 - 0.05)) dan menggunakan nama burung sebagai label.

Apa yang Anda temukan?

outliers

Memfilter data

Baik Bald Eagle maupun Prairie Falcon, meskipun mungkin burung yang sangat besar, tampaknya salah diberi label, dengan tambahan 0 pada rentang sayap maksimum mereka. Tidak mungkin Anda akan bertemu dengan Bald Eagle dengan rentang sayap 25 meter, tetapi jika iya, beri tahu kami! Mari kita buat dataframe baru tanpa dua outlier tersebut:

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

Dengan memfilter outlier, data Anda sekarang lebih kohesif dan mudah dipahami.

scatterplot of wingspans

Sekarang kita memiliki dataset yang lebih bersih setidaknya dalam hal rentang sayap, mari kita temukan lebih banyak tentang burung-burung ini.

Meskipun grafik garis dan scatterplot dapat menampilkan informasi tentang nilai data dan distribusinya, kita ingin memikirkan nilai-nilai yang melekat dalam dataset ini. Anda dapat membuat visualisasi untuk menjawab pertanyaan berikut tentang kuantitas:

Berapa banyak kategori burung yang ada, dan berapa jumlahnya?
Berapa banyak burung yang punah, terancam, langka, atau umum?
Berapa banyak genus dan ordo yang ada dalam terminologi Linnaeus?

Mengeksplorasi diagram batang

Diagram batang sangat praktis ketika Anda perlu menunjukkan pengelompokan data. Mari kita eksplorasi kategori burung yang ada dalam dataset ini untuk melihat mana yang paling umum berdasarkan jumlah.

Dalam file notebook, buat diagram batang dasar.

Perhatikan, Anda dapat memfilter dua burung outlier yang telah kita identifikasi di bagian sebelumnya, mengedit kesalahan pada rentang sayap mereka, atau membiarkan mereka tetap ada untuk latihan ini yang tidak bergantung pada nilai rentang sayap.

Jika Anda ingin membuat diagram batang, Anda dapat memilih data yang ingin Anda fokuskan. Diagram batang dapat dibuat dari data mentah:

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

full data as a bar chart

Namun, diagram batang ini sulit dibaca karena terlalu banyak data yang tidak dikelompokkan. Anda perlu memilih hanya data yang ingin Anda plot, jadi mari kita lihat panjang burung berdasarkan kategori mereka.

Filter data Anda untuk hanya menyertakan kategori burung.

Perhatikan bahwa Anda menggunakan Pandas untuk mengelola data, dan kemudian membiarkan Matplotlib melakukan pemetaan grafik.

Karena ada banyak kategori, Anda dapat menampilkan grafik ini secara vertikal dan menyesuaikan tingginya untuk mencakup semua data:

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

category and length

Diagram batang ini menunjukkan pandangan yang baik tentang jumlah burung di setiap kategori. Sekilas, Anda dapat melihat bahwa jumlah burung terbesar di wilayah ini adalah dalam kategori Bebek/Angsa/Burung Air. Minnesota adalah 'tanah 10.000 danau', jadi ini tidak mengejutkan!

Cobalah beberapa penghitungan lain pada dataset ini. Apakah ada yang mengejutkan Anda?

Membandingkan data

Anda dapat mencoba berbagai perbandingan data yang dikelompokkan dengan membuat sumbu baru. Cobalah perbandingan PanjangMaksimum burung, berdasarkan kategorinya:

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

comparing data

Tidak ada yang mengejutkan di sini: burung kolibri memiliki PanjangMaksimum paling kecil dibandingkan dengan Pelikan atau Angsa. Bagus ketika data masuk akal secara logis!

Anda dapat membuat visualisasi diagram batang yang lebih menarik dengan menumpangkan data. Mari kita tumpangkan Panjang Minimum dan Panjang Maksimum pada kategori burung tertentu:

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

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

plt.show()

Dalam grafik ini, Anda dapat melihat rentang per kategori burung dari Panjang Minimum dan Panjang Maksimum. Anda dapat dengan aman mengatakan bahwa, berdasarkan data ini, semakin besar burung, semakin besar rentang panjangnya. Menarik!

superimposed values

🚀 Tantangan

Dataset burung ini menawarkan banyak informasi tentang berbagai jenis burung dalam ekosistem tertentu. Cari di internet dan lihat apakah Anda dapat menemukan dataset lain yang berorientasi pada burung. Latih membuat grafik dan diagram seputar burung-burung ini untuk menemukan fakta yang tidak Anda sadari.

Kuis setelah pelajaran

Tinjauan & Studi Mandiri

Pelajaran pertama ini telah memberikan Anda beberapa informasi tentang cara menggunakan Matplotlib untuk memvisualisasikan kuantitas. Lakukan penelitian tentang cara lain untuk bekerja dengan dataset untuk visualisasi. Plotly adalah salah satu yang tidak akan kita bahas dalam pelajaran ini, jadi lihat apa yang dapat ditawarkannya.

Tugas

Lines, Scatters, and Bars


Penafian:
Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI Co-op Translator. Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemah manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.