-
[멋쟁이사자처럼 부트캠프 그로스 마케팅] 데이터수집 및 전처리 : 데이터 구조 파악(EDA)TIL 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. 데이터 전처리 종합 실습
했다..
여유될 때 추가 기록하는 것으로..
당분간 블로그는 이론을 복습하는 정도로만 포스팅 해야 겠다..
어차피 실습 파일은 코랩이랑 하드에 다 기록되어 있으니깐..
보고서 빠르게 작성 그거 어떻게 하는 건데..
'TIL' 카테고리의 다른 글
[멋쟁이사자처럼 부트캠프 그로스 마케팅] 통계 분석 기초 (1) 2025.02.24 [멋쟁이사자처럼 부트캠프 그로스 마케팅] 데이터수집 및 전처리 : 그래프 시각화 with Seaborn (1) 2025.02.21 [멋쟁이사자처럼 부트캠프 그로스 마케팅] 데이터수집 및 전처리 : 데이터 변환 (0) 2025.02.19 [멋쟁이사자처럼 부트캠프 그로스 마케팅] 데이터수집 및 전처리 : 설문조사 (1) 2025.02.19 [멋쟁이사자처럼 부트캠프 그로스 마케팅] 데이터수집 및 전처리 : API (1) 2025.02.17