[데이터 분석] Feature Engineering

Colacan·2022년 1월 20일
1

[데이터 분석]

목록 보기
8/9

Feature engineering

  • data type 변환 : type(), int, float, boolean, String, str(), escape

  • data cleaning
    1) domain knowledge
    2) visualization
    3) Math/Statistics

  • Handling missing values

  • one hot encoding : 텍스트를 숫자데이터로 변경(모델은 텍스트를 이해 못하므로), 표현하고 싶은 인덱스에 1을 부여, 다른 인덱스에는 0을 부여

  • Feature Engineering을 사용하는 이유 : 수학, 통계 및 도메인 지식을 기준으로 새로운 feature(열)를 만드는 것

  • Feature engineering의 목적 : 기존의 feature를 바탕으로 더 의미있는 패턴을 만들기 위함

DataFrame

  • DataFrame : 테이블 형태의 데이터 (Tidy 형태에 대해 알아둘 것 : 호환성을 위해서)

  • DataFrame에서의 datatype
    1) 파이썬에선 결측치를 NaN으로 표현 (float타입)
    2) 따라서 NaN이 존재하면 다른 데이터도 강제형변환 (int->float)
    3) 빅데이터를 관리할 때는 data type을 신경써야할 수도

  • string 형변환과정
    1) 숫자아닌부분제거 (string variable).replace("삭제할 글자",'')
    2)문자를 숫자로 변환

  • 함수로 만들기 (1)

def toInt(string):
	return int(string.replace(',','')
  • 함수로 만들기 (2)
    1) apply : 데이터의 모든 문자열에 toInt를 반복하는 것은 무리, 따라서 column단위로 한다
    2) apply 사용법 : apply 안에 들어갈 함수 선언, column에 apply 적용

Data Manipulation

  • Data Manipulation : 여러개의 분리된 데이터를 분석하기 쉽게 하나의 데이터 셋으로 만드는 과정

  • Tidy Data : 각 변수가 열이고 관측치가 행으로 배열된 데이터

  • melt : pandas에서 Tidy Data를 만드는 방법

df.melt(id_vars=['first','last'])
df.melt(id_vars='',var_name='',value_name='')
  • Concat(Concatenate) : 데이터를 물리적으로 붙임
    1) 문자열 더하기 : tostring, join
    2) 문자열 나누기 : split

  • data.frame에서는 열이나 행을 기준으로 붙이는 것을 고려해야함

  • Index가 다른 경우 : 없는 항목은 어떻게 채워지는가? -> NaN처리

  • pd.concat([x,y]) - row를 붙임

  • pd.concat([x,y], axis = 1) - column을 붙임

  • read_csv(url+'원하는 데이터.csv')의 식으로 불러오기도 가능 (문자열 연결을 통해서)

  • pandas first row header : 첫 행으로 헤더를 끌어올리기

  • Merge : concat과 다르게 공통된 부분 기반으로 합침

  • inner-join (다른 option은 추가로 공부할 것)

  • x1.merge(x2) 의 형태 how,on 옵션도 있음 (how의 경우 outer는 합집합, inner는 교집합을 의미한다, 디폴트는 inner)

  • Condition : 필터링 조건 설정

  • isin
    1) 필터링 설정 중 하나
    2) column이 list의 값을 포함하고 있는 것만 걸러낼 때 사용

  • Groupby : 그룹화
    1) df.group('이름').column이름.mean() 식으로 이용 가능

  • pandas styling : 잡기술이지만 알아두면 좋다

  • Tidy 데이터 : 원칙을 가지고 데이터를 만들자

  • 앞으로는 Tidy format에 익숙해지자

  • reset_index() : rownames을 feature로 설정

  • tidy는 한 행에 한 observation (누가 어떤값을 가지는지)

  • rename() : 열의 이름 수정

  • pivot_table : tidy -> wide로 변환 (melt)의 반대결과

  • tidy는 Seaborn과 같은 시각화 라이브러리에 유용하게 쓰인다.

profile
For DE, DA / There is no royal road to learning

0개의 댓글