Exploratory Data Analysis (탐색적 데이터 분석)이란?
포스트 난이도: HOO_Senior
# Exploratory Data Analysis
머신러닝을 통해서 데이터 분석 작업을 해본 개발자라면 EDA에 대해서 들어봤을 것이다. EDA는 Exploratory Data Analysis의 줄임말로 탐색적 데이터 분석이라고도 부른다. 말 그대로 데이터를 분석하기 전에 전반적인 데이터에 대해 알아보는 과정 자체를 EDA라고 부른다.
데이터 사이언스 프로젝트를 많이 해본 개발자에게는 EDA를 하라고 한다면 잠을 자고 있는 와중에도 뚝딱뚝딱할 수가 있다. 이 말인즉슨, EDA를 하는 과정 자체는 대부분의 데이터 사이언스 프로젝트에서 비슷하기 때문이다. 데이터를 분석하는 과정에서 데이터 정보를 나타내는 방식이 프로젝트마다 크게 다르지 않기 때문이다. 마치 어떤 레스토랑을 가더라도 손님을 맞이하기 전에 미리 주방 세팅을 하는 거와 비슷한 것이 바로 EDA이다.
하지만 데이터 사이언스 프로젝트를 이제 막 시작해본 개발자이거나 데이터 사이언스에 대한 공부를 하고 있다면 "EDA를 하세요."라고 했을 때 순간적으로 막막할 수 있다. 위의 레스토랑 사례처럼 처음 레스토랑에 취직하여 오게 된 요리사는 해당 레스토랑에서 어떻게 주방 세팅을 하는지 모르기 때문이다.
이번 포스트에서는 EDA를 하기 위한 기본적인 방법들을 살펴보도록 하자.
# EDA: drop()
우선 첫번째로는 필요 없는 데이터를 제거해주는 작업을 한다. 참고로 EDA를 한다는 것은 이미 앞서서 데이터 사용에 대한 준비와 각 csv 데이터에 대한 정보를 이미 파악한 상태이다. 이를 흔히 Data loading and preparation이라고 하는데 이 작업을 하지 않았다면 먼저 이 작업부터 해야 한다.
다시 EDA로 돌아와서 drop 기능을 통해서 필요 없는 데이터를 제거해준다. csv 파일 안에 있는 모든 데이터가 필요 없기 때문에 데이터를 최소화하는 작업이 필요하다. 이때 새로운 csv 파일 데이터 자체를 새로운 변수명으로 지정해주기도 한다. 또한 Target data에 대한 부분도 선언해주거나 Random state를 지정해주는 것도 좋다.
# iloc / loc
csv의 구조화된 데이터, 즉 structured data를 분석하는 데 있어서 Pandas의 iloc과 loc 기능을 사용하는 것이 도움이 된다. 데이터를 이해하는데 도움이 되기 때문에 iloc과 loc 기능을 토대로 데이터를 시각적 분류 및 분석을 한다. 이때 bar 별로 색을 따로 추가하여 구분하는 것도 테이블을 한눈에 이해하는 도움이 된다.
# Missing Value
다음으로 Missing vaule를 확인해주는 것이 좋다. 최대 missing value와 최소 missing value를 확인해줌으로써 train data와 test data 간의 관계를 데이터 distribution을 확인할 수 있다. 이때 최소 missing value가 0이면 test data와 train data의 비율이 딱 떨어진다는 것을 알 수 있다. 예를 들어 missing value가 0이면 train data가 80% 일 경우 test data가 20%인 것을 알 수 있다.
또한 Missing value를 확인하면서 한가지 더 확인해야 되는 부분은 Null value에 대한 부분이다. test data와 train data에 null value가 있는지에 대해서 확인을 해주는 것이 좋다. Null value의 기준은 0이며, 0이 있는지 확인해 준다고 생각하면 된다.
마지막으로 Null value와 Missing value에 대한 부분을 visualization 해서 출력하면 각 데이터별로 얼마만큼의 Null value가 있는지 확인이 가능하다.
여기서 또 다른 중요한 점은 Null value와 Missing value를 확인하는 과정에서 Column 뿐만 아니라 Row에 대한 확인도 이루어져야 한다. 한마디로 tracing 하는 과정이 Column과 Row 두 번 해줘야 한다는 것이다. 마찬가지로 시각화를 통해서 출력하면 한눈에 바로 이해할 수 있기에 편리하다.
최종적으로 Missing value와 Null value에 대한 확인이 끝났다면 해당 값들을 처리해주는 것이 EDA에서 해야 할 일이다.
# Data type
Missing value에 대한 처리가 끝났다면 다음으로 기본적인 데이터 정리가 이루어진 셈이다. 다음으로 데이터 유형을 분석해야 한다. 구조화 데이터, 즉 Strucutured data라고 할지라도 데이터 유형이 각기 다르다. 그저 Text일 수도 있고 Continous나 Categorical일 수도 있다. 따라서 각기 다른 형태의 데이터 유형을 분석해주는 것이 중요하다.
Text 데이터를 분류하는 코드를 작성할때 nunique() function을 활용하면 쉽게 분류가 가능하다. 예를 들어 for문이나 if문을 기반으로 기준이 되는 수치를 입력하여 분류할 수가 있다. 결과적으로 개발자도 사람이기에 데이터 시각화 자료로 만들어 출력하여 직접 눈으로 확인하는 것이 한눈에 데이터를 이해하기 수월하다.
plot을 사용해도 되지만 fig를 통해서 그래프로 간단하게 확인해보면 된다. 물론 해당 자료도 나중에 최종 발표 때 필요할 수도 있지만 EDA를 한다는 관점에서는 개발자인 당사자가 한눈에 확인하는 게 가장 중요하기 때문에 굳이 Fancy 하게 만들 필요가 없다는 것이다.
# Data type에 대한 Feature Distribution
데이터 유형에 대한 분석이 끝났다면, 결과적으로 분류된 데이터 유형의 distribution을 확인해볼 필요가 있다. 한마디로 더 구체적으로 각기 데이터가 어떻게 분포되어있는지 알아보는 셈이다. 따라서 이것을 Feature distribution이라고 한다.
앞서서 Continous와 Categorical를 언급했었기 때문에 두 가지 경우를 알아보도록 하자. 우선 Continous data인 경우에는 말 그대로 연속적인 상황에 있는 데이터의 특징을 데이터 시각화로 직접 살펴보는 것이 좋다. 이때 분포도가 연속성을 가지고 있다는 점을 유의해야 한다.
또한 데이터는 이미 Train과 Test data로 나눠져 있기 때문에 이 부분에 있어서도 별도로 나눠서 살펴보는 것이 좋다. 하나의 그래프에서 확인을 한다면 두 개의 다른 그래프로 나타내 준다면 Train data와 Test data가 어떻게 분포되어 있는지를 쉽게 파악할 수 있다.
마찬가지로 Catorical data 또한 방법만 다를 뿐 Train data와 Test data를 분류하여 살펴본다는 것 자체는 동일하다. 카테고리로 구분이 되어 있는 데이터이다 보니 앞서 이야기한 연속 데이터와는 다르게 다뤄야 한다. 한마디로 연속성 데이터는 하나의 그래프로 표현이 가능하지만 카테고리 데이터는 각기 다른 데이터로 이미 구분이 되어 있기 때문에 막대그래프나 파이 그래프와 같이 분류가 가능한 그래프로 나타내 주는 것이 한눈에 보기 편하다.
# Correlation
마지막으로 데이터 분석에 가장 기초적이고 중요한 것은 상관관계, 즉 Correlation이다. EDA를 통해서 데이터 분류가 끝나면 데이터들의 상관관계를 나타내주어 어떠한 관계를 서로 가지고 있는지 시각적 데이터로 확인해주는 것이 좋다.
이때 많이 사용하는 방식이 Matrix 방식이고 색감으로 구분해주는 것이 좋다. CS 학부생들은 알겠지만 그동안 지겹도록 배운 매트리스가 바로 데이터 분석에 활용된다.
'AI & Data' 카테고리의 다른 글
[Data Science] 한글 csv 파일 cp949 인코딩으로 pd.read_csv() 하는 방법 (0) | 2022.12.31 |
---|---|
[Data Science] Colab에서 출력한 Data Table를 Data Frame에 맞추어 정렬하는 방법, 데이터 프레임 전환하는 방법 (0) | 2022.12.31 |
[Data Science] 데이터 사이언스를 처음 공부할 때: 사이킷런(sklearn) (0) | 2022.12.16 |
[Data Science] 피어슨 상관관계(Pearson Correlation) (0) | 2022.11.19 |
[Data Science] 데이터 사이언스를 하고 싶으면 무슨 언어를 공부해야 할까요? (0) | 2022.11.18 |
댓글