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 .

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)

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:

text
  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  18000

Mari kita telaah kode dan output di atas:

  1. Baris 3-15 (pembangun data): loop membangun 20 dictionary transaksi; f"TRX-{i + 1:03d}" membuat nomor transaksi TRX-001 sampai TRX-020, sementara i % 3, i % 4, dan (i * 7) % 30 + 4 mengedarkan kasir, produk, dan qty secara berulang dan tetap.
  2. Baris 18 (transaksi.head()): output pertama menampilkan lima baris pertama (TRX-001 sampai TRX-005) beserta seluruh lima kolomnya; inilah tampilan bawaan lima baris.
  3. Baris 20 (transaksi.tail(3)): output kedua menampilkan tiga baris terakhir (TRX-018 sampai TRX-020), disertai label index aslinya 17, 18, 19.
  4. 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.