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.

python
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:

text
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      50

Mari kita telaah peran setiap baris kode di atas:

  1. Baris 3-13 (penjualan = pd.DataFrame(...)): kita membangun DataFrame enam kolom dari sebuah dictionary dan memberi label index eksplisit P001 sampai P005.
  2. Baris 15 (kolom_produk = penjualan["produk"]): kurung siku dengan satu string memilih kolom produk; pandas mengembalikan Series berisi lima nilai kolom tersebut.
  3. 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.
  4. Baris 23 (ringkas = penjualan.drop(columns=["stok"])): method drop() mengembalikan DataFrame baru tanpa kolom stok, sedangkan penjualan tetap lengkap.
  5. 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.