-
[Method] Feature EngineeringAI부트캠프 2021. 1. 4. 23:28
[section1-sprint1-n112]
이런 score라는 dataframe을 생성하였다고 하자. 여기서 수입과 재료비에 해당하는 값들은 중간에 ' , ' 때문에 object로 인식된다. 연산을 위해 numeric value로 바꾸어주자.
String to Num
방법 1) column에 replace 적용 - column마다 각각 적용해야함
방법 2) 함수생성
*apply 함수
행(axis=0) 또는 열(axis=1) 또는 전체의 cell에 원하는 연산을 지원
방법 3) for loop로 column 하나씩 불러와서, condition으로 구분 후 apply 적용
*lambda 함수
형태) lambda 인자 : 표현식
인자에 대해 표현식에서 나온 결과값을 return
번외) date format
Column끼리 연산
수입-재료비를 계산하여 하루의 순이익을 도출하였고, 새로운 column을 만들어 삽입하였다. insert 함수를 이용하여 간단하게 한줄로 표현할 수 있다.
형태) df.insert(위치, new_col_name, 삽입할 내용)
NA value handling (mean imputation)
2021년 1월 1일자, 재료비를 NaN으로 바꾼 후, 다른 날의 값으로 mean imputation을 해주었다.
여기서 .loc함수를 사용하여, 날짜 col에 '2021/1/1'이라는 값을 가지고있는(isin 함수) row를 제외한(~ sign) 나머지 row들에서, 재료비 col의 값을 평균하여(mean()) 그 값을(values) 반환하였다.
Make new feature
grade라는 새로운 feature를 만들어 classify 하였다. 여기서 함수(def)를 선언하여 그 안에 여러개의 if문을 만들고, 각각의 조건을 만족하면 특정 grade를 return, 특정 column에 apply함수로 이 만들어진 함수를 적용할 수도 있지만,
그것보다 간단하게 np.select를 사용할 수 있다.
condition list와 choice list를 만들어 select함수의 parameter로 사용하는 것 만으로도 간단하게 새로운 feature로 기존 data를 classify할 수 있다.
*pandas 에서 문자열을 다룰 때 .str. 필요
계속 함수 앞에 .str.를 붙여서 이게 뭔가 했는데, python과 달리 pandas에서 문자열 관련 함수를 사용할 때 앞에 붙여야 한다고 한다.
*특정 열만 dataframe 형식으로 추출하기
처음에는 df['col']로 했는데 dataframe 형식이 아닌 series가 반환되서 당황했는데, loc를 사용하여 df.loc[:,['col']]이렇게 하니 전체 행, 특정 열이 dataframe 형식으로 반환되었다.
'AI부트캠프' 카테고리의 다른 글
[Concept] Vectors/ Metrices (0) 2021.01.13 [Concept] Hypothesis Test (2) 2021.01.06 [Method] Data Visualization (2) 2021.01.02 [Method] Data manipulation (1) 2020.12.31 [Concept] Feature Engineering (0) 2020.12.29