본문 바로가기
목차
Python/pandas

[Term] pivot 이란?

by ds31x 2025. 8. 20.
728x90
반응형

1. pivot 이란?

Pandas에서 pivot데이터의 모양(shape)을 바꾸는 기능 을 가리킴: reshaping

  • 특정 column의 값들을 row 인덱스(index)로,
  • 또 다른 column의 값들을 열(columns)
  • 지정하는 테이블을 만들고,
  • 해당 조합(index와 columns의 값들의 조합) 대응되는 또 다른 column 값을 값(values)으로 재배치.

이는
long format이라고 불리는 형태의 테이블(하나의 observation이 여러 행에 걸쳐 표시됨.)을
wide format이라고 불리는 형태(하나의 observation이 하나의 row(=record)로 표시됨.)로 바꾸어줌.

Pandas 에서는 DataFrame의 클래스의 메서드로

  • pivot() 메서드와
  • pivot_table() 메서드를 통해 지원.

2. pivot의 원래 뜻.

단어 pivot
영어에서 "축을 중심으로 회전하다"라는 뜻을 가짐.

Pandas에서는

  • 데이터의 한 축(index)을 고정하고,
  • 다른 축(columns)으로 회전(pivot)시켜 배열하는 개념을 반영하여
  • pivotpivot_table 등의 DataFrame 객체의 메서드들의 이름이 유래됨.

즉,
각 데이터를 일종의 vector space에 놓인 point라고 생각하고,
해당 vector space의 축들을 변환시켜 새로운 관점에서 재정렬한다는 의미를 지님.


3. 예제와 시각적 이해

df.pivot(
    index='foo', 
    columns='bar', 
    values='baz',
)

아래 그림을 보시면, 왼쪽의 long format인 데이터(Stacked로 표시.)가
pivot을 통해 오른쪽의 표(Record로 표시)와 같은 wide format으로 변환된 모습을 확인할 수 있음.

  • 여기서 Record라는 표현은 "하나의 행(row)이 하나의 관측단위(record)을 나타냄" 을 의미(wide-form)함:
    observation = reocrd = row.
  • 즉, foo=one이나 foo=two 같은 개별 observation(관측)가 한 줄에 표시되어
  • 해당 row가 완전한 기록(record)으로 해석된다는 점을 강조함.

주의

위의 예처럼 foobar의 조합에 대해 유일하게 baz의 요소가 결정되어야만 Pandas의 DataFramepivot()은 동작함.

동일한 foobar의 조합에 대해 여러 baz가 존재한다면,
이들을 집계(aggregation)하여 하나의 값으로 만들어야 하며, 이는 pivot_table()함수에서 제공하는 기능임

2025.08.19 - [Python] - [Pandas] pivot_table 메서드

 

[Pandas] pivot_table 메서드

.pivot()과 같이 reshaping이 가능한 메서드.차이점은 .pivot()은 행-열 조합에 중복되는 요소가 있는 경우 에러가 발생하나,.pivot_table()은 aggregation을 통한 하나의 대표값으로 처리가 가능함.groupby+aggrega

ds31x.tistory.com


4. Long format vs Wide format (많이 쓰이는 용어와의 연결)

데이터 분석에서 자주 사용하는 표현으로 long formatwide
format
이 있으며 이들은 다음의 의미를 지님:

  • Long format (세로형)
    • 하나의 관측치(observation)가 여러 row에 걸쳐 누적 표시되는 방식.
    • 위 그림의 Stacked가 여기에 해당.
    • 같은 foo가 여러 번 등장하고,
    • 그때마다 bar, baz 값이 달라지면서 세로로 길게 데이터가 쌓임.
  • Wide format (가로형)
    • 하나의 observation에 대한 여러 값이 한 행에 가로로 정리되는 방식.
    • 위 그림의 Record가 여기에 해당.
    • bar 값들이 column 방향으로 펼쳐져서,
    • 같은 foo가 row 방향으로 한 번만등장하고 해당하는 bar의 여러 값들이 옆으로 나열됨.

Long과 Wide라는 표현은 하나의 observation을 대상으로 생각해야함.
동일 observation이 길게 표현되었는지? 아니면 넓게 표현되었는지를 의미.


5. 용어

  • record:
    • 데이터베이스/table에서 하나의 관측 단위를 나타내는 행(row)
    • observation과 유사
  • row:
    • 데이터프레임의 가로단위.
    • 개별 record에 해당.
  • observation
    • 주로 통계학적 표현으로 많이 사용됨.
    • 연구/실험에서 얻어진 개별 데이터 단위

같이보면 좋은 자료들

2025.08.19 - [Python/pandas] - [Pandas] pivot_table() 메서드

 

[Pandas] pivot_table 메서드

.pivot()과 같이 reshaping이 가능한 메서드.차이점은 .pivot()은 행-열 조합에 중복되는 요소가 있는 경우 에러가 발생하나,.pivot_table()은 aggregation을 통한 하나의 대표값으로 처리가 가능함.groupby+aggrega

ds31x.tistory.com

2025.08.20 - [Python/pandas] - [Pandas] groupby() 메서드

 

[Pandas] groupby() 메서드

groupby() 메서드는 DataFrame의 데이터를 하나 이상의 키를 기준으로 그룹화(grouping) 하여, 각 그룹에 대해 집계(aggregation)·변환(transform)·필터(filter) 연산을 적용할 수 있게 해주는 도구임.Split–Apply

ds31x.tistory.com

2025.08.24 - [Python/pandas] - [Pandas] melt() 메서드

 

[Pandas] melt() 메서드

DataFrame.melt()란?melt() 메서드는 스프레드시트와 같이 wide-form (or wide format) 로 정리된 데이터를 통계 분석이나 시각화에 적합한 long-form (or long format) 로 변환하는 데 사용.이 과정은마치 넓게 펼쳐

ds31x.tistory.com

2025.08.23 - [Python/pandas] - [Pandas] stack() 과 unstack()

 

[Pandas] stack() 과 unstack()

stack():DataFrame의 columns(컬럼)을 rows(행)로 변환하여Wide format(넓은 형태)을 Long format(긴 형태)으로 만드는 메서드unstack():MultiIndex의 특정 level(레벨)을 columns(컬럼)으로 변환하여Long format(긴 형태)을 Wid

ds31x.tistory.com


 

728x90