안산에서 카페 창업하기

(R언어 기반 빅데이터 분석)

20142461

박주형

1) 주제 소개

1. 주제선정이유

해마다 증가하고 있는 대한민국의 커피 소비량을 보고 카페창업과 관련된 분	석을 한다면 좋겠다고 생각 했다.

또한 안산시는 계획도시로 건물보다 도로를 먼저 세워 교통이 편리하고 서울	과 인접하여 인구가 많다.

2. 데이터 출처

공공데이터 포털 :

소상공인 진흥공단 상가업소정보 , 안산시 동별 인구현황

https://www.data.go.kr/dataset/15012005/fileData.do

https://www.data.go.kr/dataset/3069669/fileData.do

2)데이터 분석 준비

1. 사용패키지

데이터 가공 : dplyr,car 그래프 생성 :ggplot2

2. 데이터 전처리

단원구 행정구역 개편 안산시조례 제2070호 (2017년 5월 22일)
개편전	개편후
원곡1동	백운동
원곡2동
원곡본동	원곡동
	신길동
고잔1동	고잔동
고잔2동	중앙동

데이터 프레임을 합치던 작업 중 주소가 상이하여 null값이 발생한 부분이 있	어서 실제 주소로 바탕으로 데이터를 변경해주었다.

3. 주요 함수 설명

filter : 특정 컬럼에서 특정 단어가 들어간 행 추출

grepl : 특정 컬럼에서 특정 단어가 포함된 행 추출

select: 컬럼 삭제

unique: 중복값 제거

left_join : 특정 값을 기준으로 데이터프레임 결합

Recode : 특정 컬럼의 데이터를 원하는 값으로 한번에 변경

mutate : 새로운 컬럼 추가

arrange: 정렬

group_by : 집단별로 분리

summarise : 자동요약 산출

3) 전체 코드 및 설명

install.packages("ggplot2")

library(ggplot2)

install.packages("dplyr")

library(dplyr)

install.packages("car")

library(car)

store <- read.csv("store.csv")

ansan_citizen <- read.csv("ansan.csv")

##경기도 데이터프레임 생성

store_kyonggido <- store %>% filter(시도명=="경기도")

##필요없는 컬럼 제거

store_kyonggido <-store_kyonggido %>% select(-상가업소번호,-지점명,-상권업종대분류코드,-상권업종중분류코드,-표준산업분류코드,

-시도코드,-시도명,-시군구코드,-행정동코드,-법정동코드,-지번코드,-대지구분코드,-층정보,

-호정보,-건물본번지,-건물부번지,-건물관리번호,-지번본번지,-지번부번지)

##안산시 데이터 프레임 생성

store_ansan <- store_kyonggido[grepl("안산시", store_kyonggido$시군구명),]

##안산 음식점 데이터 프레임 생성

store_ansan_food <- store_ansan %>% filter(상권업종대분류명=="음식")

##안산시 카페 데이터 프레임 생성

store_ansan_cafe <- store_ansan_food[grepl("커피", store_ansan_food$상권업종중분류명),]

##안산시 카페  불필요 컬럼삭제

store_ansan_cafe <-store_ansan_cafe %>% select(-상권업종대분류명,-상권업종중분류명,-상권업종소분류코드,-상권업종소분류명,-대지구분명,-건물명,-도로명코드,-도로명,-도로명주소,-동정보,-구우편번호,-신우편번호,-표준산업분류명)

##두개의 데이터 프레임 비교를 위한 데이터정제

##1단계 안산 카페 데이터 프레임의 주소 목록 추출

ansan_addr <- unique(store_ansan_cafe %>% select(행정동명) %>% arrange(행정동명))

##2단계 안산 인구현황의 주소 목록 병합, 비교

ansan_addr <- left_join(ansan_addr,ansan_citizen,"행정동명")

##3단계 안산 카페 데이터 프레임 주소 정제 car 패키지 사용

store_ansan_cafe$행정동명 <- Recode(store_ansan_cafe$행정동명, "'고잔1동'='고잔동'; '고잔2동'='중앙동' ; '사1동'='사동' ; '사2동'='사이동' ; '사3동'='해양동' ; '원곡1동'='백운동' ; '원곡2동'='백운동' ; '원곡본동'='원곡동'")

##4단계 안산 카페 데이터 프레임의 주소 목록 추출

ansan_addr <- unique(store_ansan_cafe %>% select(행정동명) %>% arrange(행정동명))

##5단계 안산 인구현황의 주소 목록 병합, 비교

ansan_addr <- left_join(ansan_addr,ansan_citizen,"행정동명")

## 행정동 별 카페 수

store_ansan_cafe_count <- store_ansan_cafe %>% group_by(행정동명) %>% summarise(점포수 =n())

store_ansan_cafe_count <- left_join(store_ansan_cafe_count,ansan_addr,by="행정동명")

## 총 인구수 변수 추가

store_ansan_cafe_count <- store_ansan_cafe_count %>% mutate(남녀총인구=총인구수.남.+총인구수.여.)

## 점포당 인구 변수 추가

store_ansan_cafe_count <- store_ansan_cafe_count %>% mutate(점포당인구수=(round(남녀총인구/점포수)))

##그래프 생성

graph1<- ggplot(data = store_ansan_cafe_count,

aes(x=reorder(store_ansan_cafe_count$행정동명, store_ansan_cafe_count$점포당인구수),

y=store_ansan_cafe_count$점포당인구수)) +geom_col()

##그래프라벨생성

graph1 <- graph1 + xlab("행정동명")+ ylab("점포당인구수\n(명)") +

theme(axis.title.x=element_text(size=14),axis.title.y=element_text(size=14))

4)분석결과 및 소감

1. 분석결과

백운동이 점포당 시민의 수가 2890명으로 가장 많고 다음으로 신길동, 사이동이 많은 것으로 보인다. 따라서 백운동, 신길동 사이동이 인구대비 카페수가 적으므로 창업하기에 적절할 것으로 보인다.

2. 소감

작업도중 전처리작업으로 주소를 일치시켜야 했는데, 처음에는 단순하게 원곡1동과 원곡2동을 원곡동으로 고잔1동과 고잔2동을 고잔동으로 바꾸는 식으로 하면 된다고 생각하여 그렇게 바꿔서 작업을 했는데, 특정 동에 카페가 없거나 1개밖에 없는 등 약간 상식적이지 않은 결과가 나왔었다.(지도 사이트 검색 결과 실제로 더 있었다.) 그래서 여러 가지 정보를 찾던 중 안산시 조례를 발견하여 그대로 값을 바꾸니 실제와 같거나 비슷한 결과가 나왔다.

그렇게 깨닫게 된 것이 빅 데이터를 분석하기 위해서는 분석 할 분야에 대해서 다양한 지식을 갖고 있어야 더 정확한 결과를 얻을 수 있다는 것 이었다.  앞으로는 전공과목 외에도 다양한 지식을 쌓도록 노력해야겠다.