서울 안에는 커피숍이 얼마나 있을까?

창업하면 가장 쉽게 떠올리는 것 중 하나는 커피숍이다.
우리 곁에 늘상 존재하는 카페는 서울 안에 얼마나 있을지 문득 궁금해졌다.
또 창업한 카페의 생존율은 얼마나 될지도 궁금했다.
데이터를 어디서 구해야할까 구글링을 하다보니 행정안전부가 공개한 인허가 데이터를 발견할 수 있었다.
해당 데이터를 바탕으로 탐색적 데이터분석을 해보자.
데이터는 행정안전부가 공개한 인허가 데이터를 바탕으로 했다.
출처는 아래와 같다.

1 데이터 수집

http://www.localdata.kr/devcenter/dataDown.do?menuNo=20001

데이터는 음식점-휴게음식점의 데이터를 다운로드했고, 데이터수집기간은 최초인허가일자부터 2020년 1월 31일까지의 데이터가 있다.

1.1 우선 라이브러리를 불러오자

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에 존재했다.

1.2 : 데이터를 확인해보자

#데이터 형태 확인
dim(coffee)
## [1] 300000     47


해당 데이터는 30만개의 관측치와 47개의 변수로 구성되어있다.
대부분의 데이터가 chr과 logi 형태로 이루어진 것을 확인할 수 있다.
가장 처음 궁금증이었던 ’서울 안에는 몇개의 카페가 있을까?’를 확인하기 위해서는데이터를 전처리 할 필요가 있다.


2. 데이터 전처리

## .
##        고속도로            공항          과자점        관광호텔            극장 
##               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개의 커피숍이 존재함을 알 수 있다.

2.3 : 지역구 이름으로 새 variable만들기

#구별로 데이터 나누기
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로 바꾼다.



2.5 : 연,월,일을 각각의 variable로 만들기

coffee_selection$year<-year(coffee_selection$인허가일자)

coffee_selection$month<-month(coffee_selection$인허가일자)

coffee_selection$yday<- yday(coffee_selection$인허가일자)


Date로 바꾼 인허가 일자 데이터를 바탕으로 인허가 연도, 월, 일을 각각 추출해 새로운 컬럼으로 만들었다.

2.6 : 데이터 형식 전처리

coffee_selection$시설총규모 <- as.numeric(coffee_selection$시설총규모)


as.numeric을 통해 문자형으로 되어있던 데이터를 numeric꼴로 바꾸어 주었다.

또 시설총규모에 따라 이를 구분지어 초소형, 초형, 중형, 대형, 초대형으로 나타내어보았다.
구분은 다음코드와 같이 임의로 지정하였다.

2.7 : 시설크기에 따라 초소형~초대형까지 구분짓기

coffee_selection<-coffee_selection %>%
  mutate(규모 = ifelse(시설총규모<=3, "초소형",
                         ifelse(시설총규모>3 & 시설총규모<=30,"소형",
                                     ifelse(시설총규모>30 & 시설총규모 <= 70, "중형",
                                                 ifelse(시설총규모> 70 & 시설총규모<= 300, "대형", 
                                                             ifelse(시설총규모 > 300, "초대형",""
                                                                         )
                                                             )
                                                 )
                                     )
                         )
           )

3제곱미터 이하는 초소형, 30제곱미터 이하는 소형, 70제곱미터이하는 중형 300제곱미터 이하는 대형 그 이상은 초대형으로 구분지었다.

2.8 : 규모별 커피숍 수

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개로 뒤를 이었다.

2.9 : 2000년 1월 1일 이후로 인허가가 이루어진 데이터만을 다루어보자

coffee_2000<-coffee_selection %>%
  filter(인허가일자>= "2000-01-01")

인허가일자는 2000년 1월 1일 이후인 커피숍 데이터를 coffee_2000으로 저장했다.

3. 데이터 탐색적 분석


## 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으로 되어있는 것을 확인할 수 있다.


3.2 : 서울에서 가장 큰 규모의 카페는 어딜까?

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를 통해 처음 알았다.

3.3 : 시설 총규모를 히스토그램으로 그려보자

우측으로 긴꼬리를 가진 히스토그램의 모습을 확인할 수 있다.
히스토그램을 통해 시설규모에 대해 히스토그램을 그려보면 100제곱미터 이내의 커피숍이 가장 많은 것을 확인할 수 있다.


3.4 : 영업중인 카페의 인허가연도 히스토그램

## Warning: Ignoring unknown parameters: bins


첫번째 그래프를 보면 인허가 일자가 최근일수록 영업중인 카페의 수가 많은 것을 확인할 수 있다.
다시말해 인허가일자가 과거일수록 현재까지 영업하는 카페의 수는 적다는 뜻이다.

하지만 첫번째 그래프만을 통해서는 인허가일자가 과거에 가까운 카페의
생존률이 낮아 카페의 수가 적은 것인지, 단순히 과거의 카페를 개업한 수가 적어
현재까지 영업하는 카페의 수도 자연스레 적은 것인지 확인할 수 없다.

3.5 : 연도별 인허가 히스토그램 (영업&폐업포함)

## Warning: Ignoring unknown parameters: bins


영업과 폐업을 포함한 카페의 수를 봤을 때 2009년 이후로 카페의 수가 폭발적으로 증가한 것을 확인할 수 있다.
따라서 2009년 이전에는 카페의 수 자체가 적다고 볼 수 있다. 하지만 이 그래프를 토앻서는 카페의 생존률을 한 눈에 알아보기 쉽지않다.
따라서 이제는 연도별 생존률을 확인해자
아래와 같은 작업을 통해 생존률을 구해보았다.

3.6 : 서울소재 커피숍의 인허가 연도별 생존률



그래프를 통해 인허가를 받은지 오래됨에 따라 생존률이 낮은 것을 확인할 수 있다.
독특하게 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년도 인허가 카페의 시설총규모에 따른 영업구분

사실 크기와 관계없이 폐업한 카페가 많다.
이건 스타벅스가 장사를 잘한다고 바람직하다고 봐야할 것 같다. (우스갯소리로 스타벅스가 들어오면 죽어가는 상권도 살아난다고 하니)
특히 2001년 한 해 인허가를 받은 카페가 40개에 불과한데, 이 중 2개가 스타벅스다.
따라서 스타벅스가 높은 생존률이 나타나도록 수치를 견인한 것으로 해석하는 것이 적합해보인다.
스타벅스를 제외하고 생존률을 다시 계산해보면 31퍼센트(12/38)로 2006년도~2010년도의 생존률과 큰 차이는 없다.

그럼 2003년도는 무슨 일이 있었길래 생존률이 제일 낮을까?

시설총규모에 따른 큰 차이없이 골고루 폐업한 것을 확인할 수 있다.

## `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동문점,
파스쿠찌 노량진점, 파스쿠찌강남역점, 스타벅스 강남대로점 이 특히 대표적이다.

3.7 : 지역구별 커피숍 생존률

그래프를 통해 지역구별 커피숍 생존률의 경향성을 확인할 수 있다. 재밌는 것은 강남구지역의 위치한 커피숍의 생존률이 다른 지역구에 비해 눈에 띄게 낮다는 점이다.
비즈니스가 활발하게 이루어지는 강남의 커피숍엔 항상 사람들이 많다고 생각할 수 있지만,
문득 강남에 매장을 연는 것은 당장의 금전적 수익보다는 브랜드 홍보를 위한 것이라는 기사가 떠오른다.

## 3.8 : 지역구별 커피숍 수

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개의 카페가 영업중이다.
서울에서 가장 많은 카페 수를 차지하고 있다.
따라서 강남구의 높은 폐업률은 다른 지역구에 비해 치열한 경쟁과 높은 임대료에 기인한 것이 아닐까 싶다


3.9 연도별 커피숍 규모를 시각화해보자

coffee_2000  %>% 
  filter(상세영업상태명=="영업") %>% 
  ggplot(aes(x=year, fill= 규모))+geom_bar(alpha=0.8, position="fill")+
  ggtitle("연도별 서울 소재 커피숍 규모 ")+xlab("연도")+ylab("규모별 비율")

규모에 따른 비율을 위와 같이 시각화해보았다.
2000년~2006년도까지는 초소형 커피숍(3제곱미터 이내)을 운영하고자 하는 사람들이 있었지만
현재는 그러한 경향은 거의 없는 것으로 나타난다.
초소형 커피숍보다는 중형규모(30~70제곱미터)의 카페에 대한 운영 선호도가 증가한 것으로 보인다.

3.10 지도 위에 현재 영업중인 카페를 시각화해보자

api 호출 건수가 너무 많을 것 같아서 동작구에 소재한 카페만 제한하여 시각화했다
지도 위에 카페 수를 클러스터로 모이고 각각의 카페를 클릭할 경우
이름, 시설총규모, 규모, 주소, 인허가일자를 표시하도록 하였다.

어떠한 피드백이든 환영합니다. https://forms.gle/69wiqZBUk6hLxoxT7