반응형
pandas.DataFrame.transform은 데이터프레임을 변환할 때 매우 유용한 메서드입니다. 이 메서드는 데이터를 열 또는 행 단위로 변환하며, 원본 데이터프레임과 동일한 크기를 가진 결과를 반환해야 합니다. 이 글에서는 transform의 개념, 활용 예시, 주요 매개변수 등을 다룹니다.
pandas.DataFrame.transform
DataFrame.transform(func, axis=0, *args, **kwargs)
데이터프레임의 각 열 또는 행에 대해 변환 함수를 적용하여 동일한 크기의 데이터프레임을 반환
- 변환된 결과는 원본 데이터프레임과 동일한 크기
- 열(column) 또는 행(row) 단위로 변환 수행
- 그룹화(groupby)와 함께 자주 사용
- 다양한 입력 유형(function, str, list-like, dict-like) 지원
Parameters:
1. func : 데이터를 변환하는 함수
- 함수(Function): 데이터프레임의 열이나 행에 직접 적용할 수 있는 사용자 정의 함수
- 문자열(String): 문자열로 함수 이름 지정 가능 > 예: 'sqrt', 'exp'.
- 리스트(List-like): 여러 함수를 리스트로 전달하여 순차적으로 적용 > 예: [np.exp, 'sqrt']
- 사전(Dictionary-like): 열 또는 행을 기준으로 서로 다른 함수 지정 가능 > 예: {'A': 'sqrt', 'B': lambda x: x * 2}
2.2. axis (default 0 또는 'index') : 함수 적용할 축을 결정
- 0 또는 'index' (기본값): 열 단위로 함수 적용
- 1 또는 'columns': 행 단위로 함수 적용
2.3. *args와 **kwargs : 함수에 전달할 추가 인자(위치 및 키워드 인자)
예시
기본적인 열 변환
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, 2, 3, 4],
'B': [10, 20, 30, 40]
})
# 각 열의 값을 제곱
df_transformed = df.transform(lambda x: x**2)
print(df_transformed)
A B
0 1 100
1 4 400
2 9 900
3 16 1600
여러 함수를 열에 적용
# A 열에는 제곱, B 열에는 두 배로 변환
df_transformed = df.transform({'A': lambda x: x**2, 'B': lambda x: x * 2})
print(df_transformed)
A B
0 1 20
1 4 40
2 9 60
3 16 80
문자열 함수
# NumPy의 sqrt 함수 적용
df_transformed = df.transform('sqrt')
print(df_transformed)
A B
0 1.000000 3.162278
1 1.414214 4.472136
2 1.732051 5.477226
3 2.000000 6.324555
그룹화와 함께 사용
groupby와 함께 사용하여 그룹별 통계량을 각 행에 할당
df = pd.DataFrame({
'group': ['A', 'A', 'B', 'B'],
'value': [10, 20, 30, 40]
})
# 그룹별 평균 값을 각 행에 추가
df['group_mean'] = df.groupby('group')['value'].transform('mean')
print(df)
group value group_mean
0 A 10 15.0
1 A 20 15.0
2 B 30 35.0
3 B 40 35.0
복잡한 변환 작업
사용자 정의 함수로 복잡한 계산 적용
df_transformed = df.transform(lambda x: (x - x.mean()) / x.std())
print(df_transformed)
A B
0 -1.341641 -1.341641
1 -0.447214 -0.447214
2 0.447214 0.447214
3 1.341641 1.341641
추가사항
- 출력 크기는 원본 데이터프레임과 동일해야 하고, 출력 크기가 다르면 ValueError가 발생
- apply와 차이점: apply는 열이나 행에 적용된 결과를 다른 크기의 데이터로 반환할 수 있음
transform vs apply
출력 크기 | 원본과 동일한 크기 | 출력 크기가 달라도 가능 |
그룹화와 사용 | 그룹별로 동일한 크기 데이터를 변환할 때 사용 | 그룹별 통계량 계산 및 요약 작업에 적합 |
적용 가능한 작업 | 각 열/행에 독립적으로 작업 | 그룹 전체를 요약하거나 복잡한 작업 수행 가능 |
주요 사용 사례 | 그룹별 통계량 변환, 스케일링, 표준화 | 복잡한 계산 또는 요약 통계 계산 |
반응형
'Python' 카테고리의 다른 글
[pandas] iloc와 loc 인덱싱, 사용법과 차이점 (0) | 2025.01.09 |
---|---|
[pandas] groupby 정리 (0) | 2024.12.11 |
[pandas] 데이터 병합 - merge, join (2) | 2024.12.06 |
[pandas] DataFrame.rank, 관련 문제 Leetcode 《178. Rank Scores》 (0) | 2024.12.03 |