데이터프레임을 조작하다 보면 정의해놓은 함수에 따라서 전체 프레임이나 특정한 column의 값들을 일괄적으로 변경할 때 익명 함수와 어플라이 함수를 많이 사용한다.
어플라이 함수
어플라이 함수를 사용하여 데이터프레임을 간편하게 조작하여 보자.
먼저 특정 함수를 만들어, 어플라이 함수를 사용하여 데이터프레임의 특정 칼럼에 적용할 수 있다.
예시1)
# 만약 `tips`데이터의 `day`컬럼에서의 값(value)인 [Thur(목), Fri(금), Sat(토), Sun(일)] 을 인코딩 없이 머신러닝 모델에 학습데이터로 feed한다면 에러가 발생할 것
# apply를 활용하여 라벨인코딩 해 보세요.
def encoding(data):
if data == 'Thur': return 0
if data == 'Fri': return 1
if data == 'Sat': return 2
if data == 'Sun': return 3
convert1 = tips['day'].apply(encoding)
tips['change_day'] = convert1
tips.head()
change_day라는 칼럼에 encoding 함수를 적용하여 새로운 featur가 생성된 것을 확인할 수 있다.
예시2)
이러한 데이터프레임에서 미나리반은 강서구, 개나리은 강동구, 장미은 광명시로 새로운 열을 만들어보자.
def func(x):
if x['반'] == '미나리' :
return '강서'
elif x['반'] == '개나리' :
return '강동'
else :
return '광명'
df['분점'] = df.apply(func, axis=1)
이렇게 어플라이 함수를 사용하여, 정의해 놓은 함수를 특정 칼럼에 쉽게 적용할 수 있다는 것을 확인하였다.
익명 함수
익명 함수 또는 람다 함수는 임시 함수로서 간단한 연산을 할 때 사용된다.
(lambda x, y : x**y)(1, 2)
1
f = lambda x, y : x**y
f(1,2)
1
익명 함수는 map()함수와 같이 많이 사용된다.
ex = [1, 2, 3, 4, 5]
list(map(lambda value : value **2, ex))
[1, 4, 9, 16, 25]
※맵 함수를 사용하여 센스있게 리스트의 자료형으로 변환할 수도 있다.
li = [ 169.7, 140, 166, 122]
list(map(float, li))
[169.7, 140.0, 166.0, 122.0]
이제 익명 함수를 판다스 데이터프레임에 적용하여 보자.
지정한 행에 전체 시행하고 싶을 때 아래와 같이 익명 함수를 사용할 수 있다.
아래와 같이 익명 함수에 조건을 걸어 데이터프레임에 적용할 수 있다.
'플레이데이터 빅데이터 부트캠프 12기 > Python' 카테고리의 다른 글
[플레이데이터 빅데이터 부트캠프]Python 클래스(1) (0) | 2022.10.05 |
---|---|
[플레이데이터 빅데이터 부트캠프]Python 셋(set) 타입 (0) | 2022.09.27 |
[플레이데이터 빅데이터 부트캠프]Python Open API 만들기(2) (0) | 2022.07.27 |
[플레이데이터 빅데이터 부트캠프]Python Open API 만들기(1) (0) | 2022.07.26 |
[플레이데이터 빅데이터 부트캠프]Python 크롤링, 스크래핑 (0) | 2022.07.25 |