Data penjualan yang kita terima hampir selalu membawa lebih banyak kolom daripada yang dibutuhkan laporan: rekap laba tidak memerlukan kolom stok, sedangkan daftar pengiriman tidak memerlukan kolom harga. Karena itu, sebelum data diolah lebih jauh, kita sering perlu membentuk subset kolom atau menghapus kolom yang tidak relevan. Pada Chapter ini kita memilih satu kolom, memilih beberapa kolom sekaligus, lalu menghapus kolom dengan method drop(). Pola seleksi kolom merangkum halaman Indexing and selecting data
, dan seluruh contoh memakai DataFrame penjualan kecil yang akan kita pakai secara konsisten di Section Manipulasi Data.
Memilih Satu Kolom dan Beberapa Kolom #
Mari kita mulai dari bentuk seleksi paling dasar. Kita bangun data penjualan lima produk pada toko Buah Segar dengan label index P001 sampai P005, lalu mengambil satu kolom dan beberapa kolom dari tabel tersebut. Skrip berikut menuntaskan ketiga kebutuhan itu dalam satu alur.
import pandas as pd
penjualan = pd.DataFrame(
{
"produk": ["Kopi Gayo", "Teh Melati", "Gula Aren", "Roti Bakar", "Pisang Goreng"],
"kasir": ["Budi", "Siti", "Dewi", "Budi", "Dewi"],
"cabang": ["Bandung", "Jakarta", "Bandung", "Surabaya", "Jakarta"],
"harga": [18000, 12000, 15000, 20000, 10000],
"jumlah": [35, 40, 25, 20, 50],
"stok": [12, 8, 30, 15, 22],
},
index=["P001", "P002", "P003", "P004", "P005"],
)
kolom_produk = penjualan["produk"]
print(kolom_produk)
print()
subset = penjualan[["produk", "harga", "jumlah"]]
print(subset)
print()
ringkas = penjualan.drop(columns=["stok"])
print(ringkas)Output yang Dihasilkan:
P001 Kopi Gayo
P002 Teh Melati
P003 Gula Aren
P004 Roti Bakar
P005 Pisang Goreng
Name: produk, dtype: str
produk harga jumlah
P001 Kopi Gayo 18000 35
P002 Teh Melati 12000 40
P003 Gula Aren 15000 25
P004 Roti Bakar 20000 20
P005 Pisang Goreng 10000 50
produk kasir cabang harga jumlah
P001 Kopi Gayo Budi Bandung 18000 35
P002 Teh Melati Siti Jakarta 12000 40
P003 Gula Aren Dewi Bandung 15000 25
P004 Roti Bakar Budi Surabaya 20000 20
P005 Pisang Goreng Dewi Jakarta 10000 50Mari kita telaah peran setiap baris kode di atas:
- Baris 3-13 (
penjualan = pd.DataFrame(...)): kita membangun DataFrame enam kolom dari sebuah dictionary dan memberi label index eksplisitP001sampaiP005. - Baris 15 (
kolom_produk = penjualan["produk"]): kurung siku dengan satu string memilih kolomproduk; pandas mengembalikan Series berisi lima nilai kolom tersebut. - Baris 19 (
subset = penjualan[["produk", "harga", "jumlah"]]): kurung siku luar menjalankan seleksi, sedangkan kurung siku dalam membentuk list nama kolom; hasilnya DataFrame baru yang urutan kolomnya mengikuti list. - Baris 23 (
ringkas = penjualan.drop(columns=["stok"])): method drop() mengembalikan DataFrame baru tanpa kolomstok, sedangkanpenjualantetap lengkap. - Baris 16-24: tiga pemanggilan
print()menampilkan hasil setiap tahap secara berurutan.
Output pertama berbentuk Series, ditandai baris penutup Name: produk, dtype: str. Dtype str adalah tipe data string bawaan pandas 3.0 yang sudah kita kenal pada Section Dasar Series. Output kedua dan ketiga berbentuk DataFrame karena keduanya memuat lebih dari satu kolom.
Perhatikan bahwa hasil seleksi maupun hasil drop() berdiri sendiri sebagai objek baru. Perilaku ini berasal dari Copy-on-Write yang selalu aktif pada pandas 3.0, sehingga mengubah hasil seleksi tidak akan mengubah penjualan. Pola yang sama berlaku untuk seluruh method pada Section ini: hasilnya objek baru, dan DataFrame asli tetap lengkap kecuali kita menyimpan hasilnya kembali.
Memilih Beberapa Kolom Sekaligus #
Urutan kolom pada hasil seleksi sepenuhnya mengikuti list yang kita tulis, bukan urutan kolom asli. Perhatikan output kedua: kolom harga tampil sebelum kolom jumlah karena list yang kita berikan menuliskannya lebih dulu. Sifat ini menjadikan seleksi list cara cepat untuk menyusun ulang kolom: cukup tulis semua nama kolom sesuai urutan yang diinginkan. Seleksi list juga sering kita pakai untuk membatasi isi print() agar output tetap mudah dibaca.
Menghapus Kolom dengan drop() #
Untuk laporan yang ringkas, kita hapus kolom stok pada baris 23. Argumen columns=["stok"] menyatakan bahwa yang dihapus adalah kolom bernama stok. Method drop() mengembalikan DataFrame baru tanpa kolom tersebut, sehingga hasilnya kita simpan ke variabel ringkas. Apabila hasilnya memang dimaksudkan untuk menggantikan data asli, gunakan pola penugasan seperti penjualan = penjualan.drop(columns=["stok"]).
Pandas 3.0 masih menyediakan argumen inplace=True pada drop(), tetapi pola penugasan tetap menjadi kebiasaan yang lebih baik: hasilnya jelas, mudah dibaca, dan searah dengan desain pandas 3.0. Detail lengkap drop(), termasuk penghapusan baris dan parameter axis, kita bahas tuntas pada Chapter Menghapus Baris dan Kolom. Untuk sekarang, cukup pegang satu aturan: seleksi dan penghapusan menghasilkan objek baru, bukan mengubah data lama.
Sampai di sini kita sudah mampu membentuk subset kolom dan menghapus kolom yang tidak diperlukan. Kebalikannya juga sering dibutuhkan: menambahkan kolom baru hasil perhitungan ke dalam tabel. Cara menambah kolom dengan benar, termasuk mengatur posisinya, kita bahas pada Chapter berikutnya.