[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 9기
학습일 : 2024.07.22
📕 학습 목록
- 데이터 체크리스트
- 데이터 전처리
📗 기억할 내용
1. 데이터 전처리 전 체크리스트
- 데이터 형식 확인: 데이터 파일 형식 (CSV, Excel, JSON 등)과 데이터셋 구조(행, 열)를 확인
- 데이터 유형 확인: 각 열의 데이터 유형(숫자형, 문자열형, 날짜형 등)을 확인하여 필요시 변환할 수 있도록 준비
- 결측치 확인: 각 열의 결측치 개수와 분포를 확인하여 결측치 처리 전략을 세움
- 이상치 확인: 이상치가 있는지 확인하고 데이터의 통계적 분포를 파악하여 처리 방법을 결정
- 중복 데이터 확인: 중복된 행이 있는지 확인하여 불필요한 중복 데이터를 제거할지 여부를 결정
- 데이터 정규화/스케일링 필요성 확인: 데이터 분석이나 모델 학습을 위해 정규화 또는 스케일링이 필요한 열이 있는지 점검
2. 데이터 전처리
1) 결측치 처리 (Missing Values Handling)
- 결측치 확인
- isnull() 및 sum() 함수로 각 열의 결측치 개수를 확인
data.isnull().sum()
- 결측치 처리 방법
- 결측치 제거: dropna() 함수를 사용하여 결측치가 포함된 행 또는 열을 삭제
- 결측치 대체: 평균, 중앙값, 최빈값 등으로 결측치를 대체하여 데이터 손실을 최소화
# 결측치 제거
data_dropna = data.dropna()
data_dropna_column = data.dropna(subset=['A'])
# 결측치 대체
data_fill_mean = data.fillna(data.mean()) # 평균으로 대체
data_fill_median = data.fillna(data.median()) # 중앙값으로 대체
data_fill_mode = data.fillna(data.mode().iloc[0]) # 최빈값으로 대체
2) 이상치 처리 (Outliers Handling)
- IQR (Interquartile Range): Q1(1사분위수)와 Q3(3사분위수)를 사용하여 IQR을 계산하고, 이를 기준으로 이상치를 식별 및 제거
Q1 = data['A'].quantile(0.25)
Q3 = data['A'].quantile(0.75)
IQR = Q3 - Q1
data_no_outliers = data[(data['A'] >= Q1 - 1.5 * IQR) & (data['A'] <= Q3 + 1.5 * IQR)]
- Z-score: Z-score가 특정 기준을 초과하는 데이터를 이상치로 판단하여 제거
from scipy import stats
z_scores = stats.zscore(data['A'].dropna())
data_no_outliers = data[(z_scores < 3)]
3) 문자열 처리 (String Handling)
- 대소문자 변환: str.lower()와 str.upper()로 문자열을 소문자 또는 대문자로 변환
data['D_lower'] = data['D'].str.lower()
data['D_upper'] = data['D'].str.upper()
- 공백 제거: str.strip()를 사용하여 문자열의 양쪽 공백을 제거
data['D_trimmed'] = data['D'].str.strip()
- 정규 표현식을 통한 문자열 정제: str.contains()를 사용하여 특정 패턴이 포함된 문자열을 확인하고, 정규 표현식으로 문자열을 정제
data['Valid_Emails'] = data['Emails'].str.contains(r'^[\w\.-]+@[\w\.-]+\.\w+$', regex=True)
📙 내일 일정
- 데이터 전처리, 데이터 시각화
'TIL _Today I Learned > 2024.07' 카테고리의 다른 글
[DAY 10] Data Visualization (0) | 2024.07.24 |
---|---|
[DAY 9] Data Preprocessing, Data Visualization (0) | 2024.07.23 |
[DAY 7] Data Manipulation (0) | 2024.07.19 |
[DAY 6] Python Crawling (0) | 2024.07.18 |
[DAY 5] Python Crawling (0) | 2024.07.17 |