파이썬에서 조건문이 포함된 함수를 lambda 함수로 생성하기
이 장에서는 파이썬에서 조건문이 포함된 함수를 전통적인 def 함수로 정의하는 방법과, 이를 더 간결하게 lambda 함수로 변환하는 방법을 설명합니다. 실습 예제로는 입력값이 3 이상일 때 'A'를 반환하고, 3 미만일 때 'B'를 반환하는 함수를 생성해 보겠습니다.
Part1. def로 정의
먼저, def 키워드를 사용하여 함수를 정의합니다. 이 함수는 입력값에 따라 'A' 또는 'B'를 반환하며, 함수 이름은 func1으로 지정합니다.
def func1(x):
if x >= 3:
return 'A'
else:
return 'B'
func1(3)
'A'
Part2. def로 정의한 함수를 apply와 함께 시리즈에 적용하기
여러분이 주로 판다스를 사용하여 데이터를 처리하기 때문에, 이제 판다스 라이브러리의 apply 메서드를 사용하여 앞서 정의한 func1을 데이터 시리즈에 적용하는 방법을 실습해 보겠습니다. 예시로 사용할 시리즈는 다음과 같습니다.
import pandas as pd
s = pd.Series([1, 2, 3, 4])
0 1
1 2
2 3
3 4
dtype: int64
s.apply(func1)
s s.apply(func1)
0 1 -> B
1 2 -> B
2 3 -> A
3 4 -> A
시리즈 s에서 값이 3 이상인 경우는 'A'가, 3 미만인 경우는 'B'가 반환되었습니다.
Part 3: 동일한 기능을 하는 lambda 함수 생성하기
이제 앞서 정의한 func1 함수를 동일한 기능을 하는 lambda 함수로 변환해보겠습니다. lambda 함수는 아래와 같이 정의할 수 있습니다.
lambda x: 'A' if x >= 3 else 'B'
여러분이 주로 Pandas를 사용하여 데이터를 처리하기 때문에, 이번에도 apply 메서드를 사용하여 lambda 함수를 시리즈에 적용하는 방법을 실습해 보겠습니다. 이 lambda 함수를 시리즈에 적용하면, def로 정의된 함수보다 코드가 간결해지고, 함수의 기능을 직관적으로 이해할 수 있습니다.
s.apply(lambda x: 'A' if x >= 3 else 'B')
0 B
1 B
2 A
3 A
주의사항
판다스 사용자들은 대부분의 경우에는 if 문을 포함한 함수를 직접 작성할 필요가 없습니다. np.where와 같은 넘파이 함수를 사용하면 훨씬 간결하게 처리할 수 있으며, 벡터화 연산을 통해 속도도 빠릅니다. 조건문이 포함된 함수를 만드는 방법을 알고 있는 것은 유용하지만, 조건문 함수와 apply 메서드의 조합보다는 판다스와 넘파이에서 제공하는 불리언 마스킹 함수들을 사용하는 것이 더 효율적입니다.
import numpy as np
np.where(s >= 3, 'A', 'B')
array(['B', 'B', 'A', 'A'], dtype='<U1')
또한 if 문 뿐만 아니라 elif 문이 포함되는 경우 lambda 함수로는 어떻게 구현하는 방법은 후속 포스팅에서 다루겠습니다.
교보문고 구매 페이지, 알라딘 구매 페이지, yes24 구매 페이지
유튜브에서 판다스 강의 중입니다.
'여러 가지 이야기 > 파이썬 및 그 밖의 라이브러리의 팁' 카테고리의 다른 글
[matplotlib] 이름이 지정된 색상 목록 (0) | 2024.10.21 |
---|---|
[matplotlib] 텍스트를 입력할 때 좌표 설정 방법 (0) | 2024.05.06 |
[python] 콤마와 자릿수를 동시에 설정하는 문자열 포매팅 방법 (0) | 2024.05.05 |
[구글 코랩] matplotlib 기반 그래프에 한글 폰트를 적용하는 방법 (0) | 2023.08.22 |
[python] elif 문이 포함된 함수를 lambda 함수로 생성하기 (0) | 2023.08.09 |