Dua atribut ini adalah yang paling sering diketik di sepanjang pekerjaan pandas: shape untuk mengetahui ukuran tabel dan dtypes untuk mengetahui tipe tiap kolom. Keduanya adalah atribut, bukan method; artinya diakses tanpa tanda kurung, misalnya df.shape, karena keduanya membaca keadaan DataFrame yang sudah ada, bukan melakukan perhitungan baru. Chapter ini membedah cara membaca keduanya, relasinya dengan len(), serta tabel tipe data yang paling sering kita temui pada data harian.

shape: Ukuran Tabel dalam Satu Tuple #

Atribut df.shape mengembalikan tuple dua elemen dengan urutan tetap: elemen pertama jumlah baris, elemen kedua jumlah kolom. Karena bentuknya tuple, hasilnya bisa langsung dibongkar ke dua variabel, sehingga kode tidak perlu mengakses shape[0] dan shape[1] berulang-ulang. Hubungannya dengan alat inspeksi sebelumnya juga tegas: len(df) selalu sama dengan df.shape[0], df.size sama dengan hasil kali kedua elemen shape, dan df.ndim selalu 2 untuk DataFrame.

python
import pandas as pd

katalog = pd.DataFrame({
    "produk": ["Apel Fuji", "Jeruk Baby", "Mangga Harum Manis"],
    "harga": [32000, 18000, 28000],
    "stok": [45, 120, 30],
    "berat_kg": [0.20, 0.15, 0.55],
})

baris, kolom = katalog.shape
print("shape :", katalog.shape)
print("baris =", baris, "| kolom =", kolom)
print("len() =", len(katalog), "| ndim =", katalog.ndim,
      "| size =", katalog.size)
print()
print(katalog.dtypes)
print()
print("dtype kolom produk :", katalog["produk"].dtype)
print("dtype kolom harga  :", katalog["harga"].dtype)
print("Kolom produk bertipe str?", katalog["produk"].dtype == "str")

Output yang Dihasilkan:

text
shape : (3, 4)
baris = 3 | kolom = 4
len() = 3 | ndim = 2 | size = 12

produk          str
harga         int64
stok          int64
berat_kg    float64
dtype: object

dtype kolom produk : str
dtype kolom harga  : int64
Kolom produk bertipe str? True

Mari kita telaah kode di atas:

  1. Baris 3-8 (katalog dengan empat atribut): tabel katalog kini memuat kolom teks produk, kolom angka bulat harga dan stok, serta kolom desimal berat_kg; variasi tipe ini sengaja dibuat untuk pembacaan dtypes.
  2. Baris 10-11 (pembongkaran tuple): baris, kolom = katalog.shape memisahkan (3, 4) menjadi dua variabel, sehingga output menampilkan baris = 3 | kolom = 4.
  3. Baris 13-14 (hubungan antar alat): len() mengembalikan 3 yang sama dengan shape[0], ndim tetap 2, dan size 12 karena 3 baris × 4 kolom.
  4. Baris 16-20 (pembacaan dtypes): dtypes tampil sebagai Series berisi satu tipe per kolom, dan perbandingan katalog["produk"].dtype == "str" mengembalikan True.

dtypes: Tipe Setiap Kolom #

Atribut df.dtypes mengembalikan Series berisi tipe data untuk setiap kolom, dengan nama kolom sebagai index; sifat lengkapnya dirinci di halaman pandas.DataFrame.dtypes . Pembacaannya lurus: tabel katalog di atas memuat satu kolom str, dua kolom int64, dan satu kolom float64. Untuk memeriksa satu kolom saja, gunakan df["nama_kolom"].dtype yang mengembalikan satu tipe, persis seperti baris 18-19 pada kode di atas.

Tipe pandasKebiasaan dipakai untukContoh nilai
strteks (nama, kode, kota)"Apel Fuji"
int64bilangan bulat32000
float64bilangan desimal0.20
boolnilai benar/salahTrue
datetime64[us]tanggal dan waktu2026-01-15

Tabel di atas adalah peta tipe yang paling sering muncul; tipe lain seperti kategori dan timedelta menyusul pada section-section berikutnya.

Kenapa Tipe Kolom Layak Diwaspadai #

Tipe kolom menentukan operasi mana yang sah untuk kolom tersebut. Rata-rata qty bermakna, sedangkan rata-rata nomor transaksi tidak; penggabungan teks sah untuk kolom str, tetapi tidak untuk kolom int64. Ketika DataFrame dibangun manual seperti pada chapter-chapter lalu, tipe mengikuti data yang kita berikan; ketika nanti data dibaca dari file, tipe ditetapkan oleh proses pembacaan dan bisa saja berbeda dari perkiraan kita. Membiasakan memeriksa dtypes setelah data berpindah tangan adalah kebiasaan yang menghemat waktu.

Ukuran dan tipe sudah kita kuasai dengan pekat; keduanya tergolong fungsi dasar yang dirangkum resmi pada halaman essential basic functionality . Satu keputusan struktur yang tersisa di Section ini adalah memilih label baris yang tepat: DataFrame yang kita buat selama ini memakai nomor urut bawaan, padahal tabel katalog memiliki kolom kode yang lebih layak menjadi identitas baris. Chapter penutup Section ini membahas persis hal itu lewat set_index().