DataFrame Slicing dan Filtering

Data yang digunakan masih data airbnb pada modul sebelumnya.

Untuk mengambil sebagian dataset dari sebuah dataframe, Anda dapat lakukan slicing. Slicing bisa dilakukan terhadap column atau row.

Memilih Kolom Data

Anda bisa memilih kolom tertentu saja. Bisa single column atau multicolumn.

import pandas as pd

df = pd.read_csv("airbnb.csv")

#pendekatan array
df["host_name"]

#atau pendekatan dot
df.host_name

#multicolumn
df[["host_name", "neighbourhood_group"]]

Filtering DataFrame

Contohnya tampilkan data dengan host_name= “Taz”.

df[df.host_name == "Taz"]

Jika logic filtering rumit, Anda bisa buat aturan filter dalam variable.

mask = df.host_name == "Taz"
df[mask]

Negasi juga bisa digunakan untuk filter. Padsa contoh filter untuk host_name == “Taz”, kita ingin menampilkan semua data kecuali Taz.

mask = df.host_name == "Taz"
df[~mask]

Lebih lanjut, Anda bisa tambahkan operasi juga pada mask diatas, contoh fungsi sum().

mask = df.host_name == "Taz"
mask.sum()

#perintah mask diatas sama dengan
(df.host_name == "Taz").sum()

Filtering juga bisa lebih dari satu kolom, contoh ingin menampilkan data harga dibawah 100 dan minimum nights dibawah 3 malam.

filter2 = (df.price < 100) & (df.minimum_nights<3)
filter2.sum()

Filtering Column dan Row

Untuk menampilkan data dengan filtering column dan row, gunakan fungsi loc. Aturan Python slicing juga dapat digunakan.

#menampilkan data dengan filter mask, kolom host_name dan neighbourhood.
df.loc[mask, ["host_name", "neighbourhood_group"]]

#menampilkan data dengan filter mask, dari kolom host_name sampai dengan neighbourhood.
df.loc[mask, "host_id" : "neighbourhood_group"]

#menampilkan data dengan filter mask, seluruh kolom.
df.loc[mask, :]

Slicing berdasarkan index

Untuk slicing menggunakan index, gunakan fungsi iloc. Aturan Python slicing juga bisa digunakan.

#menampilkan data baris ke 0, kolom ketiga (host_name).

df.iloc[0, 3]

#mengembalikan 'John'


#menampilkna data baris ke 0, semua kolom
df.iloc[0, :]
id                                                              2539
name                              Clean & quiet apt home by the park
host_id                                                         2787
host_name                                                       John
neighbourhood_group                                         Brooklyn
neighbourhood                                             Kensington
latitude                                                     40.6475
longitude                                                   -73.9724
room_type                                               Private room
price                                                            149
minimum_nights                                                     1
number_of_reviews                                                  9
last_review                                               2018-10-19
reviews_per_month                                               0.21
calculated_host_listings_count                                     6
availability_365                                                 365
Name: 0, dtype: object

Menggunakan Mask Helper

Mask helper adalah fungsi seperti between dan isin. Berikut contoh menampilkan data dengan harga antara 100 dan 200.

df.loc[df.price.between(100,200), ["host_name", "price"]].head()
	host_name	price
0	John	        149
2	Elisabeth	150
5	Chris	        200
9	Ben	        150
10	Lena	        135

Berikut adalah contoh menampilkan data dengan price adalah 100 atau 200.

df.loc[df.price.isin([100,200]), ["host_name", "price"]].head()
        host_name	price
5	Chris	        200
54	Francesca	200
63	Dimitri	        200
76	Victoria	200
94	Christiana	100

Teknik diatas adalah teknik yang umum digunakan. Masih banyak teknik yang bisa digunakan, dan tidak bisa dibahas satu persatu. Silakan bereksperimen.

Sharing is caring:

1 thought on “DataFrame Slicing dan Filtering”

Leave a Comment