💚 = 클래스지만 함수처럼 동작
💙 = 매서드(객체가 수행할 수 있는 동작이나 기능을 나타냄) => 객체 뒤에 붙으면 매서드 , 아님 함수!
🤎 = dataframe의 속성
💜 = 함수
💛 = 파라미터(매개변수)
| 괄호 | 쓰는 이유 | 실제 예시 |
|---|---|---|
{} 중괄호 | 열이름과 값을 묶는 딕셔너리 | { 'A': [1,2], 'B': [3,4] } |
() 소괄호 | 함수 실행 시 꼭 써야 함 | pd.DataFrame(딕셔너리) |
[] 대괄호 | 원하는 부분만 꺼내서 보고 싶을때 사용 |
결측치란?
= 데이터에서 값이 없거나 누락된 상태
=> 제대로 처리하지 않으면 결과 왜곡되거나 오류생김.
=> ⭐ 데이터 전처리 핵심 단계
결측치 원인:
- 데이터 수집 과정의 문제: 설문 미응답, 센서 오류 등
- 데이터 입력 실수: 수동 입력 시 누락
- 시스템적 결측: 특정 조건에서 데이터가 수집되지 않음
- 의도적 결측: 해당 없음(N/A) 등
결측치 탐색
1. 어디에, 얼마나 있는지 정확하게 파악
-💜.isnull()은 결측치인지 아닌지(True/False) 알려주는 함수
답: False는 값O , True는 값X(=결측치)
=> .isnull().sum() = 결측치를 구하고 개수를 셀 수 있음
2. 0이 아닌값들이 결측치가 있는 컬럼
3. 💙sort_values('열이름') = "이 열(column)을 기준으로 표(행들을) 정렬해줘
결측치 제거
- 언제 어떻게 삭제할것인가 > 가장 간단하지만 신중해야하는 방법!
- 결측치가 있는 행 삭제하기
- 💜dropna()는 결측치(NaN)가 들어 있는 행(row) 을 삭제하는 함수
--사용--- 결측치 비율이 5% 미만일 때
- 결측치 패턴이 완전 무작위일 때
- 충분한 데이터가 남을 때
-> ❗ 너무 많은 데이터가 손실될 수 있음!
- 결측치가 있는 칼럼 삭제
--사용--
- 결측치 비율이 50% 이상인 컬럼
- 분석에 중요하지 않은 컬럼
- 다른 변수로 대체 가능한 정보를 담은 컬럼
⭐⭐Ex)
글자 출력
print(f"\n=== 컬럼 삭제 방식 ===")
⭐원본(titanic)에서 열방향으로 결측치가 있는 컬럼을 “제거한 새로운 복사본”이 만들어진 거야.
'a='-> 원래 데이터는 두고, 삭제된 버전을 따로 저장해 만들어줘!
titanic_dropped_cols = titanic.dropna(axis=1)
삭제 후 남은거에 대한 크기를 프린트하는거
print(f"결측치 컬럼 삭제 후: {titanic_dropped_cols.shape}")
전체 컬럼명에서 삭제 후 남은 컬럼을 빼서 삭제된 컬럼을 알아내는거야.
print(f"삭제된 컬럼: {set(titanic.columns) - set(titanic_dropped_cols.columns)}")
=>>> 원래 컬럼 목록에서 삭제된 컬럼들을 알아내는 코드
결측치 대체
- 결측치 대체 전략 선택 가이드
- 평균값: 정규분포에 가까운 연속형 변수
- 중위수: 이상치가 많거나 치우친 분포
- 최빈값: 범주형 변수
- 특정값: 비즈니스 로직상 의미가 있는 값
- 예측값: 다른 변수들로 예측한 값