Analisis GroupBy berdasarkan Wilayah dan Kategori
Agregasikan total pendapatan dan jumlah pesanan berdasarkan wilayah serta kategori produk, lalu identifikasi 5 SKU teratas berdasarkan margin.
Analisis GroupBy berdasarkan Wilayah dan Kategori 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.
Menyiapkan Analisis GroupBy
Setelah menghitung kolom revenue, langkah berikutnya yang wajar adalah mengagregasikannya berdasarkan dimensi bisnis seperti region dan category. Pemanggilan groupby() pada Pandas membagi DataFrame menjadi beberapa kelompok, Anda menerapkan fungsi agregasi, lalu Pandas menggabungkan hasilnya menjadi tabel ringkasan. Pola bagi-terapkan-gabung ini menggantikan kueri SQL GROUP BY bertingkat.
import pandas as pd
df = pd.read_parquet('sales_features.parquet')
# Total revenue by region
region_rev = df.groupby('region')['revenue'].sum().sort_values(ascending=False)
print(region_rev)Mengelompokkan berdasarkan Kategori
Agregasikan pendapatan berdasarkan kategori produk untuk mengidentifikasi kategori mana yang menghasilkan penjualan terbanyak. Gunakan .agg() untuk menghitung beberapa statistik sekaligus—total pendapatan, jumlah pesanan, dan nilai pesanan rata-rata—dalam satu kali pemrosesan data, bukan tiga pemanggilan groupby terpisah.
cat_summary = df.groupby('category')['revenue'].agg(
total_revenue='sum',
order_count='count',
avg_order_value='mean'
).sort_values('total_revenue', ascending=False)
print(cat_summary)Mengelompokkan berdasarkan Dua Kunci: Wilayah dan Kategori
Berikan daftar kolom kepada groupby() untuk membuat ringkasan dua tingkat. Hasilnya memiliki MultiIndex—tingkat luar adalah wilayah, sedangkan tingkat dalam adalah kategori. Gunakan .reset_index() untuk meratakannya menjadi DataFrame biasa yang sesuai untuk pemfilteran lebih lanjut atau ekspor ke laporan.
region_cat = df.groupby(['region', 'category'])['revenue'].sum().reset_index()
region_cat.columns = ['region', 'category', 'total_revenue']
region_cat = region_cat.sort_values(['region', 'total_revenue'], ascending=[True, False])
print(region_cat.head(10))Menghitung Persentase Pangsa Pendapatan
Angka pendapatan absolut memang berguna, tetapi pangsa pendapatan menunjukkan kontribusi setiap kategori terhadap total. Bagi total per kategori dengan total keseluruhan, lalu kalikan dengan 100. Trik transform('sum') menyebarkan total keseluruhan kembali ke setiap baris sehingga Anda dapat menghitung persentasenya dalam satu langkah tervectorisasi.
df['total_revenue_all'] = df['revenue'].sum()
cat_share = df.groupby('category')['revenue'].sum() / df['revenue'].sum() * 100
cat_share = cat_share.sort_values(ascending=False).round(2)
print(cat_share.rename('revenue_share_%'))Menemukan 5 SKU Teratas berdasarkan Pendapatan
Identifikasi 5 produk teratas berdasarkan total pendapatan menggunakan groupby('product')['revenue'].sum().nlargest(5). Metode nlargest() lebih ringkas daripada mengurutkan lalu mengambil irisan. Mengetahui SKU teratas membantu menentukan keputusan persediaan dan memusatkan upaya promosi pada produk dengan dampak pendapatan terbesar.
top5_sku = df.groupby('product')['revenue'].sum().nlargest(5)
print('Top 5 Products by Revenue:')
print(top5_sku)Jumlah Pesanan vs. Pendapatan berdasarkan Wilayah
Suatu wilayah mungkin memiliki jumlah pesanan tinggi tetapi nilai pesanan rata-rata rendah, atau sebaliknya. Hitung kedua metrik secara berdampingan untuk membedakan wilayah yang didorong volume dari wilayah yang didorong nilai. Gunakan agg() dengan kamus untuk menetapkan nama kolom yang deskriptif dan menjaga keluaran tetap mudah dibaca.
region_profile = df.groupby('region').agg(
order_count=('order_id', 'count'),
total_revenue=('revenue', 'sum'),
avg_order=('revenue', 'mean')
).round(2)
print(region_profile.sort_values('total_revenue', ascending=False))Persentase Pendapatan per Wilayah
Hitung pangsa total pendapatan yang disumbangkan oleh setiap wilayah. Gunakan groupby().sum(), lalu bagi dengan total skalar. Dengan demikian, Anda dapat menjawab pertanyaan tingkat eksekutif seperti "Berapa persentase pendapatan kita yang berasal dari wilayah Utara?" dalam satu ekspresi DataFrame.
region_rev = df.groupby('region')['revenue'].sum()
region_share = (region_rev / region_rev.sum() * 100).round(2)
region_share.name = 'revenue_share_%'
print(region_share.sort_values(ascending=False))Memfilter Kelompok berdasarkan Ambang Pendapatan
Gunakan groupby().filter() untuk mempertahankan hanya baris yang termasuk dalam kategori dengan total pendapatan melampaui ambang batas. Ini berguna ketika Anda ingin menghapus kategori khusus dari visualisasi atau model agar berfokus pada segmen yang material. Filter menerima DataFrame kelompok dan mengembalikan boolean.
THRESHOLD = 10000
df_major = df.groupby('category').filter(
lambda g: g['revenue'].sum() >= THRESHOLD
)
print('Major categories:', df_major['category'].nunique())Pendapatan Bulan ke Bulan berdasarkan Kategori
Gabungkan dua kunci groupby—bulan dan kategori—untuk melacak perubahan pendapatan setiap kategori dari waktu ke waktu. Ubah hasilnya menjadi bentuk pivot dengan unstack('category') untuk mendapatkan matriks dengan baris berupa bulan dan kolom berupa kategori, sehingga pola musiman per kategori mudah terlihat.
monthly_cat = df.groupby(['month', 'category'])['revenue'].sum().unstack('category').fillna(0)
print(monthly_cat.round(0))SKU Teratas per Wilayah
Identifikasi satu produk dengan penjualan terbaik di setiap wilayah dengan menggabungkan groupby dan idxmax(). Kelompokkan berdasarkan wilayah dan produk untuk mendapatkan total pendapatan per kombinasi, lalu untuk setiap wilayah pilih indeks produk dengan pendapatan maksimum. Pola ini menunjukkan apakah wilayah yang berbeda memiliki preferensi produk yang berbeda.
rev_by_region_sku = df.groupby(['region', 'product'])['revenue'].sum()
top_sku_per_region = rev_by_region_sku.groupby('region').idxmax()
print(top_sku_per_region)Mengekspor Tabel Ringkasan
Setelah menghitung ringkasan wilayah-kategori, ekspor ke Excel dengan to_excel() agar para pemangku kepentingan yang lebih menyukai spreadsheet dapat menggunakannya. Gunakan ExcelWriter untuk menulis beberapa DataFrame ringkasan ke lembar terpisah dalam satu buku kerja. Tambahkan penanda waktu ke nama file agar setiap proses menghasilkan keluaran berversi.
from datetime import date
filename = f'sales_summary_{date.today()}.xlsx'
with pd.ExcelWriter(filename, engine='openpyxl') as writer:
region_profile.to_excel(writer, sheet_name='By Region')
cat_summary.to_excel(writer, sheet_name='By Category')
print('Saved:', filename)Pemeriksaan Cepat
Uji pemahaman Anda tentang konsep Analisis Data dari pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini Anda mempelajari: mengelompokkan berdasarkan satu dan dua kunci untuk menghitung ringkasan pendapatan, menghitung persentase pangsa pendapatan dan SKU teratas-N, serta mengekspor laporan ringkasan Excel dengan banyak lembar. Selanjutnya, kita akan membahas visualisasi tren bulanan dengan diagram garis dan rata-rata bergerak.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Analisis GroupBy berdasarkan Wilayah dan Kategori” gratis?
Ya — teks lengkap “Analisis GroupBy berdasarkan Wilayah dan Kategori” 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 “Analisis GroupBy berdasarkan Wilayah dan Kategori”?
Agregasikan total pendapatan dan jumlah pesanan berdasarkan wilayah serta kategori produk, lalu identifikasi 5 SKU teratas berdasarkan margin. 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 “Analisis GroupBy berdasarkan Wilayah dan Kategori” 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
- Memuat dan Mengaudit Dataset Penjualan
- Perhitungan Pendapatan dan Rekayasa Fitur
- Analisis GroupBy berdasarkan Wilayah dan Kategori
- Visualisasi Tren Bulanan