Allen's 데이터 맛집

파이썬 Pandas의 pivot_table 함수 본문

Programming/Python

파이썬 Pandas의 pivot_table 함수

Allen93 2024. 7. 24. 11:40

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