본문 바로가기
Python/Pandas & numpy

판다스 : .transform()

by Mr.DonyStark 2024. 2. 8.

□ 함수는 그룹별로 계산된 결과를 원본 데이터프레임에 다시 병합하는 역할수행

주로 그룹별로 계산한 평균, 합 등의 값을 각 행에 적용하고자 할 때 사용

 예제

  ○ 라이브러리 호출 및 데이터 불러오기

#라이브러리 호출
import pandas as pd
import numpy as np
#데이터 불러오기
df = pd.read_csv('C:/python/DataScience/Data/data/python_data/gapminder.tsv', delimiter='\t')

  ○ 함수정의 및 구룹화된 데이터 프레임에 transfom을 적용하여 값 조회

#함수정의 : 표준편차
def my_zscore(x):
    return ((x - x.mean()) / x.std())
#시리즈반환 : year필드로 그룹화 후 표준편차 함수 lifeExp열적용
df1 = df.groupby('year')['lifeExp'].transform(my_zscore)

 

 예제심화

#라이브러리 불러오기
import numpy as np
import seaborn as sns

#데이터 불러오기
np.random.seed(42)
tips_10 = sns.load_dataset('tips').sample(10)

# total_bill 필드의 인덱스 4까지 값 NaN으로 변경
# np.random.permutation()함수를 뒤섞은 후에 n개만큼 indexing
tips_10.loc[
    np.random.permutation(tips_10.index)[:4],'total_bill'
] = np.NaN

 

  ○ 함수와 transform기능을 활용해 새로운 필드에 값 채우기

#함수정의
def fillna_num(x):
    avg = x.mean()
    return x.fillna(avg)

#sex필드를 기준으로 total_bill 열 기준으로 정의한 함수를 적용하여 NaN값 채움
transform_field = tips_10.groupby('sex')['total_bill'].transform(fillna_num)
#transform과 함수를 바탕으로 생성된 시리즈를 바탕으로 새로운 필드 생성
tips_10['new_total_bill'] = transform_field

'Python > Pandas & numpy' 카테고리의 다른 글

판다스 : .numeric_only, groupby/get_group  (0) 2024.02.08
판다스 : .filter() 함수  (0) 2024.02.08
판다스 : agg 심화  (0) 2024.02.08
판다스 : 전처리 예제(feat. agg함수)  (0) 2024.02.08
판다스 : .apply() 함수 예제  (1) 2024.02.08