개발로그필름
[데이터 TIL] EDA(Exploratory Data Analysis, 탐색적 데이터 분석)란? 본문
✅ 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️⃣ 변수 간 관계를 분석하여 인사이트 도출 가능
'데이터분석가 > 데이터 TIL' 카테고리의 다른 글
[데이터 TIL] A/B 테스트란? 데이터 기반 의사 결정을 위한 실험 방법 (0) | 2025.02.24 |
---|---|
[데이터 TIL] Apache Airflow란? (0) | 2025.02.24 |
[데이터 TIL] 다른 타입의 년, 월, 일 컬럼 한개의 컬럼으로 합치기 (0) | 2025.02.12 |
내가 보려고 만든 데이터분석 파이썬 초기 세팅 코드 (0) | 2025.02.12 |
[데이터 TIL] 분산이란? (0) | 2025.02.11 |