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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *