본문 바로가기

Python skills for Data Analysis

[Functions] apply(lambda x :) examples

전 시간에 분석에 자주 사용하는 groupby 함수를 주제로 다루었는데요.

이번 시간에는 apply 함수를 다루어 보겠습니다. 

자, 그럼 바로 시작해볼게요.! (data 출처 here)

 

먼저 apply 함수의 역할을 간단하게 소개할게요.!

apply 함수가 lambda 함수를 만나면 먼저 apply는 lambda를 부르고 lambda가 수행하는 것을 적용합니다.

이것은 지정한 row나 coulmn모두 적용이 가능합니다.!

 

그리고 lambda 함수란 def 함수의 심플하고 익명성 있는 버젼이라고 생각하시면 될 것 같습니다.

일회성으로 사용하기 쉬우며, 코드가 간결해지기 때문에 small task에 사용하기 좋습니다. 

 

 

밑의 예를 보시면 이해가 쉬울 것 같습니다.

 

 

먼저 ,로 나뉜 숫자나 금액은 replace() 함수로 제거를 하면 되지만 자연어 처리와 같이 문장을 다룰 때는 제거를 하기보다 ,를 기준으로 나누는 상황이 생깁니다. 그럴 때 apply 함수와 lambda를 같이 사용할 수 있습니다.

 

가령, 아래와 같이 learning platform select라는 column이 여러개의 , 로 나눠져 있다면

 

이렇게 중복으로 선택한 설문자 같은 경우에 말이죠! 

 

df['LearningPlatformSelect'] = df['LearningPlatformSelect'].astype('str').apply(lambda x: x.split(','))

 

먼저 split 함수를 lambda안에 추가해 ,를 기준으로 나눈 다음

 

s = df.apply(lambda x: pd.Series(x['LearningPlatformSelect']), axis=1).stack().reset_index(level=1, drop=True)

 

위의 코드로 문장을 쪼개어 출력할 수 있습니다.

,로 나뉘어 있던 단어들이 한 단어로 합쳐졌죠?!

 

 

 

또 len과 같이 사용할 수도 있습니다.

len은 length라는 함수이며 길이를 count하는데요. 그리고 text가 string이다 보니 str로 감싸주었습니다.

 

s['text_count'] = s[0].apply(lambda x: len(str(x)))

글자 수를 count할 수도 있습니다. 자연어 처리할 때 많이 사용되겠죠??

 

 

또한 if 절을 추가할 수도 있습니다.

 

df['full_time']=df['EmploymentStatus'].apply(lambda x: 'Employed full-time' if x == 'Employed full-time' else 'Not employed full-time')

 

위의 코드와 같이 if 절을 사용해 Employed full time인 사람과 아닌 사람을 구분한 새로운 cul을 만들었습니다.

 

 

 

마지막으로 두 columns을 하나로 합치는 작업을 join과 함께 해보겠습니다.

 

df['gender_from'] = df[['Country', 'GenderSelect']].astype('str').apply(lambda x: ', '.join(x), axis=1)

 

잘 합쳐졌네요.! 

 

 

오늘은 다양하게 사용될 수 있는 apply 와 lambda 함수를 알아보았습니다.

도움이 되셨다면 좋겠네요. 

감사합니다~!

 

 

 

 

참고 자료 : https://rfriend.tistory.com/tag/apply%28lambda%20x%3A%20%27%27.join%28x%29

참고 자료 : https://www.analyticsvidhya.com/blog/2020/03/what-are-lambda-functions-in-python/#:~:text=We%20can%20use%20the%20apply,gets%20applied%20to%20each%20row.

참고 자료 : https://programmers.co.kr/learn/courses/21/lessons/938

'Python skills for Data Analysis' 카테고리의 다른 글

[Functions] groupby examples  (0) 2020.08.14
Data Visualization(데이터 시각화)  (0) 2020.07.14
Missing value processing.  (0) 2020.06.27
Data filtering  (0) 2020.06.16