DataLens

Memilih kolom dan baris

Ambil kolom yang kamu butuhkan, potong baris berdasarkan posisi, dan pahami kapan kamu mendapat Series dan kapan DataFrame.

Level: Dasar · 7 menit baca

Latihan modul ini

Soal-soal untuk pelajaran ini berjalan di browser-mu dan langsung mengecek jawabanmu.

Idenya

Sebuah dataset biasanya punya lebih banyak kolom dan baris daripada yang dibutuhkan oleh satu pertanyaan. Memilih hanya yang kamu perlukan membuat output mudah dibaca, perhitungan lebih cepat, dan kode lebih jelas tentang apa yang benar-benar dipakainya. Modul ini membahas pemilihan sehari-hari; dua modul berikutnya menambahkan filter berdasarkan kondisi serta alat presisi loc/iloc.

import pandas as pd

sales = pd.read_csv("sales.csv")

Satu kolom: Series

Kurung siku dengan satu nama kolom memberimu kolom itu sebagai Series:

revenue = sales["revenue"]
print(type(revenue).__name__)
print(revenue.head(3))
print(revenue.sum())
Series
0     89000
1    285000
2    960000
Name: revenue, dtype: int64
17502000

Kamu mungkin juga melihat sales.revenue (gaya attribute). Cara itu berfungsi untuk nama sederhana, tapi gagal untuk nama yang mengandung spasi, nama yang bentrok dengan method (kolom bernama count atau size), dan kolom baru. Tetaplah memakai sales["revenue"]: cara ini selalu berhasil.

Beberapa kolom: DataFrame

Sebagian besar laporan butuh beberapa kolom, bukan satu. Misalkan kamu ingin melihat siapa membeli apa dan berapa nilainya: itu kolom customer, product, dan revenue. Berikan list nama kolom di dalam kurung siku, itulah sebabnya kamu melihat kurung siku ganda:

lines = sales[["customer", "product", "revenue"]]
print(type(lines).__name__)
print(lines.head(3))
DataFrame
        customer            product  revenue
0  Kartika Rahma     Desk Organizer    89000
1     Citra Dewi  Arabica Gayo 250g   285000
2      Eka Putri   Pour-over Kettle   960000

Kurung luar untuk memilih; kurung dalam adalah list-nya. Kolom kembali dalam urutan yang kamu tulis, jadi ini juga cara untuk mengurutkan ulang kolom.

Ide utama

df["col"] memberi Series; df[["col"]] (list dengan satu nama) memberi DataFrame dengan satu kolom. Banyak teka-teki "kenapa method ini tidak jalan" ujung-ujungnya soal yang mana yang sedang kamu pegang.

Membuang kolom yang tidak kamu mau

Saat kamu ingin hampir semua kolom, menuliskan semuanya itu membosankan. Kalau kamu hanya ingin membuang beberapa, lebih mudah menyebut apa yang mau dibuang:

slim = sales.drop(columns=["segment", "channel"])
print(slim.shape)
print(sales.shape)
(71, 10)
(71, 12)

.drop() mengembalikan DataFrame baru; sales tidak berubah. Sebagian besar method pandas bekerja seperti ini, sehingga data aslimu tetap aman. Kamu akan bertemu lebih banyak operasi kolom di modul 7.

Baris berdasarkan posisi: slicing

Slicing dengan : di dalam kurung siku memilih baris berdasarkan posisi, persis seperti list:

print(sales[["customer", "product"]][10:13])
        customer               product
10  Lukman Hakim          Throw Pillow
11  Lukman Hakim  Robusta Lampung 250g
12  Lukman Hakim    Notebook A5 Dotted

Baris 10, 11 dan 12: awal ikut, akhir tidak ikut. .head(n) dan .tail(n) adalah jalan pintas yang mudah dibaca untuk baris pertama dan terakhir.

Aturan kurung siku agak kebanyakan peran: string atau list memilih kolom, slice memilih baris. Itu praktis untuk pekerjaan cepat, tapi itu juga alasan modul-modul berikutnya memperkenalkan .loc dan .iloc, yang selalu eksplisit.

Mengambil satu nilai

Untuk mendapatkan satu nilai, pilih kolomnya, lalu label barisnya:

print(sales["product"][2])
print(sales.loc[2, "product"])
Pour-over Kettle
Pour-over Kettle

Keduanya berfungsi; .loc[row, column] adalah bentuk satu langkah yang lebih bersih, dan itulah yang sebaiknya kamu pakai (modul 6 menjelaskan alasannya).

Memilih kolom berdasarkan tipe atau pola nama

Untuk tabel yang lebar, pilih kolom berdasarkan aturan alih-alih mengetik setiap nama:

numbers = sales.select_dtypes(include="number")
print(list(numbers.columns))

price_cols = [col for col in sales.columns if "price" in col or col == "revenue"]
print(price_cols)
['order_id', 'quantity', 'unit_price', 'revenue']
['unit_price', 'revenue']

select_dtypes memilih kolom berdasarkan tipe ("number", "object", "datetime"), dan list comprehension biasa atas df.columns menangani aturan penamaan apa pun yang bisa kamu tulis dengan Python.

Mengatur kolom untuk laporan

Menggabungkan yang sudah kamu tahu: pilih, urutkan ulang, dan tampilkan baris-baris terpenting.

report_cols = ["order_id", "order_date", "customer", "revenue"]
print(sales[report_cols].head(4).to_string(index=False))
 order_id order_date      customer  revenue
        1 2024-01-03 Kartika Rahma    89000
        2 2024-01-09    Citra Dewi   285000
        3 2024-01-17     Eka Putri   960000
        4 2024-01-18    Citra Dewi    75000

.to_string(index=False) mencetak tanpa label baris, praktis untuk output teks yang rapi. Menyimpan daftar kolom di variabel bernama (report_cols) mendokumentasikan isi laporan dan memudahkannya untuk diubah.

Mengapa ini penting untuk kode yang bersih

Pilih sejak awal dan secara eksplisit. Fungsi yang hanya membutuhkan tiga kolom sebaiknya menerima atau membuat frame tiga kolom, supaya pembaca tahu persis data apa yang ia butuhkan, dan perubahan di kolom lain tidak bisa merusaknya. Beri nama daftar kolommu (ID_COLUMNS, report_cols), utamakan df["col"] dibanding akses attribute, dan ingat bahwa method seperti .drop() mengembalikan frame baru alih-alih mengubah yang asli.

Rangkuman

Latihan modul ini

Soal-soal untuk pelajaran ini berjalan di browser-mu dan langsung mengecek jawabanmu.

Berikutnya: Filter dengan boolean mask →