top of page
Gambar penulisCornellius Yudha Wijaya

3 Methods for Pandas Data Selection yang Harus Anda Ketahui

Diperbarui: 2 Feb

Pandas adalah library yang tak terpisahkan bagi seorang Data Scientist, terutama bagi Pythonist. Hal ini karena kemampuan pandas untuk menyimpan dan memanipulasi data dengan mudah. Salah satu contoh keunggulan Pandas adalah seberapa mudahnya kita dapat memilih data yang kita inginkan. Saya akan memberikan contoh dengan dataset mpg dari seaborn di bawah ini.


#importing the library
import pandas as pd
import seaborn as sns

mpg = sns.load_dataset('mpg')
mpg.head()

Ini adalah dataset mpg dalam bentuk data frame. Misalnya kita hanya ingin menampilkan kolom mpg, kita bisa mendapatkannya dengan kode berikut.

#Getting the data column with bracket and the column name
mpg['mpg'].head()

Kita mendapatkan hasil berupa Series dari kolom yang kita pilih sebelumnya. Ini hanya contoh pemilihan data sederhana. Pada bagian berikutnya, saya akan menunjukkan tiga metode yang berbeda untuk selecting data menggunakan Pandas.

1. Seleksi berdasarkan Label

Dikutip dari Dokumentasi Pandas.

“pandas provides a suite of methods in order to have purely label based indexing. This is a strict inclusion based protocol. Every label asked for must be in the index, or a KeyError will be raised.”

Pandas memberi kita kesempatan untuk memilih data berdasarkan label. Jika Anda menyadari, pada contoh sebelumnya, kita hanya memilih data berdasarkan kolomnya saja. Untuk pemilihan berdasarkan label, kita memerlukan atribut Pandas .loc. Perhatikan cara kerjanya pada contoh di bawah.

#Selecting data on index 0
mpg.loc[0]

Dengan atribut .loc, kita memilih data label 0 dan menghasilkan Series dari baris data label ke 0. Jika kita ingin menyertakan lebih banyak label dalam pemilihan, kita perlu memilih urutan label dengan simbol : seperti di bawah ini.

#Selecting data from index 0 to 4
mpg.loc[0:4]

Misalnya saya hanya ingin memilih label tertentu dari beberapa baris, saya perlu menempatkannya dalam objek List.

#Selecting data from index 0,4,6
mpg.loc[[0,4,6]]

Kita juga bisa menambahkan kolom mana yang ingin kita pilih di dalam atribut .loc seperti di bawah ini.

#Select the column we want with the list of the columns name
mpg.loc[[0,4,6], ['mpg', 'cylinders', 'origin']]

Pada objek Pandas, posisi pertama adalah posisi baris dan yang kedua adalah posisi kolom. Itu sebabnya saat kita memilih data, kita memilihnya berdasarkan baris terlebih dahulu kemudian kolom.


Seringkali data frame akan memiliki default label, tetapi kita bisa menentukan kolom lain sebagai label dan memilih data berdasarkan indeks baru. Perhatikan contoh di bawah ini.

#Set the 'origin' column as the new index using .set_index then selecting the data using .loc
mpg.set_index('origin').loc['europe']

Pada data frame di atas, saya hanya mendapatkan data dengan label ‘europe’.


2. Seleksi berdasarkan Posisi

Jika pada bagian sebelumnya kita memilih data berdasarkan label, Pandas juga menyediakan metode untuk pemilihan berdasarkan integer index position. Atribut Pandas yang akan kita gunakan adalah .iloc.

These are 0-based indexing. When slicing, the start bound is included, while the upper bound is excluded. Trying to use a non-integer, even a valid label will raise an IndexError.

Kutipan di atas adalah penjelasan resmi Pandas. Kita bisa melihat dari penjelasannya bahwa saat kita memilih data, kita hanya menggunakan nilai integer untuk posisi indeks berbasis 0 dan bukan label. Perhatikan contoh di bawah ini.

#Selecting the data in the index position two
mpg.iloc[2]

Kami mendapatkan hasil berupa Series dari data frame pada posisi indeks ke dua. Sekilas tidak ada perbedaan dibandingkan saat kita menggunakan metode label namun bagaimana jika kita mengubah label menjadi label non-integer.

mpg.set_index('origin').iloc['europe']

Hal ini akan menimbulkan error karena penggunaan atribut .iloc didasarkan pada posisi integer, bukan label itu sendiri. Bagaimana jika dengan data yang sama seperti di atas saya memilih dengan menggunakan nilai integer?

mpg.set_index('origin').iloc[2]

Kita bisa melihat bahwa hasilnya mirip ketika kita sama sekali tidak mengubah indeks. Hal ini karena kita memilih data berdasarkan posisi, bukan label. Sekarang, bagaimana dengan urutan indeks seperti pada bagian sebelumnya? apakah masih akan berfungsi?

#Selecting a sequence index based on position
mpg.iloc[0:4]

Ya, kita masih bisa memilih berdasarkan urutan. Tetapi yang perlu diingat adalah bahwa dalam pemilihan berbasis posisi, batas bawah tidak termasuk. Ketika memilih 0:4 tetapi kita hanya mendapatkan data dari posisi 0 hingga 3.


Seperti sebelumnya, kita juga bisa memilih posisi tertentu dengan menggunakan objek List.

mpg.iloc[[0,4,6]]

Tapi, jika kita ingin memasukkan pilihan kolom seperti ini.


mpg.iloc[[0,4,6], ['mpg', 'cylinders', 'origin']]

Akan muncul error karena fungsi .iloc hanya menerima indeks numerik.

3. Seleksi berdasarkan Boolean

Sebelum melanjutkan pembahasan kita, saya ingin menjelaskan bagaimana Pandas dapat memiliki Boolean sebagai hasilnya. Perhatikan kode berikut ini.


#Comparing the 'mpg' data with integer 17
mpg['mpg'] > 17

Hasilnya berupa Series dengan nilai Boolean yang menunjukkan hasil pada setiap baris. True adalah data dengan nilai di atas 17 dan False di bawah 17. Dengan ini, kita bisa menggunakan nilai Boolean sebagai kriteria pemilihan. Perhatikan kode berikut.

#Inputing the criteria within the square bracket
mpg[mpg['mpg'] > 17]

Hasilnya akan menampilkan semua data di mana data ‘mpg’ di atas 17 atau setiap hasil yang bernilai Boolean True. Bagaimana jika kita ingin memiliki dua atau lebih kriteria? Kita juga bisa melakukannya seperti kode berikut.

mpg[(mpg['mpg'] > 17) & (mpg['origin'] == 'japan')|~(mpg['horsepower'] <120)]

Pada kode di atas, saya menentukan tiga kriteria; data ‘mpg’ di atas 17, data ‘origin’ sama dengan jepang, dan data ‘horsepower’ tidak di bawah 120. Ketika kita memberikan lebih dari satu kriteria, kita perlu menempatkannya dalam tanda kurung. Selanjutnya, kita menggunakan simbol & sebagai dan, | sebagai atau, dan ~ sebagai tidak.

Kesimpulan

Di sini saya telah menunjukkan cara memilih data berdasarkan label, posisi, dan Boolean. Meskipun ada banyak cara untuk memilih data, cukup gunakan metode yang lebih familiar bagi Anda.


Artikel ditranslasi oleh: Ahmad Ilham Habibi

10 tampilan0 komentar

Comments


bottom of page