[파이썬][데이터분석] 데이터 분석과 머신러닝 - Feature Engineering
1.2 Feature-Engineering
Feature Engineering
도메인 지식과 창의성을 바탕으로, 데이터셋에 존재하는 Feature들을 재조합하여 새로운 Feature을 만드는 것
feature를 조합하여 (+) 새로운 feature을 만들어 낸 다음, 이를 분석에 사용할 수 있을 것이다.
실사용에서 사용하고 있는 것
더 좋은 퍼포먼스를 위하여 더 새롭고, 더 의미있는 패턴을 제공하는 것이 궁극적인 Feature Engineering의 목적이다.
DataFrame
Row (행), Column (열)
하나의 행에는 하나의 데이터 혹은 관측치
하나의 열에는 하나의 feature를 기반으로 저장하기를 권장한다.
이를 tidy형태라고 부르기도 한다.
Dataset
kt&g의 기업 재무정보 데이터이다.
import pandas as pd
df = pd.read_csv('https://ds-lecture-data.s3.ap-northeast-2.amazonaws.com/kt%26g/kt%26g.csv')
df
df.dtypes
object, float64, int64
df['자본총계(비지배)']
위의 NaN은, Not a Number의 줄임말로 pandas에서 결측치를 표현한다.
NaN은 프로그래밍상의 float라는 type을 갖는다.
이 때문에 562, 566은 int —> float로 어쩔 수 없이 type cast가 된 것이다.
String
문자열(string)을 다루는 방법에 대해서 알아보자
앞서 발생한 문제를 해결하기 위해, 다음과 같은 단계를 거쳐야 한다.
- 문자를 숫자로 바꾸기 위해 숫자가 아닌 부분을 제거
- 문자를 숫자로 형변환
string replace
replace 의 사용벙느 다음과 같다.
string variable.replace(“삭제할 글자”,”)의 형태로 사용 (공백으로 대치)
s.replace(',', '')
Type casting
testString = testString.replace(',','')
int(testString)
as Function
# 입력한 문자열에 대해서 같은 작업을 하는 함수 작성
def toInt(string):
return int(string.replace(',',''))
# 예시 데이터를 바탕으로 함수를 테스트
>>> toInt('25,970')
25970
>>> type(toInt('25,970'))
int
Apply
데이터의 모든 문자열에 대해서 일일히 toInt 함수를 반복 할 수는 없다.
대신 column 단위로 할 수 있다.
- apply 사용법
- apply 안에 들어갈 함수를 선언
- column에 apply 적용