Sebagian besar laporan menampilkan lebih dari satu kolom: daftar hadir memuat nama dan kota, sementara rekap gaji memuat nama dan jumlah gaji. Memanggil karyawan["nama"] berulang-ulang untuk setiap kolom tentu merepotkan. Pandas memperluas akses kurung siku: alih-alih satu string, kita memberikan list berisi beberapa nama kolom. Chapter ini membahas cara menulis seleksi tersebut, cara mengatur urutan hasil, dan perilaku DataFrame baru yang dihasilkan.
Kurung Siku Ganda dengan List Nama Kolom #
Untuk memilih beberapa kolom sekaligus, tulis dua pasang kurung siku: kurung luar adalah operator seleksi pandas, sedangkan kurung dalam adalah list Python berisi nama-nama kolom. Pandas membaca setiap nama di dalam list, mengambil kolom yang cocok, lalu menyusunnya menjadi DataFrame baru. Kita coba pada data karyawan yang sama dengan Chapter sebelumnya, sebagaimana dijelaskan pada panduan Indexing and selecting data .
import pandas as pd
karyawan = pd.DataFrame(
{
"nama": ["Budi", "Siti", "Dewi", "Andi", "Rina"],
"kota": ["Bandung", "Jakarta", "Surabaya", "Bandung", "Medan"],
"umur": [29, 34, 25, 31, 27],
"gaji": [8500000, 10500000, 7200000, 9800000, 8000000],
},
index=["E001", "E002", "E003", "E004", "E005"],
)
ringkas = karyawan[["nama", "kota"]]
print(ringkas)
print()
print(type(ringkas).__name__)
print()
urut_lain = karyawan[["gaji", "nama"]]
print(urut_lain)Output yang Dihasilkan:
nama kota
E001 Budi Bandung
E002 Siti Jakarta
E003 Dewi Surabaya
E004 Andi Bandung
E005 Rina Medan
DataFrame
gaji nama
E001 8500000 Budi
E002 10500000 Siti
E003 7200000 Dewi
E004 9800000 Andi
E005 8000000 RinaMari kita telaah peran setiap bagian kode di atas:
- Baris 3-11 (
karyawan = pd.DataFrame(...)): dataset lima karyawan yang sama dengan Chapter sebelumnya, lengkap dengan label indexE001sampaiE005. - Baris 13 (
ringkas = karyawan[["nama", "kota"]]): list["nama", "kota"]di dalam kurung siku memilih dua kolom sekaligus, dan hasilnya disimpan sebagai DataFrameringkas. - Baris 14-16:
print(ringkas)menampilkan tabel dua kolom, lalutype(ringkas).__name__menegaskan bahwa hasilnya bertipeDataFrame, bukanSeries. - Baris 19-20: seleksi kedua meminta kolom
gajilebih dulu, sehingga kita bisa mengamati urutan hasilnya.
Urutan Kolom Mengikuti Daftar #
Perhatikan output kedua: urut_lain menampilkan kolom gaji sebelum kolom nama, padahal di karyawan kolom nama muncul lebih dulu. Urutan hasil selalu mengikuti urutan list yang kita tulis, sehingga seleksi ini sekaligus menjadi cara menata ulang kolom. Bila sebuah nama ditulis dua kali, misalnya karyawan[["nama", "nama"]], pandas menampilkan dua kolom identik dengan nama tersebut. Sifat ini berguna ketika format laporan menuntut susunan kolom tertentu.
Seleksi Lewat Variabel List #
Daftar kolom juga boleh disimpan di variabel, lalu variabel itulah yang diberikan ke kurung siku. Pola kolom_pilihan = ["kota", "umur"] diikuti karyawan[kolom_pilihan] menghasilkan DataFrame dengan kedua kolom tersebut. Pendekatan ini lebih mudah dibaca saat daftar kolomnya panjang, dan menjadi kebutuhan ketika daftar kolom dibangun secara dinamis, misalnya dari berkas konfigurasi atau pilihan pengguna.
Hasil Seleksi Merupakan DataFrame Baru #
Hasil seleksi beberapa kolom adalah DataFrame baru yang berdiri sendiri. Sejak pandas 3.0 dengan Copy-on-Write
yang selalu aktif, mengubah nilai pada ringkas tidak pernah memengaruhi karyawan, demikian pula sebaliknya. Dengan kata lain, kita bebas memodifikasi hasil seleksi tanpa risiko mengubah data sumber. Bila niatnya memodifikasi data asli, lakukan penulisan langsung pada karyawan melalui satu akses .loc.
Seleksi pada dimensi kolom sudah kita kuasai, mulai dari satu kolom hingga beberapa kolom dengan urutan bebas. Dimensi berikutnya adalah baris: bagaimana mengambil satu baris berdasarkan label index seperti E002. Property .loc yang kita bahas pada Chapter berikutnya dibuat khusus untuk kebutuhan itu.