Memilih Kolom Berdasarkan Pola
Gunakan filter(like=), filter(regex=), dan pemahaman list untuk memilih kolom yang namanya sesuai dengan pola tertentu.
Memilih Kolom Berdasarkan Pola adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Mengapa Memilih Kolom Berdasarkan Pola?
DataFrames dari sumber dunia nyata sering memiliki puluhan atau ratusan kolom, dan Anda jarang memerlukan semuanya. Jika kolom mengikuti konvensi penamaan — awalan seperti sales_, akhiran seperti _2023, atau pola kata kunci — memilihnya berdasarkan pola nama jauh lebih mudah dipelihara daripada mencantumkan setiap kolom secara eksplisit. Jika skema berubah, pemilihan berbasis pola akan menyesuaikan diri secara otomatis.
Pandas menyediakan dua alat utama: metode filter() dan pemahaman daftar pada df.columns.
import pandas as pd
df = pd.DataFrame({
'sales_jan': [100, 200],
'sales_feb': [150, 250],
'cost_jan': [50, 80],
'cost_feb': [60, 90],
'profit': [140, 280]
})
print(df.columns.tolist())
# ['sales_jan', 'sales_feb', 'cost_jan', 'cost_feb', 'profit']filter(like=) untuk Mencocokkan Substring
DataFrame.filter(like='substring') memilih kolom yang namanya mengandung substring tertentu di mana saja dalam nama tersebut (peka huruf besar-kecil). Secara bawaan, metode ini bekerja pada sumbu kolom dan mengembalikan DataFrame baru yang hanya berisi kolom yang cocok.
Ini adalah alat pemilihan berdasarkan pola yang paling sederhana: Anda tidak perlu memahami regex, cukup tentukan substring yang ingin dicari.
import pandas as pd
df = pd.DataFrame({
'sales_jan': [100, 200],
'sales_feb': [150, 250],
'cost_jan': [50, 80],
'revenue_q1': [110, 210]
})
# Select columns whose name contains 'sales'
sales_cols = df.filter(like='sales')
print(sales_cols)
# sales_jan sales_feb
# 0 100 150
# 1 200 250filter(regex=) untuk Mencocokkan Pola
DataFrame.filter(regex='pattern') memilih kolom yang namanya cocok dengan ekspresi reguler tertentu. Metode ini lebih kuat daripada like= karena regex memungkinkan Anda mencocokkan awalan, akhiran, posisi digit, atau pola yang kompleks. Regex dicocokkan di mana saja dalam nama kolom (tidak dibatasi pada bagian awal).
import pandas as pd
df = pd.DataFrame({
'q1_revenue': [100],
'q2_revenue': [200],
'q1_cost': [40],
'q2_cost': [60],
'annual_total': [360]
})
# Select columns ending with '_revenue'
revenue_cols = df.filter(regex='_revenue$')
print(revenue_cols)
# q1_revenue q2_revenue
# 0 100 200
# Select columns starting with 'q' (quarter columns)
quarter_cols = df.filter(regex='^q')
print(quarter_cols.columns.tolist())
# ['q1_revenue', 'q2_revenue', 'q1_cost', 'q2_cost']Pemahaman Daftar pada df.columns
Untuk fleksibilitas maksimum, lakukan iterasi pada df.columns dengan pemahaman daftar dan terapkan metode string Python apa pun untuk membangun daftar kolom Anda. Cara ini dapat digunakan untuk startswith, endswith, contains, pemeriksaan panjang string, atau logika khusus apa pun yang tidak dapat dinyatakan hanya dengan regex.
import pandas as pd
df = pd.DataFrame({
'age': [25, 30],
'age_group': ['young', 'mid'],
'income': [50000, 70000],
'income_tax': [8000, 12000],
'name': ['Alice', 'Bob']
})
# Select columns that start with 'income'
income_cols = [c for c in df.columns if c.startswith('income')]
print(df[income_cols])
# income income_tax
# 0 50000 8000
# 1 70000 12000Memilih Berdasarkan Akhiran Nama Kolom
Metode str.endswith() pada Indeks kolom adalah cara paling rapi untuk memilih kolom berdasarkan akhiran. Objek Indeks Pandas mendukung metode pengakses .str, sehingga Anda dapat menerapkan operasi string ke semua nama kolom sekaligus dan menggunakan larik boolean yang dihasilkan untuk mengiris DataFrame.
import pandas as pd
df = pd.DataFrame({
'revenue_2022': [100],
'cost_2022': [40],
'revenue_2023': [150],
'cost_2023': [55],
'notes': ['ok']
})
# Use Index.str.endswith for suffix selection
cols_2023 = df.columns[df.columns.str.endswith('_2023')]
print(df[cols_2023])
# revenue_2023 cost_2023
# 0 150 55Menghapus Kolom Berdasarkan Pola
Terkadang lebih mudah untuk mengecualikan sekumpulan kolom daripada menyebutkan kolom yang ingin dipertahankan. Gabungkan pemilihan berdasarkan pola dengan drop() atau gunakan komplemennya: buat daftar kolom yang akan dihapus, lalu panggil df.drop(columns=cols_to_drop). Cara lainnya, dapatkan kolom yang tidak Anda inginkan, lalu teruskan kolom tersebut ke drop.
import pandas as pd
df = pd.DataFrame({
'id': [1, 2],
'name': ['A', 'B'],
'temp_col1': [0, 0],
'temp_col2': [0, 0],
'score': [90, 80]
})
# Drop columns whose name starts with 'temp_'
temp_cols = [c for c in df.columns if c.startswith('temp_')]
cleaned = df.drop(columns=temp_cols)
print(cleaned)
# id name score
# 0 1 A 90
# 1 2 B 80Memilih Kolom Numerik dengan select_dtypes
Jika Anda menginginkan kolom dengan tipe data tertentu, bukan berdasarkan pola nama, gunakan df.select_dtypes(include=). Meneruskan include='number' akan memilih semua kolom numerik (int dan float), include='object' memilih kolom string, dan include='datetime' memilih kolom datetime.
Hal ini sangat berguna sebelum menerapkan agregasi numerik — Anda tidak akan secara tidak sengaja memanggil mean() pada kolom teks.
import pandas as pd
df = pd.DataFrame({
'name': ['Alice', 'Bob'],
'age': [25, 30],
'salary': [50000.0, 70000.0],
'dept': ['Eng', 'HR']
})
# Select only numeric columns
numeric_df = df.select_dtypes(include='number')
print(numeric_df)
# age salary
# 0 25 50000.0
# 1 30 70000.0
# Exclude numeric columns
text_df = df.select_dtypes(exclude='number')
print(text_df)
# name dept
# 0 Alice Eng
# 1 Bob HRfilter() pada Indeks Baris dengan axis=0
Secara bawaan, filter() beroperasi pada kolom (axis=1). Namun, Anda juga dapat memfilter baris berdasarkan label indeks dengan meneruskan axis=0. Ini berguna ketika DataFrame Anda memiliki label indeks string yang bermakna dan Anda ingin memilih baris yang label indeksnya cocok dengan suatu pola — trik yang lebih jarang digunakan, tetapi praktis.
import pandas as pd
df = pd.DataFrame({
'value': [10, 20, 30, 40]
}, index=['alpha_a', 'beta_b', 'alpha_c', 'gamma_d'])
# Filter rows by index label pattern
alpha_rows = df.filter(like='alpha', axis=0)
print(alpha_rows)
# value
# alpha_a 10
# alpha_c 30Menggabungkan Pola Pemilihan Kolom
Tugas pemilihan kolom di dunia nyata sering menggabungkan beberapa strategi: regex untuk menemukan sekumpulan kolom dasar, lalu penyaringan lebih lanjut dengan pemahaman daftar. Membangun daftar kolom secara bertahap dan memeriksanya sebelum melakukan pengirisan akan mencegah kesalahan tersembunyi, seperti tidak sengaja menghapus kolom yang diperlukan atau menyertakan kolom yang tidak diinginkan.
import pandas as pd
df = pd.DataFrame(columns=[
'user_id', 'user_name', 'user_email',
'product_id', 'product_name', 'product_price',
'order_total', 'order_date'
])
# Step 1: columns that start with 'user_' or 'order_'
step1 = [c for c in df.columns if c.startswith('user_') or c.startswith('order_')]
# Step 2: exclude email (PII)
final_cols = [c for c in step1 if 'email' not in c]
print(final_cols)
# ['user_id', 'user_name', 'order_total', 'order_date']Mengurutkan Ulang Kolom Berdasarkan Pola
Pemilihan berdasarkan pola juga berguna untuk mengurutkan ulang kolom. Pilih terlebih dahulu kolom yang Anda inginkan (misalnya, ID dan metadata), lalu tambahkan kolom lainnya dalam urutan tertentu. Pengurutan ulang membuat DataFrames lebih mudah dibaca dan memastikan output memiliki struktur yang konsisten.
import pandas as pd
import numpy as np
df = pd.DataFrame({
'metric_b': [1], 'metric_a': [2],
'id': [10], 'label': ['x'],
'metric_c': [3]
})
# Put id and label first, then sort metric columns alphabetically
id_cols = ['id', 'label']
metric_cols = sorted([c for c in df.columns if c.startswith('metric')])
ordered = df[id_cols + metric_cols]
print(ordered.columns.tolist())
# ['id', 'label', 'metric_a', 'metric_b', 'metric_c']Contoh Praktis: Data Survei Lebar
Salah satu kasus penggunaan klasik untuk pemilihan berdasarkan pola adalah kumpulan data survei lebar, ketika setiap pertanyaan menghasilkan beberapa kolom seperti q1_score, q1_text, q2_score, dan sebagainya. Anda dapat mengekstrak semua kolom skor dengan satu regex, menghitung mean-nya, dan memisahkan kolom analisis dari respons teks bebas.
import pandas as pd
survey = pd.DataFrame({
'respondent_id': [1, 2, 3],
'q1_score': [4, 3, 5],
'q2_score': [3, 4, 4],
'q3_score': [5, 5, 3],
'q1_comment': ['good', 'ok', 'great'],
'q2_comment': ['fine', 'nice', 'meh']
})
# All score columns
score_cols = survey.filter(regex='_score$').columns
survey['avg_score'] = survey[score_cols].mean(axis=1)
print(survey[['respondent_id', 'avg_score']])
# respondent_id avg_score
# 0 1 4.000000
# 1 2 4.000000
# 2 3 4.000000Pemeriksaan Cepat
Uji pemahaman Anda tentang pemilihan kolom berdasarkan pola.
Ringkasan Pelajaran
Dalam pelajaran ini Anda mempelajari: filter(like=) memilih kolom yang berisi substring, filter(regex=) menggunakan ekspresi reguler untuk pencocokan pola yang fleksibel, dan pemahaman daftar pada df.columns dengan metode string Python menawarkan fleksibilitas maksimum. Gunakan select_dtypes() untuk memilih berdasarkan tipe data. Selanjutnya, kita akan mempelajari cara mendeteksi nilai yang hilang (NaN) dalam DataFrames.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Memilih Kolom Berdasarkan Pola” gratis?
Ya — teks lengkap “Memilih Kolom Berdasarkan Pola” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Memilih Kolom Berdasarkan Pola”?
Gunakan filter(like=), filter(regex=), dan pemahaman list untuk memilih kolom yang namanya sesuai dengan pola tertentu. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?
Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Memilih Kolom Berdasarkan Pola” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?
Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pengindeksan Boolean pada DataFrames
- Metode query()
- Penyaring isin() dan between()
- Memilih Kolom Berdasarkan Pola