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

Airbnb New User Bookings 데이터 읽기 및 가공 - Kaggle Project(2)

by sy.cho__ 2017. 11. 9.

본 포스팅을 Kaggle의 yYaMamoto님의 kernel을 인용하여 작성했습니다


이 글에서는 airbnb 데이터를 읽고 가공하는것에 대해 알아보겠습니다.

사용한 언어는 R입니다.


데이터 분석을 시작할 때 제일 먼저 해야하는 건 무엇일까요?


당연히 분석을 위한 데이터를 확보하는 것입니다. 


데이터를 확보하고 읽는 것은 매우 중요합니다. 그리고 분석을 편하게 하기 위해 적절한 가공이 필요합니다.


예를 들어 다음과 같은 날짜 데이터가 있다고 가정합시다.


2017년 8월 12일


이 날짜는 한글과 숫자로 이루어져있기 때문에 R 혹은 Python을 이용해 읽었을 때 문자열로 읽을 가능성이 큽니다. 

나중에 날짜로 정렬을 할 수도 있고 특정 날짜 범위내의 데이터만 필요할 경우도 생기기 때문에 적절한 변형이 필요합니다.

예를 들어 다음과 같이 가공할 수 있습니다.


2017-08-12


이와 같이 읽은 데이터를 분석하기 쉽게 가공하는 것이 중요하고 시간이 오래 걸립니다. 


시작하기 전 다음 라이브러리를 설치해야 합니다. 아래 코드를 참고해주세요


install.packages("dplyr")

install.packages("ggplot2")

library(dplyr)

library(ggplot2)


dplyr는 기본 데이터를 데이터 분석에 필요한 형태로 가공하는 데이터 전처리를 위한 많은 함수를 가지고 있습니다. 

ggplot2는 기본 R 그래픽스에서 제공하는 대부분의 작업을 아주 효과적으로 수행할 수 있어서 ggplot2를 이용해 데이터 시각화를 위한 많은 함수를 사용할 수 있습니다.

.


우선 airbnb  데이터를 읽는 작업부터 하겠습니다.

wd = "/Users/seungyuncho/Desktop/Airbnb_Data_analysis-master"
airbnb <- read.table(paste(wd,"/train_users_2.csv",sep=""), head=T, sep=",", stringsAsFactors=F)

wd는 Input data file이 있는 주소를 나타내고 table 형식으로 데이터를 읽겠습니다.


아직 가공하지 않은 데이터를 한번 확인해보겠습니다. 

glimpse function을 통해 각 column의 데이터를 확인할 수 있고 자료의 구조와 내용을 살펴볼 수 있다.


#See variable & observation

glimpse(airbnb)


실행 결과는 아래와 같습니다



위 결과를 확인해보면 date_account_created와 같은 변수의 값이 모두 문자열로 인식되어 있습니다

date_first_booking을 맨 처음 예약을 한 날짜를 저장하는 변수로써 만약 예약을 하지 않은 고객은 빈칸으로 남아있을 겁니다. (위 결과에서 확인할 수 있습니다)

이렇게 아직 정리가 되지 않은 데이터는 가공이 필요합니다.

형식을 통일하고 빈값이 있다면 분석 중에 error가 발생하지 않도록 적절한 키워드를 넣어줘야 합니다.


이를 위해 다음과 같이 형식을 통일하겠습니다.


airbnb$date_account_created <- as.Date(airbnb$date_account_created)

airbnb$date_account_created.num <- as.numeric(airbnb$date_account_created)

airbnb$date_account_created.year <- as.numeric(format(airbnb$date_account_created, "%y"))

airbnb$date_account_created.week <- as.numeric(format(airbnb$date_account_created+3, "%U"))

airbnb$date_account_created.month <- as.numeric(format(airbnb$date_account_created, "%m"))

airbnb$date_account_created.day <- as.numeric(format(airbnb$date_account_created, "%d"))

airbnb$date_account_created.weekdays <- as.numeric(as.factor(weekdays(airbnb$date_account_created)))


airbnb$date_first_booking <- as.Date(airbnb$date_first_booking,format = "%Y-%m-%d")

airbnb$date_first_booking.num <- as.numeric(airbnb$date_first_booking)

airbnb$date_first_booking.year <- as.numeric(format(airbnb$date_first_booking, "%y"))

airbnb$date_date_first_booking.week <- as.numeric(format(airbnb$date_first_booking+3, "%U"))

airbnb$date_first_booking.month <- as.numeric(format(airbnb$date_first_booking, "%m"))

airbnb$date_first_booking.day <- as.numeric(format(airbnb$date_first_booking, "%d"))

airbnb$date_first_booking.weekdays <- as.numeric(as.factor(weekdays(airbnb$date_first_booking)))


우선 날짜를 Date함수를 이용하여 형식을 변환하겠습니다.

그리고 년 월,주,일 etc 와 같은 변수를 numeric으로 새로 만들었습니다.

이렇게 분석 중에 월별로, 주별로 데이터를 확인해보고 싶은 경우, 주어진 데이터를 수정해서 사용할 수 있습니다.


이제 다시 glimpse 함수를 이용하여 데이터를 확인해보겠습니다.



새로운 변수를 추가했기 때문에 변수가 16개에서 28개로 증가한 것을 확인할 수 있습니다.

또한 date_account_created 변수의 경우 문자열이 아니라 날짜로 형식이 통일 되었고

date_firtst_booking 역시 날짜 형식으로 통일되었음과 동시에 '빈값'은 NA로 채웠습니다. 


이와 같이 데이터를 가공하여 형식을 통일시키고 분석하기에 편리하게 맞춰주는 것이 중요합니다.


여기까지 데이터를 읽고 가공하는 것을 알아보았습니다.


다음 장부터는 이제 그래프를 그려 데이터를 시각화해보도록 하겠습니다!


반응형