Pengantar
Pandas adalah pustaka Python yang fleksibel untuk manipulasi dan analisis data. Ini menyediakan struktur data seperti Series dan DataFrame, yang memudahkan Anda dalam bekerja dengan data terstruktur. Salah satu fitur paling berguna dari Pandas adalah kemampuannya untuk secara efisien menggabungkan dan mengelompokkan data, memungkinkan Anda untuk melakukan berbagai operasi pada data yang dikelompokkan. Artikel ini akan membimbing Anda dalam proses penggabungan dan pengelompokkan data dengan Pandas.
Objek GroupBy
Objek GroupBy di pandas memungkinkan Anda untuk dengan efisien mengelompokkan data berdasarkan satu atau lebih kolom, memungkinkan Anda untuk melakukan berbagai operasi pada data yang dikelompokkan. Bab ini akan membahas pembuatan objek GroupBy, pemilihan kolom dan baris, dan iterasi atas kelompok.
Membuat Objek GroupBy
Untuk membuat objek GroupBy, Anda pertama-tama memerlukan DataFrame dengan data yang akan dikelompokkan. Pada contoh ini, kita memiliki DataFrame dengan kolom Category
dan Value
:
import pandas as pd
data = {'Category': ['A', 'B', 'A', 'B', 'A', 'B'],
'Value': [10, 20, 30, 40, 50, 60]}
df = pd.DataFrame(data)
Untuk membuat objek GroupBy, gunakan metode .groupby()
pada DataFrame, yang memerlukan nama kolom yang ingin Anda kelompokkan:
grouped = df.groupby('Category')
Variabel grouped
sekarang berisi objek GroupBy dengan data yang dikelompokkan berdasarkan kolom Category
.
Pemilihan Kolom dan Baris
Setelah Anda membuat objek GroupBy, Anda dapat memilih grup tertentu dengan menggunakan metode .get_group()
. Sebagai contoh, untuk memilih grup dengan kategori A
, Anda dapat melakukan hal berikut:
grouped.get_group('A')
Category Value
0 A 10
2 A 30
4 A 50
Ini mengembalikan DataFrame yang berisi hanya baris dengan kategori A
.
Iterasi atas Kelompok
Anda juga dapat melakukan iterasi atas kelompok-kelompok dalam objek GroupBy menggunakan for loop. Loop akan menghasilkan nama grup dan DataFrame grup yang sesuai:
for name, group in grouped:
print(name)
print(group)
A
Category Value
0 A 10
2 A 30
4 A 50
B
Category Value
1 B 20
3 B 40
5 B 60
Dalam contoh ini, loop mencetak nama grup (baik A
atau B
) dan DataFrame yang sesuai berisi baris dengan kategori itu. Ini dapat berguna untuk melakukan analisis lebih lanjut pada setiap grup secara terpisah atau menyimpan grup ke file individu.
Fungsi Agregat
Fungsi agregat memungkinkan Anda untuk melakukan perhitungan pada data yang dikelompokkan, seperti menemukan jumlah, rata-rata, atau jumlah nilai dalam setiap grup. Bab ini akan membahas fungsi agregat bawaan, membuat fungsi agregat kustom, dan menerapkan beberapa fungsi agregat sekaligus.
Fungsi Agregat Bawaan
Pandas menyediakan beberapa fungsi agregat bawaan yang dapat diterapkan langsung ke objek GroupBy. Beberapa fungsi agregat umum meliputi:
.sum()
: menghitung jumlah nilai dalam setiap grup.mean()
: menghitung rata-rata (mean) nilai dalam setiap grup.count()
: menghitung jumlah nilai dalam setiap grup
Sebagai contoh, untuk menghitung jumlah kolom Value
dalam setiap grup, Anda dapat menggunakan metode .sum()
:
grouped.sum()
Value
Category
A 90
B 120
Ini mengembalikan DataFrame yang menunjukkan jumlah kolom Value
untuk setiap kategori.
Fungsi Agregat Kustom
Jika fungsi agregat bawaan tidak memenuhi kebutuhan Anda, Anda dapat membuat fungsi agregat kustom Anda sendiri. Untuk melakukannya, tentukan fungsi yang mengambil Series atau DataFrame sebagai input dan mengembalikan satu nilai. Kemudian, terapkan fungsi agregat kustom ke objek GroupBy menggunakan metode .aggregate()
atau .agg()
.
Sebagai contoh, misalkan Anda ingin menghitung jumlah nilai dibagi jumlah nilai untuk setiap grup. Anda dapat membuat fungsi agregat kustom sebagai berikut:
def custom_agg(x):
return x.sum() / x.count()
grouped.aggregate(custom_agg)
Value
Category
A 30
B 40
Ini mengembalikan DataFrame yang menunjukkan hasil dari menerapkan fungsi agregat kustom ke setiap grup.
Menerapkan Beberapa Fungsi Agregat
Anda dapat menerapkan beberapa fungsi agregat ke objek GroupBy sekaligus dengan memasukkan daftar fungsi ke metode .agg()
. Hasilnya akan berupa DataFrame dengan struktur kolom hierarkis, di mana level atas mewakili nama kolom asli dan level yang lebih rendah mewakili fungsi agregat yang diterapkan.
Sebagai contoh, untuk menghitung jumlah, rata-rata, dan jumlah nilai kolom Value
untuk setiap grup, lakukan hal berikut:
grouped.agg(['sum', 'mean', 'count'])
Value
sum mean count
Category
A 90 30 3
B 120 40 3
Ini mengembalikan DataFrame dengan hasil dari menerapkan fungsi agregat yang ditentukan ke setiap grup.
Tabel Pivot
Tabel pivot menyediakan cara untuk merangkum data dengan merombak dan menggabungkan data berdasarkan kolom tertentu yang ditentukan. Bab ini akan membahas pembuatan tabel pivot, menyesuaikan nilai tabel pivot, dan menangani data yang hilang.
Membuat Tabel Pivot
Untuk membuat tabel pivot, gunakan fungsi pd.pivot_table()
. Fungsi ini memerlukan beberapa argumen, termasuk:
data
: DataFrame yang ingin Anda pivotvalues
: kolom yang berisi data yang ingin Anda agregatindex
: kolom yang ingin Anda gunakan sebagai label baris di tabel pivotcolumns
: (opsional) kolom yang ingin Anda gunakan sebagai label kolom di tabel pivotaggfunc
: fungsi agregat yang ingin Anda terapkan pada data
Sebagai contoh, untuk membuat tabel pivot yang menunjukkan jumlah kolom Value
untuk setiap kategori, Anda dapat melakukan hal berikut:
pivot = pd.pivot_table(df, values='Value', index='Category', aggfunc='sum')
Value
Category
A 90
B 120
Ini mengembalikan DataFrame dengan tabel pivot yang menunjukkan jumlah kolom Value
untuk setiap kategori.
Menyesuaikan Nilai Tabel Pivot
Anda dapat menyesuaikan nilai dalam tabel pivot dengan menentukan fungsi agregat yang berbeda, atau dengan memasukkan beberapa kolom atau fungsi. Untuk melakukannya, berikan daftar nama kolom atau fungsi ke argumen values
, index
, columns
, atau aggfunc
.
Sebagai contoh, untuk membuat tabel pivot yang menunjukkan baik jumlah maupun rata-rata kolom Value
untuk setiap kategori, Anda dapat melakukan hal berikut:
pd.pivot_table(df, values='Value', index='Category', aggfunc=['sum', 'mean'])
sum mean
Value Value
Category
A 90 30
B 120 40
Ini mengembalikan DataFrame dengan struktur kolom hierarkis, di mana level atas mewakili fungsi agregat yang diterapkan dan level yang lebih rendah mewakili nama kolom asli.
Menangani Data yang Hilang
Tabel pivot kadang-kadang menghasilkan sel dengan data yang hilang, terutama saat bekerja dengan data kategorikal. Untuk menangani data yang hilang dalam tabel pivot, Anda dapat menggunakan argumen fill_value
untuk menentukan nilai default yang akan menggantikan data yang hilang.
Sebagai contoh, misalkan Anda memiliki DataFrame dengan kategori tambahan C
, tetapi tanpa nilai yang sesuai:
data = {'Category': ['A', 'B', 'A', 'B', 'A', 'B', 'C'],
'Value': [10, 20, 30, 40, 50, 60, None]}
df = pd.DataFrame(data)
Secara default, tabel pivot akan menunjukkan nilai NaN
untuk data yang hilang:
pd.pivot_table(df, values='Value', index='Category', aggfunc='sum')
Value
Category
A 90.0
B 120.0
C NaN
Untuk mengganti nilai NaN
dengan nilai default, seperti 0, gunakan argumen fill_value
:
pd.pivot_table(df, values='Value', index='Category', aggfunc='sum', fill_value=0)
Value
Category
A 90
B 120
C 0
Ini mengembalikan DataFrame dengan tabel pivot yang menunjukkan jumlah kolom Value
untuk setiap kategori, dengan data yang hilang diganti oleh nilai default yang ditentukan.