안녕하세요, 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 방법'에 대해서 알아봤습니다.
좋아요와 댓글 부탁드리며,
오늘 하루도 즐거운 날 되시길 기도하겠습니다 :)
감사합니다.
'PROGRAMMING > Python' 카테고리의 다른 글
[PYTHON] Dataframe Multi index, Single index 활용법, 개념, 정리, 설명 (0) | 2023.01.16 |
---|---|
[PYTHON] 특정 날짜가 올해의 몇 주차인지 계산, 확인 방법 (0) | 2022.12.31 |
[Python] list append, extend, insert 개념, 정리, 설명 (0) | 2022.09.03 |
[PYTHON] Assert (가정 설정문) 개념, 정리, 설명 (0) | 2022.08.07 |
[PYTHON] Pandas Groupby 그룹별 처리 (파이썬, 판다스) (0) | 2022.07.22 |
댓글