apply() 메소드

yulsikogi·2024년 2월 22일
post-thumbnail

행에 관련하여 함수를 처리할 때는 apply() 메소드를 사용했다. 사용방법이 독특해서 이를 깊이 이해하려 한다.

우선 apply() 메소드는 Pandas의 DataFrame 또는 Series에 함수를 적용할 때 사용하는 메소드다. 즉, 이 메소드를 사용하면 DataFrame의 각 행이나 열에 대해 지정된 함수를 실행할 수 있다.

def fill_age(row):
    if pd.isna(row['Age']):
        return median_ages[row['Pclass'], row['Sex']]
    else:
        return row['Age']

train_data['Age'] = train_data.apply(fill_age, axis=1)

데이터 분석을 할 때 위와 같이 사용했다. fill_age 함수는 행의 Age가 결측치인지 확인한다. 그런 다음 결측치면, 현재 행의 Pclass와 Sex를 기준으로 median_ages의 값을 반환하는 함수다.

접기/펼치기

isna란?

Pandas에서 제공하는 함수로, 데이터 프레임이나 시리즈의 각 요소가 결측치인지 여부를 나타내는 불린(참/거짓) 값을 반환

axis=1

apply() 메소드의 속성으로
0 : Index(행)
1 : columns(열)
함수를 적용할 축 입니다.

순서는 다음과 같이 이루어진다.

  1. apply() 메소드 진입
  2. fill_age 함수 진입
  3. 해당 행의 'Age' 값이 결측치인지 확인.
  4. 결측치가 아니면 그대로 반환, 결측치면 해당 행의 Pclass와 Sex를 기준으로 median_ages에 일치하는 값을 반환
  5. 행에 적용

이렇게 진행된다. 이를 가능하게 해주는 것이 apply() 메소드다. apply() 메소드 안에서 내부적으로 반복문이 돈다고 이해하면 좋다.

when? - 언제 사용하는가?

  • 복잡한 데이터 변환할 때, DataFrame의 각 행이나 열에 복잡한 로직이나 여러 단계의 계산이 필요한 경우 사용한다.
  • 사용자 정의 함수 적용할 때, 내장 함수로 해결하기 어려운 경우나 특정 조건에 따른 맞춤형 처리가 필요한 경우 사용한다.

why? - 왜 사용하는가?

  • 유연성: apply() 메소드는 다양한 종류의 사용자 정의 함수를 데이터프레임이나 시리즈에 적용할 수 있어, 데이터 변환과 분석 작업에서 큰 유연성을 제공한다.
  • 간결성: 복잡한 데이터 처리를 위한 코드를 간결하게 작성할 수 있습니다. 여러 줄의 코드로 작성해야 할 로직을 한 줄의 apply() 호출로 간소화할 수 있다.
  • 효율성: 내부적으로 최적화된 Pandas 연산을 사용하기 때문에, 순수 파이썬 반복문(loop)을 사용하는 것보다 성능적으로 효율적일 수 있다.
profile
Let's enjoy it. For me

0개의 댓글