파이썬 - Pivot Table, index

hyun-jin·2025년 3월 14일

데이터 분석

목록 보기
20/100
post-thumbnail

데이터 분석 18일차

1. Pivot Table(피벗 테이블)

  • Pivot Table은 데이터의 특정 열을 기준으로 그룹화하고, 원하는 방식으로 집계하여 재구성할 수 있는 도구이다.
  • pandas 라이브러리pivot_table() 함수를 사용하여 데이터 분석을 쉽게 수행할 수 있다.

🔹Pivot Table의 주요 인자

인자설명
index인덱스로 사용할 열 (행 그룹 기준)
columns열로 사용할 열 (컬럼 그룹 기준)
values값으로 사용할 열 (집계 연산 수행 대상)
aggfunc집계 함수 (어떠한 계산을 수행할지 결정)
sum합계
mean평균
std표준편차
count개수
nunique개수(중복 제거)
max최대값
min최소값
fill_valueNaN 값을 처리하고 싶을 때 사용 (예: fill_value=0)
dropna결측치(NaN) 삭제 여부 결정 (dropna=True 설정 시 결측값을 포함한 행/열 제거)
sortindex 또는 columns 기준으로 정렬 여부 결정

✅ pivot_table 예제 코드

import pandas as pd

# 샘플 데이터 생성
data = {
    '날짜': ['2024-01-01', '2024-01-01', '2024-01-02', '2024-01-02', '2024-01-03'],
    '제품': ['A', 'B', 'A', 'B', 'A'],
    '판매량': [10, 15, 20, 25, 30],
    '매출': [100, 150, 200, 250, 300]
}

df = pd.DataFrame(data)

# 날짜를 인덱스로, 제품을 컬럼으로 하여 판매량과 매출 합계를 출력
table = pd.pivot_table(df,
                       index='날짜',
                       columns='제품',
                       values=['판매량', '매출'],
                       aggfunc='sum',
                       fill_value=0)

print(table)
  • 출력:
판매량       매출       
제품          A   B    A    B  
날짜                          
2024-01-01  10  15  100  150  
2024-01-02  20  25  200  250  
2024-01-03  30   0  300    0  

📌 정리

  • pandas.pivot_table()은 데이터를 특정 기준으로 그룹화하고, 원하는 집계 함수를 적용할 수 있음
  • index, columns, alues를 설정하여 원하는 데이터를 분석 가능
  • aggfunc를 활용하여 다양한 집계 연산 수행 가능
  • fill_value를 이용하여 NaN 값을 적절히 대체 가능
  • dropna, sort 옵션을 활용하여 데이터 정리 가능

2. index()

✅ - DataFrame 생성 시 인덱스 설정

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['a', 'b', 'c']
}, index=['idx1', 'idx2', 'idx3'])
  • index=['idx1', 'idx2', 'idx3']를 사용하여 특정 문자열을 인덱스로 설정.

✔️ 출력:

       A  B
idx1   1  a
idx2   2  b
idx3   3  c

✅ - 특정 인덱스의 데이터 조회

df.loc['idx2']
  • loc[]을 사용하여 특정 인덱스 값 조회.

✔️ 출력:

A    2
B    b
Name: idx2, dtype: object

✅ - 인덱스 정렬

df.sort_index()
  • 인덱스를 기준으로 정렬.

✔️ 출력:

       A  B
idx1   1  a
idx2   2  b
idx3   3  c

✅ - 특정 열을 인덱스로 설정

df.set_index('A')
  • A 열을 인덱스로 설정.
  • 기존 인덱스가 없어지고 A 열이 새로운 인덱스로 변경됨.

✔️ 출력:

     B
A      
1    a
2    b
3    c

✅ - 현재 인덱스 확인

df.index
  • 현재 index 값을 확인.

✔️ 출력:

Index(['idx1', 'idx2', 'idx3'], dtype='object')

✅ - 인덱스 변경

df.index = ['1', '2', '3']
  • 기존 인덱스를 ['1', '2', '3']으로 변경.

✔️ 출력:

    A  B
1   1  a
2   2  b
3   3  c

✅ - 인덱스 초기화

df.reset_index(drop=True)
  • drop=True 옵션을 사용하여 기존 인덱스를 제거하고 숫자 인덱스로 리셋.

✔️ 출력:

   A  B
0  1  a
1  2  b
2  3  c

💭 피벗테이블에 조건 넣는게 은근 재미있는 듯 하다.^^

0개의 댓글