Pengenalan
Pandas adalah sebuah library yang kuat untuk analisis data dan manipulasi di Python. Salah satu fitur utama dari Pandas adalah indexing, yang memungkinkan pengguna untuk mengakses dan memanipulasi elemen tertentu dalam DataFrame. Ada berbagai teknik yang tersedia untuk indexing dalam Pandas, termasuk indexing berbasis label dengan .loc
, indexing berbasis posisi dengan .iloc
, indexing Boolean, dan indexing hierarki dengan MultiIndex.
Selain indexing, slicing juga merupakan teknik penting dalam Pandas yang memungkinkan Anda untuk mengekstrak sebagian dari DataFrame Anda dengan menentukan rentang baris atau kolom.
Dalam artikel ini, saya akan mengeksplorasi indexing dan slicing di Pandas DataFrame.
Indeks pada Pandas DataFrames
Indeks memungkinkan pengguna untuk mengakses dan memanipulasi elemen tertentu dalam DataFrame. Ada berbagai teknik yang tersedia untuk melakukan indeks pada Pandas, dan memahami metode-metode ini dapat membantu Anda mengoptimalkan potensi DataFrame.
Indeks Berbasis Label: .loc
Pandas menyediakan atribut .loc
untuk indeks berbasis label. Metode ini memungkinkan Anda untuk mengakses baris dan kolom menggunakan labelnya (yaitu, nama indeks dan kolom). Syntaxnya adalah sebagai berikut:
df.loc[label_baris, label_kolom]
Di sini, df
merepresentasikan DataFrame, label_baris
merepresentasikan label indeks baris yang ingin Anda akses, dan label_kolom
merepresentasikan label kolom. Anda juga dapat menggunakan teknik slicing dengan .loc
untuk memilih beberapa baris atau kolom. Contohnya:
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data, index=['row1', 'row2', 'row3'])
# Select a single value
result = df.loc['row1', 'A'] # Output: 1
# Select a single row
result = df.loc['row1', :] # Output: A 1
# B 4
# C 7
# Select multiple rows and columns
result = df.loc[['row1', 'row2'], ['A', 'C']] # Output: A C
# row1 1 7
# row2 2 8
Indeks Berbasis Posisi: .iloc
Atribut .iloc
digunakan untuk indeks berbasis posisi. Ini memungkinkan Anda untuk mengakses elemen dalam DataFrame menggunakan posisi indeks integer. Syntax untuk .iloc
adalah:
df.iloc[posisi_baris, posisi_kolom]
Di sini, posisi_baris
dan posisi_kolom
merepresentasikan posisi indeks integer dari baris dan kolom yang ingin Anda akses. Sama seperti .loc
, Anda dapat menggunakan teknik slicing dengan .iloc
untuk memilih beberapa baris atau kolom:
# Select a single value
result = df.iloc[0, 0] # Output: 1
# Select a single row
result = df.iloc[0, :] # Output: A 1
# B 4
# C 7
# Select multiple rows and columns
result = df.iloc[[0, 1], [0, 2]] # Output: A C
# row1 1 7
# row2 2 8
Indeks dengan Array Boolean
Array Boolean dapat digunakan untuk indeks dalam memfilter baris atau kolom berdasarkan kondisi tertentu. Metode ini juga dikenal sebagai indeks Boolean atau masking. Syntaxnya adalah:
df[array_boolean]
Di sini, array_boolean
adalah array nilai True
dan False
yang sesuai dengan baris atau kolom yang ingin Anda akses. Contohnya:
# Select rows where column 'A' is greater than 1
mask = df['A'] > 1
result = df[mask] # Output: A B C
# row2 2 5 8
# row3 3 6 9
Indeks Hierarkis: MultiIndex
Pandas mendukung indeks hierarkis, yang memungkinkan Anda untuk memiliki beberapa level label indeks untuk baris dan kolom. Objek MultiIndex dapat digunakan untuk membuat dan memanipulasi indeks hierarkis. Syntax untuk membuat DataFrame MultiIndex adalah:
df_multi = pd.DataFrame(data, index=pd.MultiIndex.from_tuples(index_tuples), columns=label_kolom)
Di sini, index_tuples
merepresentasikan tuple yang berisi label indeks hierarkis, dan label_kolom
merepresentasikan label kolom. Contohnya:
import pandas as pd
data = [[1, 2], [3, 4], [5, 6], [7, 8]]
index_tuples = [('A', 'x'), ('A', 'y'), ('B', 'x'), ('B', 'y')]
column_labels = ['col1', 'col2']
df_multi = pd.DataFrame(data, index=pd.MultiIndex.from_tuples(index_tuples), columns=column_labels)
# Output:
# col1 col2
# A x 1 2
# y 3 4
# B x 5 6
# y 7 8
Untuk mengakses data dalam DataFrame MultiIndex, Anda dapat menggunakan .loc
dengan beberapa label:
# Select a single value
result = df_multi.loc[('A', 'x'), 'col1'] # Output: 1
# Select a single row
result = df_multi.loc[('A', 'x'), :] # Output: col1 1
# col2 2
# Select multiple rows and columns
result = df_multi.loc[(slice('A', 'B'), slice('x', 'y')), ['col1']]
# Output:
# col1
# A x 1
# y 3
# B x 5
# y 7
Irisan pada Pandas DataFrames
Irisan adalah teknik yang memungkinkan Anda untuk mengekstrak sebagian dari DataFrame Anda dengan menentukan rentang baris atau kolom. Dalam bab ini, saya akan menjelajahi berbagai teknik iris dan aplikasinya.
Irisan Baris
Irisan baris memungkinkan Anda untuk memilih rentang baris yang kontinu dalam DataFrame berdasarkan label indeks atau posisi. Anda dapat menggunakan atribut .loc
untuk irisan berbasis label atau atribut .iloc
untuk iris berbasis posisi. Syntax untuk irisan baris adalah sebagai berikut:
# Label-based slicing
df.loc[start_label:end_label]
# Position-based slicing
df.iloc[start_position:end_position]
Kedua nilai awal dan akhir inklusif untuk iris berbasis label (.loc
), sementara nilai akhirnya tidak termasuk untuk iris berbasis posisi (.iloc
). Contohnya:
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data, index=['row1', 'row2', 'row3'])
# Label-based slicing
result = df.loc['row1':'row2'] # Output: A B C
# row1 1 4 7
# row2 2 5 8
# Position-based slicing
result = df.iloc[0:2] # Output: A B C
# row1 1 4 7
# row2 2 5 8
Irisan Kolom
Irisan kolom memungkinkan Anda untuk memilih rentang kolom yang kontinu dalam DataFrame berdasarkan label atau posisi mereka. Anda dapat menggunakan atribut .loc
untuk iris berbasis label atau atribut .iloc
untuk iris berbasis posisi. Syntax untuk iris kolom adalah sebagai berikut:
# Label-based slicing
df.loc[:, start_label:end_label]
# Position-based slicing
df.iloc[:, start_position:end_position]
Sama seperti iris baris, nilai awal dan akhir inklusif untuk iris berbasis label (.loc
) dan eksklusif untuk iris berbasis posisi (.iloc
). Contohnya:
# Label-based slicing
result = df.loc[:, 'A':'B'] # Output: A B
# row1 1 4
# row2 2 5
# row3 3 6
# Position-based slicing
result = df.iloc[:, 0:2] # Output: A B
# row1 1 4
# row2 2 5
# row3 3 6
Irisan Gabungan Baris dan Kolom
Dalam beberapa kasus, Anda mungkin ingin mengiris baik baris dan kolom secara bersamaan. Anda dapat mencapai ini dengan menggabungkan teknik iris baris dan kolom menggunakan atribut .loc
atau .iloc
. Contohnya:
# Label-based slicing
result = df.loc['row1':'row2', 'A':'B'] # Output: A B
# row1 1 4
# row2 2 5
# Position-based slicing
result = df.iloc[0:2, 0:2] # Output: A B
# row1 1 4
# row2 2 5