Dua method ini hampir selalu menjadi panggilan pertama dalam sesi analisis data nyata: info() untuk denah struktur dan describe() untuk ringkasan statistik. Berbeda dengan method pengintip pada chapter sebelumnya yang mengembalikan DataFrame, info() langsung mencetak laporan ke terminal dan mengembalikan None; sedangkan describe() mengembalikan DataFrame ringkasan yang bisa diolah lebih lanjut. Pada pandas 3.0, describe() juga punya perilaku baru yang menarik untuk kolom teks, karena kolom teks kini bertipe str secara bawaan. Kita coba keduanya pada dataset 20 transaksi Toko Buah Segar yang sama dengan chapter sebelumnya.

info(): Denah Struktur DataFrame #

Method df.info() mencetak laporan berlapis: kelas objek, rentang index beserta jumlah baris, daftar kolom lengkap dengan jumlah nilai terisi (non-null) dan tipe datanya, rekap tipe, sampai perkiraan pemakaian memori. Laporan ini menjawab banyak pertanyaan sekaligus dalam sekali panggil, sehingga sangat populer sebagai langkah pertama pemeriksaan data dari file eksternal. Rincian tampilan laporannya dapat dibaca di halaman pandas.DataFrame.info .

python
import pandas as pd

produk = ["Apel Fuji", "Jeruk Baby", "Mangga Harum Manis", "Pisang Cavendish"]
kasir = ["Budi", "Siti", "Dewi"]
harga_per_produk = [32000, 18000, 28000, 22000]

rows = []
for i in range(20):
    rows.append({
        "transaksi": f"TRX-{i + 1:03d}",
        "kasir": kasir[i % 3],
        "produk": produk[i % 4],
        "qty": (i * 7) % 30 + 4,
        "harga": harga_per_produk[i % 4],
    })
transaksi = pd.DataFrame(rows)

transaksi.info()
print()

print(transaksi.describe())
print()

print(transaksi["kasir"].describe())

Output yang Dihasilkan:

text
<class 'pandas.DataFrame'>
RangeIndex: 20 entries, 0 to 19
Data columns (total 5 columns):
 #   Column     Non-Null Count  Dtype
---  ------     --------------  -----
 0   transaksi  20 non-null     str  
 1   kasir      20 non-null     str  
 2   produk     20 non-null     str  
 3   qty        20 non-null     int64
 4   harga      20 non-null     int64
dtypes: int64(2), str(3)
memory usage: 1.4 KB

             qty         harga
count  20.000000     20.000000
mean   18.000000  25000.000000
std     9.032106   5525.062515
min     4.000000  18000.000000
25%    10.750000  21000.000000
50%    17.500000  25000.000000
75%    25.250000  29000.000000
max    33.000000  32000.000000

count       20
unique       3
top       Budi
freq         7
Name: kasir, dtype: object

Mari kita telaah tiga bagian output di atas:

  1. Laporan info(): membaca RangeIndex: 20 entries, 0 to 19 sebagai jumlah baris; kolom Non-Null Count yang seragam 20 non-null menandakan tidak ada nilai kosong; dan baris dtypes: int64(2), str(3) merangkum lima kolom menjadi dua tipe angka dan tiga tipe teks.
  2. Tabel describe(): delapan baris statistik (count, mean, std, min, 25%, 50%, 75%, max) dihitung hanya untuk kolom numerik qty dan harga, karena itu dua kolom lain tidak muncul.
  3. Tabel kasir terakhir: statistik teks untuk kolom kasir, dengan count 20, unique 3, top Budi, dan freq 7.

describe(): Statistik Ringkas Kolom Angka #

Tanpa argumen, describe() meringkas hanya kolom numerik. Setiap baris laporannya punya makna tetap: count adalah jumlah nilai terisi, mean rata-rata, std simpangan baku, min nilai terkecil, 25%/50%/75% kuartil (median ada di 50%), dan max nilai terbesar. Dari tabel pada output kita bisa membaca bahwa transaksi Toko Buah Segar bergerak di rentang qty 4 sampai 33 dengan rata-rata 18, dan harga 18000 sampai 32000 dengan rata-rata 25000.

Angka-angka tersebut berguna sebagai pemeriksa kewajaran (sanity check). Bila min harga ternyata negatif atau max qty menembus jutaan, kita langsung tahu ada data yang tidak wajar sebelum analisis dilanjutkan. Daftar lengkap statistik yang dihasilkan method ini, termasuk opsi menyesuaikan persentil, tersedia di halaman pandas.DataFrame.describe .

describe() pada Kolom Teks #

Perilaku penting di pandas 3.0: kolom teks bawaan bertipe str, dan method describe() pada kolom str menampilkan statistik teks alih-alih statistik angka. Empat barisnya berbeda makna: count jumlah nilai terisi, unique banyaknya nilai unik, top nilai yang paling sering muncul, dan freq frekuensi kemunculan nilai top tersebut. Pada output, kolom kasir memuat 3 kasir berbeda, dengan Budi paling sering menangani transaksi, sebanyak 7 dari 20 transaksi.

Dua method ringkas ini melengkapi kotak perkakas eksplorasi kita: head(), tail(), dan sample() mengintip baris, sedangkan info() dan describe() merangkum kolom. Ada satu pasang atribut yang masih layak dibedah mendalam karena dipakai di mana-mana, yaitu shape untuk ukuran tabel dan dtypes untuk tipe per kolom; keduanya menjadi pokok bahasan chapter berikutnya.