[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

Pandas 데이터프레임 pivot table

inu 2020. 7. 16. 23:09
반응형

pivot table

  • pivot table은 데이터 프레임의 인덱스와 컬럼을 원하는대로 조정할 수 있다.
  • 데이터프레임 내에 존재하는 컬럼값을 인덱스로 설정해 그루핑하고, 컬럼을 컬럼 내 데이터별로 나눌 수도 있다.
    A    B      C  D  E
0  foo  one  small  1  2
1  foo  one  large  2  4
2  foo  one  large  2  5
3  foo  two  small  3  5
4  foo  two  small  3  6
5  bar  one  large  4  6
6  bar  one  small  5  8
7  bar  two  small  6  9
8  bar  two  large  7  9
  • 이와 같은 데이터가 있다고 하자.
import pd

dfr = pd.pivot_table(df, index=['A','B'], columns='C', values='E')      
print(dfr)
C        large  small
A   B                
bar one    6.0    8.0
    two    9.0    9.0
foo one    4.5    2.0
    two    NaN    5.5
  • 해당 데이터 컬럼 중에 어떤 컬럼들을 인덱스로 활용할지, 어떤 컬럼들을 컬럼으로 삼을지 정할 수 있다. 그리고 화면에 표시할 value값이 무엇인지도 정할 수 있다.
  • 즉, 인덱스와 컬럼의 데이터가 겹치는 부분에 어떤 데이터가 존재하는지 결정할 수 있는 것이다.
  • 데이터가 겹칠 경우 default로 평균값을 출력한다. 하지만 이는 aggfunc=np.mean과 같이 옵션을 주어 어떤 값을 출력할지 결정할 수 있다.
  • 위의 데이터에서는 A와 B를 인덱스로 삼아 멀티인덱싱하였고, C를 칼럼으로 정해 E값을 표시했다.
  • cf. groupby를 사용할 때와 다르게 인덱스부분뿐만 아니라 칼럼부분도 멀티인덱싱(?) 할 수 있다. 원리는 인덱스의 멀티인덱싱과 같기 때문에 설명은 생략하겠다.
  • cf. 존재하지 않는 값은 NaN으로 표시되지만, fill_value= 옵션을 활용해 NaN에 무엇이 들어갈지 결정할 수 있다.
반응형