EDA, Preprocessing 기본 개념 (+ 유용한 pandas 함수)

학습 목표

  • EDA, Pre-processing에 대해서 이해한다.

참고

  • EDA, Pre-processing, feature Engineering 등은 그 범주가 명확히 나뉘어져 있는 것은 아니다. 단, 공통적으로 본격적인 모델링을 하기 전에 한다.


EDA란?


EDA는 Exploratory Data Analysis의 약자로 탐색적 데이터 분석을 의미한다. 데이터 분석에 있어서 매우 중요한 초기 단계이다.

그렇다면 우리는 왜 EDA를 해야만 할까?

  • 대게 우리가 분석할 데이터가 미리 아주 잘 설계되어 수집되지 않은 이상 원본 데이터를 바로 분석에 활용하기는 어렵다.
  • 테이블에 들어가 있는 숫자들만 보고 바로 인사이트를 딱 뽑아내기 매우 어렵다.

즉, EDA란 데이터를 보고 어떤 분석을 어떻게 할지 견적을 내고, 분석을 위한 기초 공사를 하는 단계이다.

EDA의 방법


EDA의 방법은 변수의 개수(Univariate or Mutivariate), Graphic or Non-graphic에 따라 나눌 수 있다.

  • (!!) 지금 모든 종류를 다 알고 넘어갈 필요는 없을 것 같고, 우선 이렇게 나뉘고 이런 것들이 있구나~ 정도만 알고 나중에 추가 공부를 하면 될 것 같다.

Univariate

Data의 분포(Distribution)을 확인하는 것이 주 목적이다.

1. Non-Graphic

  • Numeric Data의 경우 통계 기법이 많이 활용된다.
    • Center (mean, median, mode)
    • spread (variance, SD, IQR, Range)
    • Modality (Peak)
    • Shape (tail, skewness, Kurtosis)
    • Outliers 등
  • Categorical Data의 경우
    • occurence, frequency, tabulation 등

참고로 Numerical/Categorical Data는 숫자형이냐, 범주형이냐의 차이다. (키, 몸무게 / 혈액형, 성별 등)

  • 유의할 것은 범주형 데이터의 경우에도 수치형 자료처럼 표현할 수 있다. (성별을 예를 들면, 남자 = 1, 여자 = 0으로 변환. 이때 0과 1 사이에는 수치적 관계가 없다. 1이 0보다 1만큼 크다고 수치적으로 어떤 의미가 있지 않다는 것이다. 추후 모델링을 할 때 컴퓨터가 이해할 수 있도록 One-hot Encoding을 해주게 된다)

2. Graphic

Histogram, Pie chart, Boxplot, QQplot 등이 있다.

Muti-variate

변수 간의 관계를 보는 것이 주된 목표이다.

1. Non-Graphic

Cross-tabulation, Cross-Statistics(Correlation, Covariance)가 있다.

2. Graphic

Boxplot, Stacked bar, Parallel Coordinate, Heatmap등이 있다.


 각 방법들 마다의  개념 및 활용에 대해서는 별도로 하나씩 공부해 나가도록 하자. 

Pandas를 활용한 기초 EDA


python의 pandas 라이브러리에서 제공하는 함수 중 EDA에 유용하게 사용할 수 있는 함수는 아래와 같다.

Missing Values (결측치)

  • isna, isnull, notna, notnull, dropna, fillna
  • 참고로 다른 언어에서는 결측치가 NaN, Na 등 다양하게 표현되는 것 같은데, python에서는 모두 합쳐서 NaN만 쓰이는 것으로 알고 있다.

Data Frame

  • index, columns, dtypes, info, select_dtypes, loc, iloc, insert, head, tail, apply, aggregate, drop, rename, replace, nsmallest, nlargest, sort_values, sort_index, value_counts, describe, shape

Visualization

  • plot, plot.area, plot.bar, plot.barh, plot.box, plot.density, plot.hexbin, plot.hist, plot.kde, plot.line, plot.pie, plot.scatter

    	 지금 하나하나 다 기억할 필요는 없고, 앞으로 차차 사용하게 될 것 같다. 다만, 나중에 하나씩 돌려보는 시간은 갖자. 

pandas Top 25 tricks를 설명하고 있는 이 사이트도 유용하니 필요시 살펴보는 걸 추천한다.


Pre-processing


한국말로 전처리라고 한다.
Garbage IN Garbage OUT이란 말을 기억해야 한다.

  • 우리가 아무리 좋은 알고리즘을 짠다고 해도, 입력하는 데이터가 쓰레기 같다면 좋은 Output 역시 기대할 수 없다. (컴퓨터는 그냥 인간이 시키는 대로 한다고!)

Pre-processing을 내가 배운 바에 의하면 아래 단계로 나뉜다.

  • Data Cleaning
    • missing values, 잘못 입력된 데이터, 일관성이 없는 데이터 (여기서의 일관성이란 쉽게 말해 row별로 값을 표현하는 방식이 다름) 등의 노이즈를 보정하는 과정을 말한다.
  • Data Integretion
    • 우리가 쓸 데이터는 현실에서 한 dataframe에 있지 않고, 이리저리 떨어져 있다. 합치는 과정이다.
  • Transformation
    - 데이터의 형태를 변환하는 작업으로 추후 배울 예정.
  • Reduction
    - 데이터를 의미있게 줄이는 과정을 말한다. (우리가 분석에 필요한 데이터만 남기면 된다)

처음 언급했듯이 EDA, Pre-processing 그리고 다루게 될 feature Engineering의 범주는 딱 나뉘어 있는 것이 아니며, 모델링을 하기 전에 섞여서 진행된다.

따라서 각각을 너무 구분 지어 생각하려고 애쓸 필요는 없을 것 같다.

--
dataype이 내가 원하는 형태로 있지 않은 경우가 많으니 이 점은 반드시 미리 확인하고 분석, 가공시 유의하도록 하자.

좋은 웹페이지 즐겨찾기