본문 바로가기
PROGRAMMING/Python

[PYTHON] Pandas apply 함수, lambda 방법 개념, 정리, 설명

by HYUNHP 2022. 12. 4.
728x90
반응형

안녕하세요, HELLO

 

Python에서 apply를 사용하여, Dataframe에 각기 다른 함수들을 적용하는 방법에 대해서 살펴보고자 합니다.

 

(1) 데이터프레임에서 apply를 바탕으로, 선언한 함수를 사용하여 계산하기

  • dataframe.apply(function)

(2) 데이터프레임에서 apply를 바탕으로, lambda를 활용하여 계산하기

  • dataframe.apply(lambda x : function(x))

STEP 1. 'Python apply' 개념 및 설명

 

STEP 2. 'Python apply, lambda' 개념 및 설명

 

반응형

 

STEP 1. 'Python apply' 개념 및 설명

 

Python에서 apply는 2차원 타입의 데이터에서 행/열 또는 전체에 원하는 연산을 지원합니다. 

  • 행 단위로 연산을 하고싶은 경우: axis = 1
  • 열 단위로 연산을 하고싶은 경우: axis = 0

기본값은 열 단위 (column based)로, axis = 0을 설정되어 있습니다. 

 

실습을 위해 간단한 dataframe을 선언해보겠습니다.

 

'''
IMPORT Library
'''

import pandas as pd
import numpy as np

df = pd.DataFrame(
    [[1,2,3],[4,5,6],[10,20,30]],
    columns= ['A','B','C']
)

df.head()

 

그리고 input을 2번 곱하는 함수 (double_func)와 n번 곱하는 함수 (multiple_func)을 선언해보겠습니다.

 

'''
Function
multiple 2 times

Input : target number
Output :  multipled number
'''

def double_func(input:float) -> float:
    return input * 2

'''
Function
multiple n times

Input : target number, multiple number
Output :  multipled number
'''

def multiple_func(input:float, multi:int) -> float:
    return input * multi

그리고 double_func을 통해 apply 함수를 적용해보겠습니다.

 

# Double times

df = pd.DataFrame(
    [[1,2,3],[4,5,6],[10,20,30]],
    columns= ['A','B','C']
)

print(f'Before function')
print(f'{df.apply(double_func)}\n')

print(f'-------' * 4)

print(f'\nAfter function')
print(f'{df}')

print(f'-------' * 4)

print(f'\nAfter apply')
df = df.apply(double_func)
print(f'{df}')

위처럼 단순히 apply 함수를 적용하면, 원본 dataframe이 바뀌지 않기에 이를 바꿔줘야 합니다.

  • df = df.apply(double_func)

이번에는 함수의 변수가 2개 (input, multi)인 multiple_func을 적용해보겠습니다.

 

# Multiple times

df = pd.DataFrame(
    [[1,2,3],[4,5,6],[10,20,30]],
    columns= ['A','B','C']
)

print(f'Before function')
print(f'{df.apply(multiple_func(multi=3))}\n')

print(f'-------' * 4)

print(f'\nAfter function')
print(f'{df}')

print(f'-------' * 4)

print(f'\nAfter apply')
df = df.apply(multiple_func(multi=3))
print(f'{df}')

그러면 positional argument 에러 메시지와 함께, input 값을 입력하라고 나옵니다.

이와 같은 경우에는 input 문제를 해결하기 위해, lambda를 통해 해결할 수 있습니다.

 

 

STEP 2. 'Python apply, lambda' 개념 및 설명

 

lambda는 python에서 def와 동일한 기능을 하며, 한 줄로 간편하게 사용할 수 있습니다.

사용 목적에 따라 다르게 사용할 수 있으며, dataframe에서 특정 열만을 지정하는 등의 방법으로 사용할 수 있습니다.

 

'''
Lambda
'''
# Multiple times

df = pd.DataFrame(
    [[1,2,3],[4,5,6],[10,20,30]],
    columns= ['A','B','C']
)

print(f'Before function')
print(f'{df.apply(lambda x: multiple_func(x, multi=3))}\n')

print(f'-------' * 4)

print(f'\nAfter function')
print(f'{df}')

print(f'-------' * 4)

print(f'\nAfter apply')
df = df.apply(lambda x: multiple_func(x, multi=3))
print(f'{df}')

 

위처럼 단순히 apply, lambda 함수를 적용하면, 원본 dataframe이 바뀌지 않기에 이를 바꿔줘야 합니다.

  • df = df.apply(lambda x : multiple_func(x, multi))

■ 마무리

'Pandas apply 함수, lambda 방법'에 대해서 알아봤습니다.

좋아요댓글 부탁드리며,

오늘 하루도 즐거운 날 되시길 기도하겠습니다 :)

감사합니다.

반응형

댓글