[비정형 데이터] 02. Tidyverse 패키지 다루기
2020. 4. 29. 12:38ㆍ데이터 분석/비정형데이터분석
Tidyverse 패키지
여러 패키지를 공통된 규칙 안에서 사용할 수 있게 모아놓은 패키지
Tidyverse패키지 이용과정
- data import -> tidy -> transform &visaulise & model (explore) -> communication
- data가 import되고 각 관측치가 하나의 행에 기록되고 각 변수에 의해 특성화되도록 tidy data형태로 변환 후 시각화와 요약, 모델링을 통해 탐색한 후 의사결정에 활용
- data import -> tidy -> transform &visaulise & model (explore) -> communication
tidy data 형태로 변환
- 같은 속성의 변수들이 여러 개이면 분석을 하는데 시간이 오래걸리고 자동화시키기 복잡하기 때문에 같은 의미의 변수는 하나로 합쳐지는 것이 좋음.
- 회사 내 DB에서 컬럼을 추가하기 위해서는 테이블 설계를 다시해야하고 데이터 정의서 및 관련 문서들을 업데이터시켜야되기 때문에 일의 번거로움이 발생할 수 있기 때문. 하지만 DB는 기록하기 위해 만들어진 것이기 때문에 업데이트 기록만 알려준다면 행을 추가한다고해서 문제될 것은 없음.
- 데이터를 경제적으로 저장할 수 있어 메모리 효율면에서 좋음.
- 시각화하기 좋음
- 요약된 데이터 형태로 만들어내는 것이기 때문에 좀 더 수월하게 시각화를 할 수 있음.
- 같은 속성의 변수들이 여러 개이면 분석을 하는데 시간이 오래걸리고 자동화시키기 복잡하기 때문에 같은 의미의 변수는 하나로 합쳐지는 것이 좋음.
tidyverse 패키지 실습
- read_csv
- data를 불러올 때 컬럼별로 type을 지정할 수 있음.
- col_names를 이용하여 변수명을 지정할 수 있고 row data를 직접 입력하여 읽어올 수 있음.
- 컬럼명을 지정해주지 않으면 첫 행을 컬럼명으로 인식
library(tidyverse)
flights = read_csv('flights.csv')
read_csv("1,2,3\n4,5,6",col_names = c('x','y','z'))
read_csv("1,2,3\n4,5",na='.') # .을 na라고 선언
- placeholder를 이용하여 컬럼 추출
- %>%.을 placeholder라고 함
- 컬럼을 추출하라 때는 %>%.$ 컬럼명과 %>%.[["컬럼명"]]은 동일하게 사용됨.
# AIRLINE컬럼만 가져오도록함
flights%>%.$AIRLINE
flights%>%.[["AIRLINE"]]
- group_by를 이용하여 그룹핑 후 요약
# flights에서 destination_airport별로 그룹핑
by_dest = group_by(flights,DESTINATION_AIRPORT)
delay = summarise(by_dest,count = n(),dist=mean(DISTANCE,na.rm=TRUE),delay=mean(ARRIVAL_DELAY,na.rm = TRUE))
- contains함수를 이용하여 변수 추출
- contains 함수를 이용하면 보다 간편하게 특정 글자가 포함된 변수를 추출할 수 있음.
# data.frame에서는 flights%>%select(names(flights)[str_detect(names(flights),"TIME")])로 다루지만
select(flights,contains("TIME"))
- 시작 특정단어 또는 끝나는 단어로 변수 추출
- ends_with 함수를 이용하여 특정 단어로 끝나는 변수를 추출할 수 있음.
# select: 컬럼 추출
flghts_sml = select(flights,YEAR:DAY, ends_with("DELAY")) # :를 이용하여 여러 변수를 한 번에 추출+ ends_with을 통해 DELAY로 끝나는 변수 추출
# filter: 조건에 맞는 행 추출
flights%>%filter(between(ARRIVAL_TIME))
- 데이터 저장
- write_rds를 이용하여 테이블 부분 저장
- save.image를 이용하여 RData형식으로 저장
# 각 테이블 따로 저장
write_rds(flights,'flights.csv') # data.frame에서는 save.rds(data명,'경로')
read_rds('flights.csv') # read.rds('경로')
# 전체 데이터 저장
save.image('class1.RData')
load('class1.RData')
- 데이터 재구조화(reshape)
- gather: long형 데이터를 wide형으로 변환 (cast함수 생각)
- spread: wide형 데이터를 long형으로 변환 (melt함수 생각)
# 연습용 데이터 table4a사용
- gather
table4a%>%gather(`1999`,`2000`,key = "year",value="cases")
#spread
key:변수화할 컬럼
table4a%>%gather("1999","2000",key = "year",value="cases")%>%
spread(key='year',value='cases')
- 두 변수를 합쳐서 하나의 변수로 만들기
- unite를 이용하여 두 변수를 합친 후 하나의 변수로 만들게 되면 기존의 변수는 삭제가 됨.
- 사용법: unite(기존컬럼1, 기존컬럼2, 새로운 컬럼)
table5%>%unite(new,century,year) # entury와 year변수가 합쳐져서 new변수로 만들고 기존의 변수 삭제
- complete를 이용하여 변수의 수준을 모든 데이터에 대해 표현
- 사용법: complete(기준변수들)
stocks = tibble(year=c(2015,2015,2015,2015,2016,2016,2016),ctr=c(1,2,3,4,2,3,4),return=c(1.88,0.59,0.35,NA,0.92,0.17,2.66))
# ctr과 return의 개수는 같아야함
stocks%>%complete(year,ctr)
year가 2015, 2016 두 가지 값을 가지고 있고 ctr은 1,2,3,4 네 가지 값을 가지고 있는데 이때 ctr이 1,2,3,4,2,3,4로 2016년에는 1의 값을 가지고 있지 않는데 complete함수를 이용하면 해당 변수에 NA값을 가지는 관측치가 생성됨.
- 결측치에 이전 값을 채워넣기
stocks %>% fill(return) # 이전 값을 채워넣음
728x90
'데이터 분석 > 비정형데이터분석' 카테고리의 다른 글
[비정형 데이터] 06. 어떤 특징을 추출할 수 있을까? - 주파수 (0) | 2020.05.04 |
---|---|
[비정형 데이터] 05. 어떤 특징을 추출할 수 있을까?Peak (0) | 2020.04.30 |
[비정형 데이터] 04. 어떤 특징을 추출할 수 있을까? - 급격하게 변하는 시점 (0) | 2020.04.29 |
[비정형 데이터] 03. 어떤 특징을 추출할 수 있을까? - 통계적 특징 (0) | 2020.04.29 |
[비정형 데이터] 01. 비정형 데이터 분석 (0) | 2020.04.29 |