pivot_table: Tabulasi Silang
Buat tabel pivot bergaya Excel dengan pd.pivot_table, dengan menetapkan index, columns, values, dan aggfunc.
pivot_table: Tabulasi Silang adalah pelajaran Pandas & NumPy Academy 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 Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Apa Itu Tabel Pivot?
Tabel pivot adalah tabulasi silang yang merangkum data berdasarkan dua dimensi kategoris — satu membentuk baris dan lainnya membentuk kolom — dengan nilai agregat di setiap sel. Jika Anda pernah membuat tabel pivot di Excel, Anda akan langsung mengenali konsep ini. Pandas menyediakan pd.pivot_table() (serta versi metodenya pada DataFrame) untuk membuat ringkasan ini sepenuhnya dalam Python.
Pemanggilan Dasar pivot_table
Empat parameter utama pd.pivot_table() adalah: values (kolom yang akan diagregasi), index (kolom yang menjadi baris), columns (kolom yang menjadi kolom), dan aggfunc (fungsi agregasi, dengan bawaan 'mean'). Hasilnya adalah DataFrame yang setiap selnya berisi nilai agregat untuk kombinasi baris dan kolom tersebut.
import pandas as pd
df = pd.DataFrame({
'region': ['East', 'West', 'East', 'West', 'East', 'West'],
'product': ['A', 'A', 'B', 'B', 'A', 'B'],
'revenue': [200, 340, 150, 290, 310, 410]
})
table = pd.pivot_table(df,
values='revenue',
index='region',
columns='product',
aggfunc='sum')
print(table)
# product A B
# region
# East 510 150
# West 340 700Memilih aggfunc
Parameter aggfunc menerima nama string fungsi agregasi NumPy/Pandas apa pun, fungsi yang dapat dipanggil, atau daftar fungsi yang dapat dipanggil. Pilihan umum: 'sum' untuk total, 'mean' untuk rata-rata, 'count' untuk frekuensi, serta 'min'/'max' untuk nilai ekstrem. Jika Anda meneruskan daftar, setiap agregasi mendapatkan tingkatnya sendiri dalam MultiIndex kolom.
# Using mean (default)
table_mean = pd.pivot_table(df, values='revenue',
index='region', columns='product',
aggfunc='mean')
print(table_mean.round(1))
# product A B
# region
# East 255.0 150.0
# West 340.0 350.0
# Using count
table_count = pd.pivot_table(df, values='revenue',
index='region', columns='product',
aggfunc='count')
print(table_count)Menangani Sel yang Hilang dengan fill_value
Jika kombinasi label baris dan kolom tidak memiliki data, sel tersebut secara bawaan berisi NaN. Teruskan fill_value untuk mengganti sel yang hilang dengan nilai bawaan yang bermakna, seperti 0 untuk jumlah atau pendapatan. Hal ini membuat tabel lebih mudah dibaca dan mencegah operasi aritmetika berikutnya menghasilkan NaN secara diam-diam.
df2 = pd.DataFrame({
'region': ['East', 'West', 'East'],
'product': ['A', 'A', 'B'],
'revenue': [200, 340, 150]
})
# West-B combination has no data -> NaN by default
table = pd.pivot_table(df2, values='revenue', index='region',
columns='product', aggfunc='sum', fill_value=0)
print(table)
# product A B
# region
# East 200 150
# West 340 0 <- filled with 0 instead of NaNMenambahkan Subtotal dengan margins
Teruskan margins=True untuk menambahkan total baris dan kolom ke tabel pivot. Pandas menambahkan baris 'All' di bagian bawah dan kolom 'All' di sebelah kanan, yang berisi nilai agregat untuk semua kategori. Anda dapat mengganti nama label margin dengan margins_name. Ini menyerupai baris 'Grand Total' pada tabel pivot Excel.
table = pd.pivot_table(df, values='revenue', index='region',
columns='product', aggfunc='sum',
fill_value=0, margins=True, margins_name='Total')
print(table)
# product A B Total
# region
# East 510 150 660
# West 340 700 1040
# Total 850 850 1700Beberapa Nilai dalam pivot_table
Parameter values dapat berupa daftar nama kolom untuk mengagregasi beberapa metrik sekaligus. Hasilnya memiliki MultiIndex kolom dengan tingkat luar berupa kolom nilai dan tingkat dalam berupa kategori. Dengan demikian, Anda dapat membuat tabel ringkasan menyeluruh dalam satu pemanggilan, alih-alih membuat dan menggabungkan beberapa tabel pivot terpisah.
df['units'] = [10, 15, 8, 12, 14, 18]
table = pd.pivot_table(df,
values=['revenue', 'units'],
index='region',
columns='product',
aggfunc='sum')
print(table)
# Columns: (revenue, A), (revenue, B), (units, A), (units, B)
print(table.columns.tolist())Indeks dan Kolom Hierarkis
Jika Anda meneruskan daftar ke index atau columns, tabel pivot memiliki MultiIndex pada sumbu yang sesuai. Dengan demikian, Anda dapat membuat ringkasan yang lebih terperinci — misalnya, menguraikan pendapatan berdasarkan wilayah dan kuartal pada baris, serta berdasarkan produk pada kolom. Akses subtingkat dengan .loc dan tuple indeks seperti biasa.
df['quarter'] = ['Q1', 'Q1', 'Q2', 'Q2', 'Q1', 'Q2']
table = pd.pivot_table(df, values='revenue',
index=['region', 'quarter'],
columns='product',
aggfunc='sum', fill_value=0)
print(table)
# product A B
# region quarter
# East Q1 510 0
# Q2 0 150
# West Q1 340 0
# Q2 0 700Meratakan Hasil
Setelah membuat tabel pivot, indeksnya berupa kolom pengelompokan dan MultiIndex kolom (saat menggunakan beberapa nilai) dapat sulit ditangani. Pola pembersihan yang umum adalah memanggil reset_index() untuk meratakan indeks baris, lalu menyatukan MultiIndex kolom menjadi satu tingkat dengan menggabungkan tingkat-tingkat tersebut menggunakan garis bawah melalui pemahaman daftar.
table = pd.pivot_table(df, values=['revenue', 'units'],
index='region', columns='product', aggfunc='sum')
# Flatten MultiIndex columns
table.columns = ['_'.join(str(c) for c in col) for col in table.columns]
table = table.reset_index()
print(table.columns.tolist())
# ['region', 'revenue_A', 'revenue_B', 'units_A', 'units_B']pivot_table vs groupby().agg()
Baik pivot_table maupun groupby().agg() menghasilkan statistik ringkasan. Perbedaannya terletak pada bentuk keluaran: groupby().agg() mengembalikan DataFrame berformat panjang dengan satu baris untuk setiap kombinasi grup, sedangkan pivot_table mengembalikan tabel berformat lebar dengan satu dimensi menjadi kolom. Untuk dasbor dan laporan, format lebar dari tabel pivot sering kali lebih mudah dibaca; untuk pembelajaran mesin atau analisis statistik lanjutan, format panjang lebih disukai.
# Long format (groupby)
long = df.groupby(['region', 'product'])['revenue'].sum().reset_index()
print(long)
# region product revenue
# East A 510
# East B 150
# Wide format (pivot_table)
wide = pd.pivot_table(df, 'revenue', 'region', 'product', 'sum', fill_value=0)
print(wide)
# product A B
# region
# East 510 150Mengurutkan dan Memberi Gaya pada Tabel Pivot
Tabel pivot adalah DataFrame biasa, jadi Anda dapat mengurutkannya, menghitung kolom turunan, dan memformatnya sama seperti DataFrame Pandas lainnya. Misalnya, urutkan berdasarkan kolom produk tertentu secara menurun untuk memberi peringkat wilayah berdasarkan kinerja produk tersebut, atau tambahkan kolom persentase dengan membagi setiap sel dengan total baris.
table = pd.pivot_table(df, 'revenue', 'region', 'product', 'sum', fill_value=0)
# Sort by product A revenue descending
table_sorted = table.sort_values('A', ascending=False)
print(table_sorted)
# Add percentage of row total
table['A_pct'] = (table['A'] / table.sum(axis=1) * 100).round(1)
print(table)Penerapan Praktis: Tabel Dasbor Penjualan
Tabel pivot merupakan alat utama untuk membuat laporan manajemen dan dasbor. Alur kerja yang umum: muat data transaksi mentah, buat tabel pivot dengan bulan sebagai kolom dan kategori produk sebagai baris, tambahkan total margin, lalu ekspor ke Excel. Seluruh alur kerja, dari data mentah hingga tabel yang siap disajikan dalam rapat pimpinan, hanya memerlukan beberapa pemanggilan Pandas.
# Simulated monthly product revenue pivot
result = pd.pivot_table(
df,
values='revenue',
index='product',
columns='region',
aggfunc='sum',
fill_value=0,
margins=True,
margins_name='Grand Total'
)
print(result)
# Export to Excel
# result.to_excel('sales_pivot.xlsx')Pemeriksaan Cepat
Uji pemahaman Anda tentang pd.pivot_table dari pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini Anda mempelajari bahwa pd.pivot_table() membuat ringkasan tabulasi silang dengan satu dimensi sebagai baris dan dimensi lainnya sebagai kolom; fill_value menangani sel yang hilang dan margins=True menambahkan total; Anda dapat mengagregasi beberapa nilai sekaligus; dan tabel pivot menghasilkan keluaran berformat lebar yang ideal untuk laporan. Selanjutnya kita akan mempelajari operasi kebalikannya: melt() untuk mengubah data lebar kembali menjadi format panjang.
Belajar Python dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Pertanyaan yang Sering Diajukan
Apakah pelajaran “pivot_table: Tabulasi Silang” gratis?
Ya — teks lengkap “pivot_table: Tabulasi Silang” 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 “pivot_table: Tabulasi Silang”?
Buat tabel pivot bergaya Excel dengan pd.pivot_table, dengan menetapkan index, columns, values, dan aggfunc. 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 1 dari 4.
Berapa lama pelajaran “pivot_table: Tabulasi Silang” 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
- pivot_table: Tabulasi Silang
- melt: Format Lebar ke Panjang
- stack dan unstack dengan MultiIndex
- crosstab untuk Tabel Frekuensi