Přetvoření pomocí metody pivot

Přetváření dat s pandas

Maria Eugenia Inzaugarat

Data Scientist

Z dlouhého na široký formát

  • Zobrazení vztahu mezi dvěma sloupci
  • Operace s časovými řadami s proměnnými
  • Operace vyžadující unikátní proměnnou ve sloupcích
1 https://pandas.pydata.org/docs/user_guide/reshaping.html
Přetváření dat s pandas

Z dlouhého na široký formát

DataFrame v dlouhém formátu

Přetváření dat s pandas

Metoda pivot

Šipka ukazující z dlouhého na široký formát

 

Volání metody pivot v pandas

Přetváření dat s pandas

Metoda pivot

Šipka ukazující z dlouhého na široký formát

 

Volání pivot s argumenty

Přetváření dat s pandas

Metoda pivot

Dlouhý a široký DataFrame se zvýrazněným sloupcem a indexem

 

Zvýrazněný argument index s názvem sloupce

Přetváření dat s pandas

Metoda pivot

Dlouhý a široký DataFrame se zvýrazněnými sloupci a názvy sloupců

 

Zvýrazněný argument columns s názvem sloupce

Přetváření dat s pandas

Metoda pivot

Dlouhý a široký DataFrame se zvýrazněnými sloupci a hodnotami

 

Zvýrazněný argument values s názvem sloupce

Přetváření dat s pandas

Metoda pivot

Zvýrazněná buňka s hodnotou NaN

 

Zvýrazněné argumenty s názvy sloupců

Přetváření dat s pandas

Pivotování datové sady

fifa = pd.read_csv('fifa_players.csv')
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
Přetváření dat s pandas

Pivotování datové sady

fifa.pivot(index='name'                                            )
Přetváření dat s pandas

Pivotování datové sady

fifa.pivot(index='name', columns='variable'                        )
Přetváření dat s pandas

Pivotování datové sady

fifa.pivot(index='name', columns='variable', values='metric_system')
         variable  height   weight
             name        
Cristiano Ronaldo     187       83
         J. Oblak     188       87
Přetváření dat s pandas

Pivotování více sloupců

fifa.pivot(index='name', columns='variable', values=['metric_system', 'imperial_system'])
                     metric_system     imperial_system       
         variable   height  weight     height   weight
             name                                                         
Cristiano Ronaldo      187      83       6.13    183.0
         J. Oblak      188      87       6.16    191.0
Přetváření dat s pandas

Pivotování více sloupců

 

Šipka ukazující z dlouhého na široký formát s hierarchickým indexem sloupců

 

Zvýrazněné argumenty index a columns s názvy sloupců

Přetváření dat s pandas

Pivotování více sloupců

fifa.pivot(index="name", columns="variable")
                     metric_system     imperial_system       
         variable   height  weight     height   weight
             name                                                         
Cristiano Ronaldo      187      83       6.13    183.0
         J. Oblak      188      87       6.16    191.0
Přetváření dat s pandas

Chyba duplicitních záznamů

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
Přetváření dat s pandas

Chyba duplicitních záznamů

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 <--
Přetváření dat s pandas

Chyba duplicitních záznamů

another_fifa.pivot(index="name", columns="variable")
ValueError: Index contains duplicate entries, cannot reshape

 

another_fifa = another_fifa.drop(4, axis=0)
another_fifa.pivot(index="name", columns="variable")
                     metric_system     imperial_system       
         variable   height  weight     height   weight
             name                                                         
Cristiano Ronaldo      187      83       6.13    183.0
         J. Oblak      188      87       6.16    191.0
Přetváření dat s pandas

Pojďme si procvičit!

Přetváření dat s pandas

Preparing Video For Download...