Pandas pivot_table 예제 및 설명
Pandas의 pivot_table은 데이터를 요약하고 분석하기에 유용한 도구입니다. 피벗테이블을 사용하면 특정 칼럼의 Data들을 column으로 해서 특정 값을 aggregate하는 새로운 분석 테이블을 만들어서 데이터를 분석할 수 있습니다. (예를 들어, g특히, 여러 개의 column으로 group by 되어 있는 테이블에서 한 번 더 group by를 해서 aggregate할 때 유용합니다.
피벗테이블이란?
Pivot table은 스프레드시트 프로그램(예: Excel, Google Sheets)에서 자주 사용되는 데이터 요약 기능 중 하나입니다. Pivot table은 원시 데이터를 기반으로 요약된 정보를 생성하는 것으로, 데이터를 쉽게 분석하고 시각화하는 데 도움이 됩니다.
사실 이렇게만 설명해서는 직접적으로 와닿지는 않기 때문에 예제에 함께 설명하면 조금 더 이해하기 쉽습니다.
다음은 Pivot table 예제입니다. 예를 들어, 아래와 같은 매출 데이터가 있다고 가정해봅시다.
지역 제품 날짜 매출
서울 제품A 2022-01-01 100
서울 제품B 2022-01-01 200
서울 제품A 2022-01-02 150
서울 제품B 2022-01-02 250
부산 제품A 2022-01-01 120
부산 제품B 2022-01-01 180
부산 제품A 2022-01-02 130
부산 제품B 2022-01-02 230
1. 지역별 매출 합계를 구하는 Pivot table
지역 서울 부산
제품
제품A 250 450
제품B 250 410
예제를 보면 위에서 설명했던 부분이 이해가 가실 거라고 생각합니다. (저는 개인적으로 이렇게 이해 하니깐 피벗테이블을 이해하기 쉬워서 공유드려봅니다.)
- 특정 칼럼의 데이터 → 컬럼으로 (지역의 데이터를 칼럼으로)
- 특정 칼럼을 → aggregate column (매출 데이터를 aggregate)
Pandas 피벗테이블
Pandas의 피벗테이블은 데이터를 요약하고 분석하기에 유용합니다. Pandas에서 피벗테이블을 사용하려면 DataFrame의 instance에서 pivot_table() 함수를 사용하면 됩니다. 다음은 pivot_table() 함수를 사용한 예시입니다.
주요 argument는 아래와 같습니다.
- aggfunc 옵션을 사용하여 특정 칼럼을 aggregate. default는 avg
- index 옵션을 사용하여 특정 칼럼을 index로 사용하도록 지정
- columns 옵션을 사용하여 특정 칼럼을 column으로 사용하도록 지정
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({
'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'],
'B': ['one', 'one', 'two', 'two', 'one', 'one'],
'C': ['x', 'y', 'x', 'y', 'x', 'y'],
'D': [1, 3, 2, 5, 4, 1]
})
# 피벗테이블 생성
table = pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'], aggfunc=sum)
print(table)
C x y
A B
bar one 4.0 1.0
two NaN 5.0
foo one 1.0 3.0
two 2.0 NaN
위 코드에서는 A, B, C, D 열을 가지는 데이터프레임 df를 생성하고, pivot_table() 함수를 사용하여 A와 B를 인덱스로, C를 칼럼으로 사용하여 D 값을 합한 피벗테이블 table을 생성하고 출력합니다.
피벗테이블 활용하기
이번에는 조금 더 실제 있을 것 같은 예시를 들어보겠습니다.
이름 날짜 수량
A | 2021년 1월 1일 | 100 |
B | 2021년 1월 2일 | 200 |
C | 2021년 1월 2일 | 300 |
A | 2021년 1월 3일 | 400 |
B | 2021년 1월 3일 | 500 |
C | 2021년 1월 3일 | 600 |
위 데이터를 피벗테이블로 만들면 다음과 같습니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({
'이름': ['A', 'B', 'C', 'A', 'B', 'C'],
'날짜': ['2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03', '2021-01-03', '2021-01-03'],
'수량': [100, 200, 300, 400, 500, 600]
})
# 피벗테이블 생성
table = pd.pivot_table(df, values='수량', index='이름', columns='날짜')
print(table)
날짜 2021-01-01 2021-01-02 2021-01-03
이름
A 100.0 NaN 400.0
B NaN 200.0 500.0
C NaN 300.0 600.0
위 코드에서는 이름, 날짜, 수량 열을 가지는 데이터프레임 df를 생성하고, pivot_table() 함수를 사용하여 이름을 인덱스로, 날짜를 칼럼으로 사용하여 수량 값을 합한 피벗테이블 table을 생성하고 출력합니다. 이렇게 만들어진 피벗테이블은 데이터를 요약하고 분석하기에 유용합니다.
마무리
이번 글에서는 Pandas에서 피벗테이블을 사용하는 방법을 정리해 봤습니다. 저 나름대로의 쉽게 이해하는 방법을 적어봤는데 도움이 되시면 좋겠네요~
'Computer Engineering > Data Engineering' 카테고리의 다른 글
Pandas DataFrame 조인 및 병합 / pandas merge, join, concat, (0) | 2023.07.02 |
---|---|
Airflow CeleryKubernetesExecutor 사용하기 (0) | 2023.06.16 |
Airflow Scheduler 역할 및 성능 개선 정리 (0) | 2023.04.14 |
Airflow Task 우선순위 설정하기(Priority weights) (0) | 2023.04.06 |
Pandas dataframe 메모리 사용량 확인하기 (0) | 2022.12.02 |