결측치(Missing Value)
: 0이 아닌 값
언어별로 다르게 부르는데,
- NA(Not Available) : 유효하지 않음
- NaN(Not a Number) : 숫자가 아님
- Null : 아무것도 존재하지 않음
※ 주의해야 할 점은,
결측치는 0이 아니기 때문에 0과는 달리 이 값이 무엇일지 예측할 수 없다는 것이다.
결측치는 왜 생기는 것일까?
- 실제로 값 혹은 응답을 입력하지 않아서
- 데이터의 오류로 인해서
결측치를 처리해야 하는 이유
- 결측치로 인해 데이터의 손실이 발생할 수 있음
- 결측치를 어떻게 대체하느냐에 따라서 데이터의 편향이 생길 수 있음
- 데이터 분석가가 결측치를 어떻게 처리하는지에 따라 분석 결과가 달라질 수 있음
결측치 처리 방법
1. 평균으로 대체하는 방법
- 특정 정보가 존재하지 않을 경우, 평균이 가장 좋은 대표값이라는 논리에 기인한 방법
- 평균이라는 값으로 대체했기 때문에 정보의 손실은 줄어든다.
- But, 결측치에 대한 불확실성을 없앨 수는 없다.
ex. '나이' 컬럼에 특정 데이터가 비어있다고 가정하자.
이 결측치를 대체하기 위해서 전체 나이의 평균을 구한 다음, 평균값으로 결측치를 대체한다.
평균값 35를 적었음에도 불구하고 그 사람의 실제 나이가 1살 혹은 2살이라면 이러한 경우 매우 큰 차이를 보이기 때문에
원래 결측치에 대한 불확실성을 고려하지 못한다.
2. 결측치를 분석 대상에서 완전히 제거하는 방법
- 결측치를 아예 없애버렸기 때문에 분석의 편향이 발생할 가능성은 줄어든다.
- But, 정보의 손실이 발생하기 때문에 검정력이 약화될 수 있다.
3. 회귀대체법
: 결측값을 회귀식을 적용한 예측값으로 대체하는 방법
- 변수의 특성 or 회귀식을 구성해서 '예측값'을 도출 → 예측력 향상
- But, 결측치에 대한 불확실성을 없앨 수는 없다.
NULL이란?
: 값이 존재하지 않음을 나타내는 상수
- 0 혹은 "" 과는 다름
- 필드 지정시 값이 없는 경우 NULL로 지정 가능
- 테이블 정의시 디폴트 값으로도 지정 가능
IS NULL & IS NOT NULL
: 어떤 필드의 값이 NULL인지 아닌지 판단하기 위해서 사용하는 함수
- IS NULL : 필드의 값이 NULL이면 TRUE, NULL이 아니면 FALSE 반환
-- 컬럼의 값이 null인 값만 조회하기
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 IS NULL;
- IS NOT NULL : 필드의 값이 NULL이 아니면 TRUE, NULL이면 FALSE 반환
-- 컬럼의 값이 null이 아닌 값만 조회하기
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 IS NOT NULL;
NULL의 사칙연산
Null이 사칙연산에 사용되어도 그 결과는 Null이 된다.
SELECT 0 + NULL,
0 - NULL,
0 * NULL,
0/NULL
→ NULL, NULL, NULL, NULL
🤔 10일차 회고
결측치가 NA, NaN, Null 말고도 더 다양한 종류가 있는 것으로 알고 있는데,
어떤 것들이 있는지, 각각이 의미하는 바가 무엇인지, 사용하는 언어별로 어떻게 다르게 쓰이는지 알아봐야 겠다.