Pembersihan data tidak berhenti pada kolom: baris juga sering perlu dikeluarkan, misalnya transaksi uji yang ikut terimpor, data duplikat, atau baris di luar cakupan laporan. Method drop() yang kita singgung pada Chapter Memilih dan Menghapus Kolom kini kita bahas tuntas. Kita akan menghapus baris berdasarkan label, membandingkan parameter axis dengan columns, dan menangani label yang tidak ada di data.
Menghapus Baris berdasarkan Label #
Kebutuhan pertama adalah mengeluarkan baris P002 dan P004 dari tabel penjualan. Method drop() secara default mengarah ke baris, sehingga penulisannya cukup menyebut label yang ingin dihapus. Skrip berikut menghapus dua baris tersebut, lalu menghapus kolom stok dengan dua gaya penulisan.
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"],
)
sisa = penjualan.drop(index=["P002", "P004"])
print(sisa)
print()
tanpa_stok = penjualan.drop(columns=["stok"])
lewat_axis = penjualan.drop("stok", axis=1)
print(list(tanpa_stok.columns))
print(list(lewat_axis.columns))
print(list(penjualan.columns))
print()
try:
penjualan.drop(index=["P999"])
except KeyError as pesan:
print("KeyError:", pesan)Output yang Dihasilkan:
produk kasir cabang harga jumlah stok
P001 Kopi Gayo Budi Bandung 18000 35 12
P003 Gula Aren Dewi Bandung 15000 25 30
P005 Pisang Goreng Dewi Jakarta 10000 50 22
['produk', 'kasir', 'cabang', 'harga', 'jumlah']
['produk', 'kasir', 'cabang', 'harga', 'jumlah']
['produk', 'kasir', 'cabang', 'harga', 'jumlah', 'stok']
KeyError: "['P999'] not found in axis"Mari kita telaah peran setiap baris kode di atas:
- Baris 15 (
sisa = penjualan.drop(index=["P002", "P004"])): argumenindexmenerima list label baris yang dihapus; output pertama hanya memuatP001,P003, danP005. - Baris 19 (
tanpa_stok = penjualan.drop(columns=["stok"])): argumencolumnsmenghapus kolom tanpa perlu menyebutaxis. - Baris 20 (
lewat_axis = penjualan.drop("stok", axis=1)): gaya penulisan lama yang menyatakan arah penghapusan lewataxis=1; hasilnya sama persis dengan baris 19. - Baris 21-23: tiga cetakan list menunjukkan kedua DataFrame baru memiliki kolom yang sama, sedangkan
penjualanasli masih memiliki kolomstok. - Baris 26-29: blok
try/exceptmembuktikan label yang tidak ada memunculkan KeyError dengan pesan['P999'] not found in axis.
Secara default drop() mengarah ke baris (axis=0), sehingga penjualan.drop(["P002", "P004"]) tanpa argumen index memberikan hasil yang sama. Bentuk axis="index" dan axis="columns" juga sah sebagai pengganti angka 0 dan 1. Seluruh pemanggilan drop() mengembalikan DataFrame baru; data asli tetap lengkap sebagaimana terlihat pada cetakan ketiga. Ringkasan operasi dasar termasuk drop() juga tersedia pada halaman Essential basic functionality
, sedangkan tanda tangannya terdokumentasi di pandas.DataFrame.drop
.
Membandingkan axis dan columns #
| Bentuk penulisan | Arti |
|---|---|
drop(index=["P002"]) | menghapus baris dengan label P002 (arah baris) |
drop(["P002"]) | sama dengan bentuk di atas; axis=0 adalah default |
drop(columns=["stok"]) | menghapus kolom stok |
drop("stok", axis=1) | sama dengan bentuk di atas; gaya penulisan lama |
Kedua gaya menghasilkan DataFrame yang identik, sehingga pilihan menjadi soal keterbacaan. Penulisan columns= dan index= lebih eksplisit karena maksudnya langsung terlihat tanpa perlu mengingat arti angka 0 dan 1. Gaya axis=1 masih banyak dijumpai pada kode dan tutorial lama, sehingga kita perlu mengenalinya dengan baik.
Menangani Label yang Tidak Ada #
Ketika label yang diminta tidak ada, pandas memunculkan KeyError dengan pesan yang menyebut labelnya, sebagaimana output terakhir. Perilaku ketat ini membantu menangkap salah ketik sedini mungkin. Untuk kasus ketika label memang dinamis dan boleh tidak ada, tambahkan errors="ignore" agar label yang tidak dikenal dilewati tanpa galat, misalnya penjualan.drop(index=["P999"], errors="ignore").
Sekarang kita menguasai penghapusan baris dan kolom sekaligus pola penugasannya. Tabel yang sudah bersih masih bisa diatur tampilannya: baris yang paling relevan sebaiknya berada di atas agar pembaca laporan langsung menemukannya. Pengurutan berdasarkan nilai kolom dengan sort_values() kita bahas pada Chapter berikutnya.