GroupBy dan Agregasi
df.groupby(), agg(), transform(), apply(), serta agregasi bernama dengan Named Aggregation.
GroupBy dan Agregasi adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 1 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 Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.
Gagasan Split-Apply-Combine
GroupBy mengikuti pola split-apply-combine: membagi baris ke dalam beberapa grup berdasarkan kunci, menerapkan fungsi ke setiap grup, lalu menggabungkan hasilnya menjadi satu bingkai. Pola ini mendukung sebagian besar ringkasan analitis.
import pandas as pd
df = pd.DataFrame({
"dept": ["A", "A", "B", "B", "B"],
"salary": [50, 70, 40, 60, 80],
})groupby Dasar
df.groupby("col") membuat objek yang dikelompokkan. Merangkai agregasi seperti .mean() akan menghitung satu nilai untuk setiap grup.
print(df.groupby("dept")["salary"].mean())
# dept
# A 60.0
# B 60.0Beberapa Agregasi
Panggil beberapa reduksi sekaligus dengan .agg([...]) untuk menghasilkan satu kolom bagi setiap fungsi.
print(df.groupby("dept")["salary"].agg(["mean", "min", "max", "count"]))Kamus Agregasi per Kolom
Berikan kamus ke .agg untuk menerapkan fungsi yang berbeda pada kolom yang berbeda.
df["bonus"] = [5, 7, 4, 6, 8]
out = df.groupby("dept").agg({"salary": "mean", "bonus": "sum"})
print(out)Agregasi Bernama
Agregasi bernama memberikan nama yang jelas pada kolom keluaran menggunakan sintaks pd.NamedAgg. Cara ini menghindari tajuk kolom bertingkat yang membingungkan.
out = df.groupby("dept").agg(
avg_salary=("salary", "mean"),
total_bonus=("bonus", "sum"),
)
print(out)Pengelompokan berdasarkan Beberapa Kunci
Berikan daftar kolom untuk mengelompokkan berdasarkan beberapa kunci sekaligus, sehingga menghasilkan hasil hierarkis (MultiIndex).
df["level"] = ["jr", "sr", "jr", "sr", "sr"]
print(df.groupby(["dept", "level"])["salary"].mean())transform: Keluaran dengan Bentuk Sama
.transform() mengembalikan hasil yang selaras dengan baris ORIGINAL, bukan satu baris untuk setiap grup. Cara ini sangat cocok untuk menambahkan statistik grup kembali sebagai kolom baru.
df["dept_avg"] = df.groupby("dept")["salary"].transform("mean")
print(df[["dept", "salary", "dept_avg"]])transform untuk Normalisasi
Karena transform menyebarkan hasil kembali ke setiap baris, Anda dapat melakukan normalisasi di dalam grup, misalnya dengan mengurangkan rata-rata grup.
df["centered"] = df["salary"] - df.groupby("dept")["salary"].transform("mean")
print(df[["dept", "salary", "centered"]])apply untuk Logika Kustom
.apply() menyerahkan setiap grup (sebagai sub-DataFrame) ke fungsi Anda. Gunakan cara ini untuk logika yang tidak dapat dinyatakan oleh agregasi bawaan, seperti mengembalikan N baris dengan nilai tertinggi dari setiap grup.
top = df.groupby("dept").apply(lambda g: g.nlargest(1, "salary"))
print(top[["dept", "salary"]])agg vs transform vs apply
agg mereduksi setiap grup menjadi satu nilai. transform mengembalikan satu nilai untuk setiap baris asli. apply merupakan cara serbaguna yang fleksibel (tetapi lebih lambat). Pilih cara yang paling spesifik agar kode jelas dan cepat.
Menghapus Pengelompokan dengan reset_index
Hasil GroupBy menempatkan kunci di indeks. Panggil .reset_index() untuk mengubahnya kembali menjadi kolom biasa, seperti yang diharapkan oleh sebagian besar kode lanjutan.
flat = df.groupby("dept")["salary"].mean().reset_index()
print(flat)
# dept salary
# 0 A 60.0
# 1 B 60.0Pemeriksaan Singkat
Uji pemahaman Anda tentang groupby.
Ringkasan
Hal-hal penting tentang GroupBy:
- Split-apply-combine melalui
df.groupby("col") .agg([...])serta agregasi berbentuk kamus atau bernama untuk beberapa statistik.transform()mengembalikan hasil dengan bentuk seperti data asli.apply()untuk logika arbitrer per grup- Selalu gunakan
.reset_index()untuk meratakan kembali kunci grup menjadi kolom
Pertanyaan yang Sering Diajukan
Apakah pelajaran “GroupBy dan Agregasi” gratis?
Ya — teks lengkap “GroupBy dan Agregasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “GroupBy dan Agregasi”?
df.groupby(), agg(), transform(), apply(), serta agregasi bernama dengan Named Aggregation. Kamu berlatih Learn AI with Python 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 Learn AI with Python?
Tidak diperlukan pengalaman sebelumnya. Learn AI with Python 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 1 dari 4.
Berapa lama pelajaran “GroupBy dan Agregasi” 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 Learn AI with Python ini?
Ya. Setiap pelajaran Learn AI with Python 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
- GroupBy dan Agregasi
- Tabel Pivot dan Tabulasi Silang
- Penggabungan dan Penyatuan Lanjutan
- Deret Waktu dalam Pandas