Python to AI

Python - Pandas(데이터 변형 : 그룹화, 집계, 피벗테이블)

최 수빈 2024. 12. 9. 15:31

 

groupby()를 사용한 그룹화 - 데이터의 특정 열을 기준으로 그룹화

 

import pandas as pd

#예시 데이터프레임 생성
data = {
    '이름' : ['철수','영희','민수','지수','철수','영희'],
    '과목' : ['수학','수학','과학','과학','영어','영어'],
    '점수' : [90,85,95,80,75,88]
}
df = pd.DataFrame(data)

#'이름'을 기준으로 그룹화
grouped = df.groupby('이름')

 

집계 함수 사용하기 - 그룹화한 데이터에 대해 다양한 집계 함수(mean, sum, count 등)사용

#각 학생의 평균 점수 계산
mean_scores = grouped['점수'].mean()
mean_scores

여러 집계 함수들 동시에 사용

#각 학생의 점수 합계와 평균 계산
agg_scores = grouped['점수'].agg(['sum','mean'])
agg_scores

여러 열을 기준으로 그룹화

#'이름'과 '과목'을 기준으로 그룹화하여 점수 합계 계산
grouped_multi = df.groupby(['이름', '과목'])['점수'].sum()
grouped_multi

피벗테이블

  • 데이터를 요약하는 강력한 도구
  • 엑셀의 피벗테이블과 유사
  • 특정 기준에 따라 데이터를 재구조화 할 수 있음
#피벗테이블 생성: '이름'을 인덱스로, '과목'을 컬럼으로하여 점수의 평균을 계산
pivot = pd.pivot_table(df, index = '이름', columns = '과목', values = '점수', aggfunc = 'mean')
pivot

여러 집계 함수 사용하기

#점수의 합계와 평균을 계산하는 피벗테이블 생성
pivot_multi = pd.pivot_table(df, index = '이름', columns = '과목', values = '점수', aggfunc =['sum', 'mean'])
pivpt_multi

margins 옵션을 사용, 전체 합계 추계

margin = True 옵션을 사용하면, 각 행과 열의 합계가 추가된 피벗테이블 생성

#각 이름별, 과목별 총합을 포함한 피벗테이블 생성
pivot_with_totals = pd.pivot_table(df, index = '이름', columns = '과목', values = '점수', aggfunc = 'sum', margins = True)
pivot_with_totals