Belajar menggunakan Pivot Table di Python

By | January 14, 2021
Print Friendly, PDF & Email
4,104 Views

Bila kalian telah membaca teknik agregasi untuk mendapatkan sebuah informasi mengenai Sum, average, count, max, dan minimal atas sebuah grup data itu disebut dengan pivot table https://softscients.com/2020/06/10/mempercepat-query-jutaan-basis-data-menggunakan-agregasi/

Namun ada teknik/cara lain yang bisa digunakan khusus menangani pivot table pada data berbentuk data frame pada python yaitu menggunakan package seaborn. Bagi kalian yang sudah menggunakan Anaconda, tentu sudah terinstall secara default, yang bisa dicek via pip. Berikut hasil cek versi seaborn

C:\Users\mulka>pip show seaborn
Name: seaborn
Version: 0.10.1 
Summary: Seaborn: statistical data visualization
Home-page: http://seaborn.pydata.org
Author: Michael Waskom
Author-email: mwaskom@nyu.edu
License: BSD (3-clause)
Location: c:\programdata\anaconda3\lib\site-packages
Requires: numpy, scipy, matplotlib, pandas

Terlihat seaborn yang digunakan dengan versi 0.8. Namun kalau belum ada, kalian perlu install menggunakan perintah via pip  pip install seaborn

Mengenal Seaborn

Searborn merupakan package yang bertujuan untuk mempermudah pengguna python dalam membuat visualisasi data dengan core engine dari matplotlib terutama dalam menyajikan data statistik http://seaborn.pydata.org/. Kalau kalian menggunakan matplotlib dan pandas akan secara manual sekali membuat visualisasi data, apalagi data tersebut bersifat kategorikal. Nah keunggulan dari seaborn yaitu mempermudah pivot table. Contohnya sebagai berikut

   total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4
5       25.29  4.71    Male     No  Sun  Dinner     4
6        8.77  2.00    Male     No  Sun  Dinner     2
7       26.88  3.12    Male     No  Sun  Dinner     4
8       15.04  1.96    Male     No  Sun  Dinner     2
9       14.78  3.23    Male     No  Sun  Dinner     2
>>>

Data yang kita inginkan yaitu berapa sih sebaran data untuk total_bills yang diberikan pada hari Thru, Frid, Sat, Sun? Kode sangat singkat sekali yaitu

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")
sns.catplot(x="day", y="total_bill", jitter=False, data=tips)

Bekerja menggunakan Pivot Table

Menggunakan dataset tips diatas, kita akan mencoba membuat gambaran datasetnya. Kita cek dulu berapa sih total data recordnya?

len(tips)

Didapatkan angka 244 record,

Pivot Table Count()

Pertanyaan selanjutnya? Yaitu berapa jumlah/count/frekuensi pengunjung berdasarkan jenis kelamin: male / female?

tips.groupby('sex').count()

Didapatkan informasi sebagai berikut

        total_bill  tip  smoker  day  time  size
sex
Male           157  157     157  157   157   157
Female          87   87      87   87    87    87

Artinya dari 244 data, pengunjung berjenis kelamin Male sebanyak 157 record dan Female sebanyak 87, dapat disimpulkan bahwa ternyata male malah banyak yang pergi ke restoran dibandingkan female. Kita perjelas lagi, di hari apa male dan female sering pergi?

tips.groupby(['sex','day'])['tip'].aggregate('count').unstack()

hasil

day     Thur  Fri  Sat  Sun
sex
Male      30   10   59   58
Female    32    9   28   18

Dapat disimpulkan male banyak pergi ke restoran pada hari satuday dan female pada Thursday atau menggunakan function pivot_table

tips.pivot_table('size',index='sex',columns='day',aggfunc={'size':'count'})

hasil

day     Thur  Fri  Sat  Sun
sex
Male      30   10   59   58
Female    32    9   28   18

Aggfunc bisa diisi dengan ‘sum’, ‘mean’, ‘count’, ‘min’, ‘max’ dan yang lainnya

Pivot Table Sum()

Pertanyaan selanjutnya yaitu berapa grand total total_bill untuk masing-masing male dan female? Kita ingin tahu apakah Male banyak keluarkan uang juga untuk pergi ke restoran?

tips.groupby('sex')['total_bill'].sum()

hasil

sex
Male      3256.82
Female    1570.95

Male juga banyak keluarkan uang untuk pergi ke restoran sebanyak 3256.82. Lebih detailnya menggunakan function pivot_table

tips.pivot_table('total_bill',index='sex',columns='day',aggfunc={'total_bill':'sum'})

hasil

day       Thur     Fri      Sat      Sun
sex
Male    561.44  198.57  1227.35  1269.46
Female  534.89  127.31   551.05   357.70

 

Leave a Reply