Tabele pivot

Restructurarea datelor cu pandas

Maria Eugenia Inzaugarat

Data Scientist

Limitările metodei 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
Restructurarea datelor cu pandas

Limitările metodei pivot

  • Pivotare de uz general
  • Perechea index/coloană trebuie să fie unică
  • Nu poate agrega valori
Restructurarea datelor cu pandas

Tabelă pivot

  • Un DataFrame care conține statistici ce rezumă datele unui DataFrame mai mare

 

Un DataFrame care afișează statistici rezumative

Restructurarea datelor cu pandas

Tabelă pivot

Un DataFrame în format lung

Restructurarea datelor cu pandas

Tabelă pivot

Săgeată care indică transformarea din format lung în format lat cu statistici rezumative

 

Apelul pivot_table

Restructurarea datelor cu pandas

Tabelă pivot

Un DataFrame lung și rezumativ cu coloane și indecși evidențiați

 

Apelul pivot cu argumentele index și columns

Restructurarea datelor cu pandas

Tabelă pivot

Un DataFrame lung și rezumativ cu coloană și valori evidențiate

 

Apelul pivot cu argumentele values și funcție de agregare

Restructurarea datelor cu 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
Restructurarea datelor cu pandas

Indecși ierarhici

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
Restructurarea datelor cu pandas

Indecși ierarhici

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=     )
Restructurarea datelor cu pandas

Indecși ierarhici

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=     )
Restructurarea datelor cu pandas

Indecși ierarhici

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
Restructurarea datelor cu pandas

Margini

fifa_players.pivot_table(index=["first", "last"], columns="movement", aggfunc="count",             )
Restructurarea datelor cu pandas

Margini

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
Restructurarea datelor cu pandas

pivot sau pivot_table?

 

DataFrame-ul are mai mult de o valoare pentru fiecare pereche index/coloană?

Aveți nevoie de un multi-index în DataFrame-ul pivot rezultat?

Aveți nevoie de statistici rezumative ale DataFrame-ului dvs.?

Da! Folosiți .pivot_table()

Restructurarea datelor cu pandas

Să exersăm!

Restructurarea datelor cu pandas

Preparing Video For Download...