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)시켜 배열하는 개념을 반영하여
pivot및pivot_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)으로 해석된다는 점을 강조함.
주의
위의 예처럼 foo와 bar의 조합에 대해 유일하게 baz의 요소가 결정되어야만 Pandas의 DataFrame의 pivot()은 동작함.
동일한 foo와 bar의 조합에 대해 여러 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 format과 wide
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
'Python > pandas' 카테고리의 다른 글
| [Pandas] .map() 과 .apply() 메서드 (4) | 2025.08.20 |
|---|---|
| [Pandas] groupby() 메서드 (0) | 2025.08.20 |
| [Pandas] pivot_table() 메서드 (0) | 2025.08.19 |
| [ML] pandas.DataFrame 에서 EDA에 적합한 메서드 요약 (0) | 2025.05.16 |
| [DL] Pandas 로 csv 읽기: read_csv() (0) | 2024.04.13 |