Pandas: cara menambahkan subtotal ke tabel pivot


Seringkali Anda mungkin ingin menambahkan subtotal ke tabel pivot pandas.

Untungnya, hal ini mudah dilakukan menggunakan fungsi bawaan panda.

Contoh berikut menunjukkan cara melakukan hal ini.

Contoh: Tambahkan Subtotal ke PivotTable Pandas

Misalkan kita memiliki pandas DataFrame berikut yang berisi informasi tentang berbagai pemain bola basket:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'G', 'F', 'F', 'F'],
                   ' all_star ': ['Y', 'N', 'Y', 'Y', 'N', 'N', 'N', 'Y'],
                   ' points ': [4, 4, 6, 8, 9, 5, 5, 12]})

#view DataFrame
print (df)

  team position all_star points
0 AGY 4
1 AGN 4
2 AFY 6
3 AFY 8
4 BGN 9
5 BFN 5
6 BFN 5
7 BFY 12

Kita dapat menggunakan kode berikut untuk membuat tabel pivot di panda yang menampilkan jumlah poin untuk setiap kombinasi team , all_star dan position di DataFrame:

 #create pivot table
my_table = pd. pivot_table (df, values=' points ',
                              index=[' team ', ' all_star '],
                              columns=' position ',
                              aggfunc=' sum ')

#view pivot table
print (my_table)

FG position
team all_star           
AN NaN 4.0
     Y 14.0 4.0
BN 10.0 9.0
     Y 12.0 NaN

Sekarang katakanlah kita ingin menambahkan baris subtotal yang menampilkan poin subtotal untuk setiap tim dan posisi.

Kita dapat menggunakan sintaks berikut untuk melakukan ini:

 #add subtotals row to pivot table
p.d. concat ([
    y. append ( y.sum (). rename ((x, ' Total ')))
    for x, y in my_table. groupby (level= 0 )
]). append ( my_table.sum (). rename ((' Large ', ' Total ')))

	position F G
team all_star		
A N NaN 4.0
               Y 7.0 4.0
           Overall 7.0 8.0
B N 5.0 9.0
               Y 12.0 NaN
           Total 17.0 9.0
Grand Total 24.0 17.0

Kami sekarang memiliki dua baris subtotal yang menunjukkan poin subtotal untuk setiap tim dan posisi, serta baris total keseluruhan yang menunjukkan total keseluruhan untuk setiap kolom.

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 membuat tabel pivot dengan sejumlah nilai
Pandas: cara mengganti nilai NaN di tabel pivot dengan nol
Pandas: Cara mengonversi PivotTable ke DataFrame

Tambahkan komentar

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