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
.
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:
<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: objectMari kita telaah tiga bagian output di atas:
- Laporan
info(): membacaRangeIndex: 20 entries, 0 to 19sebagai jumlah baris; kolomNon-Null Countyang seragam20 non-nullmenandakan tidak ada nilai kosong; dan barisdtypes: int64(2), str(3)merangkum lima kolom menjadi dua tipe angka dan tiga tipe teks. - Tabel
describe(): delapan baris statistik (count,mean,std,min,25%,50%,75%,max) dihitung hanya untuk kolom numerikqtydanharga, karena itu dua kolom lain tidak muncul. - Tabel
kasirterakhir: statistik teks untuk kolomkasir, dengancount 20,unique 3,top Budi, danfreq 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.