데이터 분석 18일차
Pivot Table은 데이터의 특정 열을 기준으로 그룹화하고, 원하는 방식으로 집계하여 재구성할 수 있는 도구이다. pandas 라이브러리의 pivot_table() 함수를 사용하여 데이터 분석을 쉽게 수행할 수 있다.🔹Pivot Table의 주요 인자
| 인자 | 설명 |
|---|---|
| index | 인덱스로 사용할 열 (행 그룹 기준) |
| columns | 열로 사용할 열 (컬럼 그룹 기준) |
| values | 값으로 사용할 열 (집계 연산 수행 대상) |
| aggfunc | 집계 함수 (어떠한 계산을 수행할지 결정) |
sum | 합계 |
mean | 평균 |
std | 표준편차 |
count | 개수 |
nunique | 개수(중복 제거) |
max | 최대값 |
min | 최소값 |
| fill_value | NaN 값을 처리하고 싶을 때 사용 (예: fill_value=0) |
| dropna | 결측치(NaN) 삭제 여부 결정 (dropna=True 설정 시 결측값을 포함한 행/열 제거) |
| sort | index 또는 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 옵션을 활용하여 데이터 정리 가능✅ - 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