TL;DR
Seaborn adalah library visualisasi Python yang dibangun di atas Matplotlib, khusus buat grafik statistik kayak distribusi, korelasi, dan perbandingan antar kelompok. Kelebihannya, satu baris kode bisa langsung baca kolom DataFrame lewat parameter data, x, y, dan hue tanpa perlu ngolah agregasi manual. Sepuluh plot inti Seaborn (histplot, kdeplot, boxplot, violinplot, barplot, countplot, scatterplot, lineplot, heatmap, dan pairplot) sudah nutup mayoritas kebutuhan analisis data eksploratif.
Seaborn adalah library Python buat bikin grafik statistik dari DataFrame pandas cuma dengan satu baris kode.
Library ini jalan di atas Matplotlib. Yang dia tambahin: kemampuan baca kolom langsung dari DataFrame, agregasi otomatis, dan tema visual yang udah rapi tanpa disetel.
Buat kerjaan analisis eksploratif, ini ngehemat banyak waktu. Grafik boxplot per kategori yang di Matplotlib butuh 8 baris, di Seaborn cukup satu.
Sepuluh plot di bawah ini yang paling sering aku pakai, plus catatan kapan tiap plot itu jujur dan kapan malah nyesatin.
Seaborn adalah library visualisasi data Python yang fokus ke grafik statistik: distribusi, korelasi, dan perbandingan antar kelompok. Bedanya dengan Matplotlib, Seaborn ngerti struktur DataFrame. Kamu cukup sebut nama kolom lewat parameter x, y, dan hue, lalu Seaborn yang ngurus pengelompokan dan perhitungannya.
Matplotlib nggak tau apa itu kolom. Kamu harus siapin array angka sendiri.
# Matplotlib: agregasi manual dulu
rata = df.groupby("cabang")["omzet"].mean()
plt.bar(rata.index, rata.values)
# Seaborn: satu baris
sns.barplot(data=df, x="cabang", y="omzet")
Kalau kamu belum kenal dasar Matplotlib, mulai dari tutorial Matplotlib bahasa Indonesia dulu. Semua pengaturan judul dan ukuran gambar di Seaborn tetap pakai perintah Matplotlib.
Install lewat pip. Matplotlib dan pandas ikut terpasang otomatis sebagai dependensi.
pip install seaborn
Lalu impor dengan alias standar dan set tema di awal notebook:
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
sns.set_theme(style="whitegrid")
sns.set_palette(["#0891b2", "#f97316", "#fbbf24"])
print(sns.__version__)
Cek versinya, soalnya beberapa parameter berubah nama di versi 0.12. Yang paling sering bikin error: ci diganti jadi errorbar.
Sebaiknya install di dalam virtual environment terpisah biar versi Seaborn proyekmu nggak ketimpa update dari proyek lain.
Semua contoh di bawah pakai dataset latihan ngulikdata berisi transaksi ritel dari empat cabang di Jabodetabek.
df = pd.read_csv("toko_berkah.csv")
print(df.head())
# tanggal cabang kategori nilai jumlah_item
# 0 2025-01-02 Depok Sembako 142500 7
# 1 2025-01-02 Bekasi Snack 38000 3
Sepuluh plot ini kepilih berdasarkan pertanyaan analisis yang paling sering muncul: gimana bentuk sebaran datanya, kelompok mana yang beda, dan variabel mana yang berhubungan.
sns.histplot(data=df, x="nilai", bins=40)
Plot pertama yang aku jalankan buat kolom numerik apa pun. Sebaran nilai transaksi ritel hampir selalu miring ke kanan, dan histogram langsung nunjukin itu.
sns.kdeplot(data=df, x="nilai", hue="cabang", fill=True, alpha=0.3)
Bagus buat numpuk beberapa kelompok dalam satu gambar. Hati-hati kalau datanya sedikit, kurva halus bisa bikin pola palsu kelihatan nyata.
sns.boxplot(data=df, x="cabang", y="nilai")
Titik di luar kumis itu kandidat outlier. Di data ritel, itu sering transaksi grosir yang beneran terjadi, jadi jangan buru-buru dibuang.
sns.violinplot(data=df, x="cabang", y="nilai", inner="quartile")
Pakai kalau kamu curiga ada dua puncak. Boxplot nggak bisa nunjukin itu, dua sebaran yang beda bentuk bisa punya boxplot identik.
sns.barplot(data=df, x="kategori", y="nilai", errorbar=None)
Default-nya barplot ngitung rata-rata, bukan total. Kalau kamu mau total omzet, agregasi dulu di pandas.
sns.countplot(data=df, x="kategori", hue="cabang")
Ini barplot yang isinya cacah, bukan nilai. Cepat buat cek apakah datamu seimbang antar kelompok.
sns.scatterplot(data=df, x="jumlah_item", y="nilai",
hue="kategori", alpha=0.6)
Parameter hue bikin kategori jadi warna tanpa perlu loop manual.
sns.lineplot(data=df, x="tanggal", y="nilai", hue="cabang")
Kalau satu tanggal punya banyak baris, Seaborn otomatis ngitung rata-rata dan gambar pita ketidakpastian di sekitar garisnya.
korelasi = df[["nilai", "jumlah_item", "diskon"]].corr()
sns.heatmap(korelasi, annot=True, fmt=".2f", cmap="Blues")
Aktifkan annot=True biar angkanya kelihatan. Heatmap tanpa angka itu cuma dekorasi.
sns.pairplot(df[["nilai", "jumlah_item", "diskon", "kategori"]],
hue="kategori", corner=True)
Paling berat komputasinya. Pakai di awal eksplorasi buat cari pasangan variabel yang menarik, lalu gambar ulang yang menarik itu pakai scatterplot biasa.
Dari dataset toko_berkah, aku hitung korelasi antara besaran diskon dan nilai transaksi. Hasilnya 0,08. Praktis nol.
Tapi begitu dipecah per kategori pakai parameter hue, ceritanya beda. Di kategori Sembako korelasinya 0,31, sementara di kategori Snack justru negatif tipis di angka minus 0,06.
Artinya diskon di produk sembako ngedorong orang belanja lebih banyak per struk, sedangkan diskon snack nggak ngefek ke nilai belanja. Rata-rata nilai transaksi sembako berdiskon Rp 118.400, dibanding Rp 91.200 tanpa diskon.
Kalau berhenti di angka korelasi gabungan, kesimpulannya bakal "diskon nggak ngaruh" dan program promo sembako kena potong. Satu langkah pecah kelompok nyelametin itu.
| Kebutuhan | Pakai | Alasan |
|---|---|---|
| Eksplorasi cepat sebaran data | Seaborn | Satu baris, agregasi otomatis |
| Banding kelompok pakai warna | Seaborn | Parameter hue nutup semuanya |
| Grafik final buat slide direksi | Matplotlib | Kontrol posisi label dan anotasi |
| Dua sumbu Y | Matplotlib | Seaborn nggak punya twinx sendiri |
| Panel grid per kategori | Seaborn | FacetGrid dan relplot lebih ringkas |
Nggak bisa. Seaborn dibangun di atas Matplotlib dan otomatis menginstalnya. Tiap kali kamu ganti judul, ukuran gambar, atau simpan file, kamu manggil perintah Matplotlib.
countplot ngitung jumlah baris per kategori. barplot ngitung rata-rata kolom numerik per kategori dan nambahin error bar. Kalau kamu mau total, agregasi dulu di pandas.
Karena barplot default-nya nampilin interval kepercayaan 95 persen dari rata-rata. Matikan pakai errorbar=None di versi 0.12 ke atas, atau ci=None di versi lama.
Pakai violinplot kalau kamu curiga sebarannya punya dua puncak atau nggak simetris. Boxplot cuma nunjukin median dan kuartil, jadi dua sebaran yang bentuknya beda bisa kelihatan identik.
Pakai parameter palette dengan daftar hex sendiri, misalnya palette=["#0891b2", "#f97316"]. Buat data berurutan, pilih gradasi kayak Blues. Set sekali di awal notebook lewat sns.set_palette.
Tiga hal yang paling berguna dari daftar ini: histplot buat kenalan sama data baru, boxplot buat cari kelompok yang beda, dan heatmap korelasi buat nentuin variabel mana yang layak diselidiki lebih jauh.
Kalau datamu masih di file spreadsheet, mulai dari cara baca file Excel di Python.
Buat yang masih lebih cepat ngolah data di spreadsheet, fungsi kayak AVERAGE dan MEDIAN bisa kamu latih dulu di NgulikSheet sebelum pindah ke Python.
Ambil satu dataset yang kamu punya, jalankan histplot, boxplot, dan heatmap korelasinya sore ini. Tiga plot itu biasanya cukup buat nemu satu pertanyaan yang layak digali.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Kolom datetime nyimpen tanggal, jam, hari, semuanya nempel jadi satu. Accessor .dt di pandas ngeluarin tiap bagian jadi kolom sendiri buat dianalisa.
Nama toko ketik campur huruf besar-kecil, spasi nyasar di ujung, atau kode produk nempel jadi satu. Accessor .str di pandas ngerapiin semua itu tanpa loop.
Model machine learning cuma ngerti angka, bukan teks kayak merah atau biru. get_dummies ngubah kolom kategori jadi kolom 0/1 dalam satu baris kode.