• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

(오류) 섹션5 - 작업유형 1 오류 입니다

22.04.29 13:52 작성 조회수 86

0

안녕하세요, 다음과 같이 코드를 실행했을 때 Cabin과 Embarked 값이 이상하게 나옵니다. 잘못된 부분 수정 부탁 드립니다
 

답변 2

·

답변을 작성해보세요.

0

 

안녕하세요.  지적감사드립니다.

 

제가 작성한 스크립트를 보니 오타가 맞습니다.  df를 두 번 입력했네요.

두 번 입력된 df를 한 번으로 바꾸면 말씀해주신대로 cabin이 맞습니다.

 

스크립트는 수정해서 올려두었습니다. 그럼 즐거운 하루되세요!

 

0

 

안녕하세요. 위에 주신코드를 그대로 입력해보니 저도 그런값이 나옵니다.

확인해보니 제가 드린 코드와 괄호의 위치가 다릅니다.

괄호를 스크립트대로 하면 이상없이 결과값이 나옵니다.

괄호부분을 잘 확인하셔서 다시 한 번  실행을 해보시면 될 것 같습니다.

 

감사합니다.

 

원본 : Cabin_ratio <- (sum(is.na(df$Cabin))+sum(df$Cabin=='', na.rm = T))/nrow(df

위의코드 :  Cabin_ratio <- sum(is.na(df$Cabin)+sum(df$Cabin=='', na.rm = T))/nrow(df)

 

요리꿈나무님의 프로필

요리꿈나무

2022.05.23

안녕하세요.

저도 질문자와 같이 cabin의 칼럼에서 가장 높은 수치가 나옵니다.

살펴보니 강사님의 스크립트는

Cabin_ratio <- (sum(is.na(df$Cabin))+sum(df$df$Cabin=='', na.rm = T))/nrow(df)

Embarked_ratio <- (sum(is.na(df$Embarked))+sum(df$df$Embarked=='', na.rm = T))/nrow(df)

 

처음에는 저 두 칼럼만 저렇게 한 이유에 대해 곰곰히 생각해보았는데요.

문자열이라서 그런가 싶었는데,  Ticket 칼럼에서는 그렇지 않는 것을 보니

오타인 것 같습니다.

스크립트가 수정되어야 할 것 같네요.

 

따라서 결론은 Age 칼럼이 아닌 빈값이 많은 (687개) 

Cabin 칼럼이 정답이 될 것 같습니다.

확인 부탁 드립니다.

 

 

 

> my = function(x, y){

+ (x + y) / nrow(df)}

> PassengerId = my(sum(df$PassengerId == '', na.rm = T) , sum(is.na(df$PassengerId)))

> Survived = my(sum(df$Survived == '', na.rm = T) , sum(is.na(df$Survived)))

> Pclass = my(sum(df$Pclass == '', na.rm = T) , sum(is.na(df$Pclass)))

> Name = my(sum(df$Name == '', na.rm = T) , sum(is.na(df$Name)))

> Sex = my(sum(df$Sex == '', na.rm = T) , sum(is.na(df$Sex)))

> Age = my(sum(df$Age == '', na.rm = T) , sum(is.na(df$Age)))

> SibSp = my(sum(df$SibSp == '', na.rm = T) , sum(is.na(df$SibSp)))

> Parch = my(sum(df$Parch == '', na.rm = T) , sum(is.na(df$Parch)))

> Ticket = my(sum(df$Ticket == '', na.rm = T) , sum(is.na(df$Ticket)))

> Fare = my(sum(df$Fare == '', na.rm = T) , sum(is.na(df$Fare)))

> Cabin = my(sum(df$Cabin == '', na.rm = T) , sum(is.na(df$Cabin)))

> Embarked = my(sum(df$Embarked == '', na.rm = T) , sum(is.na(df$Embarked)))

> df_ratio = data.frame(col = colnames(df),

+ ratio = c(PassengerId, Survived, Pclass, Name, Sex, Age, SibSp,

+  Parch, Ticket, Fare, Cabin, Embarked))

> df_ratio %>% arrange(desc(df_ratio$ratio))

           col       ratio

1        Cabin 0.771043771

2          Age 0.198653199

3        Parch 0.035914703

4        SibSp 0.011223345

5     Embarked 0.002244669

6  PassengerId 0.000000000

7     Survived 0.000000000

8       Pclass 0.000000000

9         Name 0.000000000

10         Sex 0.000000000

11      Ticket 0.000000000

12        Fare 0.000000000