In [2]:
def get_square(a):
return a**2
print('3의 제곱은:', get_square(3))
3의 제곱은: 9
- lambda는 이런 함수 선언과 함수 내의 처리를 한 줄의 식으로 쉽게 변환하는 식임
- : 로 입력 인자와 반환될 입력 인자의 계산식(반환값)을 분리함
- 여러 개의 값을 입력 인자로 사용해야 할 때, map( )함수과 같이 씀
In [3]:
lambda_square = lambda x : x ** 2
print('3의 제곱은:', lambda_square(3))
3의 제곱은: 9
In [5]:
a = [1, 2, 3]
squares = map(lambda x : x ** 2, a)
list(squares)
Out[5]:
[1, 4, 9]
- DataFrame의 apply에 lambda 적용하기
In [7]:
import pandas as pd
titanic_df = pd.read_csv('./titanic_train.csv')
titanic_df['Name_len'] = titanic_df['Name'].apply(lambda x : len(x))
titanic_df[['Name', 'Name_len']].head(3)
Out[7]:
Name | Name_len | |
---|---|---|
0 | Braund, Mr. Owen Harris | 23 |
1 | Cumings, Mrs. John Bradley (Florence Briggs Th... | 51 |
2 | Heikkinen, Miss. Laina | 22 |
In [8]:
# if-else 문으로 좀 더 복잡하게 가공하기
titanic_df['Child_Adult'] = titanic_df['Age'].apply(lambda x : 'Child' if x <= 15 else 'Adult')
titanic_df[['Age', 'Child_Adult']].head(3)
Out[8]:
Age | Child_Adult | |
---|---|---|
0 | 22.0 | Adult |
1 | 38.0 | Adult |
2 | 26.0 | Adult |
- 주의!! if문보다 반환값을 더 먼저 써야 함, : 기호 뒤에 반환값이 있어야 하기 때문
- if-else 만 지원하고 if-elif-else는 지원하지 않음
- else if를 쓰고 싶으면 else 절을 ()안에 넣고 그 안에서 다시 if else 적용
In [12]:
titanic_df['Age_Cat'] = titanic_df['Age'].apply(lambda x : 'Child' if x <= 15 else ('Adult' if x <= 60 else 'Elderly' ))
titanic_df['Age_Cat'].value_counts()
Out[12]:
Adult 609
Elderly 199
Child 83
Name: Age_Cat, dtype: int64
In [13]:
# 계속 else문에 내포해서 쓰기 어렵기 때문에 별도의 함수를 만들어줌
def get_category(age):
cat = ''
if age <= 5 : cat = 'Baby'
elif age <= 12 : cat = 'Child'
elif age <= 18 : cat = 'Teenager'
elif age <= 25 : cat = 'student'
elif age <= 35 : cat = 'Young Adult'
elif age <= 60 : cat = 'Adult'
else : cat = 'Elderly'
return cat
# get_category()함수를 반환값으로 지정
# get_category는 입력값으로 'Age'칼럼을 받아서 해당하는 cat 반환
titanic_df['Age_Cat'] = titanic_df['Age'].apply(lambda x : get_category(x))
titanic_df[['Age', 'Age_Cat']].head()
Out[13]:
Age | Age_Cat | |
---|---|---|
0 | 22.0 | student |
1 | 38.0 | Adult |
2 | 26.0 | Young Adult |
3 | 35.0 | Young Adult |
4 | 35.0 | Young Adult |
'Python > Pandas' 카테고리의 다른 글
판다스 pandas (8) - unique(), nunique() (0) | 2023.05.02 |
---|---|
판다스 pandas (6) - isna( ), fillna( ) (0) | 2023.04.30 |
판다스 pandas (5) - aggregation, groupby (0) | 2023.04.30 |
판다스 pandas (4) - indexing, iloc, loc, boolean (0) | 2023.04.30 |
판다스 pandas (3) - Index 객체, reset_index (0) | 2023.04.30 |