Python transform 함수
- Pandas 라이브러리에서 데이터 프레임의 각 열에 함수를 적용하여 변환된 결과를 반환하는 데 사용
- 특히 데이터의 크기를 유지하면서 변환할 때 유용
- 이 함수는 여러 열에 여러 함수를 동시에 적용해야 할 때 매우 유용
기본 사용법
- 형태: DataFrame.transform(func, axis=0, *args, **kwargs)
- func: 적용할 함수
- axis: 0은 행(row), 1은 열(column)
- args, kwargs: 함수의 추가 인수
주요 특징
- 동일한 크기의 결과 반환: 입력 데이터와 동일한 크기의 결과를 반환해야 한다. 예를 들어, 평균(mean)과 같은 집계 함수는 사용할 수 없다
- 다중 함수 적용: 여러 함수를 동시에 적용할 수 있다. 예를 들어, ['diff', 'pct_change']와 같은 리스트로 전달하면 각 열에 대해 여러 변환을 수행할 수 있다
- groupby와 함께 사용: groupby와 결합하여 그룹별로 데이터를 처리하고 그 결과를 원래 데이터 프레임에 맞춰 반환. 이는 데이터를 요약하거나 집계할 때 매우 유용하다
아래 코드는 모든 요소에 10을 더하는 함수를 각 열에 적용하여 변환된 결과를 출력
import pandas as pd
import numpy as np
# 예제 데이터프레임 생성
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 간단한 함수 적용
result = df.transform(lambda x: x + 10)
print(result)
예시
1. 데이터 준비
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({
'team': ['A', 'A', 'B', 'B'],
'points': [10, 20, 30, 40]
})
2. gruop by와 transform 사용
# 각 팀별 평균 점수 계산
df['mean_points'] = df.groupby('team')['points'].transform('mean')
3. 결과 확인
apply와 transform
주요 차이점
WHEN?
- apply를 사용할 때:
- 여러 열이나 행을 포함하는 작업이 필요할 때.
- 함수가 입력과 다른 형태의 결과를 반환할 때.
- 스칼라, 리스트, 또는 다른 데이터프레임을 반환하는 함수를 적용할 때.
- transform을 사용할 때:
- 요소별로 함수를 적용하면서 원래 구조를 유지하고 싶을 때.
- 그룹별 평균 등 축소 함수의 결과를 원래 크기로 방송할 때.
apply
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 행을 따라 함수 적용
result = df.apply(lambda row: row['A'] + row['B'], axis=1)
print(result)
transform
import pandas as pd
df = pd.DataFrame({
'team': ['A', 'A', 'B', 'B'],
'points': [10, 20, 30, 40]
})
# 팀별 평균 점수 계산
df['mean_points'] = df.groupby('team')['points'].transform('mean')
print(df)
transform 추가 인자 사용
1. 데이터프레임 준비
import pandas as pd
# 샘플 데이터프레임
df = pd.DataFrame({
'product': ['A', 'B', 'C'],
'sales': [100, 150, 200]
})
2. 커스텀 함수 정의
# 배율과 오프셋을 추가 인자로 받는 함수를 정의
def scale_sales(x, multiplier, offset=0):
return x * multiplier + offset
3. transform과 함께 args, kwargs 사용
# 추가 인자를 사용하여 transform 적용
df['adjusted_sales'] = df['sales'].transform(scale_sales, multiplier=1.1, offset=5)
print(df)
'[업무 지식] > Python' 카테고리의 다른 글
[matplotlib] 데이터시각화 (0) | 2024.10.31 |
---|---|
[10분 판다스] python 기초 (0) | 2024.10.31 |
[pandas 라이브러리] DATEUTIL (1) | 2024.10.30 |
[Python Basic] 이상치 파헤치기 (0) | 2024.10.30 |
[Python basic] 결측치 파헤치기 (0) | 2024.10.30 |