0Pricing
Pandas & NumPy Academy · Pelajaran

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        250

filter(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       12000

Memilih 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         55

Menghapus 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     80

Memilih 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   HR

filter() 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     30

Menggabungkan 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.000000

Pemeriksaan 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

  1. Pengindeksan Boolean pada DataFrames
  2. Metode query()
  3. Penyaring isin() dan between()
  4. Memilih Kolom Berdasarkan Pola
← Kembali ke Pandas & NumPy Academy