Pendahuluan
Dalam artikel ini, saya akan menjelaskan berbagai teknik untuk melakukan filtering data di Pandas. Filtering adalah operasi yang sangat penting dalam analisis data, yang memungkinkan Anda untuk memilih data tertentu dari DataFrame berdasarkan kondisi tertentu. Dengan menguasai teknik-teknik ini, Anda dapat secara efektif menganalisis dan memanipulasi data Anda.
Menggunakan Indeks Boolean
Indeks boolean adalah teknik yang mudah dipahami dan kuat untuk melakukan filtering data di DataFrame Pandas. Ini melibatkan pembuatan masker boolean yang mewakili kondisi yang ingin Anda filter. Misalnya, katakanlah Anda memiliki DataFrame yang bernama df
yang berisi informasi tentang produk-produk yang berbeda, dan Anda ingin memfilter produk-produk dengan harga lebih besar dari 100.
price_filter = df['price'] > 100
filtered_df = df[price_filter]
Menggunakan Metode query
Metode query
adalah cara lain yang mudah untuk melakukan filtering data di DataFrame. Ini memungkinkan Anda untuk menulis string query sebagai argumen dan mengembalikan baris yang memenuhi kondisi yang ditentukan. Menggunakan contoh yang sama, Anda dapat memfilter produk-produk dengan harga lebih besar dari 100 sebagai berikut:
filtered_df = df.query('price > 100')
Menggabungkan Filter
Dalam beberapa kasus, Anda mungkin ingin menerapkan beberapa filter pada data Anda. Untuk menggabungkan filter, Anda dapat menggunakan operator logika seperti &
(dan) atau |
(atau). Misalnya, mari kita filter produk-produk dengan harga lebih besar dari 100 dan rating yang lebih tinggi dari 4:
python:python
price_filter = df['price'] > 100
rating_filter = df['rating'] > 4
filtered_df = df[price_filter & rating_filter]
Filtering Berdasarkan Pola String
Pandas juga memungkinkan Anda untuk memfilter data berdasarkan pola string. Anda dapat menggunakan aksesori str
bersama dengan metode string seperti contains
, startswith
, atau endswith
. Misalnya, untuk memfilter produk-produk dengan nama yang mengandung kata "Laptop":
name_filter = df['name'].str.contains('Laptop')
filtered_df = df[name_filter]
Filtering dengan Kondisi Tanggal dan Waktu
Pandas menyediakan dukungan yang kuat untuk filtering berdasarkan kondisi tanggal dan waktu. Jika Anda memiliki kolom DateTime, Anda dapat dengan mudah memfilter berdasarkan rentang tanggal atau periode waktu tertentu. Misalnya, untuk memfilter catatan yang dibuat setelah 1 Januari 2022:
date_filter = df['created_at'] > '2022-01-01'
filtered_df = df[date_filter]
Anda juga dapat menggunakan metode between
untuk memfilter data dalam rentang tanggal tertentu:
date_filter = df['created_at'].between('2022-01-01', '2022-12-31')
filtered_df = df[date_filter]
Menggunakan Metode isin
Metode isin
berguna untuk memfilter data berdasarkan daftar nilai. Ini memeriksa apakah setiap elemen dalam kolom yang diberikan hadir dalam daftar yang ditentukan dan mengembalikan masker boolean. Misalnya, katakanlah Anda memiliki DataFrame yang bernama df
dengan kolom 'category' dan Anda ingin memfilter produk yang termasuk dalam kategori 'Electronics' dan 'Clothing':
category_filter = df['category'].isin(['Electronics', 'Clothing'])
filtered_df = df[category_filter]
Mengaplikasikan Fungsi Kustom
Kadang-kadang, Anda mungkin perlu menerapkan fungsi kustom untuk memfilter data Anda. Pandas menyediakan metode apply
, yang memungkinkan Anda untuk menerapkan fungsi kustom sepanjang sumbu tertentu (baris atau kolom) dari DataFrame Anda. Misalnya, mari buat filter kustom untuk memilih produk dengan rasio harga-ke-rating lebih besar dari 20:
def price_to_rating_ratio(row):
return row['price'] / row['rating'] > 20
ratio_filter = df.apply(price_to_rating_ratio, axis=1)
filtered_df = df[ratio_filter]
Filtering dengan Ekspresi Regular
Pandas juga mendukung filtering data menggunakan ekspresi regular. Anda dapat menggunakan aksesori str
bersama dengan metode match
untuk menerapkan pola regex pada kolom. Misalnya, mari filter produk dengan nama yang dimulai dengan 'Laptop':
import re
name_filter = df['name'].str.match(r'^Laptop')
filtered_df = df[name_filter]
Filtering dengan DataFrame Multi-Indeks
Dalam kasus di mana Anda memiliki DataFrame dengan indeks multi-level, Anda dapat menggunakan metode xs
untuk memfilter data berdasarkan level indeks tertentu. Misalnya, katakanlah Anda memiliki DataFrame multi-indeks dengan 'category' dan 'sub_category' sebagai level indeks, dan Anda ingin memilih semua baris dengan 'Electronics' sebagai kategori:
filtered_df = df.xs('Electronics', level='category')
Agregasi Kondisional
Agregasi kondisional memungkinkan Anda untuk menerapkan fungsi agregasi pada subset data Anda berdasarkan kondisi tertentu. Misalnya, mari hitung rata-rata harga produk dengan rating lebih tinggi dari 4:
import numpy as np
rating_filter = df['rating'] > 4
average_price = np.mean(df.loc[rating_filter, 'price'])