Skip to main content

Visualisasi Data dari Pandas - 3

Plotting Bar Graph dan Histogram dari Pandas DataFrame

Pada materi sebelumnya kita telah mempelajari bagaimana membuat line plot dan scatter plot menggunakan Pandas DataFrame.

Pandas juga menyediakan berbagai jenis visualisasi lain yang sangat berguna dalam proses Exploratory Data Analysis (EDA).

Dua jenis visualisasi yang akan dipelajari pada materi ini adalah:

  • Bar Graph untuk membandingkan nilai antar kategori atau observasi.
  • Histogram untuk melihat distribusi data numerik.

Keduanya dapat dibuat langsung menggunakan Pandas tanpa harus menulis seluruh kode Matplotlib secara manual.


Konsep Utama

Pandas menyediakan method:

.plot()

yang terintegrasi dengan Matplotlib.

Untuk membuat bar graph, kita dapat menggunakan:

df.plot.bar()

atau:

df.plot(kind="bar")

Sedangkan untuk histogram:

df["column"].plot.hist()

atau:

df["column"].plot(kind="hist")

Secara sederhana:

Pandas DataFrame

├── .plot.bar()
│ ↓
│ Bar Graph

└── .plot.hist()

Histogram

Persiapan Library

Kita membutuhkan NumPy dan Pandas:

import numpy as np
import pandas as pd

Untuk visualisasi, Pandas akan menggunakan Matplotlib.

Jika ingin menampilkan grafik secara eksplisit:

import matplotlib.pyplot as plt

Sehingga import lengkap:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

Membuat DataFrame Contoh

Sebelum menggunakan dataset kendaraan, kita dapat membuat DataFrame sederhana menggunakan data acak.

x = np.random.rand(10, 4)

df = pd.DataFrame(
x,
columns=["A", "B", "C", "D"]
)

df

DataFrame tersebut memiliki:

  • 10 baris;
  • 4 kolom;
  • nilai numerik acak.

Strukturnya kurang lebih:

ABCD
0.320.520.110.76
0.710.240.630.15
............

Nilai aktual akan berbeda karena data dibuat secara acak.


Membuat Bar Graph

Bar graph atau grafik batang digunakan untuk membandingkan nilai antar kategori atau observasi.

Dengan Pandas, kita dapat membuat bar graph menggunakan:

df.plot.bar()

Kemudian:

plt.show()

Contoh:

df.plot.bar()

plt.show()

matplotlib


Cara Kerja Bar Graph

Setiap baris DataFrame akan direpresentasikan sebagai kelompok batang, sedangkan kolom menjadi seri data yang dibandingkan.

Untuk DataFrame:

A B C D

akan terdapat empat seri:

A
B
C
D

dan nilai dari masing-masing baris akan ditampilkan sebagai batang.


Alternatif Menggunakan kind="bar"

Selain:

df.plot.bar()

kita dapat menggunakan:

df.plot(
kind="bar"
)

Contoh lengkap:

df.plot(
kind="bar"
)

plt.show()

matplotlib

Kedua pendekatan tersebut digunakan untuk menghasilkan bar plot.


Perbandingan Sintaks Bar Plot

Method .plot.bar()

df.plot.bar()

Parameter kind

df.plot(
kind="bar"
)

Keduanya merupakan cara yang valid.

Bentuk pertama lebih ringkas, sedangkan bentuk kedua berguna ketika kita ingin menentukan jenis plot melalui parameter kind.


Horizontal Bar Graph

Pandas juga menyediakan horizontal bar graph menggunakan:

df.plot.barh()

Contoh:

df.plot.barh()

plt.show()

Perbedaannya:

bar()

└── Batang vertikal

barh()

└── Batang horizontal

Horizontal bar graph sering berguna ketika label kategori cukup panjang.


Menggunakan Dataset Car Sales

Sekarang kita dapat menggunakan dataset kendaraan yang telah digunakan pada materi sebelumnya.

car_sales = pd.read_csv("car-sales.csv")

Periksa data:

car_sales.head()

Misalnya dataset memiliki kolom:

Make
Colour
Odometer (KM)
Doors
Price
Sale Date
Total Sales

matplotlib


Membuat Bar Graph dari Dataset

Kita dapat membandingkan merek kendaraan dengan nilai odometer menggunakan:

car_sales.plot(
x="Make",
y="Odometer (KM)",
kind="bar"
)

plt.show()

matplotlib

Pada grafik:

  • Make digunakan sebagai kategori pada sumbu X;
  • Odometer (KM) digunakan sebagai nilai yang divisualisasikan.

Memahami Bar Graph pada Data Kategori

Misalnya data:

MakeOdometer (KM)
Toyota150000
Honda120000
BMW80000
Ford100000

Bar graph akan membantu membandingkan nilai odometer masing-masing kendaraan.

Secara konsep:

Odometer

│ █
│ █ █
│ █ █
│ █ █ █
│ █ █ █ █
└──────────────────
Toyota Honda BMW Ford

Visualisasi seperti ini cocok ketika tujuan analisis adalah membandingkan nilai antar kategori.


Kapan Menggunakan Bar Graph?

Bar graph cocok digunakan ketika kita ingin:

  • membandingkan beberapa kategori;
  • melihat nilai setiap kategori;
  • melihat perbedaan antar kelompok;
  • menampilkan data agregasi;
  • membandingkan jumlah atau nilai antar observasi.

Contoh pertanyaan yang dapat dijawab:

Merek mana yang memiliki nilai tertentu paling tinggi dalam dataset?

Namun, interpretasi akhirnya harus berdasarkan data aktual yang digunakan.


Keterbatasan Bar Graph

Bar graph tidak selalu menjadi pilihan terbaik untuk setiap data.

Jika jumlah kategori sangat banyak, grafik dapat menjadi sulit dibaca.

Contohnya:

Category 1
Category 2
Category 3
...
Category 100

Dalam kondisi tersebut, kita dapat mempertimbangkan:

  • horizontal bar graph;
  • memilih kategori tertentu;
  • melakukan agregasi;
  • mengurutkan data;
  • menggunakan visualisasi lain.

Pemilihan visualisasi harus mengikuti tujuan analisis dan karakteristik dataset.


Membuat Histogram

Berbeda dengan bar graph, histogram digunakan untuk melihat distribusi data numerik.

Contohnya kita ingin melihat distribusi jarak tempuh kendaraan:

car_sales["Odometer (KM)"].plot.hist()

plt.show()

Alternatifnya:

car_sales["Odometer (KM)"].plot(
kind="hist"
)

plt.show()

matplotlib


Bar Graph vs Histogram

Walaupun bentuk visualnya sama-sama menggunakan batang, konsepnya berbeda.

Bar Graph

Digunakan untuk:

Kategori → Nilai

Contoh:

Toyota → 150000
Honda → 120000
BMW → 80000

Histogram

Digunakan untuk:

Rentang nilai → Frekuensi

Contoh:

0–50 ribu → 10 kendaraan
50–100 ribu → 25 kendaraan
100–150 ribu → 40 kendaraan
150–200 ribu → 15 kendaraan

Jadi, histogram mengelompokkan data numerik ke dalam interval.


Memahami Distribusi Data

Histogram membantu kita memahami bagaimana data tersebar.

Misalnya:

Frekuensi

│ █
│ █ █
│ █ █ █ █
│ █ █ █ █ █
│ █ █ █ █ █ █
└────────────────────
Nilai

Dari histogram kita dapat mengeksplorasi:

  • pusat distribusi;
  • penyebaran;
  • bentuk distribusi;
  • kemungkinan skewness;
  • kemungkinan outlier;
  • interval dengan frekuensi tinggi atau rendah.

Histogram merupakan salah satu alat penting dalam Exploratory Data Analysis.


Mengatur Jumlah Bin

Histogram membagi rentang data menjadi beberapa kelompok yang disebut bin.

Secara sederhana:

Data numerik

Dibagi menjadi interval

Bin

Hitung frekuensi

Histogram

Kita dapat mengatur jumlah bin menggunakan parameter:

bins

Contoh:

car_sales["Odometer (KM)"].plot.hist(
bins=20
)

plt.show()

Apa Itu Bin?

Misalnya data memiliki rentang:

0 sampai 200000 KM

Jika kita menggunakan:

bins=4

maka rentang data akan dibagi menjadi beberapa interval.

Secara konseptual:

0–50000
50000–100000
100000–150000
150000–200000

Histogram kemudian menghitung berapa banyak observasi yang berada pada setiap interval.


Pengaruh Jumlah Bin

Jumlah bin memengaruhi tingkat detail histogram.

Bin Terlalu Sedikit

Misalnya:

bins=5

Distribusi akan terlihat lebih sederhana.

Kelebihannya:

  • mudah melihat pola umum.

Kekurangannya:

  • detail distribusi dapat hilang.

Bin Lebih Banyak

Misalnya:

bins=50

Distribusi akan terlihat lebih detail.

Kelebihannya:

  • pola lokal lebih terlihat.

Kekurangannya:

  • grafik dapat terlihat lebih berisik;
  • pola umum dapat menjadi lebih sulit dilihat.

Karena itu, jumlah bin sebaiknya dipilih berdasarkan tujuan analisis dan karakteristik data.


Membandingkan Histogram dengan Jumlah Bin Berbeda

Kita dapat mencoba beberapa konfigurasi.

Histogram dengan 10 bin:

car_sales["Odometer (KM)"].plot.hist(
bins=10
)

plt.show()

matplotlib

Histogram dengan 20 bin:

car_sales["Odometer (KM)"].plot.hist(
bins=20
)

plt.show()

matplotlib

Histogram dengan 50 bin:

car_sales["Odometer (KM)"].plot.hist(
bins=50
)

plt.show()

matplotlib

Tujuannya bukan mencari jumlah bin yang selalu "paling benar", tetapi memahami bagaimana pilihan bin memengaruhi interpretasi visual.


Mengapa Histogram Berguna dalam Data Science?

Histogram dapat digunakan untuk melakukan pemeriksaan awal terhadap distribusi data numerik.

Misalnya sebelum membuat model Machine Learning, kita dapat melihat:

Apakah data terdistribusi secara seimbang?

Apakah terdapat nilai ekstrem?

Apakah data sangat skewed?

Apakah transformasi diperlukan?

Histogram tidak otomatis memberikan jawaban terhadap semua pertanyaan tersebut, tetapi membantu kita melakukan eksplorasi awal.


Contoh Histogram untuk Price

Setelah kolom Price dibersihkan menjadi numerik, kita dapat membuat histogram:

car_sales["Price"].plot.hist(
bins=20
)

plt.show()

matplotlib

Kita dapat melihat bagaimana harga kendaraan tersebar dalam dataset.


Menggunakan figsize

Ukuran grafik dapat diatur menggunakan parameter figsize.

Contoh:

ax = car_sales["Odometer (KM)"].plot.hist(
bins=20,
figsize=(10, 6)
)

plt.show()

Ukuran:

figsize=(10, 6)

menggunakan satuan inch:

lebar = 10 inch
tinggi = 6 inch

Menambahkan Judul Histogram

Kita dapat melakukan customization menggunakan Matplotlib:

ax = car_sales["Odometer (KM)"].plot.hist(
bins=20,
figsize=(10, 6)
)

ax.set_title("Distribusi Odometer Kendaraan")
ax.set_xlabel("Odometer (KM)")
ax.set_ylabel("Frekuensi")

plt.show()

Pandas digunakan untuk membuat plot, sedangkan Matplotlib digunakan untuk melakukan pengaturan lebih lanjut.


Contoh Lengkap Bar Graph

import pandas as pd
import matplotlib.pyplot as plt

# Membaca dataset
car_sales = pd.read_csv("car-sales.csv")

# Membuat bar graph
ax = car_sales.plot(
x="Make",
y="Odometer (KM)",
kind="bar",
figsize=(10, 6)
)

# Memberikan judul
ax.set_title("Odometer Berdasarkan Merek Kendaraan")

# Menampilkan grafik
plt.show()

matplotlib


Contoh Lengkap Histogram

import pandas as pd
import matplotlib.pyplot as plt

# Membaca dataset
car_sales = pd.read_csv("car-sales.csv")

# Membuat histogram
ax = car_sales["Odometer (KM)"].plot.hist(
bins=20,
figsize=(10, 6)
)

# Memberikan judul dan label
ax.set_title("Distribusi Odometer Kendaraan")
ax.set_xlabel("Odometer (KM)")
ax.set_ylabel("Frekuensi")

# Menampilkan grafik
plt.show()

matplotlib


Contoh dengan Data Acak

Kita juga dapat membuat histogram dari data acak menggunakan NumPy.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

data = pd.Series(
np.random.randn(1000)
)

data.plot.hist(
bins=20,
figsize=(10, 6)
)

plt.show()

matplotlib

Data tersebut memiliki 1000 observasi yang berasal dari distribusi normal standar.


Membandingkan Bar Graph dan Histogram

KarakteristikBar GraphHistogram
TujuanMembandingkan kategoriMelihat distribusi
DataKategori atau nilai per observasi/agregasiNumerik kontinu/discretized
Sumbu XKategoriInterval nilai
BatangTerpisah berdasarkan kategoriMewakili interval yang berdekatan
binsTidak digunakan sebagai konsep utamaDigunakan
ContohHarga per merekDistribusi harga
AnalisisPerbandinganDistribusi frekuensi

Perbedaan paling penting:

Bar Graph
Kategori → Nilai

Histogram
Interval Nilai → Frekuensi

Kesalahan yang Sering Terjadi

Menganggap Bar Graph dan Histogram Sama

Keduanya menggunakan batang, tetapi tujuan analisisnya berbeda.

Bar graph:

Kategori → Nilai

Histogram:

Interval Numerik → Frekuensi

Jangan memilih grafik hanya berdasarkan bentuk visualnya.


Menggunakan Histogram untuk Data Kategori

Histogram dirancang untuk distribusi data numerik.

Jika kita ingin membandingkan:

Toyota
Honda
BMW
Ford

bar graph lebih sesuai karena merek merupakan kategori.


Menggunakan Terlalu Banyak Bin

Menggunakan jumlah bin yang sangat besar tidak selalu membuat histogram lebih baik.

Contoh:

bins=100

dapat menghasilkan grafik yang sangat terfragmentasi, terutama jika dataset kecil.


Menggunakan Terlalu Sedikit Bin

Sebaliknya:

bins=3

mungkin terlalu sederhana sehingga detail distribusi hilang.


Workflow EDA dengan Bar Graph dan Histogram

Dalam Exploratory Data Analysis, kita dapat menggunakan kedua grafik untuk tujuan yang berbeda.

Contohnya:

Dataset

DataFrame

Data Cleaning

┌───────────────┐
│ │
▼ ▼
Bar Graph Histogram
│ │
▼ ▼
Compare Distribution
Categories Numerical Data
│ │
└───────┬───────┘

Data Understanding

Bar graph membantu menjawab pertanyaan perbandingan.

Histogram membantu memahami distribusi data numerik.


Method Penting

df.plot.bar()

Membuat bar graph dari DataFrame.

df.plot.bar()

df.plot(kind="bar")

Alternatif untuk membuat bar graph.

df.plot(
kind="bar"
)

df.plot.barh()

Membuat horizontal bar graph.

df.plot.barh()

Series.plot.hist()

Membuat histogram dari Series.

df["Price"].plot.hist()

kind="hist"

Alternatif untuk membuat histogram.

df["Price"].plot(
kind="hist"
)

bins

Menentukan jumlah kelompok interval histogram.

df["Price"].plot.hist(
bins=20
)

Ringkasan

Pada materi ini kita mempelajari dua jenis visualisasi penting dari Pandas DataFrame:

Bar Graph

Digunakan untuk membandingkan kategori atau nilai antar observasi.

Sintaks:

df.plot.bar()

atau:

df.plot(
kind="bar"
)

Histogram

Digunakan untuk melihat distribusi data numerik.

Sintaks:

df["column"].plot.hist()

atau:

df["column"].plot(
kind="hist"
)

Jumlah bin dapat diatur:

df["column"].plot.hist(
bins=20
)

Inti Materi

Hal utama yang perlu diingat:

BAR GRAPH
→ Membandingkan kategori

HISTOGRAM
→ Melihat distribusi data numerik

BINS
→ Mengatur pembagian interval pada histogram

Contoh:

# Bar Graph
car_sales.plot(
x="Make",
y="Odometer (KM)",
kind="bar"
)

# Histogram
car_sales["Odometer (KM)"].plot.hist(
bins=20
)

Dengan memahami perbedaan keduanya, kita dapat memilih visualisasi yang lebih sesuai dengan tujuan analisis data.