[Python] pandas groupby 함수 transform 사용 방법

2024. 4. 4. 23:21코딩/Python

반응형

안녕하세요. 코딩왕 코주부입니다.

 

Python의 주요 라이브러리 중 하나인

 

극강의 Pandas!!

 

모두 많이 쓰시죠?

 

 

오늘은 groupby 를 이용하여 연산된 새로운 column을

 

데이터 프레임의 변형없이 생성하는 방법을 정리합니다.

(make a new column with calculated values)

 

 

우선 DataFrame 부터 준비해줍니다.

 

import pandas as pd

df = pd.DataFrame({
    'Name':['John', 'Daniel', 'Sera', 'Brian',
            'John', 'Daniel', 'Sera', 'Brian'],
    'Subject' : ['Math', 'Math', 'Math', 'Math',
                 'English', 'English', 'English', 'English'],
    'Score':[90, 80, 50, 80,
             60, 50, 40, 70]              
                  })

 

 

아래와 같은 데이터 프레임이 준비 완료 됐습니다!

 

 

 

Daniel, Sera, Brian, John

 

총 4명의 점수 평균을 과목 상관없이 계산합니다.

 

# Name 별 Score 평균 구하기
df.groupby(['Name'])['Score'].mean()

 

 

Brian이 평균 75점으로 1등이네요!

 

 

 

# DataFrame 형식으로 Return
df.groupby(['Name'])['Score'].mean().reset_index()

 

예쁘게 데이터프레임 형식으로 결과를 얻으려면

 

.reset_index() 를 사용해주면 되겠죠.

 

 

 

 

기존의 데이터프레임은 그대로 유지

 

새로운 컬럼에다가 계산된 값을 생성해보겠습니다.

 

# mean 값을 계산해서 "Avg" Column에 생성하기
df['Avg'] = df.groupby(['Name'])['Score'].transform('mean')

 

 

위와 같이, groupby 뒤에 transform을 사용하고

 

어떤 연산을 할 지 결정해주면

 

새로운 Column이 생성되면서 원하는 결과를 얻게 됩니다!

 

 

 

 

위에는 mean으로 예를 들었는데

 

그 외 다양하게 사용할 수 있는 

 

Pandas 의 내장 연산 함수 리스트는 아래와 같습니다!

 

 

 

 

Pandas의 aggregate functions 입니닷

sum() 합계
mean() 평균
std() 표준편차
var() 분산
sem() 표준오차
min() 최소값
max() 최대값
first() 첫 번째 값
last() 마지막 값

 

 

 

오늘도 고생 많으셨습니다!

 

많은 도움 되셨으면 좋겠네요.

 

감사합니다~!

 

반응형