Paket inspeksi pada chapter sebelumnya menunjukkan ukuran dan tipe, tetapi belum menunjukkan wajah data. Mencetak seluruh tabel memang bisa dilakukan, namun kebiasaan itu bertahan hanya sampai data berukuran ratusan baris; di dunia nyata, tabel transaksi bisa memuat puluhan ribu baris dan mencetaknya penuh hanya membuat layar penuh teks. Untuk mengintip isi tanpa membanjiri layar, pandas menyediakan tiga method pengintip: head() untuk baris teratas, tail() untuk baris terbawah, dan sample() untuk baris acak. Ketiganya mengembalikan DataFrame baru berisi sebagian baris, sehingga aman dipanggil berulang-ulang.
Dataset yang kita pakai di chapter ini adalah catatan 20 transaksi Toko Buah Segar yang dibangun secara programatik, supaya setiap method punya cukup baris untuk ditunjukkan.
Melihat Baris Teratas dengan head() #
df.head() mengembalikan lima baris pertama secara bawaan, dan menerima argumen angka untuk mengubah jumlahnya, misalnya df.head(3). Method ini biasanya menjadi perintah pertama setelah data dibuat atau dibaca, karena langsung menjawab pertanyaan “apakah datanya terbentuk seperti yang saya bayangkan?”. Urutan baris pada head() mengikuti urutan index, sehingga baris-baris teratas memang baris yang paling dulu disimpan; detailnya ada di halaman pandas.DataFrame.head
.
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)
print(transaksi.head())
print()
print(transaksi.tail(3))
print()
print(transaksi.sample(n=3, random_state=42))
print()
print(transaksi.sample(frac=0.1, random_state=7))Output yang Dihasilkan:
transaksi kasir produk qty harga
0 TRX-001 Budi Apel Fuji 4 32000
1 TRX-002 Siti Jeruk Baby 11 18000
2 TRX-003 Dewi Mangga Harum Manis 18 28000
3 TRX-004 Budi Pisang Cavendish 25 22000
4 TRX-005 Siti Apel Fuji 32 32000
transaksi kasir produk qty harga
17 TRX-018 Dewi Jeruk Baby 33 18000
18 TRX-019 Budi Mangga Harum Manis 10 28000
19 TRX-020 Siti Pisang Cavendish 17 22000
transaksi kasir produk qty harga
0 TRX-001 Budi Apel Fuji 4 32000
17 TRX-018 Dewi Jeruk Baby 33 18000
15 TRX-016 Budi Pisang Cavendish 19 22000
transaksi kasir produk qty harga
1 TRX-002 Siti Jeruk Baby 11 18000
17 TRX-018 Dewi Jeruk Baby 33 18000Mari kita telaah kode dan output di atas:
- Baris 3-15 (pembangun data): loop membangun 20 dictionary transaksi;
f"TRX-{i + 1:03d}"membuat nomor transaksiTRX-001sampaiTRX-020, sementarai % 3,i % 4, dan(i * 7) % 30 + 4mengedarkan kasir, produk, dan qty secara berulang dan tetap. - Baris 18 (
transaksi.head()): output pertama menampilkan lima baris pertama (TRX-001sampaiTRX-005) beserta seluruh lima kolomnya; inilah tampilan bawaan lima baris. - Baris 20 (
transaksi.tail(3)): output kedua menampilkan tiga baris terakhir (TRX-018sampaiTRX-020), disertai label index aslinya 17, 18, 19. - Baris 22-24 (
sample): dua output terakhir mengambil baris acak; urutan barisnya tidak beraturan karena pengambilan memang acak, dengan label index asli tetap terbawa.
Melihat Baris Terbawah dengan tail() #
df.tail(n) mengembalikan n baris terakhir, dan df.tail() tanpa argumen mengembalikan lima baris terakhir. Detail parameternya tercantum di halaman pandas.DataFrame.tail
. Pemakaian terbaiknya adalah memeriksa ujung data: apakah baris terakhir benar-benar data terakhir, ataukah ada baris sisa berisi nilai kosong akibat proses pembacaan. Pada output kedua di atas, kita melihat data berhenti rapi di TRX-020, sinyal bahwa 20 transaksi masuk lengkap.
Mengambil Sampel Acak dengan sample() #
df.sample(n=3) mengembalikan n baris yang dipilih acak tanpa pengulangan, sementara df.sample(frac=0.1) memilih sepuluh persen dari seluruh baris; kombinasi parameter lengkapnya dirinci di halaman pandas.DataFrame.sample
. Pada data 20 baris, frac=0.1 berarti 2 baris terpilih, persis seperti output terakhir di atas. Method ini penting saat kita ingin meninjau contoh yang tidak bias ke posisi baris, misalnya untuk mengintip kualitas data di tengah tabel.
Perhatikan argumen random_state pada kedua pemanggilan sample(). Argumen ini menetapkan seed generator acak, sehingga baris yang terpilih selalu sama setiap kali kode dijalankan; output 20 baris acak kita pun bisa direproduksi. Tanpa random_state, dua pemanggilan sample() pada data yang sama bisa menghasilkan baris yang berbeda, dan contoh di tutorial maupun laporan tidak akan pernah konsisten.
Ketiga method di atas mengintip isi baris demi baris, tetapi belum merangkum data secara statistik. Untuk denah struktur yang lengkap beserta statistik ringkas tiap kolom, pandas punya dua method yang hampir selalu muncul di awal setiap analisis: info() dan describe(), yang menjadi pokok bahasan chapter berikutnya.