개발로그필름

[데이터 TIL] pivot_table() 본문

데이터분석가/데이터 TIL

[데이터 TIL] pivot_table()

yuullog 2025. 2. 7. 20:28
728x90
반응형
SMALL

📌 1️⃣ pivot_table()이란?

pivot_table()Pandas에서 제공하는 강력한 데이터 분석 도구

쉽게 말하면, 엑셀의 피벗 테이블과 같은 기능을 수행하는 함수

행(index)과 열(columns)을 기준으로 데이터를 요약해서 정리해주는 도구

숫자 데이터를 그룹화하여 평균, 합계, 개수 등을 계산할 수 있음

 


 

📌 2️⃣ pivot_table() 기본 사용법

df.pivot_table(index='행 컬럼', columns='열 컬럼', values='값을 요약할 컬럼', aggfunc='집계함수')

-집계 함수는 mean, sum, count, max, min 등을 말한다

 


 

📌 3️⃣ pivot_table() 직접 사용

🎯 샘플 데이터

먼저 간단한 데이터프레임을 만들어봤다

import pandas as pd

# 샘플 데이터
data = {
    '이름': ['철수', '영희', '민수', '수지', '철수', '영희', '민수', '수지'],
    '과목': ['수학', '수학', '수학', '수학', '영어', '영어', '영어', '영어'],
    '점수': [90, 80, 85, 95, 85, 88, 92, 78],
    '학년': [1, 1, 2, 2, 1, 1, 2, 2]
}

df = pd.DataFrame(data)

# 데이터 확인
print(df)

 

📌 출력 결과

   이름  과목  점수  학년
0  철수  수학  90   1
1  영희  수학  80   1
2  민수  수학  85   2
3  수지  수학  95   2
4  철수  영어  85   1
5  영희  영어  88   1
6  민수  영어  92   2
7  수지  영어  78   2

학생별 수학, 영어 점수

pivot_table()을 사용해서 데이터를 정리

 

반응형

 


 

📌 4️⃣ pivot_table() 예제 5가지

🎯 1) 과목별 평균 점수 구하기

df.pivot_table(index='과목', values='점수', aggfunc='mean')

 

📌 출력 결과

       점수
과목       
수학  87.5
영어  85.75

과목별 평균 점수를 구해서 보기 쉽게 정리

 

🎯 2) 학생별 과목 점수 정리

df.pivot_table(index='이름', columns='과목', values='점수', aggfunc='mean')

📌 출력 결과

과목   수학  영어
이름           
민수  85  92
수지  95  78
영희  80  88
철수  90  85

학생별로 수학 & 영어 점수를 정리

한눈에 학생별 성적을 비교 가능

 

🎯 3) 학년별 과목 평균 점수 구하기

df.pivot_table(index='학년', columns='과목', values='점수', aggfunc='mean')

📌 출력 결과

과목   수학  영어
학년           
1   85.0  86.5
2   90.0  85.0

1학년과 2학년의 과목별 평균 점수를 비교 가능

 

🎯 4) 과목별 학생 수 세기 (count 사용)

df.pivot_table(index='과목', values='점수', aggfunc='count')

📌 출력 결과

       점수
과목       
수학     4
영어     4

각 과목을 수강한 학생 수를 계산

 

🎯 5) 여러 개의 aggfunc 적용 (평균 + 최대 점수)

df.pivot_table(index='과목', values='점수', aggfunc=['mean', 'max'])

📌 출력 결과

      mean   max
과목               
수학   87.5   95
영어   85.75  92

각 과목의 평균 & 최고 점수를 한 번에 볼 수 있다

 


 

📌 5️⃣ pivot_table()의 추가 옵션

✅ 1) NaN 값이 있을 때 채우기 (fill_value)

df.pivot_table(index='이름', columns='과목', values='점수', aggfunc='mean', fill_value=0)

NaN 값이 있으면 0으로 채움

 

✅ 2) 여러 개의 index와 columns 사용

df.pivot_table(index=['학년', '이름'], columns='과목', values='점수', aggfunc='mean')

학년과 이름을 동시에 행으로 설정하여 상세한 분석 가능

 

✅ 3) 정렬 변경 (margins=True)

df.pivot_table(index='과목', values='점수', aggfunc='mean', margins=True)

📌 출력 결과

     점수
과목       
수학  87.5
영어  85.75
All  86.625

전체 평균(All)이 추가됨

반응형
LIST
Comments