빅데이터 분석을 할 수 있는 언어
컴퓨터 언어의 세계를 떠난 지가 한참 되어서 요즘에 어떤 언어가 각광을 받는지 어떤 언어가 나왔는지는 잘 모른다. 가끔 이런 책을 받을 때 잠시 그 세계로 들어가 보기도 한다. 다소 생소한 R이라는 언어는 대체 어디에 사용하는 것인가. 데이터 분석이라고 하면 빅 데이터와 떼려야 뗄 수 없는 관계다.
생각 외로 R은 최근에 나온 언어가 아니었다. 벨 연구소에서 만든 S프로그래밍 언어를 참고하여 누구나 사용할 수 있도록 만든 R은 1993년에 처음 소개되었다. 그리고 그 언어는 빅데이터 시대가 도래한 이후에 거대 IT기업에서 사용하면서 알려졌다. 1분 동안 구글은 무려 69,500,000건의 단어를 번역한다고 한다. 빅데이터는 대용량의 데이터와 데이터의 가용성, 데이터의 기하급수적인 성장 속에서 의미 있는 정보를 뽑아낸다.
R의 공식 웹사이트는 https://www.r-project.org/ 로 들어가면 CRAN Mirrors에서 R설치 파일을 다운로드할 수 있다. 책에는 다운로드하고 각종 설정을 할 수 있도록 자세하게 안내하고 있다. 그리고 마무리가 되면 스크립트 생성 및 코드를 실행하면 되는데 코딩 좀 해봤다는 사람은 모두 안다는 "Hello world!"를 출력하면 끝이다.
프로그래밍을 해본 사람이라면 이 책을 이해하는 데에는 큰 어려움은 없을 것이다. 프로그래밍할 때 역시 변수, 함수, 패키지가 사용되는데 R도 똑같이 사용하여 작업한다. 패키지를 설치할 때도 패키지를 로드할 때도 사용하는 형식은 아래와 같다.
install.packages('설치할 패키지명')
library (로드할 패키지명)
데이터 종류는 단일형인 벡터, 행렬, 배열이 있고 다중형으로는 리스트, 데이터 프레임이 있다. 책을 읽다 보니 책에서 다루고 있는 것이 통계학과 분석에서 많이 겹친다는 것을 볼 수 있다. 연산자와 비교 연산과 논리 연산, 데이터 추출부터 정제까지의 과정은 통계학의 신뢰성을 확인하는데 필수적이다. 앞에서 풀어서 설명한 후에 챕터가 끝날 때에는 요약을 해서 이해하기 쉽도록 핵심만 정리하고 있다. 그리고 연습문제를 같이 실어놓았다.
TV의 시사나 예능프로에서 흔히 볼 수 있는 워드 클라우드는 R로도 만들 수 있다. wordcloud2() 패키지를 설치하면 되는데 기본형 워드 클라우드를 생성하는 것이나 배경 등 색상 변경하고 모양 변경 등을 할 수 있다.
선택한 색상만 반복되는 워드 클라우드
wordcloud2(demoFreq, size = 1.6, color = rep_len(c("red", "blue"), nrod(demoFreq)))
원하는 이미지에 워드 클라우드 표시하기
wordcloud2(demofreq, figPath = "peace.png")
일정한 방향으로 정렬된 워드 클라우드
wordcloud2(demoFreq, minRotation = -pi / 6, macRotation = -pi / 6, rotateRatio = 1)
책의 뒤에는 데이터 분석을 위한 실전 프로젝트를 담아두었다. 치킨집이 가장 많은 지역 찾기나 지역별 미세먼지 농도 비교하기, 트위터 키워드 크롤링으로 워드 클라우드 그리기, 지하철역 주변 아파트 가격 알아보기 실습을 따라 해 볼 수 있다. 예를 들어 대전의 한 지역의 치킨집 분포를 알아보려면 아래처럼 시도하면 된다.
01 http://www.localdata.kr/ 에서 지역별로 다운로드할 수 있는데 대전광역시의 [다운로드]를 누른다.
02 다운로드한 대전광역시 데이터의 압축을 풀면 치킨집만 있는 엑셀 파일을 선택한다.
03 엑셀 파일 속의 필요 없는 데이터는 삭제하고 치킨집과 주소명만 남긴다.
04 데이터 가공과정을 거친다.
library("readxl")
ck <- read_excel ("치킨집_수정.xlsx")
head(ck)
addr <- substr (ck$소재지전체주소, 11,16)
head(addr)
addr_num <- gsub("[0-9]", "" , addr)
addr_trim <- gsub (" ", "" , addr_num)
head(addr_trim)
library(dplyr)
addr_count <- addr_trim %<% table() %>% data.frame()
head(addr_count)
treemap(addr_count, index = ",", vSize = "Freq", title = "대전 서구 동별 치킨집 분포")
책의 뒤에는 도움이 될 수 있는 정보들이 있다. 변수 간의 차이를 확인할 수 있는 카이제곱 검정이나 변수 간의 연관성을 확인하는 상관분석, 그룹간의 평균을 비교하는 t검정이 간단하게 기술되어 있다.