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이 내가 원하는 형태로 있지 않은 경우가 많으니 이 점은 반드시 미리 확인하고 분석, 가공시 유의하도록 하자.
Author And Source
이 문제에 관하여(EDA, Preprocessing 기본 개념 (+ 유용한 pandas 함수)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@cualquier/EDA-Preprocessing-개념-및-python에서-다뤄보기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)