0Pricing
Pandas & NumPy Academy · Pelajaran

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  410

Mengganti 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        410

Fungsi 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  40

MultiIndex 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            120

Agregasi 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         40

Melakukan 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.00

Menggabungkan 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       3

agg() 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

  1. Pola Pisahkan-Terapkan-Gabungkan
  2. GroupBy dengan Satu dan Beberapa Kunci
  3. Metode agg()
  4. Transformasi dan Filter GroupBy
← Kembali ke Pandas & NumPy Academy