EDA란 무엇인가 | 데이터 분석에서 왜 먼저 해야 하는가

데이터 분석에서 모델보다 먼저 해야 하는 일이 있다.

바로 EDA(Exploratory Data Analysis, 탐색적 데이터 분석) 다.

많은 입문자가 데이터 분석을 시작하면 바로 머신러닝 모델부터 떠올리는데, 실제로는 그 전에 데이터가 어떻게 생겼는지, 무슨 패턴이 있는지, 무엇을 더 확인해야 하는지를 먼저 보는 과정이 필요하다.

EDA는 바로 그 역할을 한다.

즉, EDA는 모델링 이전의 부가 작업이 아니라, 분석 방향을 결정하는 첫 단계에 가깝다. EDA는 현상 파악 단계이고, 이후 머신러닝에서는 feature 설계와 연결되며, 딥러닝은 상대적으로 모델 구조와 튜닝 비중이 더 크다는 점도 함께 구분할 필요가 있다.


EDA를 한 줄로 정리하면

EDA는 데이터를 바로 모델에 넣기 전에, 데이터의 분포·결측치·이상치·관계·패턴을 확인하면서 “무엇을 볼 것인지”를 정리하는 과정이다.

즉, EDA의 목적은 단순 시각화가 아니다.

  • 데이터가 어떤 구조인지 이해하고
  • 이상한 값이나 비어 있는 값을 찾고
  • 어떤 변수들이 중요한지 감을 잡고
  • 이후 분석/예측 방향을 정리하는 것

여기까지가 EDA의 역할이다.

정리하면 EDA는 현상에 대한 이야기를 만드는 과정에 가깝다.


왜 EDA를 먼저 해야 하는가

EDA가 중요한 이유는 단순하다.

데이터를 안 보고 모델부터 만들면, 무슨 데이터를 넣고 있는지도 모른 채 예측부터 하게 되기 때문이다.

예를 들어 이런 상황은 아주 흔하다.

  • 결측치가 많은데 모르고 학습시킴
  • 특정 컬럼이 거의 같은 값인데 의미 있다고 착각함
  • 분포가 한쪽으로 심하게 치우쳤는데 그대로 사용함
  • 중복 데이터가 섞여 있는데 발견을 못 함
  • 변수 의미를 모르고 feature를 만들다가 방향을 잘못 잡음

EDA는 이런 문제를 모델 단계 전에 걸러준다.

특히 머신러닝에서는 어떤 feature를 쓸지가 중요하기 때문에, EDA를 기반으로 데이터를 먼저 이해하는 과정이 필요하다. 반면 딥러닝은 EDA가 완전히 불필요한 것은 아니지만, 상대적으로 모델 구조나 튜닝의 비중이 더 커진다.


EDA에서 주로 확인하는 것

EDA라고 해서 특별한 기술이 하나 있는 건 아니다.

오히려 아래처럼 기본적인 확인을 차근차근 하는 쪽이 더 중요하다.

1. 데이터 구조 확인

  • 행과 열이 몇 개인지
  • 컬럼 이름이 무엇인지
  • 자료형이 숫자인지, 문자열인지, 날짜인지

2. 결측치 확인

  • 비어 있는 값이 얼마나 있는지
  • 특정 컬럼에만 몰려 있는지

3. 기초 통계 확인

  • 평균, 중앙값, 최댓값, 최솟값
  • 분산, 표준편차
  • 값 범위가 이상하지 않은지

4. 분포 확인

  • 값이 한쪽에 몰려 있는지
  • 극단값이 많은지
  • 로그 변환 같은 전처리가 필요한지

5. 변수 관계 확인

  • 어떤 변수끼리 같이 움직이는지
  • 타깃과 관련 있어 보이는 변수는 무엇인지

6. 이상치/중복치 확인

  • 말이 안 되는 값이 들어와 있지 않은지
  • 같은 데이터가 반복되어 있지 않은지

EDA는 결국

데이터를 보기 좋게 꾸미는 과정이 아니라,데이터를 의심하고 확인하는 과정이라고 보는 게 더 정확하다.


EDA는 코드로 어떻게 시작하는가

EDA는 거창하게 시작하지 않아도 된다.

보통은 pandas로 데이터 구조부터 확인한다.

import pandas as pd

df = pd.read_csv("data.csv")

print(df.head())
print(df.shape)
print(df.info())
print(df.describe())

이 정도만 해도 이미 많은 정보가 나온다.

  • head() : 데이터 앞부분 확인
  • shape : 행/열 개수 확인
  • info() : 자료형, 결측치 개수 확인
  • describe() : 기초 통계량 확인

EDA는 사실 이런 기본 코드에서 시작한다.

처음부터 복잡한 시각화나 모델링으로 가는 게 아니라,

데이터를 먼저 읽는 것이 핵심이다.


결측치부터 보는 이유

결측치는 EDA에서 거의 가장 먼저 확인하는 항목이다.

값이 비어 있다는 건 단순히 “빈칸이 있다” 수준이 아니라,

분석 방향 자체를 바꿀 수 있는 정보이기 때문이다.

예를 들어:

print(df.isnull().sum())

이 코드는 컬럼별 결측치 개수를 보여준다.

결측치를 확인해야 하는 이유는 단순하다.

  • 결측치가 적으면 제거할 수도 있고
  • 많으면 대체 전략을 세워야 하고
  • 특정 컬럼에만 집중돼 있으면 데이터 수집 방식 자체를 의심해야 한다

즉, 결측치는 전처리 이전에 데이터 신뢰도 확인용 지표로 보는 게 좋다.


분포를 보는 이유

기초 통계만 보면 놓치는 게 있다.

같은 평균이라도 데이터 분포는 전혀 다를 수 있기 때문이다.

예를 들어:

import matplotlib.pyplot as plt

df["price"].hist()
plt.show()

히스토그램 하나만 봐도 이런 걸 알 수 있다.

  • 값이 특정 구간에 몰려 있는지
  • 이상치가 튀는지
  • 정규분포에 가까운지
  • 로그 변환이 필요해 보이는지

EDA에서 분포를 보는 이유는 결국

숫자 하나가 아니라 모양을 보기 위해서다.


변수 관계를 왜 보는가

EDA는 “데이터를 보는 단계”지만,

그 안에는 이미 어떤 변수가 의미 있어 보이는지 찾는 과정도 포함된다.

예를 들어 상관계수는 아주 기본적인 출발점이다.

print(df.corr(numeric_only=True))

이걸로 숫자형 변수끼리의 관계를 볼 수 있다.

물론 상관관계가 곧 인과관계는 아니다.

즉, 함께 움직인다고 해서 원인이라고 결론 내릴 수는 없다.

실제로 예측 모델이나 딥러닝 모델은 현상 설명에는 도움이 되지만,

“그래서 어떤 요인을 바꾸면 결과가 어떻게 바뀌는가”까지 명확히 답하는 데는 한계가 있다.

즉, 예측과 설명은 다르고, 인과관계는 별도의 문제다.


EDA와 ML/DL의 관계

EDA는 보통 머신러닝 이전 단계에서 특히 중요하다.

이유는 머신러닝에서는 feature 설계가 핵심이기 때문이다.

어떤 컬럼을 쓰고, 어떤 전처리를 하고, 어떤 변환을 할지를 정하려면

먼저 데이터를 이해해야 한다.

즉, 머신러닝에서는 EDA가 단순 준비 과정이 아니라, 사실상 절반 가까이 차지할 때도 있다.

반면 딥러닝은 조금 다르다.

  • EDA가 필요 없다는 뜻은 아니지만
  • 상대적으로 모델 구조
  • 어떤 아키텍처를 쓸지
  • 하이퍼파라미터 튜닝

이런 부분의 비중이 더 커진다.

즉, 정리하면 이렇게 보면 된다.

  • EDA: 데이터를 이해하는 단계
  • ML: 그 데이터를 바탕으로 예측 모델을 만드는 단계
  • DL: 모델 구조와 튜닝의 영향력이 더 커지는 단계

프로젝트 관점에서 EDA가 중요한 이유

EDA는 단순히 “분석용 루틴”이 아니라,

프로젝트 주제를 구체화하는 데도 중요하다.

좋은 분석 프로젝트는 보통 이런 흐름으로 간다.

  1. 내가 무엇을 확인하고 싶은지 정한다
  2. 그걸 확인할 수 있는 데이터가 있는지 본다
  3. 데이터를 수집하거나 정리한다
  4. EDA로 패턴과 문제를 확인한다
  5. 그다음 모델링이나 시각화로 넘어간다

즉, 프로젝트의 시작은 보통 “모델 만들기”가 아니라

문제를 정의하고, 데이터를 확인하고, EDA로 방향을 잡는 것이다.

특히 직접 수집하거나 직접 가공한 데이터가 들어가면, 단순한 공개 데이터셋 사용보다 문제 정의와 해결 과정이 더 선명해진다.


시각화는 왜 붙는가

EDA에서 시각화는 선택이 아니라 거의 필수다.

숫자만 보면 안 보이는 패턴이 그래프에선 바로 보이는 경우가 많기 때문이다.

예를 들면:

  • 히스토그램 → 분포 확인
  • 박스플롯 → 이상치 확인
  • 산점도 → 변수 관계 확인
  • 막대그래프 → 범주형 비교

그리고 분석 결과를 다른 사람에게 설명해야 한다면,

시각화는 더 중요해진다.

실제 분석에서는 단순히 “내가 이해하는 것”에서 끝나는 게 아니라,

다른 사람을 설득하고 의사결정을 돕는 것까지 이어지기 때문이다.

데이터를 어떻게 보여줄지, 어떤 정보를 대시보드로 구성할지도 결국 EDA와 연결된다.


구현 관점에서 기억할 포인트

1. EDA는 모델링 전 단계가 아니라 분석의 시작점이다

EDA는 “나중에 시간 남으면 하는 것”이 아니다.

오히려 분석 방향을 잡는 첫 단계다.

2. EDA의 핵심은 화려한 그래프가 아니라 데이터 이해다

그래프가 예쁜 것보다 중요한 건

결측치, 분포, 이상치, 관계를 제대로 읽는 것이다.

3. 상관관계와 인과관계를 혼동하면 안 된다

EDA에서 관계를 발견할 수는 있지만,

그게 원인이라고 바로 결론 내리면 안 된다.

예측과 설명은 다르다.

4. 좋은 EDA는 결국 좋은 질문에서 시작한다

무슨 데이터를 보고 싶은지, 어떤 문제를 확인하고 싶은지부터 정리돼야

EDA도 의미가 생긴다.


정리

EDA는 데이터를 보기 좋게 꾸미는 기술이 아니다.

오히려 데이터를 이해하고, 의심하고, 다음 분석 방향을 정하는 과정에 더 가깝다.

머신러닝이나 딥러닝으로 가기 전에

데이터 구조, 결측치, 분포, 변수 관계를 먼저 확인해야 하는 이유도 여기에 있다.

EDA를 건너뛰면 모델은 만들 수 있어도,

무슨 데이터를 넣고 있는지 모른 채 예측만 하게 될 가능성이 높다.


한 줄 정리

EDA는 데이터를 모델에 넣기 전에, 데이터의 구조·분포·결측치·관계를 먼저 확인하면서 분석 방향을 정하는 탐색적 분석 과정이다.