Tabel pivot

Mengubah Bentuk Data dengan pandas

Maria Eugenia Inzaugarat

Data Scientist

Batasan metode pivot

another_fifa.head()
                 name    variable  metric_system  imperial_system
0   Cristiano Ronaldo      weight             83           183.00
1            J. Oblak      weight             87           191.00
2   Cristiano Ronaldo      height            187             6.13
3     J. Oblak             height            188             6.16
4   Cristiano Ronaldo      height            187             6.14
another_fifa.pivot(index="name", columns="variable")
Traceback (most recent call last):
   ValueError: Index contains duplicate entries, cannot reshape
Mengubah Bentuk Data dengan pandas

Batasan metode pivot

  • Pivot serbaguna
  • Pasangan indeks/kolom harus unik
  • Tidak dapat mengagregasi nilai
Mengubah Bentuk Data dengan pandas

Tabel pivot

  • DataFrame berisi statistik yang merangkum data dari DataFrame yang lebih besar

 

DataFrame dengan statistik ringkasan

Mengubah Bentuk Data dengan pandas

Tabel pivot

DataFrame format panjang

Mengubah Bentuk Data dengan pandas

Tabel pivot

Panah dari format panjang ke lebar dengan statistik ringkasan

 

Pemanggilan pivot_table

Mengubah Bentuk Data dengan pandas

Tabel pivot

DataFrame panjang dan ringkasan dengan kolom serta indeks disorot

 

Pemanggilan pivot dengan argumen index dan columns

Mengubah Bentuk Data dengan pandas

Tabel pivot

DataFrame panjang dan ringkasan dengan kolom dan values disorot

 

Pemanggilan pivot dengan argumen values dan fungsi agregasi

Mengubah Bentuk Data dengan pandas

Tabel pivot

another_fifa.pivot_table(index="name", columns="variable", aggfunc="mean")
                     metric_system     imperial_system       
         variable   height  weight     height   weight
             name                                                         
Cristiano Ronaldo      187      83      6.135    183.0
         J. Oblak      188      87      6.160    191.0
Mengubah Bentuk Data dengan pandas

Indeks hierarkis

fifa_players.head(6)
      first     last   movement   overall  attacking
0    Lionel    Messi   shooting        92         70
1 Cristiano  Ronaldo   shooting        93         89
2    Lionel    Messi    passing        92         92
3 Cristiano  Ronaldo    passing        82         83
4    Lionel    Messi    passing        96         88
5 Cristiano  Ronaldo    passing        89         84
Mengubah Bentuk Data dengan pandas

Indeks hierarkis

fifa_players.head(6)
      first     last   movement   overall  attacking
0    Lionel    Messi   shooting        92         70
1 Cristiano  Ronaldo   shooting        93         89
2    Lionel    Messi    passing        92         92
3 Cristiano  Ronaldo    passing        82         83
4    Lionel    Messi    passing        96         88
5 Cristiano  Ronaldo    passing        89         84
fifa_players.pivot_table(index=                 , columns="movement", values=                        , aggfunc=     )
Mengubah Bentuk Data dengan pandas

Indeks hierarkis

fifa_players.head(6)
      first     last   movement   overall  attacking
0    Lionel    Messi   shooting        92         70
1 Cristiano  Ronaldo   shooting        93         89
2    Lionel    Messi    passing        92         92
3 Cristiano  Ronaldo    passing        82         83
4    Lionel    Messi    passing        96         88
5 Cristiano  Ronaldo    passing        89         84
fifa_players.pivot_table(index=["first", "last"], columns="movement", values=                        , aggfunc=     )
Mengubah Bentuk Data dengan pandas

Indeks hierarkis

fifa_players.head(6)
      first     last   movement   overall  attacking
0    Lionel    Messi   shooting        92         70
1 Cristiano  Ronaldo   shooting        93         89
2    Lionel    Messi    passing        92         92
3 Cristiano  Ronaldo    passing        82         83
4    Lionel    Messi    passing        96         88
5 Cristiano  Ronaldo    passing        89         84
fifa_players.pivot_table(index=["first", "last"], columns="movement", values=["overall", "attacking"], aggfunc="max")
                           attacking           overall
          movement  passing shooting  passing shooting
    first     last                
Cristiano  Ronaldo       84       89       89       93
   Lionel    Messi       92       70       96       92
Mengubah Bentuk Data dengan pandas

Margin

fifa_players.pivot_table(index=["first", "last"], columns="movement", aggfunc="count",             )
Mengubah Bentuk Data dengan pandas

Margin

fifa_players.pivot_table(index=["first", "last"], columns="movement", aggfunc="count", margins=True)
                                attacking                  overall
          movement  passing shooting  All    passing shooting  All
    First     Last                
Cristiano  Ronaldo        2        1    3          2        1    3
   Lionel    Messi        2        1    3          2        1    3
      All                 4        2    6          4        2    6
Mengubah Bentuk Data dengan pandas

Pivot atau tabel pivot?

 

Apakah DataFrame memiliki lebih dari satu nilai per pasangan indeks/kolom?

Perlu multi-index pada DataFrame hasil pivot?

Perlu statistik ringkasan untuk DataFrame besar?

Ya! Gunakan .pivot_table()

Mengubah Bentuk Data dengan pandas

Ayo berlatih!

Mengubah Bentuk Data dengan pandas

Preparing Video For Download...