티스토리 뷰
데이터 분석에 앞서
이상치, 결측치를 확인해야 한다.
이상치, 결측지에 관한 포스팅은 다음으로 미루고 실습위주로 한다.
분석은 전 포스팅에 이어서 한다.
결측치 확인 및 결측치 채우기
패키지
library(VIM)
결측치 확인
> VIM::aggr(fullDT,
+ prop=FALSE,
+ numbers=TRUE,
+ sortVars= TRUE,
+ cex.axis = .7)
Variables sorted by number of missings:
Variable Count
Cabin 1014
Survived 418
Age 263
Embarked 2
Fare 1
PassengerId 0
Pclass 0
Name 0
Sex 0
SibSp 0
Parch 0
Ticket 0
Variable |
Count |
Cabin |
1014 |
Survived |
418 |
Age |
263 |
Embarked |
2 |
Fare |
1 |
결측치(NA) 개수를 확인할 수 있다. 그리고 시각화
데이터를 보면 Carbin(객실), Age(나이), Embarked(승선지역), Fare(요금)에 결측치가 있다.
Fare(요금)
> fullDT[is.na(Fare)]
PassengerId Pclass Name Sex Age SibSp Parch Ticket Fare
1: 1044 3 Storey, Mr. Thomas male 60.5 0 0 3701 NA
Cabin Embarked Survived
1: <NA> S <NA>
> mean(fullDT$Fare, na.rm = TRUE)
[1] 33.29548
> fullDT[is.na(Fare)]$Fare <- mean(fullDT$Fare, na.rm = TRUE)
Fare에 결측치 개수는 1개로 결측치행을 탐색해 볼때 뚜렸한 인사이트를 얻기 힘들거 같다.
결측치 개수가 적으므로 승객들의 평균 Fare로 결측치를 채운다.
Embarked(승선지역)
> fullDT[is.na(Embarked)]
PassengerId Pclass Name Sex Age
1: 62 1 Icard, Miss. Amelie female 38
2: 830 1 Stone, Mrs. George Nelson (Martha Evelyn) female 62
SibSp Parch Ticket Fare Cabin Embarked Survived
1: 0 0 113572 80 B28 <NA> 1
2: 0 0 113572 80 B28 <NA> 1
> fullDT[Ticket %in% 113572]
PassengerId Pclass Name Sex Age
1: 62 1 Icard, Miss. Amelie female 38
2: 830 1 Stone, Mrs. George Nelson (Martha Evelyn) female 62
SibSp Parch Ticket Fare Cabin Embarked Survived
1: 0 0 113572 80 B28 <NA> 1
2: 0 0 113572 80 B28 <NA> 1
> fullDT[Cabin %in% "B28"]
PassengerId Pclass Name Sex Age
1: 62 1 Icard, Miss. Amelie female 38
2: 830 1 Stone, Mrs. George Nelson (Martha Evelyn) female 62
SibSp Parch Ticket Fare Cabin Embarked Survived
1: 0 0 113572 80 B28 <NA> 1
2: 0 0 113572 80 B28 <NA> 1
> table(fullDT$Embarked)
C Q S
270 123 914
> fullDT[is.na(Embarked)]$Embarked <- "S"
Embarked의 결측치는 2개로 직접 탐색해 봤을 때, 2명 승객에 티켓과 객실을 사용함을 알 수 있다.
그래서 같은 티켓과 같은 객을 사용하는 다른 사람이 있는지 찾아 보았지만, 두사람 이외에는 없음을 알 수 있다.
결측치값을 대체하기 위한 방법은 여러가지 존재한다. 대표적으로는 평균값, 최빈값 등등 여러가지 존재하지만 데이터 특성에 따라 대체하는 방법은 분석가가 판단하는 문제이다. 이 데이터에 인사트를 돌출하기 위해서는 많은 노력이 필요하기 때문에 범주형 데이터에서 흔히 사용한는 최빈값으로 대체할 생각이다.
이 결측치에서는 Embarked의 level이 3가지 범주 [1] "C" "Q" "S" 에서 빈도가 "S"가 914로 가장 크기 때문에 결측치는 "S"로 대체한다.
> colSums(is.na(fullDT))
PassengerId Pclass Name Sex Age SibSp Parch Ticket
0 0 0 0 263 0 0 0
Fare Cabin Embarked Survived
1 1014 2 418
colSums(is.na(fullDT)) 함수를 사용하여 결측치를 확인할 수 있다.
'빅데이터 분석 > adp 실기' 카테고리의 다른 글
[adp 실기] Titanic 데이터 실습 1 (0) | 2019.02.20 |
---|
- Total
- Today
- Yesterday
- 빅데이터분석
- ADSP
- RStudio
- 실기
- 분석
- 기초
- data.table
- 병합
- Bigdata
- rbase
- vector
- 우분투
- 벡터
- subset
- 16.04
- data.frame
- 빅데이터
- 실습
- 빅데이터분석전문가
- Titanic
- 데이터구조
- Kaggle
- 데이터형태
- 데이터분석
- 함수
- R
- 타입
- 리눅스
- Jupyter notebook
- ADP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |