본문 바로가기
Computer Science/프로젝트

Airbnb New User Bookings 데이터 시각화 - Kaggle Project(3)

by sy.cho__ 2017. 11. 10.

이번 포스팅에선 앞서 가공한 데이터를 이용해 데이터 시각화를 해보겠습니다.


지금 가지고 있는 Variable은 총 28개 있으며 현재 변수들 간에 서로 어떠한 상관관계가 있는지 모릅니다.


그래서 어떻게 시작해야할 지 감이 안잡힐 수도 있습니다.


우선 본 프로젝트의 목표를 다시 한번 확인하겠습니다.


"새로운 가입자가 최초로 예약할 장소를 예측하자!"


그러므로 기존의 사용자가 어떠한 상태에서 예약을 했는지, 예약을 했다면 어디를 맨 처음 예약했는지 확인해 볼 필요성이 있습니다.


우선 가입날짜와 처음 예약한 날짜와의 상관관계가 있는지 확인해보겠습니다.


아래에서 코드와 실행결과를 확인할 수 있습니다.


#  date_first_booking by date_account_created 

airbnb %>% 

  sample_n(2000) %>% 

  filter(age < 150) %>%

  ggplot(aes(date_account_created, date_first_booking)) + 

  geom_point(alpha = 0.5) + geom_smooth() +

  ggtitle("Date_first_booking by date_account_created ")




결과를 먼저 확인하고 코드에 대해 설명하겠습니다.


위 두 변수의 관계가 선형관계에 있음을 확인할 수 있습니다.

즉, 가입한지 오래된 사용자 보다는 이제 막 가입한지 얼마안된 사용자를 대상으로 마케팅을 해야함을 알 수 있습니다.


이제 코드를 확인해보겠습니다. 


전체 데이터를 다 사용하기 보단 보단 랜덤으로 2000개의 데이터를 뽑아서 사용했습니다. 2000도 충분히 큰 숫자이기 때문에 모집단을 예측하는 데 문제가 없을 것 같습니다. 

사용자의 나이를 나타내는 age변수에 간혹 이상한 값이 들어가 있을 경우가 있습니다. 이는 회원가입할 때 충분히 발생할 수 있는 오류이므로 150살 이상의 고객은

실수로 입력했다고 가정하고 그 이하의 사용자 데이터만 사용했습니다.

코드를 보면 Line마다 '%>%' 를 볼 수 있습니다. 이것은 dplyr에서 제공해주는 연산자로 and의 의미와 같습니다. 

여러 개의 조건을 추가하는 경우 %>%를 사용하여 쉽게 구현할 수 있습니다. 


수도코드로 나타내면 다음과 같습니다.

airbnb 데이터에서,

2000개를 랜덤으로 고르고,

date_account_created를 기준으로 date_first_booking을 알아본건데,

점과 선을 긋고,

제목은 ~~로 해줘!!


위 코드를 조금 수정해보겠습니다.


저희가 가지고 있는 변수 중 sign_up app가 있습니다. 이는 회원가입 경로가 모바일인지 웹인지 나타내는 변수입니다.

이를 코드에 추가하면 sign_up app에 따라 점의 색깔을 다르게 표현해보겠습니다. 또한 age변수를 추가하여 점의 크기를 나타내보겠습니다.


#  date_first_booking by date_account_created 

airbnb %>% 

  sample_n(2000) %>% 

  filter(age < 150) %>%

  ggplot(aes(date_account_created, date_first_booking)) + 

  geom_point(aes(size=age, col=signup_app),alpha = 0.5) + geom_smooth() +

  ggtitle("Date_first_booking by date_account_created ")



자 결과를 보니 어떤가요?

대부분의 예약을 완료한 고객들은 Web을 통해 가입한 고객임을 알 수 있습니다!

아마 숙소를 예약하는 것이기 때문에 스마트폰으로 대충 보기보단, 자리에 앉아서 컴퓨터를 통해 많은 고민을 하고(?) 예약을 하는구나! 

예를 들어 이렇게 생각할 수 있는겁니다. 점의 크기로 age를 나타냈는 점이 너무 많아서 이 의미를 찾기는 힘드네요


지금까지 분석한 결과를 한번 정리해보겠습니다.


이제 막 회원가입한 사용자 중에 Web을 통해 가입한 고객을 대상으로 마케팅을 해야한다!


위 분석을 통해 Signup_app이 중요한 변수라는 것을 알았습니다.

그럼 한번 Signup_app의 분포를 한번 확인해볼까요? 보기 쉽게 막대그래프로 표현해보겠습니다.


# view signup_app

airbnb %>% ggplot(aes(signup_app)) + geom_bar()



기본적으로 Web을 통해 가입한 사용자가 많네요..!


다음으로 예약한 사용자를 기반으로 age 분포를 확인해보겠습니다.


#View age by data_account_created

airbnb %>% 

  sample_n(2000) %>% 

  filter(age<150) %>%

  ggplot(aes(age, date_first_booking)) + geom_point(alpha=.5) + geom_smooth()




20,30대의 고객이 주로 Airbnb 서비스를 사용하고 있는 것을 알 수 있습니다.

시간이 지날수록 Airbnb가 점점 커지고 유명해지면서 사용고객도 많아지고 있음을 알 수 있네요.



이제 사용자들이 맨 처음 예약하는 장소가 어디가 많은지 한번 확인해보겠습니다.

확률을 표현하기 위해 %로 표현하겠습니다.


#overall dest table stats

#what % of users go to which country

t = table(airbnb$country_destination) 

print(signif(t / sum(t) * 100), digits = 2)


Result : 


NDF가 거의 60%로 많은 비율을 차지하고 있습니다, NDF는 No Destination Found의 약자로 예약을 하지 않은 사용자를 말합니다.

많은 사용자가 예약은 하지 않았고, 예약한 사용중에서는 US(미국)이 약 30%로 가장 많은 비율을 차지하고 있습니다.


막대그래프로 다시 한번 확인해보겠습니다.


barplot(t/sum(t))




다음 포스팅에서는 예약한 Destination을 기준으로 더 데이터 시각화를 해보는 내용을 이어가겠습니다.

감사합니다!


반응형