Sampai titik ini kita sudah membangun DataFrame dari berbagai sumber, tetapi dua atribut yang selalu muncul di belakang layar belum kita periksa langsung: index dan columns. Keduanya adalah dua sumbu berlabel yang menjadi kerangka setiap DataFrame. index melabeli baris, sedangkan columns melabeli kolom; hampir semua operasi pandas, mulai dari pengambilan data sampai penyelarasan antar tabel, bekerja di atas kedua label ini. Chapter ini mengajak kita memeriksa isinya, mengenal kelasnya, dan mengubahnya secara sengaja.

Dua Sumbu Berlabel: Baris dan Kolom #

Bayangkan DataFrame sebagai matriks dengan dua penggaris label: satu penggaris vertikal di sisi baris bernama index, dan satu penggaris horizontal di atas kolom bernama columns. Saat kita memanggil method pandas yang bekerja sepanjang satu arah, arah itu dirujuk lewat konvensi axis: axis=0 berarti bergerak sepanjang sumbu index (baris), dan axis=1 berarti bergerak sepanjang sumbu kolom. Konvensi ini akan terus kita temui, misalnya saat menghitung statistik per kolom atau per baris pada Section selanjutnya, sehingga sebaiknya dipahami sejak sekarang.

Label pada kedua sumbu bukan sekadar hiasan tampilan. Label index inilah yang membuat baris Budi tetap dikenali sebagai baris Budi meski urutan baris berubah, dan label kolom inilah yang memungkinkan kita menyebut kolom dengan namanya alih-alih posisinya.

Memeriksa Isi Kedua Sumbu #

Atribut df.index dan df.columns dapat kita baca kapan saja tanpa mengubah DataFrame.

python
import pandas as pd

penjualan = pd.DataFrame({
    "kasir": ["Budi", "Siti", "Dewi"],
    "kota": ["Bandung", "Jakarta", "Surabaya"],
    "qty": [12, 8, 15],
})

print("Sumbu baris :", penjualan.index)
print("Sumbu kolom :", penjualan.columns)
print("Daftar kolom:", penjualan.columns.tolist())
print("Nama kelas  :", type(penjualan.index).__name__,
      "&", type(penjualan.columns).__name__)
print()

penjualan.columns = ["nama_kasir", "kota_toko", "jumlah_terjual"]
print(penjualan)

Output yang Dihasilkan:

text
Sumbu baris : RangeIndex(start=0, stop=3, step=1)
Sumbu kolom : Index(['kasir', 'kota', 'qty'], dtype='str')
Daftar kolom: ['kasir', 'kota', 'qty']
Nama kelas  : RangeIndex & Index

  nama_kasir kota_toko  jumlah_terjual
0       Budi   Bandung              12
1       Siti   Jakarta               8
2       Dewi  Surabaya              15

Mari kita telaah output di atas:

  1. Baris 9 (penjualan.index): sumbu baris DataFrame bawaan berupa RangeIndex(start=0, stop=3, step=1), yaitu index numerik berurutan yang dibuat otomatis saat DataFrame lahir.
  2. Baris 10 (penjualan.columns): sumbu kolom berupa Index(['kasir', 'kota', 'qty'], dtype='str'); dtype='str' menegaskan bahwa label kolom adalah teks, sesuai perilaku string bawaan pandas 3.0.
  3. Baris 11-13: .columns.tolist() mengubah label kolom menjadi list Python biasa agar mudah diproses, dan type(...).__name__ menunjukkan bahwa kedua sumbu adalah objek Index (sumbu baris khusus berupa RangeIndex, turunan dari Index).

Objek Index itu sendiri bersifat immutable: isinya tidak bisa diubah per label secara langsung. Desain ini membuat label aman dipakai sebagai identitas; perubahan dilakukan dengan mengganti objeknya secara utuh, seperti pada bagian berikut.

Mengganti Nama Kolom Secara Menyeluruh #

Cara paling langsung untuk mengganti nama kolom adalah assignment daftar baru pada df.columns, persis seperti pada bagian akhir kode di atas. Daftar baru harus berpanjang sama dengan jumlah kolom yang ada, karena kita mengganti seluruh deretan label sekaligus. Output bagian terakhir menunjukkan tabel yang kolomnya kini bernama nama_kasir, kota_toko, dan jumlah_terjual. Pola list comprehension juga sering dipakai di sini, misalnya [c.lower() for c in df.columns] untuk menyeragamkan nama kolom menjadi huruf kecil.

Dengan dua sumbu berlabel sudah kita kenali, DataFrame berhenti menjadi kotak hitam. Kelas Index beserta sifat dan method-nya dirinci di halaman pandas.Index , sedangkan fungsi-fungsi dasar yang bekerja di atas kedua sumbu dirangkum di essential basic functionality . Pertanyaan berikutnya muncul begitu data mulai besar: berapa banyak barisnya, apa tipe tiap kolomnya, dan apa isi awalnya. Chapter berikutnya menyediakan paket atribut pemeriksa struktur yang menjawab pertanyaan-pertanyaan itu.