Filter Data Menggunakan Pandas

Python
Pandas

Beberapa cara yang digunakan dalam memfilter data menggunakan Pandas.

Penulis

Pandu Mulya Muhammad Syah

Diterbitkan

25 September 2022

Penyaringan (filter) data merupakan salah satu langkah yang sering dilakukan dalam pemrosesan suatu data. Pandas memiliki beberapa cara dalam melakukan penyaringan di antaranya adalah logical_operator, metode loc, iloc dan query. Data yang diguanakan pada contoh pembahasan di bawah ini merupakan data dummy berupa nilai hasil ulangan dari beberapa mata pelajaran.

from pandas import read_csv
df = read_csv('nilai_ulangan.csv')
df.head()
nama matematika fisika kimia
0 Ani 64 75 54
1 Budi 96 85 58
2 Cindy 67 71 91
3 Dodi 35 83 45
4 Eka 48 77 64

Menggunakan logical operator

Langkah di bawah ini menampilkan nama siswa yang memiliki nilai ulangan matematika di atas 50. Logical operator dapat juga dituliskan df[df['matematika'] > 50].

df[df.matematika > 50]
nama matematika fisika kimia
0 Ani 64 75 54
1 Budi 96 85 58
2 Cindy 67 71 91
5 Eko 63 98 96
8 Gisel 61 70 77
9 Lestari 79 52 39
10 Hermawan 76 79 75
12 Mulyanto 58 77 82
13 Saskia 96 64 43

Penyaringan dengan cara ini juga dapat diaplikasikan pada beberapa kondisi operator. Langkah di bawah ini menampilkan siswa yang memiliki nilai matematika di atas 60 dan nilai fisika di atas 55. Operator ganda tersebut dapat digunakan dengan format [(operator_1) & (operator_2)], tanda & (and) berfungsi untuk mengharuskan kedua kondisi operator terpenuhi. Untuk kondisi yang terpenuhi hanya salah satu saja dapat digunakan tanda | atau or.

df[(df.matematika > 60) & (df.fisika > 55)]
nama matematika fisika kimia
0 Ani 64 75 54
1 Budi 96 85 58
2 Cindy 67 71 91
5 Eko 63 98 96
8 Gisel 61 70 77
10 Hermawan 76 79 75
13 Saskia 96 64 43
df[(df.matematika > 60) | (df.fisika > 55)]
nama matematika fisika kimia
0 Ani 64 75 54
1 Budi 96 85 58
2 Cindy 67 71 91
3 Dodi 35 83 45
4 Eka 48 77 64
5 Eko 63 98 96
8 Gisel 61 70 77
9 Lestari 79 52 39
10 Hermawan 76 79 75
11 Amara 36 73 54
12 Mulyanto 58 77 82
13 Saskia 96 64 43

Untuk menampilkan data dengan nama siswa yang memiliki kesamaan tertentu dapat menggunakan langkah di bawah ini. Hasil pada langkah ini menampilkan nama siswa yang berawalan E.

df[df.nama.str.startswith('E')]
nama matematika fisika kimia
4 Eka 48 77 64
5 Eko 63 98 96
6 Endang 45 45 73

Menggunakan loc dan iloc

Metode loc dan iloc pada Pandas berfungsi memfilter data berdasarkan baris dan kolom tertentu. Perbedaan mendasar pada kedua metode ini terletak pada parameter kolom di mana loc menggunakan label seperti nama kolom sedangkan iloc menggunakan indeks berupa nomor. Untuk parameter baris tetap menggunakan indeks berupa angka selama indeks tersebut tidak dirubah. Secara umum format parameter baris dan kolom pada kedua metode ini adalah [awal_baris:akhir_baris, awal_kolom:akhir_kolom].

Langkah di bawah ini menampilkan 5 baris pertama data dengan kolom berlabel nama hingga fisika menggunakan metode loc.

df.loc[:5, 'nama':'fisika']
nama matematika fisika
0 Ani 64 75
1 Budi 96 85
2 Cindy 67 71
3 Dodi 35 83
4 Eka 48 77
5 Eko 63 98

Hasil yang sama dapat dilakukan dengan menggunakan list pada parameter kolom. Urutan elemen pada list tersebut tidak harus sama dengan urutan kolom pada data asalkan elemen tersebut berada di dalam kolom.

df.loc[:5, ['nama', 'matematika', 'fisika']]
nama matematika fisika
0 Ani 64 75
1 Budi 96 85
2 Cindy 67 71
3 Dodi 35 83
4 Eka 48 77
5 Eko 63 98

Langkah di bawah ini menampilkan 5 baris pertam dan 3 kolom pertama pada data menggunakan metode iloc. Perlu diketahui, baik parameter baris maupun kolom parameter awalnya tidak perlu diisi karena sudah mengindikasikan titik awal dari masing-masing parameter.

df.iloc[:5, :3]
nama matematika fisika
0 Ani 64 75
1 Budi 96 85
2 Cindy 67 71
3 Dodi 35 83
4 Eka 48 77

Untuk menampilkan kolom ke-1 dan kolom ke-3 dari baris 3 hingga ke-7 dapat menggunakan langkah di bawah ini. Indeks berupa angka dimulai dari 0, sehingga kolom ke-1 dan kolom ke-3 dapat direpresentasikan sebagai indeks 0 dan 2.

df.iloc[3:7, [0,2]]
nama fisika
3 Dodi 83
4 Eka 77
5 Eko 98
6 Endang 45

Menggunakan query

Metode query menggunakan parameter dalam bentuk str sehingga lebih memudahkan dalam memfilter data. Langkah di bawah menampilkan siswa yang memiliki nilia matematika dan fisika di atas 60 dan 75 secara bersamaan.

df.query('matematika > 60 and fisika > 75')
nama matematika fisika kimia
1 Budi 96 85 58
5 Eko 63 98 96
10 Hermawan 76 79 75