창업하면 가장 쉽게 떠올리는 것 중 하나는 커피숍이다.
우리 곁에 늘상 존재하는 카페는 서울 안에 얼마나 있을지 문득 궁금해졌다.
또 창업한 카페의 생존율은 얼마나 될지도 궁금했다.
데이터를 어디서 구해야할까 구글링을 하다보니 행정안전부가 공개한 인허가 데이터를 발견할 수 있었다.
해당 데이터를 바탕으로 탐색적 데이터분석을 해보자.
데이터는 행정안전부가 공개한 인허가 데이터를 바탕으로 했다.
출처는 아래와 같다.
http://www.localdata.kr/devcenter/dataDown.do?menuNo=20001
데이터는 음식점-휴게음식점의 데이터를 다운로드했고, 데이터수집기간은 최초인허가일자부터 2020년 1월 31일까지의 데이터가 있다.
library(readxl)
library(dplyr)
library(ggplot2)
library(stringr)
library(lubridate)
library(anytime)
library(leaflet)
library(ggmap)
library(plotly)
우리에게 필요한 라이브러리를 위와 같이 불러온다.
coffee<-read_xlsx("coffee.xlsx",sheet=1)
데이터를 읽어온다. 엑셀파일은 2개의 sheet로 구성되어 있다. 엑셀파일을 열어서 확인한 결과 데이터는 주소로 정렬되어,
서울특별시에 소재한 휴게음식점은 첫번째 sheet에 존재했다.
#데이터 형태 확인
dim(coffee)
## [1] 300000 47
해당 데이터는 30만개의 관측치와 47개의 변수로 구성되어있다.
대부분의 데이터가 chr과 logi 형태로 이루어진 것을 확인할 수 있다.
가장 처음 궁금증이었던 ’서울 안에는 몇개의 카페가 있을까?’를 확인하기 위해서는데이터를 전처리 할 필요가 있다.
## .
## 고속도로 공항 과자점 관광호텔 극장
## 8 18 8677 80 15
## 기타 기타 휴게음식점 김밥(도시락) 다방 단란주점
## 2 13262 1 17686 1
## 떡카페 룸살롱 백화점 아이스크림 유원지
## 118 1 2478 379 59
## 일반조리판매 전통찻집 철도역구내 커피숍 키즈카페
## 17932 327 430 24526 117
## 패스트푸드 편의점 푸드트럭 한식 호프/통닭
## 7590 8463 894 2 1
select와 filter를 통해 활용하기 괜찮은 컬럼만을 뽑아냈다.
서울에 소재하며, 현재 영업상태의 카페만을 filter를 통해 추출한다.
다양한 업태로 신청한 휴게음식점의 수를 확인할 수 있다.
이 수치는 인허가일자부터 2020년 1월 31일까지의 수로 재는 영업하지 않은 모든 휴게음식점을 포함한 수치이다.
## 2.1 : 커피숍 업태만 선택하기
## .
## 커피숍
## 24526
업태구분명이 커피숍인 것만을 filter를 통해 선택한다.
## 2.2 : 폐업하지않고 현재 영업중인 카페찾기
대부분의 데이터가 chr형식이므로 이를 활용하기 위해서는 데이터형식을 변환해 줄 필요가 있다. 서울시 내에는 13141개의 커피숍이 존재함을 알 수 있다.
#구별로 데이터 나누기
coffee_selection<-coffee_selection %>%
mutate(지역구 = ifelse(substr(coffee_selection$소재지전체주소,6,9)=="서대문", substr(coffee_selection$소재지전체주소,6,10),
ifelse(substr(coffee_selection$소재지전체주소,6,9)=="영등포", substr(coffee_selection$소재지전체주소,6,10),
ifelse(substr(coffee_selection$소재지전체주소,6,9)=="동대문",substr(coffee_selection$소재지전체주소,6,10),
substr(coffee_selection$소재지전체주소,7,9)
)
)
)
)
table(coffee_selection$지역구)
##
## 강남구 강동구 강북구 강서구 관악구 광진구 구로구 금천구 노원구 도봉구 동대문
## 2539 917 365 1283 917 736 723 533 755 402 719
## 동작구 마포구 서대문 서초구 성동구 성북구 송파구 양천구 영등포 용산구 은평구
## 728 1801 920 1990 662 758 905 806 1299 735 654
## 종로구 중구 중랑구
## 1335 1527 517
위 전처리를 통해 소재지 전체주소에서 지역구만을 뽑아냈다.
이렇게 함으로써, 우선 내가 거주하고 있는 동작구데이터를 지도 위에 시각화 할 때 다루어볼 예정이다.
인허가일자와 폐업일자의 데이터 형식이 chr와 logic으로 되어있는 것을 확인할 수 있다.
str(coffee_selection$인허가일자)
## chr [1:24526] "20070827" "20070830" "20070907" "20071002" "20170316" ...
str(coffee_selection$폐업일자)
## logi [1:24526] NA NA NA NA NA NA ...
이 데이터형식을 Date로 바꾸어 시간데이터를 활용해보려고 한다.
## 2.4 : 데이터 형식 바꾸기
coffee_selection$인허가일자 <- ymd(coffee_selection$인허가일자)
coffee_selection$폐업일자<- ymd(coffee_selection$폐업일자)
lubridate 라이브러리의 ymd함수를 통해 chr와 logi형식으로 되어있는 데이터형식을 Date로 바꾼다.
coffee_selection$year<-year(coffee_selection$인허가일자)
coffee_selection$month<-month(coffee_selection$인허가일자)
coffee_selection$yday<- yday(coffee_selection$인허가일자)
Date로 바꾼 인허가 일자 데이터를 바탕으로 인허가 연도, 월, 일을 각각 추출해 새로운 컬럼으로 만들었다.
coffee_selection$시설총규모 <- as.numeric(coffee_selection$시설총규모)
as.numeric을 통해 문자형으로 되어있던 데이터를 numeric꼴로 바꾸어 주었다.
또 시설총규모에 따라 이를 구분지어 초소형, 초형, 중형, 대형, 초대형으로 나타내어보았다.
구분은 다음코드와 같이 임의로 지정하였다.
coffee_selection<-coffee_selection %>%
mutate(규모 = ifelse(시설총규모<=3, "초소형",
ifelse(시설총규모>3 & 시설총규모<=30,"소형",
ifelse(시설총규모>30 & 시설총규모 <= 70, "중형",
ifelse(시설총규모> 70 & 시설총규모<= 300, "대형",
ifelse(시설총규모 > 300, "초대형",""
)
)
)
)
)
)
3제곱미터 이하는 초소형, 30제곱미터 이하는 소형, 70제곱미터이하는 중형 300제곱미터 이하는 대형 그 이상은 초대형으로 구분지었다.
coffee_selection %>%
filter(상세영업상태명=="영업" & 인허가일자>="2000-01-01") %>%
group_by(규모) %>%
summarize(n=n()) %>%
arrange(desc(n))
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 5 x 2
## 규모 n
## <chr> <int>
## 1 중형 4865
## 2 소형 4533
## 3 대형 3359
## 4 초대형 307
## 5 초소형 52
30~70제곱미터규모로 구분한 중형이 4865개로 가장 많았고,
3~30제곱미터에 해당하는 소형이 4533개로 뒤를 이었다.
coffee_2000<-coffee_selection %>%
filter(인허가일자>= "2000-01-01")
인허가일자는 2000년 1월 1일 이후인 커피숍 데이터를 coffee_2000으로 저장했다.
## 3.1 : 현재 영업중인 카페의 시설규모 summary
coffee_2000 %>%
filter(상세영업상태명=="영업") %>%
select(시설총규모) %>%
summary()
## 시설총규모
## Min. : 0.00
## 1st Qu.: 24.00
## Median : 41.01
## Mean : 67.52
## 3rd Qu.: 77.76
## Max. :1124.36
최소값이 0, 중앙값이 41.01, 평균이 67.81, 최댓값이 1124.36, NA값이 3개인 것을 알 수 있다.
규모가 0인 것은 현실적으로 존재할 수 없으므로
해당 데이터가 어떤 데이터인지 확인해보자.
coffee_2000 %>%
filter(상세영업상태명=="영업" & 시설총규모==0) %>%
summarise(n=n())
## # A tibble: 1 x 1
## n
## <int>
## 1 17
17개의 관측치가 시설총규모가 0으로 되어있는 것을 확인할 수 있다.
coffee_open_2000 <- coffee_2000 %>%
filter(상세영업상태명=="영업" & 시설총규모!=0)
coffee_open_2000[which.max(coffee_open_2000$시설총규모) , ]
## # A tibble: 1 x 15
## 번호 사업장명 소재지전체주소 업태구분명 시설총규모 인허가일자 폐업일자
## <chr> <chr> <chr> <chr> <dbl> <date> <date>
## 1 91613 (주)학산 테… 서울특별시 강남구 대치동… 커피숍 1124. 2018-04-06 NA
## # … with 8 more variables: 소재지면적 <chr>, 상세영업상태명 <chr>,
## # 영업상태구분코드 <chr>, 지역구 <chr>, year <dbl>, month <dbl>, yday <dbl>,
## # 규모 <chr>
데이터를 확인해보니 포스코센터에 위치한 테라로사 커피숍이었다.
시설 총규모는 1124.36제곱미터다. 평으로 환산하면 약 340평이다. 진짜 넓다…
블로그로 찾아보니 정말 어마어마한 규모였다. 자리도 넓직넓직하고 분위기가 압도적이었다.
강남 한가운데 이렇게 큰 커피숍이 있다는 것을 이번 EDA를 통해 처음 알았다.
우측으로 긴꼬리를 가진 히스토그램의 모습을 확인할 수 있다.
히스토그램을 통해 시설규모에 대해 히스토그램을 그려보면 100제곱미터 이내의 커피숍이 가장 많은 것을 확인할 수 있다.
## Warning: Ignoring unknown parameters: bins
첫번째 그래프를 보면 인허가 일자가 최근일수록 영업중인 카페의 수가 많은 것을 확인할 수 있다.
다시말해 인허가일자가 과거일수록 현재까지 영업하는 카페의 수는 적다는 뜻이다.
하지만 첫번째 그래프만을 통해서는 인허가일자가 과거에 가까운 카페의
생존률이 낮아 카페의 수가 적은 것인지, 단순히 과거의 카페를 개업한 수가 적어
현재까지 영업하는 카페의 수도 자연스레 적은 것인지 확인할 수 없다.
## Warning: Ignoring unknown parameters: bins
영업과 폐업을 포함한 카페의 수를 봤을 때 2009년 이후로 카페의 수가 폭발적으로 증가한 것을 확인할 수 있다.
따라서 2009년 이전에는 카페의 수 자체가 적다고 볼 수 있다. 하지만 이 그래프를 토앻서는 카페의 생존률을 한 눈에 알아보기 쉽지않다.
따라서 이제는 연도별 생존률을 확인해자
아래와 같은 작업을 통해 생존률을 구해보았다.
그래프를 통해 인허가를 받은지 오래됨에 따라 생존률이 낮은 것을 확인할 수 있다.
독특하게 2001년도에 인허가를 받은 카페의 생존률이 높은 것을 알 수 있다.
왜 그럴까? 2001년도에 인허가를 받은 카페 주인의 사업 수완이 좋은 것일까? 그건 분명아닐 것이다.
coffee_selection %>%
filter(year==2001) %>%
summarise(n=n())
## # A tibble: 1 x 1
## n
## <int>
## 1 40
2001년도의 개업한 카페의 수는 총 40개다. 이 중 14개의 커피숍이 현재까지 영업중이니,
생존률 35%이다. 눈에 띄는 특징을 살펴보니 시설의 크기가 80제곱미터가 넘어가는 카페는 스타벅스를 제외하고는 폐업상태다.
지역구에 따른 생존차이를 보려고 했으나 전체 수가 너무 작아 지역별로 유의미한 차이가 있다는 결론을 내리기는 쉽지 않아보인다.
하지만 중구, 용산구에 있는 카페는 전부 영업중이다. 물론 이걸로 뭔가 결론을 내기는 쉽지않다.
사실 크기와 관계없이 폐업한 카페가 많다.
이건 스타벅스가 장사를 잘한다고 바람직하다고 봐야할 것 같다. (우스갯소리로 스타벅스가 들어오면 죽어가는 상권도 살아난다고 하니)
특히 2001년 한 해 인허가를 받은 카페가 40개에 불과한데, 이 중 2개가 스타벅스다.
따라서 스타벅스가 높은 생존률이 나타나도록 수치를 견인한 것으로 해석하는 것이 적합해보인다.
스타벅스를 제외하고 생존률을 다시 계산해보면 31퍼센트(12/38)로 2006년도~2010년도의 생존률과 큰 차이는 없다.
시설총규모에 따른 큰 차이없이 골고루 폐업한 것을 확인할 수 있다.
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 2 x 2
## 상세영업상태명 n
## <chr> <int>
## 1 영업 38
## 2 폐업 227
2003년도 인허가를 받은 카페 중 265개 중 38개의 커피숍만 현재까지 영업 중이고
나머지는 전부 폐업상태다. 해당 현상설명하기위해서는 매출에 따른 흑자, 적자에 대한 이해 뿐만 아니라
사회적 환경을 고려하는게 필요해보인다.
coffee_selection %>%
filter(year==2003 & 상세영업상태명=="폐업")
## # A tibble: 227 x 15
## 번호 사업장명 소재지전체주소 업태구분명 시설총규모 인허가일자 폐업일자
## <chr> <chr> <chr> <chr> <dbl> <date> <date>
## 1 2143 쎄리오 국세청… 서울특별시 종로구 수송동… 커피숍 29.7 2003-02-12 NA
## 2 3185 지엔 서울특별시 종로구 체부동… 커피숍 13.6 2003-07-28 NA
## 3 3190 탐엔탐스 서울특별시 종로구 동숭동… 커피숍 122. 2003-08-12 NA
## 4 3384 자바존 서울특별시 종로구 신문로… 커피숍 47.2 2003-11-14 NA
## 5 3402 쥬만지 서울특별시 종로구 동숭동… 커피숍 136. 2003-11-26 NA
## 6 3520 잇앤드링크… 서울특별시 종로구 평창동… 커피숍 60.2 2003-12-16 NA
## 7 3696 아라코(주)삼… 서울특별시 종로구 연지동… 커피숍 65 2003-10-22 NA
## 8 3698 마노 서울특별시 종로구 가회동… 커피숍 91.4 2003-10-30 NA
## 9 4346 라멜라 서울특별시 종로구 수송동… 커피숍 7.7 2003-06-05 NA
## 10 4381 엔제리너스커피… 서울특별시 종로구 관수동… 커피숍 83.2 2003-05-28 NA
## # … with 217 more rows, and 8 more variables: 소재지면적 <chr>,
## # 상세영업상태명 <chr>, 영업상태구분코드 <chr>, 지역구 <chr>, year <dbl>,
## # month <dbl>, yday <dbl>, 규모 <chr>
2001년도에 개업한 두 곳의 스타벅스 지점은 현재까지 영업중이지만, 2003년도에 개업한
다양한 프렌차이즈 카페는 현재 폐업상태다. 스타벅스 외환은행본점, 커피빈코리아 동부이촌점,
탐앤탐스(서울역점), 파스쿠찌 서울역 2호점, 스타벅스월드컵경기장점, 스타벅스 kbs동문점,
파스쿠찌 노량진점, 파스쿠찌강남역점, 스타벅스 강남대로점 이 특히 대표적이다.
size<-coffee_2000 %>%
filter(상세영업상태명=="영업") %>%
group_by(지역구) %>%
summarize(n=n()) %>%
arrange(desc(n))
## `summarise()` ungrouping output (override with `.groups` argument)
size %>%
ggplot(aes(x=reorder(지역구, n), y=n))+
geom_col(fill = "#132B43")+coord_flip()+
xlab("지역구")+ggtitle("지역구별 영업중인 카페 수")+
geom_text(aes(y = n+ 30, label = n), vjust = 1.5, size = 3 )
위의 막대그래프에서도 확인할 수 있듯이, 강남구에 1225개의 카페가 영업중이다.
서울에서 가장 많은 카페 수를 차지하고 있다.
따라서 강남구의 높은 폐업률은 다른 지역구에 비해 치열한 경쟁과 높은 임대료에 기인한 것이 아닐까 싶다
coffee_2000 %>%
filter(상세영업상태명=="영업") %>%
ggplot(aes(x=year, fill= 규모))+geom_bar(alpha=0.8, position="fill")+
ggtitle("연도별 서울 소재 커피숍 규모 ")+xlab("연도")+ylab("규모별 비율")
규모에 따른 비율을 위와 같이 시각화해보았다.
2000년~2006년도까지는 초소형 커피숍(3제곱미터 이내)을 운영하고자 하는 사람들이 있었지만
현재는 그러한 경향은 거의 없는 것으로 나타난다.
초소형 커피숍보다는 중형규모(30~70제곱미터)의 카페에 대한 운영 선호도가 증가한 것으로 보인다.
어떠한 피드백이든 환영합니다. https://forms.gle/69wiqZBUk6hLxoxT7