Python Pandas

Pandas Pivot Table 활용 (pivot_table())

PyExplorer 2025. 2. 19. 09:34
728x90

Pandas Pivot Table 활용 (pivot_table())

데이터 분석을 진행하다 보면 데이터를 요약하고 집계해야 하는 경우가 많습니다. Pandas의 pivot_table() 함수는 이러한 데이터 요약을 편리하게 수행할 수 있도록 도와주는 강력한 도구입니다. 이번 포스팅에서는 pivot_table()의 개념과 활용법을 예제와 함께 살펴보겠습니다.

1. Pivot Table이란?

Pivot Table(피벗 테이블)은 특정 기준에 따라 데이터를 그룹화하고, 해당 그룹의 값을 집계하여 요약된 형태로 보여주는 테이블입니다. pivot_table() 함수는 다음과 같은 기능을 제공합니다.

  • 데이터를 그룹화하여 요약
  • 여러 개의 집계 함수를 적용 가능
  • 멀티 인덱스를 활용한 다차원 분석 가능

Pandas에서 제공하는 pivot_table() 함수의 기본 문법은 다음과 같습니다.

pd.pivot_table(
    data, 
    values=None, 
    index=None, 
    columns=None, 
    aggfunc='mean', 
    fill_value=None, 
    margins=False, 
    margins_name='All'
)

2. 기본적인 Pivot Table 사용법

예제 데이터를 생성하여 pivot_table()의 기본적인 사용법을 살펴보겠습니다.

import pandas as pd

# 예제 데이터 생성
data = {
    '날짜': ['2024-01-01', '2024-01-01', '2024-01-02', '2024-01-02', '2024-01-03'],
    '도시': ['서울', '부산', '서울', '부산', '서울'],
    '판매량': [100, 200, 150, 250, 300],
    '매출': [1000, 2000, 1500, 2500, 3000]
}
df = pd.DataFrame(data)
print(df)

위의 데이터프레임을 사용하여 도시별 평균 판매량을 구해 보겠습니다.

pivot = pd.pivot_table(df, values='판매량', index='도시', aggfunc='mean')
print(pivot)

출력 결과:

       판매량
도시        
부산  225.0
서울  183.3

3. 여러 개의 값과 여러 개의 집계 함수 적용하기

여러 개의 값을 동시에 요약하거나, 여러 개의 집계 함수를 적용할 수도 있습니다.

pivot = pd.pivot_table(df, values=['판매량', '매출'], index='도시', aggfunc=['mean', 'sum'])
print(pivot)

출력 결과:

            mean           sum      
          판매량     매출     판매량    매출
도시                               
부산     225.0  2250.0     450  4500
서울     183.3  1833.3     550  5500

4. 다중 인덱스를 활용한 피벗 테이블

날짜별, 도시별 판매량과 매출을 함께 분석하려면 여러 개의 인덱스를 사용할 수 있습니다.

pivot = pd.pivot_table(df, values=['판매량', '매출'], index=['날짜', '도시'], aggfunc='sum')
print(pivot)

출력 결과:

                 판매량    매출
날짜          도시               
2024-01-01  부산   200  2000
            서울   100  1000
2024-01-02  부산   250  2500
            서울   150  1500
2024-01-03  서울   300  3000

5. 열(columns) 기준으로 피벗 테이블 만들기

열(columns) 옵션을 사용하여 데이터를 더욱 직관적으로 정리할 수도 있습니다.

pivot = pd.pivot_table(df, values='판매량', index='날짜', columns='도시', aggfunc='sum')
print(pivot)

출력 결과:

도시         부산    서울
날짜                
2024-01-01  200  100
2024-01-02  250  150
2024-01-03  NaN  300

6. 결측값 처리 (fill_value 옵션)

위의 결과를 보면 일부 값이 NaN으로 표시됩니다. fill_value 옵션을 사용하면 결측값을 특정 값으로 채울 수 있습니다.

pivot = pd.pivot_table(df, values='판매량', index='날짜', columns='도시', aggfunc='sum', fill_value=0)
print(pivot)

출력 결과:

도시         부산    서울
날짜                
2024-01-01  200  100
2024-01-02  250  150
2024-01-03    0  300

7. 전체 합계를 계산하는 margins 옵션

margins=True 옵션을 설정하면 전체 합계를 함께 계산할 수 있습니다.

pivot = pd.pivot_table(df, values='판매량', index='도시', aggfunc='sum', margins=True, margins_name='총합')
print(pivot)

출력 결과:

       판매량
도시        
부산    450
서울    550
총합   1000

8. 정리

Pandas의 pivot_table() 함수는 데이터를 그룹화하여 요약하는 데 유용한 기능을 제공합니다. 주요 기능은 다음과 같습니다.

  • 특정 기준(index)으로 데이터를 그룹화하여 요약
  • 여러 개의 값(values)을 한 번에 집계 가능
  • 여러 개의 집계 함수(aggfunc) 적용 가능
  • 결측값 처리 (fill_value)
  • 전체 합계 계산 (margins)

실제 데이터 분석에서는 피벗 테이블을 사용하여 데이터를 더욱 효과적으로 요약하고 패턴을 파악할 수 있습니다. 이를 활용하여 데이터 분석의 효율을 높여 보시기 바랍니다.

728x90