pivot 메서드로 재구조화

pandas로 데이터 재구조화하기

Maria Eugenia Inzaugarat

Data Scientist

Long에서 Wide로

  • 두 열 간 관계 보여주기
  • 시계열 변수 연산
  • 열이 고유해야 하는 연산
1 https://pandas.pydata.org/docs/user_guide/reshaping.html
pandas로 데이터 재구조화하기

Long에서 Wide로

Long 형식의 DataFrame

pandas로 데이터 재구조화하기

pivot 메서드

Long에서 Wide로 가리키는 화살표

 

pandas pivot 메서드 호출

pandas로 데이터 재구조화하기

pivot 메서드

Long에서 Wide로 가리키는 화살표

 

인수가 포함된 pivot 호출

pandas로 데이터 재구조화하기

pivot 메서드

열과 인덱스가 강조된 Long/Wide DataFrame

 

열 이름과 함께 강조된 index 인수

pandas로 데이터 재구조화하기

pivot 메서드

열과 열 이름이 강조된 Long/Wide DataFrame

 

열 이름과 함께 강조된 columns 인수

pandas로 데이터 재구조화하기

pivot 메서드

열과 값이 강조된 Long/Wide DataFrame

 

열 이름과 함께 강조된 values 인수

pandas로 데이터 재구조화하기

pivot 메서드

NaN 셀 값이 강조됨

 

열 이름과 함께 강조된 인수들

pandas로 데이터 재구조화하기

데이터셋 피벗하기

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로 데이터 재구조화하기

데이터셋 피벗하기

fifa.pivot(index='name'                                            )
pandas로 데이터 재구조화하기

데이터셋 피벗하기

fifa.pivot(index='name', columns='variable'                        )
pandas로 데이터 재구조화하기

데이터셋 피벗하기

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로 데이터 재구조화하기

여러 열 피벗하기

 

계층형 열 인덱스로 Long에서 Wide로 화살표

 

열 이름과 함께 강조된 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...