각 컬럼별로 결측치를 '흑백 히트맵'으로 시각화해줘.
데이터가 존재하면 검은색, 결측치는 흰색.컬럼 | 결측 개수 | 비율 | 처리 |
Age | 177 | 약 19.9% | 승객 나이 ⇒ 중요 데이터 (나이에 따른 생존율 분석 등) |
Cabin | 687 | 약 77.1% | 승객이 머물렀던 객실 번호 ⇒ 통계적으로 처리 어렵고, 상대적으로 중요 데이터 X |
Embarked | 2 | 약 0.2% | 출발 항구 ⇒ 1% 미만으로 무시 가능 |
방법 | 핵심 아이디어 | 언제 사용하면 좋은가? |
중앙값/최빈값 대치 | 평균 대신 중앙값/최빈값으로 채우기 | 이상치가 많거나 범주형 데이터일 때 |
K-최근접 이웃(KNN) | 가장 비슷한 이웃들의 값으로 채우기 | 변수 간 복잡한 관계가 있을 때 (머신러닝) |
시계열 보간법 | 앞뒤 데이터의 추세로 채우기 | 주식, 기온 등 시간 순서가 중요할 때 |
딥러닝 모델 | 데이터의 복잡한 패턴을 학습하여 예측 | 매우 복잡하고 큰 데이터셋일 때 (전문가용) |
다음의 결측치 전처리를 수행하고, **처리 전과 후의 각 칼럼별 결측치 개수**를 비교해서 보여줘.
- `Cabin`: 'Unknown'으로 채우기
- `Age`: 전체 평균값으로 채우기
- `Embarked`: 결측치가 포함된 행 삭제
PassengerId | Name | Age | Cabin | Embarked |
1 | Braund, Mr. Owen Harris | 22.0 | Unknown | S |
3 | Heikkinen, Miss. Laina | 26.0 | Unknown | S |
5 | Allen, Mr. William Henry | 35.0 | Unknown | S |
6 | Moran, Mr. James | 29.699118 (→ 평균으로 대체) | Unknown | Q |
8 | Palsson, Master. Gosta Leonard | 2.0 | Unknown | S |
타이타닉 데이터에서 'Age' 칼럼의 비어있는 값들을 **다중 대치법**으로 채워줘.
작업이 끝나면, 원래 나이가 비어있던 승객들만 골라서 새롭게 채워진 나이 값을 확인하고 싶어.
PassengerId | Pclass | Sex | 새로 채워진 Age |
6 | 3 | male | 27.62 |
18 | 2 | male | 34.11 |
20 | 3 | female | 27.64 |
27 | 3 | male | 27.64 |
29 | 3 | female | 27.63 |
30 | 3 | male | 27.63 |
32 | 1 | female | 34.49 |
33 | 3 | female | 27.63 |
37 | 3 | male | 27.64 |
43 | 3 | male | 27.63 |
승객 생존율을 예측하는 모델을 만들어보려고 해.
그런 관점에서 3개 컬럼의 결측치 처리 전략 제안해줘.
df['Title'] = df['Name'].str.extract(' ([A-Za-z]+)\.', expand=False)
df['Age'] = df.groupby(['Sex', 'Pclass', 'Title'])['Age'].transform(lambda x: x.fillna(x.median()))
df['AgeGroup'] = pd.cut(df['Age'], bins=[0, 12, 19, 59, 80], labels=['Child', 'Teen', 'Adult', 'Senior'])df['Cabin_flag'] = df['Cabin'].notnull().astype(int)
df['Cabin_initial'] = df['Cabin'].str[0].fillna('U') # U = Unknowndf['Embarked'].fillna(df['Embarked'].mode()[0], inplace=True)컬럼 | 결측률 | 처리 전략 | 생성 파생 변수 | 모델 활용 포인트 |
Age | 19.9% | 성별·계층별 중앙값 대체 | AgeGroup, Title | 연령대별 생존률 반영 |
Cabin | 77.1% | 존재 여부 이진화 + 선실 알파벳 추출 | Cabin_flag, Cabin_initial | 상류층 여부 지표 |
Embarked | 0.2% | 최빈값(S) 대체 | — | 출항지별 사회계층 반영 |