1 분 소요

1.2 Feature-Engineering

Feature Engineering

도메인 지식과 창의성을 바탕으로, 데이터셋에 존재하는 Feature들을 재조합하여 새로운 Feature을 만드는 것

Untitled

feature를 조합하여 (+) 새로운 feature을 만들어 낸 다음, 이를 분석에 사용할 수 있을 것이다.

Untitled 1

실사용에서 사용하고 있는 것

더 좋은 퍼포먼스를 위하여 더 새롭고, 더 의미있는 패턴을 제공하는 것이 궁극적인 Feature Engineering의 목적이다.

DataFrame

Untitled 2

Row (행), Column (열)

하나의 행에는 하나의 데이터 혹은 관측치

하나의 열에는 하나의 feature를 기반으로 저장하기를 권장한다.

이를 tidy형태라고 부르기도 한다.

Dataset

Untitled 3

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

Untitled 4

df.dtypes

Untitled 5

object, float64, int64

df['자본총계(비지배)'] 

Untitled 6

위의 NaN은, Not a Number의 줄임말로 pandas에서 결측치를 표현한다.

NaN은 프로그래밍상의 float라는 type을 갖는다.

이 때문에 562, 566은 int —> float로 어쩔 수 없이 type cast가 된 것이다.

String

문자열(string)을 다루는 방법에 대해서 알아보자

Untitled 7

앞서 발생한 문제를 해결하기 위해, 다음과 같은 단계를 거쳐야 한다.

  1. 문자를 숫자로 바꾸기 위해 숫자가 아닌 부분을 제거
  2. 문자를 숫자로 형변환

string replace

replace 의 사용벙느 다음과 같다.

string variable.replace(“삭제할 글자”,”)의 형태로 사용 (공백으로 대치)

s.replace(',', '')

Type casting

Untitled 8

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 사용법
    1. apply 안에 들어갈 함수를 선언
    2. column에 apply 적용