TIL

[멋쟁이사자처럼 부트캠프 그로스 마케팅] 데이터수집 및 전처리 : 데이터 구조 파악(EDA)

•ɞ• 2025. 2. 21. 01:09

 

 

학습내용

  • 데이터 구조 파악(EDA)
  • 데이터 전처리 종합 실습

 

1. 데이터 구조 파악 (EDA)

1) 데이터의 기본 정보 확인

# 데이터 로드 (예제 데이터)
df = pd.read_csv("sample_data.csv")

# 데이터 크기 확인 (행, 열 개수)
print(f"데이터 크기: {df.shape}")

# 컬럼명 확인
print(f"컬럼명: {df.columns.tolist()}")

# 데이터 타입 확인
print(df.info())

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

#출력 예시
데이터 크기: (1000, 10)
컬럼명: ['ID', '이름', '나이', '성별', '소득', '구매횟수', '평균구매금액']
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 6 columns):
 #   Column   Non-Null Count  Dtype
---  ------   --------------  -----
 0   ID       1000 non-null   int64
 1   이름       1000 non-null   object
 2   나이       980 non-null   float64
 3   성별       1000 non-null   object
 4   소득       950 non-null   float64
 5   구매횟수    1000 non-null   int64
dtypes: float64(2), int64(2), object(2)

 

 

2) 결측치 및 이상치 탐색

 

결측치

# 각 컬럼별 결측치 개수 확인
print(df.isnull().sum())

# 출력 예시
ID        0
이름       0
나이      20
성별       0
소득      50
구매횟수    0
dtype: int64

 

이상치

import matplotlib.pyplot as plt
import seaborn as sns

# 박스플롯으로 이상치 확인
plt.figure(figsize=(6, 4))
sns.boxplot(x=df['소득'])
plt.title("소득 이상치 탐색")
plt.show()

from scipy import stats

# Z-score 계산
df["소득_Z"] = stats.zscore(df["소득"])

# Z-score가 3 이상인 데이터 조회
outliers = df[df["소득_Z"].abs() > 3]
print(outliers)

 

 

3) 데이터 분포 확인

# 히스토그램
plt.figure(figsize=(6, 4))
sns.histplot(df["소득"], bins=30, kde=True)
plt.title("소득 분포")
plt.show()

# QQ-Plot을 이용한 정규성 확인
import scipy.stats as stats
import numpy as np
import matplotlib.pyplot as plt

stats.probplot(df["소득"].dropna(), dist="norm", plot=plt)
plt.title("QQ-Plot")
plt.show()

 

 

4) 변수 간 관계 분석

# 수치형 변수 간의 상관계수 확인
correlation_matrix = df.select_dtypes(include=[float, int]).corr()
print(correlation_matrix)

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

 

 

5) 변수 간 관계 시각화

# 산점도를 활용한 관계 분석
plt.figure(figsize=(6, 4))
sns.scatterplot(x=df["소득"], y=df["구매횟수"])
plt.xlabel("소득")
plt.ylabel("구매횟수")
plt.title("소득과 구매횟수 관계")
plt.show()

# 박스 플롯을 활용한 범주형 변수 분석
plt.figure(figsize=(6, 4))
sns.boxplot(x=df["성별"], y=df["소득"])
plt.title("성별에 따른 소득 분포")
plt.show()

 

 

6) 데이터 정리 및 이상치 제거

# 이상치 제거 (소득이 Z-score 3 초과인 데이터 제거)
df_cleaned = df[df["소득_Z"].abs() <= 3]

# 필요 없는 컬럼 제거 (Z-score 컬럼 삭제)
df_cleaned.drop(columns=["소득_Z"], inplace=True)

print(df_cleaned.info())  # 데이터 정리 후 구조 확인

 

 

그리고 엄청나게

2. 데이터 전처리 종합 실습

했다..

여유될 때 추가 기록하는 것으로..

 


 

 

당분간 블로그는 이론을 복습하는 정도로만 포스팅 해야 겠다..

어차피 실습 파일은 코랩이랑 하드에 다 기록되어 있으니깐..

보고서 빠르게 작성 그거 어떻게 하는 건데..