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.
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:
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 15Mari kita telaah output di atas:
- Baris 9 (
penjualan.index): sumbu baris DataFrame bawaan berupaRangeIndex(start=0, stop=3, step=1), yaitu index numerik berurutan yang dibuat otomatis saat DataFrame lahir. - Baris 10 (
penjualan.columns): sumbu kolom berupaIndex(['kasir', 'kota', 'qty'], dtype='str');dtype='str'menegaskan bahwa label kolom adalah teks, sesuai perilaku string bawaan pandas 3.0. - Baris 11-13:
.columns.tolist()mengubah label kolom menjadi list Python biasa agar mudah diproses, dantype(...).__name__menunjukkan bahwa kedua sumbu adalah objekIndex(sumbu baris khusus berupaRangeIndex, turunan dariIndex).
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.