Metode agg()
Terapkan beberapa fungsi agregasi sekaligus dengan agg(), lalu teruskan dict untuk menghitung statistik berbeda pada kolom yang berbeda.
Metode agg() adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Mengapa Menggunakan agg()?
Memanggil sum() atau mean() secara langsung pada objek GroupBy hanya menghasilkan satu statistik. Namun, analisis nyata sering kali memerlukan beberapa statistik sekaligus — misalnya total pendapatan, ukuran pesanan rata-rata, dan jumlah pesanan per wilayah. Metode agg() (singkatan dari aggregate) memungkinkan Anda menghitung semuanya dalam satu pemanggilan yang efisien, alih-alih menjalankan agregasi secara terpisah lalu menggabungkan hasilnya.
Meneruskan Daftar Nama Fungsi
Penggunaan agg() yang paling sederhana adalah meneruskan daftar string nama fungsi. Pandas menerapkan setiap fungsi pada kolom yang dipilih dan mengembalikan DataFrame dengan satu kolom untuk setiap fungsi. Pendekatan ini dapat digunakan dengan nama agregasi bawaan apa pun: 'sum', 'mean', 'min', 'max', 'count', 'std', 'median', dan lainnya.
import pandas as pd
df = pd.DataFrame({
'region': ['East', 'West', 'East', 'West', 'East', 'West'],
'revenue': [200, 340, 150, 290, 310, 410],
'units': [20, 35, 15, 30, 28, 40]
})
result = df.groupby('region')['revenue'].agg(['sum', 'mean', 'count', 'max'])
print(result)
# sum mean count max
# region
# East 660 220.000000 3 310
# West 1040 346.666667 3 410Mengganti Nama Kolom Hasil dengan Agregasi Bernama
Ketika Anda meneruskan daftar string, kolom hasil diberi nama sesuai dengan fungsi itu sendiri ('sum', 'mean', dan seterusnya). Untuk hasil yang lebih rapi, gunakan agregasi bernama: teruskan argumen kata kunci dengan kunci berupa nama kolom yang Anda inginkan dan nilai berupa tuple (column, function). Inilah pendekatan Pandas modern yang menghasilkan kode yang menjelaskan dirinya sendiri.
result = df.groupby('region').agg(
total_revenue=('revenue', 'sum'),
avg_revenue=('revenue', 'mean'),
order_count=('revenue', 'count'),
max_order=('revenue', 'max')
)
print(result)
# total_revenue avg_revenue order_count max_order
# region
# East 660 220.000000 3 310
# West 1040 346.666667 3 410Fungsi Berbeda untuk Kolom Berbeda
Anda dapat meneruskan kamus ke agg(), dengan setiap kunci berupa nama kolom dan setiap nilai berupa fungsi (atau daftar fungsi) yang akan diterapkan pada kolom tersebut. Dengan cara ini, Anda dapat menghitung, misalnya, sum pada revenue tetapi mean pada units, semuanya dalam satu pemanggilan GroupBy.
result = df.groupby('region').agg({
'revenue': ['sum', 'mean'],
'units': ['sum', 'max']
})
print(result)
# revenue units
# sum mean sum max
# region
# East 660 220.000000 63 28
# West 1040 346.666667 105 40MultiIndex Kolom dari agg() Berbasis Kamus
Ketika Anda meneruskan kamus dengan beberapa fungsi untuk setiap kolom, hasilnya memiliki MultiIndex pada kolom. Tingkat pertama adalah nama kolom asli, sedangkan tingkat kedua adalah nama fungsi. Anda dapat meratakan nama-nama kolom ini menjadi satu string dengan pemahaman daftar, sehingga hasilnya lebih mudah digunakan pada tahap berikutnya.
result = df.groupby('region').agg({'revenue': ['sum', 'mean'], 'units': 'sum'})
# Flatten MultiIndex columns
result.columns = ['_'.join(c).strip() for c in result.columns]
print(result.columns.tolist())
# ['revenue_sum', 'revenue_mean', 'units_sum']Menggunakan Fungsi Khusus dalam agg()
Selain nama string, Anda dapat meneruskan callable Python apa pun ke agg(). Fungsi tersebut menerima Series (nilai untuk kolom itu dalam satu kelompok) dan harus mengembalikan skalar. Anda dapat meneruskan lambda atau fungsi bernama. Fungsi khusus lebih fleksibel, tetapi lebih lambat daripada fungsi bawaan bernama karena tidak dapat menggunakan pengoptimalan tingkat C.
def revenue_range(s):
return s.max() - s.min()
result = df.groupby('region')['revenue'].agg(['sum', revenue_range])
print(result)
# sum revenue_range
# region
# East 660 160
# West 1040 120Agregasi Bernama dengan Fungsi Khusus
Sintaks agregasi bernama juga dapat digunakan dengan fungsi yang dapat dipanggil, bukan hanya nama string. Cukup teruskan tuple (column, function) sebagai nilai argumen kata kunci, dengan fungsi apa pun yang dapat menerima sebuah Series dan mengembalikan nilai skalar. Dengan begitu, kode Anda tetap mudah dibaca meskipun menggabungkan fungsi bawaan dengan logika khusus.
result = df.groupby('region').agg(
total=('revenue', 'sum'),
spread=('revenue', lambda s: s.max() - s.min()),
top_units=('units', 'max')
)
print(result)
# total spread top_units
# region
# East 660 160 28
# West 1040 120 40Melakukan Agregasi Tanpa Memilih Kolom
Saat Anda memanggil agg() pada sebuah GroupBy tanpa memilih kolom tertentu, Pandas menerapkan fungsi tersebut ke setiap kolom numerik dalam DataFrame. Ini adalah cara cepat untuk mendapatkan ringkasan semua kolom numerik sekaligus. Perlu diperhatikan bahwa kolom dengan tipe data nonnumerik biasanya akan dilewati secara diam-diam dalam sebagian besar agregasi.
# Aggregate all numeric columns in one call
result = df.groupby('region').agg(['sum', 'mean'])
print(result)
# revenue units
# sum mean sum mean
# region
# East 660 220.000000 63 21.00
# West 1040 346.666667 105 35.00Menggabungkan agg() dengan reset_index()
Setelah agg(), kolom pengelompokan menjadi indeks. Pola yang umum digunakan adalah langsung memanggil reset_index() untuk mendapatkan DataFrame datar, dengan kunci grup sebagai kolom biasa. Setelah itu, Anda dapat mengganti nama, mengurutkan, dan memfilter hasilnya seperti DataFrame lainnya, sehingga hasil tersebut mudah diteruskan ke proses berikutnya atau diekspor.
summary = (
df.groupby('region')
.agg(total=('revenue', 'sum'), orders=('revenue', 'count'))
.reset_index()
.sort_values('total', ascending=False)
)
print(summary)
# region total orders
# 1 West 1040 3
# 0 East 660 3agg() vs transform() vs apply()
Penting untuk membedakan tiga metode GroupBy: agg() meringkas setiap grup menjadi nilai skalar, sehingga menghasilkan lebih sedikit baris daripada data asli. transform() mengembalikan larik dengan bentuk yang sama seperti input, sehingga Anda dapat menambahkan statistik tingkat grup sebagai kolom baru. apply() adalah yang paling fleksibel, tetapi juga paling lambat, dan akan dibahas dalam pelajaran berikutnya.
# agg: one row per group
print(df.groupby('region')['revenue'].agg('mean'))
# region
# East 220.0
# West 346.7
# transform: one row per original row (group mean broadcast back)
df['group_mean'] = df.groupby('region')['revenue'].transform('mean')
print(df[['region', 'revenue', 'group_mean']].head())Contoh Praktis: Ringkasan Penjualan
Berikut contoh realistis dari awal hingga akhir: menghitung tabel ringkasan penjualan yang berisi total pendapatan, nilai pesanan rata-rata, jumlah pesanan, dan rentang pendapatan untuk setiap wilayah, dengan nama kolom yang rapi serta diurutkan berdasarkan total pendapatan secara menurun. Pola ini dapat langsung diterapkan dalam alur kerja analitik produk, keuangan, dan pemasaran.
summary = (
df.groupby('region')
.agg(
total_revenue=('revenue', 'sum'),
avg_order=('revenue', 'mean'),
num_orders=('revenue', 'count'),
revenue_range=('revenue', lambda s: s.max() - s.min())
)
.reset_index()
.sort_values('total_revenue', ascending=False)
.round(2)
)
print(summary)Pemeriksaan Singkat
Uji pemahaman Anda tentang metode agg() dari pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini Anda mempelajari cara menghitung beberapa agregasi sekaligus dengan agg(), cara menggunakan agregasi bernama untuk mendapatkan nama kolom yang rapi, serta cara menerapkan fungsi yang berbeda pada kolom yang berbeda menggunakan dict. Selanjutnya, kita akan mempelajari transform() dan filter(), yang menambahkan kembali informasi tingkat grup ke DataFrame asli.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Metode agg()” gratis?
Ya — teks lengkap “Metode agg()” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Metode agg()”?
Terapkan beberapa fungsi agregasi sekaligus dengan agg(), lalu teruskan dict untuk menghitung statistik berbeda pada kolom yang berbeda. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?
Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Metode agg()” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?
Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pola Pisahkan-Terapkan-Gabungkan
- GroupBy dengan Satu dan Beberapa Kunci
- Metode agg()
- Transformasi dan Filter GroupBy