Pandas apply 사용법

Pandas apply 메서드는 pandas 내에서 가장 많이 사용되는 함수 중 하나이고, 사용자가 정의한 함수와 함께 사용할 수 있어서 데이터 전처리 등에 응용하여 사용할 수 있다. 사용자 정의 함수가 필요한 이유는 Pandas에 우리가 원하는 모든 함수가 구현되어 있지는 않기 때문에 직접 구현해서 사용해야 하는 경우가 있기 때문이다. 이 글에서는 apply 메서드에 대해 알아본다.

Series.apply() 사용법

Input 으로 series를 넣으면 알아서 데이터 단위로 함수를 정의하고 Output으로 series를 리턴한다.

기본 구조는 다음과 같다.

df['new'] = df['col'].apply(lambda x: x)
  • df['col']: Input(Series), 함수를 적용할 series
  • lambda x: Input(Data), 함수가 적용될 때 사용할 변수
  • x: Output(Data), 반환되는 series내 Data 단위
  • df['new']: Output(Series), Output으로 series가 return

위 코드는 똑같은 리스트 또는 Series 복제하기를 수행한다.

apply를 이용한 사칙연산

아래와 같이 하나의 컬럼에 사칙연산을 하여 새로운 컬럼을 추가해 본다.

df['Next_Year_Age1'] = df['Age'] + 1
df['Next_Year_Age2'] = df['Age'].apply(lambda x: x+1)

apply를 이용한 형변환

df['Str_Age1'] = df['Age'].astype('str')
df['Str_Age2'] = df['Age'].apply(lambda x: str(x))

apply X list

apply함수만 이용하여 Name을 모두 대문자로 뽑아내기

df['Upper_Name'] = df['Name'].apply(lambda x: x.upper())

apply에 사용자 함수 적용

apply에 사용자가 정의한 함수(function)을 적용할 수 있다. 다음은 그 기본 형태이다.

def user_function(x):
    ....
    return result

df['New'] = df['Col'].apply(lambda x: user_function(x))

return 값은 apply가 호출한 곳 Output으로 반환된다.

def gender_str(x):
    return 'Male' if x == 'M' else 'Female'

df['New_Gender'] = df['Gender'].apply(lambda x: gender_str(x))

DataFrame.apply() 사용법

기본 구조는 다음과 같다.

df['new_col'] = df.apply(lambda row: function(row), axis=1)
  • df.apply: 함수(function)을 적용할 데이터프레임
  • lambda row: 함수(function)을 적용할 row
  • function(row): 적용할 함수(function)
  • axies=1: 축
  • df['new_col']: Output(Series)

axis가 필요한 이유

Series는 1차원이라 순회할 방향이 한 군데이지만, Dataframe은 2차원이라, x/y로 갈 수 있어 축을 지정해 줘야 한다.

def concatenate(value_1, value_2):
    return str(value_1)+ "-" + str(value_2)

df['Concatenate'] = df[['Name','Age']].apply(
    lambda row: concatenate(row['Name'], row['Age']) , axis=1)

참고

답글 남기기