Omformning med pivot-metoden

Omforma data med pandas

Maria Eugenia Inzaugarat

Data Scientist

Från långt till brett format

  • Visa relationen mellan två kolumner
  • Tidsserieoperationer med variablerna
  • Operationer som kräver unika variabelvärden per kolumn
1 https://pandas.pydata.org/docs/user_guide/reshaping.html
Omforma data med pandas

Från långt till brett format

DataFrame i långt format

Omforma data med pandas

Pivot-metoden

Pil som pekar från långt till brett format

 

Anrop av pandas pivot-metod

Omforma data med pandas

Pivot-metoden

Pil som pekar från långt till brett format

 

Pivot-anropet med argument

Omforma data med pandas

Pivot-metoden

Långa och breda DataFrames med kolumn och index markerade

 

Markerat index-argument med kolumnnamn

Omforma data med pandas

Pivot-metoden

Långa och breda DataFrames med kolumn och kolumnnamn markerade

 

Markerat columns-argument med kolumnnamn

Omforma data med pandas

Pivot-metoden

Långa och breda DataFrames med kolumn och värden markerade

 

Markerat values-argument med kolumnnamn

Omforma data med pandas

Pivot-metoden

En NaN-cellsvärdets markerad

 

Markerade argument med kolumnnamn

Omforma data med pandas

Pivotera en datamängd

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
Omforma data med pandas

Pivotera en datamängd

fifa.pivot(index='name'                                            )
Omforma data med pandas

Pivotera en datamängd

fifa.pivot(index='name', columns='variable'                        )
Omforma data med pandas

Pivotera en datamängd

fifa.pivot(index='name', columns='variable', values='metric_system')
         variable  height   weight
             name        
Cristiano Ronaldo     187       83
         J. Oblak     188       87
Omforma data med pandas

Pivotera flera kolumner

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
Omforma data med pandas

Pivotera flera kolumner

 

Pil från långt till brett format med hierarkiskt kolumnindex

 

Markerade index- och columns-argument med kolumnnamn

Omforma data med pandas

Pivotera flera kolumner

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
Omforma data med pandas

Fel vid dubbletter

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
Omforma data med pandas

Fel vid dubbletter

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 <--
Omforma data med pandas

Fel vid dubbletter

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
Omforma data med pandas

Nu kör vi en övning!

Omforma data med pandas

Preparing Video For Download...