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. 데이터 전처리 종합 실습
했다..
여유될 때 추가 기록하는 것으로..
당분간 블로그는 이론을 복습하는 정도로만 포스팅 해야 겠다..
어차피 실습 파일은 코랩이랑 하드에 다 기록되어 있으니깐..
보고서 빠르게 작성 그거 어떻게 하는 건데..