반응형
판다스 transform으로 그룹별 변환 적용하기
판다스에서 groupby를 사용하면 데이터프레임을 그룹별로 나누어 연산을 수행할 수 있습니다. 이번에는 groupby와 함께 transform 메서드를 활용하여 그룹별로 변환을 적용하는 방법에 대해 알아보겠습니다.
transform이란?
------------
transform은 그룹 객체에서 호출할 수 있는 메서드입니다. 그룹별로 제공된 함수를 적용하고, 그 결과를 새로운 열에 할당합니다. 함수의 반환값은 그룹별로 구성되는 시리즈 혹은 데이터프레임입니다.
기본 사용법
--------
python
import pandas as pd
import numpy as np
df = pd.DataFrame({'group': list('aabbcc'),
'value': np.random.randint(1, 100, 6)})
print("원본 데이터프레임:")
print(df)
# 그룹별 value 열 평균을 계산하여 새 열 추가
df['value_mean'] = df.groupby('group')['value'].transform('mean')
print("transform 적용 후:")
print(df)
출력:
원본 데이터프레임:
group value
0 a 26
1 a 70
2 b 13
3 b 36
4 c 97
5 c 58
transform 적용 후:
group value value_mean
0 a 26 48.0
1 a 70 48.0
2 b 13 24.5
3 b 36 24.5
4 c 97 77.5
5 c 58 77.5
함수 직접 전달하기
-------------
transform에 직접 함수를 전달할 수도 있습니다.
# 각 그룹의 value 열에서 최댓값 구하기
df['value_max'] = df.groupby('group')['value'].transform(lambda x: x.max())
print(df)
출력
group value value_mean value_max
0 a 26 48.0 70
1 a 70 48.0 70
2 b 13 24.5 36
3 b 36 24.5 36
4 c 97 77.5 97
5 c 58 77.5 97
transform과 다른 메서드 조합하기
-----------------------
transform은 groupby 객체의 다른 메서드와도 조합할 수 있습니다.
# 각 그룹에서 value가 평균보다 큰 행만 filter 후 transform 적용
res = df.groupby('group').transform('mean')[df['value'] > df.groupby('group')['value'].transform('mean')]
print(res)
출력:
0 NaN
1 70.0
3 36.0
4 97.0
5 NaN
이처럼 transform을 통해 그룹별 다양한 전처리와 변환을 손쉽게 적용할 수 있습니다. 데이터 분석 및 피처 엔지니어링 과정에서 transform의 활용도가 높습니다.
반응형
'파이썬 기초문법' 카테고리의 다른 글
판다스 melt로 데이터프레임 재구조화하기(컬럼의 내용을 row로 옮기기) (0) | 2024.06.28 |
---|---|
판다스 pivot으로 데이터 구조 재구성하기 (0) | 2024.06.15 |
pandas apply로 데이터프레임 컬럼별 함수 적용하기 (0) | 2024.05.17 |
메타클래스로 파이썬 클래스 작성을 한 단계 업그레이드하기 (0) | 2024.05.12 |
숨은 고수의 기술 - 파이썬 디스크립터(Descriptor)로 캡슐화 완성하기 (0) | 2024.05.12 |