Setelah pusat data diringkas dengan mean dan median, langkah pemeriksaan berikutnya adalah memeriksa batas dan kelengkapan. min() dan max() mencari nilai terkecil dan terbesar di setiap kolom, sedangkan count() menghitung banyaknya sel yang benar-benar terisi. Ketiganya berdampingan saat pemeriksaan kualitas data: rentang nilai yang wajar perlu diketahui sebelum kita memutuskan data mana yang perlu dibersihkan. Chapter ini memakai dataset penjualan cabang yang sama dengan chapter sebelumnya, termasuk dua nilai NaN di kolom februari.

min() dan max() per Kolom #

Method min() dan max() bekerja per kolom secara default dan mengembalikan Series berlabel nama kolom. Pada kolom yang berisi NaN, keduanya mengabaikan sel kosong secara default sehingga hasilnya tetap angka yang bermakna. Mari kita jalankan ketiga method pemeriksaan pada dataset penjualan cabang.

python
import pandas as pd

penjualan = pd.DataFrame(
    {
        "januari": [120, 150, 90, 80, 110],
        "februari": [135, None, 105, 95, None],
        "maret": [150, 160, 120, 100, 130],
    },
    index=["Bandung", "Jakarta", "Surabaya", "Denpasar", "Medan"],
)

print(penjualan.min())
print()
print(penjualan.max())
print()
print(penjualan.count())
print()
print(penjualan["februari"].min(skipna=False))
print(penjualan["maret"].idxmax())
print(penjualan["maret"].idxmin())

Output yang Dihasilkan:

text
januari      80.0
februari     95.0
maret       100.0
dtype: float64

januari     150.0
februari    135.0
maret       160.0
dtype: float64

januari     5
februari    3
maret       5
dtype: int64

nan
Jakarta
Denpasar

Mari kita baca output di atas per bagian:

  1. Baris 3-10: dataset lima cabang dengan kolom februari yang memuat dua NaN.
  2. Baris 12-15: min() menghasilkan 80.0, 95.0, dan 100.0, sedangkan max() menghasilkan 150.0, 135.0, dan 160.0; seluruh hasil ber-dtype float64 karena kolom februari ber-dtype float64, meskipun nilai januari dan maret berasal dari kolom int64.
  3. Nilai 95.0 pada min() kolom februari: hanya tiga nilai terisi (95, 105, 135) yang dibandingkan; dua NaN dilewati, bukan diperlakukan sebagai nol.
  4. Baris 16-20: count() menghitung sel terisi per kolom, min(skipna=False) memperlihatkan akibat mematikan skipna, dan idxmax() serta idxmin() mencari label pemilik nilai ekstrem.

skipna pada min() dan max() #

Seperti method agregasi lain, min() dan max() menerima parameter skipna dengan default True. Menggantinya menjadi skipna=False membuat hasil langsung menjadi nan pada kolom yang punya NaN, karena pandas tidak menyatakan nilai terkecil dari data yang tidak lengkap. Aturan ini konsisten dengan sum() dan mean() yang kita bahas sebelumnya, sehingga setelan skipna dapat dibaca sebagai satu kontrak yang sama untuk semua method agregasi.

Mencari Label Pemilik Nilai Ekstrem #

idxmax() dan idxmin() melengkapi max() dan min() dengan mengembalikan label index pemilik nilai, bukan nilainya. Pada kolom maret, idxmax() mengembalikan Jakarta dan idxmin() mengembalikan Denpasar, sehingga pertanyaan cabang mana yang penjualannya paling tinggi terjawab tanpa pencarian manual. Keduanya juga memakai skipna=True secara default, sehingga baris yang kosong tidak pernah terpilih sebagai pemilik nilai ekstrem.

count(): Menghitung Sel Terisi #

Method count() menghitung banyaknya sel non-NaN per kolom dan mengembalikan hasil int64. Pada dataset kita, kolom januari dan maret menghasilkan 5, sedangkan kolom februari hanya 3 dari 5 baris yang terisi. Berbeda dari min() dan max(), method count() tidak memiliki parameter skipna sama sekali, karena definisinya memang menghitung sel yang tidak kosong.

Referensi resmi chapter ini: pandas.Series.min , pandas.Series.max , dan pandas.DataFrame.count ; penanganan data kosong dirinci pada Working with missing data .

Nilai ekstrem dan kelengkapan data hanyalah dua sisi dari deskripsi data. Ukuran yang lebih informatif untuk membandingkan antar kolom adalah sebaran: seberapa jauh nilai-nilai menyebar dari pusatnya. Chapter berikutnya membahas dua ukuran sebaran yang paling sering dipakai, yaitu variance dan standard deviation. Sebelum itu, pertanyaan berbentuk daftar teratas — bukan satu pemenang — dibahas pada chapter Peringkat dan Top-N yang menyambung langsung dari idxmax() menuju rank(), nlargest(), dan nsmallest().