Lewati ke konten utama

Boxplot Python: Panduan Komprehensif untuk Pemula

Buat boxplot yang memukau di Python! Tutorial komprehensif untuk pemula ini membahas Matplotlib dan Seaborn, membantu Anda memvisualisasikan dan membandingkan distribusi data.
· 15 mnt Baca

Jelajahi bersama AI

Pernahkah Anda bertanya-tanya bagaimana cara merepresentasikan distribusi data numerik di Python dengan lebih baik? Pilihan terbaik Anda adalah mempelajari cara menggunakan boxplot! Boxplot sangat efektif untuk memvisualisasikan perbandingan distribusi antar beberapa kelompok.

Dalam tutorial ini, kita akan membahas apa itu boxplot, berbagai cara membuatnya di Python, serta beberapa kesalahan umum pemula.

Apa Itu Boxplot Python?

Boxplot, juga dikenal sebagai box-and-whisker plot, adalah cara standar untuk menampilkan distribusi data berdasarkan ringkasan lima angka: minimum, kuartil pertama (Q1), median, kuartil ketiga (Q3), dan maksimum.

Boxplot sangat berguna untuk mengidentifikasi outlier serta memahami sebaran dan kemencengan (skewness) data. Boxplot juga digunakan ketika membandingkan beberapa kelompok atau memvisualisasikan distribusi satu variabel.

Komponen boxplot

Boxplot khas memiliki beberapa komponen sebagai bagian dari anatominya:

  1. Median: Nilai tengah data, direpresentasikan oleh garis di dalam kotak.
  2. Kotak: Mewakili Interquartile Range (IQR) data, yaitu rentang antara Q1 dan Q3. Tepi bawah dan atas masing-masing mewakili Q1 dan Q3.
  3. Whisker: Garis vertikal yang memanjang dari kedua ujung kotak untuk mewakili nilai minimum dan maksimum, tidak termasuk outlier.
  4. Outlier: Titik-titik di luar whisker yang dianggap tidak biasa atau ekstrem dibandingkan dengan data lainnya.
  5. Cap: Garis horizontal di ujung whisker yang mewakili nilai minimum dan maksimum, termasuk outlier apa pun.

Komponen-komponen ini berpadu untuk memberikan makna statistik pada boxplot dan memungkinkan perbandingan visual yang mudah antar kelompok data yang berbeda.

Python adalah alat canggih yang dapat membantu kita membuat boxplot. Pada bagian berikut, kita akan meninjau berbagai metode untuk melakukannya.

Boxplot Python: Panduan Langkah demi Langkah

Sekarang kita sudah memahami dasar boxplot, mari lihat cara membuatnya menggunakan Python. Ada beberapa pustaka di Python, seperti Matplotlib, Seaborn, dan Plotly, yang mendukung pembuatan boxplot.

Untuk membuat boxplot di Python, pertama-tama Anda harus menginstal pustaka yang diperlukan. Pustaka utama yang dibutuhkan adalah Matplotlib, Seaborn, dan Plotly.

Berikut kode untuk menginstalnya:

pip install matplotlib
pip install seaborn
pip install plotly==5.22.0

Setelah instalasi, langkah berikutnya adalah mengimpor pustaka tersebut ke lingkungan Python Anda.

Pastikan juga untuk memuat dataset yang diperlukan yang akan Anda gunakan untuk boxplot, jika ada.

#imports Matplotlib library and assigns shorthand 'plt'
import matplotlib.pyplot as plt
#imports Seaborn library and assigns shorthand 'sns'
import seaborn as sns
#imports Plotly library and assigns shorthand 'px'
import plotly.express as px

Berkat fleksibilitas Python, membuat boxplot sederhana hanya memerlukan sedikit kode. Mari mulai dengan pustaka yang paling umum, Matplotlib.

Untuk membuat boxplot menggunakan Matplotlib, impor pustaka yang diperlukan:

import matplotlib.pyplot as plt
import numpy as np

Selanjutnya, mari siapkan dataset sederhana:

# Generates some random dataset
np.random.seed(10) 
data = np.random.normal(0, 1, 100)

Terakhir, mari buat boxplot dan tampilkan:

# Creates a boxplot
plt.boxplot(data) plt.title('Basic Boxplot') plt.show()

Berikut hasilnya:Plot Matplotlib dasar

Jika Anda ingin membuat boxplot terpisah di subplot yang berbeda, Anda dapat menggunakan fungsi subplot. Ini memungkinkan Anda membuat beberapa boxplot berdampingan dalam satu gambar. 

Berikut contoh kode lengkapnya:

import matplotlib.pyplot as plt
import numpy as np
# Generates multiple datasets
data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(1, 2, 100)
data3 = np.random.normal(2, 1.5, 100)
# Creates subplots
fig, axs = plt.subplots(1, 3, figsize=(15, 5))
# Plots Boxplot for Data 1
axs[0].boxplot(data1)
axs[0].set_title('Data 1')
axs[0].set_xlabel('Sample')
axs[0].set_ylabel('Value')
# Plots Boxplot for Data 2
axs[1].boxplot(data2)
axs[1].set_title('Data 2')
axs[1].set_xlabel('Sample')
axs[1].set_ylabel('Value')
# Plots Boxplot for Data 3
axs[2].boxplot(data3)
axs[2].set_title('Data 3')
axs[2].set_xlabel('Sample')
axs[2].set_ylabel('Value')
# Adjusts layout
plt.tight_layout()
plt.show()

Ini adalah plot yang dihasilkan:

Beberapa boxplot di Matplotlib

Namun, subplot ini tidak berbagi sumbu yang sama dan kurang cocok untuk perbandingan berdampingan lintas kategori. Untuk beberapa boxplot dengan sumbu yang sama, Anda perlu membuat grouped boxplot.

Grouped boxplot sangat berguna untuk membandingkan distribusi antar banyak kategori. Ini memungkinkan pemahaman yang lebih mendalam tentang data. Perbandingan ini dapat mengungkap perbedaan yang tidak langsung terlihat dari bagan lain.

Setiap grup disajikan berdampingan dalam bagan yang sama, sehingga lebih mudah menyoroti variasi, tren, dan outlier di berbagai subkategori.

Berikut cara membuat grouped subplot:

# Generates grouped data
data_group1 = [np.random.normal(0, 1, 100), np.random.normal(1, 2, 100), np.random.normal(2, 1.5, 100)]
data_group2 = [np.random.normal(0, 1, 100), np.random.normal(1, 2, 100), np.random.normal(2, 1.5, 100)]
# Combines two data groups into a dataset
data = data_group1 + data_group2
# Creates grouped boxplots
plt.boxplot(data, positions=[1, 2, 3, 5, 6, 7], labels=['G1-D1', 'G1-D2', 'G1-D3', 'G2-D1', 'G2-D2', 'G2-D3'])
plt.title('Grouped Boxplots')
plt.xlabel('Group-Dataset')
plt.ylabel('Value')
plt.show()

Berikut grouped boxplot yang dihasilkan oleh kode di atas:

Grouped boxplot di Matplotlib

Anda dapat menggunakan penyesuaian lanjutan di Matplotlib untuk meningkatkan visualisasi data.

Teknik seperti menambahkan mean, menambahkan standar deviasi, membuat grouped boxplot, dan menggunakan boxplot horizontal dapat memberikan wawasan yang lebih baik tentang distribusi data Anda.

Menyesuaikan boxplot di Python juga memungkinkan Anda menyesuaikan visual dengan spesifikasi proyek Anda.

Berikut beberapa cara menyesuaikan boxplot menggunakan pustaka Matplotlib:

1. Menambahkan label dan judul

Judul dan label akan membuat plot Anda lebih mudah dipahami oleh pembaca, yang dapat dengan cepat menangkap perbandingan data. Menambahkannya sangat mudah dan dapat dilakukan menggunakan fungsi-fungsi Matplotlib.

Untuk menambahkan label pada boxplot Matplotlib:

plt.boxplot(data)
# Adds title
plt.title('Customized Boxplot Title')
# Adds x axis label
plt.xlabel('Customized X Label')
# Adds y axis label
plt.ylabel('Customized Y Label')
plt.show()

Ini akan menghasilkan boxplot berlabel seperti gambar di bawah:

Judul dan label boxplot yang disesuaikan di Matplotlib

2. Menyesuaikan warna boxplot

Menyesuaikan warna dan gaya boxplot di Python memungkinkan penyajian data yang menarik dan jelas. Ini juga membantu Anda menekankan poin data tertentu atau perbandingan kepada pemangku kepentingan secara efektif.

Anda dapat mengubah warna kotak, whisker, cap, median, dan flier menggunakan parameter boxprops, whiskerprops, capprops, medianprops, dan flierprops.

Berikut contoh kodenya:

plt.boxplot(data, boxprops=dict(color='blue'), whiskerprops=dict(color='red'), capprops=dict(color='green'), medianprops=dict(color='orange'), flierprops=dict(markerfacecolor='red', marker='o'))
plt.show()

Ini akan menghasilkan warna berbeda untuk komponen boxplot sesuai parameter yang Anda tetapkan:

Kustomisasi warna boxplot di Matplotlib

3. Menambahkan mean dan standar deviasi

Tambahkan mean dan standar deviasi ke boxplot untuk memberikan informasi statistik tambahan.

# Creates dataset
data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(1, 2, 100)
data3 = np.random.normal(2, 1.5, 100)
# Calculates the mean and standard deviations
mean = [np.mean(d) for d in data]
std_devs = [np.std(d) for d in data]
# Creates a boxplot
plt.boxplot(data, labels=['Data 1', 'Data 2', 'Data 3'])
# Adds mean as red dots
for i in range(len(mean)):
   plt.plot(i + 1, mean[i], 'ro')
# Adds standard deviations as error bars
for i in range(len(std_devs)):
   plt.errorbar(i + 1, mean[i], yerr=std_devs[i], fmt='o', color='red')
# Plots graph
plt.title('Boxplot with Means and Standard Deviations')
plt.xlabel('Dataset')
plt.ylabel('Value')
plt.show()

Berikut plot yang dihasilkan:

Boxplot dengan mean dan SD di Matplotlib

4. Boxplot horizontal

Boxplot horizontal dapat membuat visualisasi data lebih mudah dibaca, terutama saat menangani nama kategori yang panjang.

Ini dapat dilakukan dengan mudah menggunakan parameter argumen vert pada fungsi boxplot di Matplotlib.

# Creates horizontal boxplot
plt.boxplot(data,
            labels=['Data 1', 'Data 2', 'Data 3'], 
            vert=False)
# Plots graph
plt.title('Horizontal Boxplot')
plt.xlabel('Value')
plt.ylabel('Dataset')
plt.show()

Berikut plot yang dihasilkan dari menjalankan kode di atas:

Boxplot horizontal di Matplotlib

Kursus Introduction to Data Visualization with Matplotlib kami juga akan membantu Anda lebih memahami cara membuat visualisasi data di luar boxplot.

Jika Anda perlu merujuk informasi ini di masa mendatang, berikut ringkasan cheat sheet untuk plotting di Matplotlib:

Cheatsheet Matplotlib

Seaborn, yang dibangun di atas Matplotlib, memudahkan pembuatan boxplot yang estetis dengan kode minimal. Sintaksnya yang sederhana membuatnya mudah diakses untuk semua tingkat keahlian, dan integrasinya dengan pustaka lain memungkinkan fleksibilitas analisis data maksimal.

Berikut panduan langkah demi langkah untuk membuat boxplot dasar menggunakan Seaborn. Seperti sebelumnya, mulai dengan mengimpor pustaka yang diperlukan.

# Imports necessary libraries
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

Selanjutnya, mari siapkan dataset sederhana:

# Generates a random dataset
np.random.seed(10)
data = np.random.normal(0, 1, 100)

Terakhir, mari buat boxplot dan tampilkan:

# Creates a basic boxplot
sns.boxplot(data=data)
# Adds title to the boxplot
plt.title('Basic Boxplot') 
plt.show()

Berikut plot yang dihasilkan:

Boxplot seaborn dasar

Anda dapat menyesuaikan plot Seaborn menggunakan parameter hue, orient, dan palette. 

Mari lihat cara menambahkan warna ke boxplot berdasarkan kategori, gunakan parameter hue:

# Generate multiple datasets
data = {
    'Group': ['A']*100 + ['B']*100 + ['C']*100,
    'Value': np.concatenate([np.random.normal(0, 1, 100), 
                             np.random.normal(1, 2, 100), 
                             np.random.normal(2, 1.5, 100)])
}
df = pd.DataFrame(data)
# Create additional grouping data
df['Subgroup'] = np.random.choice(['X', 'Y'], size=300)
# Plots graph
sns.boxplot(x='Group', y='Value', data=df, hue='Subgroup', palette='Set2')
plt.title('Colored Boxplot')
plt.show()

Berikut boxplot yang telah dimodifikasi:

Boxplot seaborn berwarna

Untuk menyelaraskan boxplot dalam orientasi tertentu, gunakan parameter orient. Untuk orientasi vertikal, setel parameter orient ke 'v'. Untuk orientasi horizontal, setel ke 'h'.

Berikut kode untuk boxplot horizontal:

# Plots horizontal boxplot
sns.boxplot(data=df, orient='h', palette='Set2')
plt.title('Colored Boxplot')
plt.show()

Kode di atas akan menghasilkan boxplot seperti ini:

Boxplot seaborn horizontal

Untuk menambahkan titik data individual ke boxplot, Anda dapat menggunakan swarm plot dengan fungsi swarmplot:

# Plots boxplot
sns.boxplot(x='Group', y='Value', data=df)
# Overlays swarm plot over boxplot
sns.swarmplot(x='Group', y='Value', data=df, color='black', alpha=0.5)
plt.title('Boxplot with Swarmplot')
plt.show()

Kode di atas akan menghasilkan boxplot seperti ini:

Boxplot dengan swarmplot

Swarm plot seperti ini dapat membantu memberikan wawasan lebih tentang distribusi data Anda. Ini melengkapi informasi statistik dari boxplot untuk memberikan gambaran yang komprehensif kepada pembaca Anda.

Lihat kursus Introduction to Data Visualization with Seaborn kami untuk lebih banyak cara mengimplementasikan visualisasi data di Seaborn.

Jika Anda ingin merujuk informasi ini di masa mendatang, berikut cheat sheet untuk plotting di Seaborn:

Cheat sheet Seaborn

Menafsirkan Hasil Boxplot Python

Penafsiran boxplot bergantung pada konteks dan pertanyaan riset spesifik yang dibahas.

Namun, beberapa pedoman umum dapat membantu memahami distribusi data yang ditampilkan melalui boxplot. Ini termasuk:

  • Garis median menunjukkan nilai tengah dari dataset.
  • Interquartile range (IQR) atau 50% nilai tengah berada di antara kuartil pertama (Q1) dan kuartil ketiga (Q3).
  • Whisker memanjang 1,5 kali di atas dan di bawah Q3 dan Q1, masing-masing.
  • Outlier diplot secara individual dengan titik atau tanda bintang.
  • Panjang kotak dan whisker memberikan gambaran seberapa tersebar data.
  • Distribusi yang menceng menunjukkan asimetri pada ukuran kotak dan posisinya relatif terhadap garis median.
  • Outlier di luar 1,5 kali di atas atau di bawah Q3 dan Q1 dapat mengindikasikan nilai ekstrem atau potensi kesalahan dalam pengukuran data.

Kesalahan Umum yang Harus Dihindari Saat Membuat Boxplot Python

Meskipun Python memudahkan pembuatan boxplot yang menarik berdasarkan dataset Anda, ada beberapa hal yang perlu dipertimbangkan untuk menghindari visualisasi yang menyesatkan atau keliru.

1. Tidak menangani nilai hilang

Saat membuat boxplot Python, praktisi sering mengabaikan pentingnya pra-pemrosesan data, yang dapat menghasilkan hasil yang menyesatkan. 

Semua visualisasi data memerlukan beberapa bentuk pembersihan sebelum di-plot. Boxplot tidak terkecuali dan dapat menampilkan nilai hilang sebagai outlier, yang bisa menggeser hasil.

2. Penskalaan data yang tidak tepat

Selain itu, pengguna terkadang gagal menyesuaikan skala data dengan tepat, yang dapat menghasilkan boxplot yang menceng dan salah merepresentasikan karakteristik sebenarnya dari dataset. Penskalaan memastikan bahwa fitur berkontribusi secara setara pada analisis.

3. Tidak menindaklanjuti outlier

Terakhir, analis mungkin lalai memeriksa dan menangani outlier secara saksama sebelum memplot. Penanganan outlier yang tidak tepat dapat menggeser interpretasi, sehingga penting untuk membedakan outlier yang benar-benar valid dari kesalahan atau anomali dalam pengumpulan data.

Coba gunakan cheat sheet ini saat membangun visualisasi data:

Cheat sheet visualisasi data

Penutup

Boxplot adalah alat berharga untuk memvisualisasikan distribusi data dan membandingkannya lintas kategori. 

Di Python, Anda dapat menggunakan Matplotlib, Seaborn, atau Plotly untuk membuat boxplot dengan cepat tanpa banyak penulisan kode. DataCamp memiliki kursus komprehensif untuk masing-masing alat ini:

Bagaimana jika mengeksplor lebih jauh tentang visualisasi data menggunakan Python? Maka Data Visualization with Python skill track akan sangat membantu Anda!

FAQs

Dapatkah boxplot digunakan untuk data non-numerik?

Tidak, boxplot secara eksplisit dirancang untuk data numerik. Boxplot merepresentasikan distribusi suatu dataset berdasarkan ringkasan lima angka (minimum, kuartil pertama, median, kuartil ketiga, dan maksimum), yang memerlukan nilai numerik. Untuk data non-numerik, teknik visualisasi lain seperti diagram batang atau diagram lingkaran lebih sesuai.

Bagaimana cara menafsirkan keberadaan banyak outlier dalam boxplot?

Banyaknya outlier dalam boxplot menunjukkan beberapa titik data yang berbeda secara signifikan dari sisa dataset. Hal ini bisa mengindikasikan adanya variabilitas atau pengamatan tidak biasa yang mungkin perlu penyelidikan lebih lanjut. Outlier dapat disebabkan oleh kesalahan pengumpulan data, variasi alami, atau perbedaan signifikan dalam subkelompok di dalam data.

Dapatkah saya menggunakan boxplot untuk membandingkan distribusi data lintas banyak kategori?

Ya, boxplot sangat baik untuk membandingkan distribusi lintas berbagai kategori. Anda dapat menempatkan boxplot berdampingan untuk kategori berbeda guna membandingkan median, interquartile range, dan keberadaan outlier. Ini dapat membantu mengidentifikasi perbedaan dan kesamaan dalam distribusi berbagai kelompok.

Apa saja kesalahan umum yang harus dihindari saat menafsirkan boxplot?

Saat menafsirkan boxplot, hindari jebakan berikut:

  • Mengabaikan konteks outlier: Outlier tidak selalu menandakan kesalahan, tetapi bisa berupa variasi yang bermakna.
  • Menyalahartikan median sebagai mean: Median adalah nilai tengah, bukan rata-rata, dan kurang dipengaruhi oleh outlier.
  • Mengabaikan pentingnya ukuran sampel: Ukuran sampel kecil dapat menghasilkan boxplot yang menyesatkan. Pastikan ukuran data Anda memadai untuk interpretasi yang andal.
Bagaimana cara membuat boxplot interaktif di Python?

Untuk membuat boxplot interaktif di Python, Anda dapat menggunakan pustaka seperti Plotly atau Bokeh. Pustaka ini memungkinkan Anda menambahkan interaktivitas ke visualisasi, seperti tooltip, zoom, dan panning.

Austin Chia

Penulis

Austin Chia

Saya Austin, seorang blogger dan penulis teknologi dengan pengalaman bertahun-tahun sebagai data scientist dan analis data di bidang kesehatan. Memulai perjalanan teknologi dengan latar belakang biologi, kini saya membantu orang lain melakukan transisi yang sama melalui blog teknologi saya. Ketertarikan saya pada teknologi mendorong kontribusi tulisan saya untuk puluhan perusahaan SaaS, menginspirasi orang lain dan membagikan pengalaman saya.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026