Pandas: cara membuat pivottable dengan persentase
Anda dapat menggunakan sintaks berikut untuk menambahkan kolom ke tabel pivot di panda yang menampilkan persentase total untuk kolom tertentu:
my_table[' % points '] = (my_table[' points ']/my_table[' points ']. sum ())* 100
Sintaks khusus ini menambahkan kolom baru bernama % poin ke tabel pivot bernama my_table yang menampilkan persentase nilai total di kolom poin .
Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.
Contoh: Membuat PivotTable Pandas dengan Persentase
Misalkan kita memiliki panda DataFrame berikut yang menunjukkan jumlah poin yang dicetak oleh pemain bola basket yang berbeda:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['Guard', 'Guard', 'Forward', 'Forward', 'Guard', 'Guard', 'Forward', 'Forward'], ' points ': [22, 30, 14, 15, 19, 30, 23, 20]}) #view DataFrame print (df) team position points 0 A Guard 22 1A Guard 30 2 A Forward 14 3 A Forward 15 4 B Guard 19 5 B Guard 30 6 B Forward 23 7 B Forward 20
Kita dapat menggunakan fungsi pivot_table() untuk membuat tabel pivot yang menunjukkan jumlah poin berdasarkan tim dan posisi:
#create pivot table to calculate sum of points by team and position
my_table = pd. pivot_table (df, index=[' team ', ' position '], aggfunc=' sum ')
#view pivot table
print (my_table)
points
team position
A Forward 29
Guard 52
B Forward 43
Guard 49
Dari hasilnya kita dapat melihat:
- Penyerang Tim A mencetak total 29 poin.
- Penjaga Tim A mencetak total 52 poin.
- Penyerang Tim B mencetak total 43 poin.
- Penjaga Tim B mencetak total 49 poin.
Kita kemudian dapat menggunakan sintaks berikut untuk menambahkan kolom baru bernama % poin yang menampilkan persentase total poin untuk setiap baris:
#add column that displays points as a percentage of total points my_table[' % points '] = (my_table[' points ']/my_table[' points ']. sum ())* 100 #view updated pivot table print (my_table) points % points team position A Forward 29 16.763006 Guard 52 30.057803 B Forward 43 24.855491 Guard 49 28.323699
Kolom % Poin baru sekarang menampilkan nilai poin sebagai persentase dari total poin.
Perhatikan juga bahwa Anda dapat menggunakan fungsi round() untuk membulatkan nilai persentase ke sejumlah tempat desimal tertentu.
#add column that displays points as a percentage of total points (rounded) my_table[' % points '] = round ((my_table[' points ']/my_table[' points ']. sum ())* 100 , 2 ) #view updated pivot table print (my_table) points % points team position A Forward 29 16.76 Guard 52 30.06 B Forward 43 24.86 Guard 49 28.32
Nilai persentase kini dibulatkan menjadi dua tempat desimal.
Catatan : Anda dapat menemukan dokumentasi lengkap fungsi pandas pivot_table() di sini .
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di panda:
Pandas: Cara menambahkan filter ke tabel pivot
Pandas: Cara mengurutkan tabel pivot berdasarkan nilai di kolom
Pandas: Cara membuat tabel pivot dengan jumlah nilai