본문 바로가기
[업무 지식]/Python

[pandas 라이브러리] transform

by 에디터 윤슬 2024. 10. 30.
 

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