Pandas describe: EDA Cepat untuk Data Baru
TL;DR
Fungsi df.describe() di pandas ngasih ringkasan statistik tiap kolom angka dalam satu baris kode: jumlah data, rata-rata, standar deviasi, nilai minimum, kuartil, dan maksimum. Ini alat pertama buat EDA atau kenalan sama data baru. Buat kolom kategori pakai describe(include='object'), dan buat lihat semua kolom sekaligus pakai include='all'.
Fungsi df.describe() di pandas ngasih ringkasan statistik tiap kolom angka dalam satu baris kode. Kamu langsung dapat jumlah data, rata-rata, sebaran, dan nilai ekstrem tanpa nulis rumus satu-satu.
Ini biasanya perintah pertama yang aku ketik pas kenalan sama dataset baru. Dari satu tabel ringkasan, kamu udah bisa nebak kolom mana yang perlu dibersihin.
Di bawah aku tunjukin cara pakainya, cara baca tiap baris output, sampai trik buat kolom kategori.
Apa itu df.describe() di pandas?
df.describe() adalah metode pandas yang ngitung statistik ringkasan untuk tiap kolom numerik dalam DataFrame. Secara default dia nampilin delapan baris: count, mean, std, min, 25%, 50%, 75%, dan max. Semua itu keluar sekaligus, jadi kamu bisa nilai sebaran data cuma dari satu perintah.
Metode ini jadi langkah awal exploratory data analysis, yaitu proses kenalan sama data sebelum bikin analisis serius.
Gimana cara pakai describe untuk EDA cepat?
Panggil describe() langsung dari DataFrame setelah data dibaca. Buat data penjualan sederhana, satu baris ini udah cukup buat lihat rentang harga, jumlah transaksi, dan rata-ratanya sekaligus.
import pandas as pd
df = pd.read_csv('penjualan_toko_berkah.csv')
df.describe()
Outputnya berupa tabel: tiap kolom angka jadi satu kolom di ringkasan, tiap statistik jadi satu baris. Kolom teks otomatis diabaikan kecuali kamu minta secara khusus.
Cara baca output describe
Tiap baris output punya arti yang beda. Baca dari atas ke bawah biar kebayang bentuk sebaran datanya. Selisih antara mean dan median (baris 50%) langsung ngasih sinyal apakah data miring atau nggak.
| Baris | Artinya |
|---|---|
| count | Jumlah data yang nggak kosong di kolom itu |
| mean | Rata-rata nilai |
| std | Standar deviasi, seberapa jauh data nyebar dari rata-rata |
| min | Nilai terkecil |
| 25% / 50% / 75% | Kuartil, dengan 50% sama dengan median |
| max | Nilai terbesar |
Kalau count di satu kolom lebih kecil dari kolom lain, artinya ada data kosong di situ. Kalau max jauh banget dari 75%, kemungkinan ada pencilan yang perlu dicek.
describe untuk kolom kategori
Secara default describe() cuma nyentuh kolom angka. Buat kolom teks kayak nama produk atau kota, pakai argumen include. Outputnya beda: dia nampilin jumlah data, jumlah nilai unik, nilai yang paling sering muncul, dan frekuensinya.
# Ringkasan khusus kolom teks
df.describe(include='object')
# Semua kolom, angka dan teks sekaligus
df.describe(include='all')
Baris top nunjukin nilai paling sering, dan freq jumlah kemunculannya. Buat lihat sebaran kategori lebih detail, lanjutin pakai value_counts.
Atur persentil sesuai kebutuhan
Kuartil default (25%, 50%, 75%) nggak selalu cukup. Kalau kamu mau lihat ekor atas dan bawah, tambahin persentil sendiri lewat argumen percentiles. Ini berguna buat nemuin batas pencilan.
df.describe(percentiles=[0.05, 0.25, 0.5, 0.75, 0.95])
Dengan persentil 5% dan 95%, kamu langsung tau rentang tempat mayoritas data berada. Nilai di luar itu layak dicek lebih lanjut.
Contoh kasus: cek data penjualan toko_berkah
Waktu aku jalanin describe() di data 1.850 transaksi toko_berkah, kolom harga nunjukin mean Rp47.500 tapi median Rp32.000. Selisih ini langsung ngasih sinyal datanya miring ke kanan, ada segelintir transaksi besar yang narik rata-rata naik.
Nilai max di kolom qty ternyata 999, padahal 75%-nya cuma 4. Angka 999 itu jelas salah input, kemungkinan placeholder yang kelupaan dihapus. Dari satu baris describe(), dua masalah data langsung ketahuan sebelum aku lanjut ke analisis.
Kesalahan umum
- Lupa kolom teks diabaikan. Tanpa
include, kolom kategori nggak muncul sama sekali. - Ngira count sama untuk semua kolom. Count yang beda itu petunjuk ada data kosong.
- Berhenti di describe. Ringkasan ini titik awal, bukan analisis akhir. Lanjutin dengan cek pencilan dan distribusi.
FAQ
Apa beda describe() dan info() di pandas?
describe() fokus ke statistik ringkasan seperti rata-rata dan kuartil untuk isi datanya. info() fokus ke struktur DataFrame, yaitu nama kolom, tipe data, dan jumlah nilai non-null. Kamu biasanya pakai info() dulu buat tau bentuk dan tipe kolom, baru describe() buat lihat sebaran angkanya. Keduanya sering dipanggil berurutan pas kenalan sama data baru.
Kenapa kolom angka nggak muncul di describe()?
Biasanya karena kolom itu kesimpan sebagai teks, bukan angka. Misalnya harga yang ada tanda titik atau koma kebaca sebagai object. Cek dulu pakai df.dtypes, lalu konversi kolomnya ke numerik pakai pd.to_numeric. Setelah tipenya benar, describe() otomatis masukin kolom itu ke ringkasan. Salah tipe data ini penyebab paling sering kolom hilang dari output.
Gimana cara describe() cuma untuk kolom tertentu?
Pilih dulu kolomnya baru panggil describe(), misalnya df[['harga', 'qty']].describe(). Cara ini bikin output lebih fokus dan gampang dibaca kalau DataFrame kamu punya puluhan kolom. Kamu juga bisa gabung sama groupby buat lihat ringkasan per kategori, misalnya statistik harga per kota. Fleksibel, tinggal sesuaiin sama pertanyaan yang mau kamu jawab.
Apakah describe() ngitung data kosong?
Nggak. Baris count cuma ngitung nilai yang nggak kosong, dan semua statistik lain kayak mean dan std juga ngabaikan data kosong. Jadi kalau satu kolom banyak yang hilang, rata-ratanya tetap valid untuk data yang ada, tapi count-nya bakal lebih kecil. Selisih count antar kolom itu justru cara cepat ngintip di mana data kosong ngumpul.
Mulai analisis dari ringkasan yang benar
Intinya: df.describe() ngasih potret cepat tiap kolom dalam satu baris, dan paling ampuh buat nemuin data kosong, pencilan, sama sebaran yang miring. Pakai include buat kolom teks dan percentiles buat lihat ekornya.
Setelah dapat gambaran awal, lanjutin ke agregasi lebih dalam pakai groupby agg untuk banyak agregasi sekaligus. Mau latihan analisis data beneran? Kulik terus di NgulikSQL.
Detail parameter describe() ada di dokumentasi resmi pandas.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
NumPy reshape: Ubah Bentuk Array (2026)
Fungsi reshape di NumPy ngatur ulang bentuk array tanpa ngubah datanya. Ini cara pakainya, arti angka -1, dan cara ngeflat array.
NumPy Array: Dasar-Dasar untuk Analis Data (2026)
NumPy array bikin hitungan data di Python jauh lebih cepat dari list biasa. Ini dasar bikin, slicing, dan operasi array buat analis.
Alternatif iterrows yang Lebih Cepat di Pandas
iterrows nyaman ditulis tapi lambat. Ini urutan alternatif iterrows di pandas dari yang tercepat, plus benchmark biar kamu tau kapan pakai yang mana.