Переформатування за допомогою методу pivot

Переформатування даних у pandas

Maria Eugenia Inzaugarat

Data Scientist

З довгого у широкий формат

  • Показати зв'язок між двома стовпцями
  • Операції з часовими рядами для змінних
  • Операція, що вимагає унікальних значень у стовпцях змінної
1 https://pandas.pydata.org/docs/user_guide/reshaping.html
Переформатування даних у pandas

З довгого у широкий формат

DataFrame у довгому форматі

Переформатування даних у pandas

Метод pivot

Стрілка від довгого до широкого формату

 

виклик методу pandas pivot

Переформатування даних у pandas

Метод pivot

Стрілка від довгого до широкого формату

 

Виклик pivot з аргументами

Переформатування даних у pandas

Метод pivot

Довгий і широкий DataFrame зі виділеними стовпцем та індексом

 

Виділено аргумент index із назвою стовпця

Переформатування даних у pandas

Метод pivot

Довгий і широкий DataFrame з виділеними стовпцем і назвами стовпців

 

Виділено аргумент columns із назвою стовпця

Переформатування даних у pandas

Метод pivot

Довгий і широкий DataFrame з виділеними стовпцем і значеннями

 

Виділено аргумент values із назвою стовпця

Переформатування даних у pandas

Метод pivot

Підсвічене значення комірки NaN

 

Підсвічені аргументи з назвами стовпців

Переформатування даних у pandas

Перетворення набору даних за допомогою pivot

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
Переформатування даних у pandas

Перетворення набору даних за допомогою pivot

fifa.pivot(index='name'                                            )
Переформатування даних у pandas

Перетворення набору даних за допомогою pivot

fifa.pivot(index='name', columns='variable'                        )
Переформатування даних у pandas

Перетворення набору даних за допомогою pivot

fifa.pivot(index='name', columns='variable', values='metric_system')
         variable  height   weight
             name        
Cristiano Ronaldo     187       83
         J. Oblak     188       87
Переформатування даних у pandas

Pivot кількох стовпців

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
Переформатування даних у pandas

Pivot кількох стовпців

 

Стрілка від довгого до широкого з ієрархічними стовпцями

 

Виділено аргументи index і columns з назвами стовпців

Переформатування даних у pandas

Pivot кількох стовпців

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
Переформатування даних у pandas

Помилка через дублікати записів

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
Переформатування даних у pandas

Помилка через дублікати записів

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 <--
Переформатування даних у pandas

Помилка через дублікати записів

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
Переформатування даних у pandas

Давайте потренуємось!

Переформатування даних у pandas

Preparing Video For Download...