Allen's 데이터 맛집
파이썬 Pandas의 pivot_table 함수 본문
pivot_table 함수란?
Pandas의 pivot_table 함수는 데이터를 요약하고 집계하는 데 사용되는 강력한 도구입니다. Excel의 피벗 테이블과 유사한 기능을 제공하며, 데이터를 재구성하고 분석하는 데 매우 유용합니다.
기본 사용법
pivot_table의 기본 구조
import pandas as pd
# 예시 데이터
data = {
'날짜': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],
'카테고리': ['A', 'B', 'A', 'B'],
'매출': [100, 200, 150, 250]
}
df = pd.DataFrame(data)
# 피벗 테이블 생성
pivot = df.pivot_table(index='날짜', columns='카테고리', values='매출', aggfunc='sum')
print(pivot)
이 코드는 날짜별, 카테고리별 매출 합계를 계산하여 피벗 테이블을 생성합니다.
카테고리 A B
날짜
2023-01-01 100 200
2023-01-02 150 250
주요 매개변수
- index: 피벗 테이블의 행 인덱스로 사용할 열 이름.
- columns: 피벗 테이블의 열 인덱스로 사용할 열 이름.
- values: 피벗 테이블에서 집계할 데이터 열 이름.
- aggfunc: 데이터 집계 방법 (기본값: 'mean'). 'sum', 'count', 'max', 'min' 등 다양한 집계 함수를 사용할 수 있습니다.
고급 사용법
다중 집계 함수 적용
pivot_table 함수는 여러 개의 집계 함수를 동시에 적용할 수 있습니다.
pivot = df.pivot_table(index='날짜', columns='카테고리', values='매출', aggfunc=['sum', 'mean'])
print(pivot)
결과는 다음과 같이 표시됩니다
sum mean
카테고리 A B A B
날짜
2023-01-01 100 200 100.0 200.0
2023-01-02 150 250 150.0 250.0
다중 인덱스와 열
여러 열을 인덱스와 열로 사용할 수도 있습니다.
data = {
'날짜': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],
'카테고리': ['A', 'B', 'A', 'B'],
'지역': ['서울', '서울', '부산', '부산'],
'매출': [100, 200, 150, 250]
}
df = pd.DataFrame(data)
pivot = df.pivot_table(index=['날짜', '지역'], columns='카테고리', values='매출', aggfunc='sum')
print(pivot)
결과는 다음과 같습니다:
카테고리 A B
날짜 지역
2023-01-01 서울 100 200
2023-01-02 부산 150 250
결측값 처리
결측값을 특정 값으로 채우거나 제거할 수 있습니다.
pivot = df.pivot_table(index='날짜', columns='카테고리', values='매출', aggfunc='sum', fill_value=0)
print(pivot)
이 코드는 결측값을 0으로 채웁니다.
실제 활용 예시
예시 1: 매출 분석
대형 쇼핑몰의 월별, 제품군별 매출 데이터를 분석할 때 pivot_table을 사용하여 한눈에 파악할 수 있습니다.
data = {
'월': ['1월', '1월', '2월', '2월', '3월', '3월'],
'제품군': ['전자제품', '가구', '전자제품', '가구', '전자제품', '가구'],
'매출': [1000, 1500, 1200, 1300, 1100, 1400]
}
df = pd.DataFrame(data)
pivot = df.pivot_table(index='월', columns='제품군', values='매출', aggfunc='sum')
print(pivot)
예시 2: 직원 근태 관리
직원들의 출근, 퇴근 시간을 분석하여 주별, 직원별 근무 시간을 계산할 수 있습니다.
data = {
'주': [1, 1, 2, 2, 3, 3],
'직원': ['김철수', '이영희', '김철수', '이영희', '김철수', '이영희'],
'근무시간': [40, 35, 38, 36, 42, 37]
}
df = pd.DataFrame(data)
pivot = df.pivot_table(index='주', columns='직원', values='근무시간', aggfunc='sum')
print(pivot)
728x90