Преобразование формы с помощью метода pivot

Преобразование данных с помощью pandas

Maria Eugenia Inzaugarat

Data Scientist

Из длинного в широкий формат

  • Показать связь между двумя столбцами
  • Операции с временными рядами по переменным
  • Операции, требующие уникальных значений в столбце
1 https://pandas.pydata.org/docs/user_guide/reshaping.html
Преобразование данных с помощью pandas

Из длинного в широкий формат

DataFrame в длинном формате

Преобразование данных с помощью pandas

Метод pivot

Стрелка из длинного в широкий формат

 

Вызов метода pivot в pandas

Преобразование данных с помощью 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

Сведение нескольких столбцов

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

Сведение нескольких столбцов

 

Стрелка из длинного в широкий формат с иерархическим индексом столбцов

 

Выделенные аргументы index и columns с именами столбцов

Преобразование данных с помощью pandas

Сведение нескольких столбцов

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...