개발로그필름

[데이터 TIL] EDA(Exploratory Data Analysis, 탐색적 데이터 분석)란? 본문

데이터분석가/데이터 TIL

[데이터 TIL] EDA(Exploratory Data Analysis, 탐색적 데이터 분석)란?

yuullog 2025. 2. 13. 14:03
728x90
반응형
SMALL

✅ EDA(Exploratory Data Analysis, 탐색적 데이터 분석)란?

EDA(탐색적 데이터 분석, Exploratory Data Analysis)는 데이터를 깊이 이해하고, 특징과 패턴을 발견하기 위한 분석 과정

쉽게 말하면, 데이터를 “처음 받았을 때 어떻게 생겼는지 파악하고, 어떤 관계가 있는지 살펴보는 과정”

 


 

📌 EDA가 왜 중요할까?

1️⃣ 데이터의 기본적인 구조 파악

  • 데이터에 어떤 컬럼(변수)이 있는지 확인
  • 각 컬럼에 어떤 값들이 들어 있는지 살펴보기

 

2️⃣ 데이터의 품질 점검

  • 결측치(Missing values, NaN)나 이상치(Outliers)를 찾아내서 보완할 수 있음
  • 데이터가 깨끗하지 않다면, 잘못된 분석 결과가 나올 위험이 있음

 

3️⃣ 변수 간의 관계 분석

  • 숫자 데이터(예: 매출, 점수)와 범주형 데이터(예: 제품 카테고리, 성별) 간의 관계를 살펴볼 수 있음
  • 예: “광고비가 증가하면 매출도 증가할까?” 같은 관계 분석 가능

 

4️⃣ 데이터의 분포 확인

  • 데이터가 정규분포를 따르는지, 특정 값이 너무 많거나 적은지 살펴볼 수 있음
  • 예: 대부분의 유튜브 영상은 조회수가 적지만, 소수의 영상이 폭발적으로 인기를 끄는 패턴

 

5️⃣ 시각화를 통해 패턴과 이상치 발견

  • 데이터를 표로만 보면 이해하기 어려울 수 있음. 그래프를 그리면 숨겨진 패턴을 발견할 수 있음
  • 예: 히스토그램, 박스플롯, 산점도 등 활용

 


 

🔍 EDA의 핵심 과정 (Step-by-Step)

1️⃣ 데이터 불러오기

보통 pandas 라이브러리를 사용해서 CSV, Excel, 데이터베이스 등의 데이터를 불러온다

 

📌 예제 코드: CSV 데이터 불러오기

import pandas as pd

# CSV 파일 불러오기
df = pd.read_csv("data.csv")

# 데이터 상위 5개 행 출력
print(df.head())

 

 

2️⃣ 데이터 기본 정보 확인

데이터가 어떤 구조를 가지고 있는지 파악

 

📌 데이터의 기본적인 정보 확인

# 데이터의 크기(행, 열) 확인
print(df.shape)

# 컬럼(변수)별 데이터 타입 확인
print(df.info())

# 데이터의 기초 통계량 확인
print(df.describe())

✔️ df.shape → (행 개수, 열 개수)

✔️ df.info() → 데이터 타입, 결측치 여부를 확인

✔️ df.describe() → 수치형 데이터의 평균, 표준편차, 최소/최대값 등

 

 

3️⃣ 결측치 및 이상치 탐색

결측치(Missing values)란?

👉 데이터가 비어 있는 값(NaN)

👉 예를 들어, 어떤 사람의 키는 있는데 몸무게가 없는 경우

 

📌 결측치 개수 확인

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

✔️ 컬럼별로 결측치가 몇 개 있는지 확인 가능

 

📌 결측치 처리 방법

  • df.dropna() → 결측치가 있는 행 삭제
  • df.fillna(평균값) → 평균값으로 결측치 채우기

 

반응형

 

4️⃣ 데이터 분포 확인

각 변수(컬럼)가 어떤 값을 가지고 있는지 살펴보기

 

📌 수치형 데이터 분포 확인 (히스토그램)

import matplotlib.pyplot as plt

df["column_name"].hist(bins=30)
plt.xlabel("값")
plt.ylabel("빈도수")
plt.title("데이터 분포")
plt.show()

✔️ 히스토그램은 값이 어떻게 분포되어 있는지 보여주는 그래프

✔️ 예를 들어, 조회수 데이터가 대부분 0~100만 사이에 몰려 있는지, 일부만 엄청 높은 조회수를 가지는지 확인 가능

 

📌 박스플롯(Boxplot)으로 이상치 탐색

import seaborn as sns

sns.boxplot(x=df["column_name"])
plt.show()

✔️ 박스플롯은 이상치(Outlier)가 있는지 확인하는 데 유용

 

 

5️⃣ 변수 간의 관계 분석 (상관관계)

변수들 간에 연관성이 있는지 알아보는 과정

예를 들어, 좋아요 수가 많으면 조회수도 많을까?

 

📌 상관계수 행렬(Heatmap)

import seaborn as sns
import matplotlib.pyplot as plt

# 상관관계 행렬 계산
corr_matrix = df.corr()

# 히트맵 시각화
plt.figure(figsize=(8,6))
sns.heatmap(corr_matrix, annot=True, cmap="coolwarm")
plt.title("상관관계 히트맵")
plt.show()

✔️ df.corr() → 변수들 간의 상관관계를 계산

✔️ sns.heatmap() → 상관관계를 시각적으로 확인할 수 있도록 히트맵(heatmap) 생성

 

📌 산점도(Scatter Plot)로 두 변수 간 관계 확인

sns.scatterplot(x=df["views"], y=df["likes"])
plt.xlabel("조회수")
plt.ylabel("좋아요 수")
plt.title("조회수 vs 좋아요 수")
plt.show()

 


 

✅ EDA를 통해 얻을 수 있는 것

1️⃣ 데이터의 구조를 이해하고, 데이터 정제 필요성을 확인

2️⃣ 데이터의 분포를 파악하고 이상치를 찾아냄

3️⃣ 변수 간 관계를 분석하여 인사이트 도출 가능

반응형
LIST
Comments