15 분 소요


공공데이터 분석

들어가며

  • 공공데이터를 분석
  • 공공데이터포털(data.go.kr)에 다양한 데이터가 공개되어 있다.
  • 그 중에 카페(라는 업종분류)들에 대해서 현황을 조사한다.

명세사항

  1. 전국 카페 데이터를 모두 수집해야한다.
  2. 지역별 or 브랜드별 점포 현황을 확인한다.
  3. 분석 결과를 시각화한다.

공공데이터포털: 소상공인시장진흥공단_상가(상권)정보_20220930

In [1]:
import pandas as pd
import numpy as np

데이터 불러오기

In [2]:
temp = pd.read_csv("data\datapotal\소상공인시장진흥공단_상가(상권)정보_인천_202209.csv", 
                    encoding='utf-8')
temp
Out [2]:
상가업소번호 상호명 지점명 상권업종대분류코드 상권업종대분류명 상권업종중분류코드 상권업종중분류명 상권업종소분류코드 상권업종소분류명 표준산업분류코드 ... 건물관리번호 건물명 도로명주소 구우편번호 신우편번호 동정보 층정보 호정보 경도 위도
0 27458653 칼스배드영수학원 NaN R 학문/교육 R01 학원-보습교습입시 R01A01 학원-입시 P85501 ... 2824510500100430000000001 라임빌 인천광역시 계양구 임학서로41번길 5, (임학동, 라임빌) 407814.0 21030 NaN NaN NaN 126.731284 37.546507
1 22882934 간석미용실 NaN F 생활서비스 F01 이/미용/건강 F01A01 여성미용실 S96112 ... 2820010200101900026021270 NaN 인천광역시 남동구 석촌로14번길 5, (간석동) 405803.0 21545 NaN NaN NaN 126.709349 37.461969
2 24444979 라헬 NaN D 소매 D05 의복의류 D05A01 일반의류 G47416 ... 2818510500109230000007532 금호동아아파트 인천광역시 연수구 청능대로 124, (동춘동) 406775.0 21967 NaN NaN NaN 126.677224 37.410678
3 24872335 교동상회 NaN D 소매 D06 가방/신발/액세서리 D06A07 양품점 G47419 ... 2871040023105550000046629 NaN 인천광역시 강화군 교동면 교동남로423번길 20, (상용리) 417921.0 23001 NaN NaN NaN 126.316681 37.779079
4 23397108 호텔써클 NaN O 숙박 O01 호텔/콘도 O01A01 호텔/콘도 NaN ... 2817010200106280011000001 화이트캐슬 인천광역시 미추홀구 토금중로3번길 28, (용현동) 402834.0 22186 NaN NaN NaN 126.635196 37.455288
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
120909 18766857 쌍용플레이방 NaN N 관광/여가/오락 N01 PC/오락/당구/볼링등 N01A04 오락용사격장 R91229 ... 2824510600102130002018103 초정마을두산쌍용아파트 인천광역시 계양구 계양문화로 142, (용종동) 407054.0 21064 NaN 1 NaN 126.740974 37.540258
120910 18758691 컴포즈커피 주안센트레빌점 Q 음식 Q12 커피점/카페 Q12A01 커피전문점/카페/다방 I56220 ... 2817710500100180071000001 NaN 인천광역시 미추홀구 석정로433번길 31, (주안동) 402836.0 22124 NaN NaN NaN 126.684375 37.468028
120911 18772273 교동카센터 NaN F 생활서비스 F14 자동차/이륜차 F14A01 자동차정비/카센타 NaN ... 2871040021104420006000001 NaN 인천광역시 강화군 교동면 교동서로 9-31, (대룡리) 417922.0 23002 NaN NaN NaN 126.278870 37.779109
120912 18774152 다하 NaN D 소매 D05 의복의류 D05A02 캐쥬얼/스포츠의류 G47416 ... 2823710100101190015103641 그랜드캐슬 인천광역시 부평구 부흥북로96번길 20-4, (부평동, 그랜드캐슬) 403817.0 21353 1 8 NaN 126.732476 37.500144
120913 18750230 에어솔환경 경인지점 F 생활서비스 F02 세탁/가사서비스 F02A05 청소/소독 NaN ... 2826010500103090006010567 해피타운 인천광역시 서구 심곡로208번길 13, (공촌동) 404836.0 22709 NaN NaN 126.683688 37.551626

120914 rows × 39 columns

In [3]:
# data 폴더에 있는 모든 csv 파일을 읽어오기 위해 glob을 사용
from glob import glob

# csv 목록 불러오기
file_names = glob("data\datapotal\*.csv")
total = pd.DataFrame()
# 모든 csv 병합하기
for file_name in file_names:
    temp = pd.read_csv(file_name, encoding='utf-8', low_memory=False)
    total = pd.concat([total, temp])

# reset index
total.reset_index(inplace=True, drop=True)
total
Out [3]:
상가업소번호 상호명 지점명 상권업종대분류코드 상권업종대분류명 상권업종중분류코드 상권업종중분류명 상권업종소분류코드 상권업종소분류명 표준산업분류코드 ... 건물관리번호 건물명 도로명주소 구우편번호 신우편번호 동정보 층정보 호정보 경도 위도
0 25033300 동그라미중고타이어 NaN D 소매 D23 자동차/자동차용품 D23A04 타이어판매 G45211 ... 4215011100110960006010791 NaN 강원도 강릉시 가작로 270, (포남동) 210954.0 25488 1 NaN NaN 128.904472 37.770252
1 17174549 세인트존스호텔Ohcrab NaN O 숙박 O01 호텔/콘도 O01A01 호텔/콘도 NaN ... 4215011300100010001017124 세인트존스호텔 강원도 강릉시 창해로 307, (강문동) 210120.0 25467 NaN NaN NaN 128.920908 37.791299
2 17174079 평창라마다호텔 NaN O 숙박 O01 호텔/콘도 O01A01 호텔/콘도 NaN ... 4276038024102450036000001 NaN 강원도 평창군 대관령면 오목길 107, (횡계리) 232954.0 25342 NaN NaN NaN 128.717971 37.660051
3 17173904 호텔탑스텐스카이라운지 NaN O 숙박 O01 호텔/콘도 O01A01 호텔/콘도 NaN ... 4215035029100920001000002 NaN 강원도 강릉시 옥계면 헌화로 455-34, (금진리) 210831.0 25633 NaN NaN NaN 129.052902 37.654680
4 24412526 레이디가구 NaN D 소매 D15 가구소매 D15A01 일반가구소매 G47520 ... 4213011500111400020035715 NaN 강원도 원주시 송삼길 156-19, (무실동) 220150.0 26385 NaN NaN NaN 127.917307 37.327668
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2446766 18759758 올나노 충주점 F 생활서비스 F02 세탁/가사서비스 F02A05 청소/소독 NaN ... 4377035029104150000000001 NaN 충청북도 음성군 삼성면 대덕로 138-38, (대정리) 369831.0 27648 NaN NaN NaN 127.518699 37.025560
2446767 18753428 스테이퓨전바 NaN Q 음식 Q01 한식 Q01A01 한식/백반/한정식 I56111 ... 4311110900102270029047521 NaN 충청북도 청주시 상당구 무심동로390번길 15, (서문동) 360130.0 28528 NaN 2 NaN 127.484757 36.634341
2446768 18769189 백마탁송대리서비스 NaN D 소매 D02 선물/팬시/기념품 D02A02 꽃집/꽃배달 G47851 ... 4311311300108780000009545 NaN 충청북도 청주시 흥덕구 풍년로198번길 56-1, (가경동) 361800.0 28389 NaN 1 NaN 127.432312 36.631408
2446769 18768587 구제언니 NaN D 소매 D05 의복의류 D05A07 셔츠/내의/속옷 NaN ... 4311311400120810000012970 NaN 충청북도 청주시 흥덕구 풍산로118번길 27-1, (복대동) 361814.0 28605 NaN NaN NaN 127.443014 36.628061
2446770 18762532 엠모터스 NaN D 소매 D23 자동차/자동차용품 D23A08 중고타이어판매 G45220 ... 4375033027103230005026907 NaN 충청북도 진천군 문백면 문진로 491, (봉죽리) 365861.0 27869 NaN NaN NaN 127.434572 36.784046

2446771 rows × 39 columns

In [4]:
# 분석에 필요한 column을 고르기
data = total[['상호명', '지점명', '상권업종대분류명', '상권업종중분류명', '시도명', '시군구명', '행정동명']]
data
Out [4]:
상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 동그라미중고타이어 NaN 소매 자동차/자동차용품 강원도 강릉시 포남1동
1 세인트존스호텔Ohcrab NaN 숙박 호텔/콘도 강원도 강릉시 초당동
2 평창라마다호텔 NaN 숙박 호텔/콘도 강원도 평창군 대관령면
3 호텔탑스텐스카이라운지 NaN 숙박 호텔/콘도 강원도 강릉시 옥계면
4 레이디가구 NaN 소매 가구소매 강원도 원주시 무실동
... ... ... ... ... ... ... ...
2446766 올나노 충주점 생활서비스 세탁/가사서비스 충청북도 음성군 삼성면
2446767 스테이퓨전바 NaN 음식 한식 충청북도 청주시 성안동
2446768 백마탁송대리서비스 NaN 소매 선물/팬시/기념품 충청북도 청주시 가경동
2446769 구제언니 NaN 소매 의복의류 충청북도 청주시 복대2동
2446770 엠모터스 NaN 소매 자동차/자동차용품 충청북도 진천군 문백면

2446771 rows × 7 columns

In [5]:
total.info()
Out [5]:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2446771 entries, 0 to 2446770
Data columns (total 39 columns):
 #   Column     Dtype  
---  ------     -----  
 0   상가업소번호     int64  
 1   상호명        object 
 2   지점명        object 
 3   상권업종대분류코드  object 
 4   상권업종대분류명   object 
 5   상권업종중분류코드  object 
 6   상권업종중분류명   object 
 7   상권업종소분류코드  object 
 8   상권업종소분류명   object 
 9   표준산업분류코드   object 
 10  표준산업분류명    object 
 11  시도코드       int64  
 12  시도명        object 
 13  시군구코드      int64  
 14  시군구명       object 
 15  행정동코드      int64  
 16  행정동명       object 
 17  법정동코드      int64  
 18  법정동명       object 
 19  지번코드       int64  
 20  대지구분코드     int64  
 21  대지구분명      object 
 22  지번본번지      int64  
 23  지번부번지      float64
 24  지번주소       object 
 25  도로명코드      int64  
 26  도로명        object 
 27  건물본번지      int64  
 28  건물부번지      float64
 29  건물관리번호     object 
 30  건물명        object 
 31  도로명주소      object 
 32  구우편번호      float64
 33  신우편번호      int64  
 34  동정보        object 
 35  층정보        object 
 36  호정보        float64
 37  경도         float64
 38  위도         float64
dtypes: float64(6), int64(11), object(22)
memory usage: 728.0+ MB

In [6]:
data.info()
Out [6]:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2446771 entries, 0 to 2446770
Data columns (total 7 columns):
 #   Column    Dtype 
---  ------    ----- 
 0   상호명       object
 1   지점명       object
 2   상권업종대분류명  object
 3   상권업종중분류명  object
 4   시도명       object
 5   시군구명      object
 6   행정동명      object
dtypes: object(7)
memory usage: 130.7+ MB

In [7]:
# 메모리 낭비를 막기 위해 필요없는 변수는 제거
del temp
In [8]:
total.head()
Out [8]:
상가업소번호 상호명 지점명 상권업종대분류코드 상권업종대분류명 상권업종중분류코드 상권업종중분류명 상권업종소분류코드 상권업종소분류명 표준산업분류코드 ... 건물관리번호 건물명 도로명주소 구우편번호 신우편번호 동정보 층정보 호정보 경도 위도
0 25033300 동그라미중고타이어 NaN D 소매 D23 자동차/자동차용품 D23A04 타이어판매 G45211 ... 4215011100110960006010791 NaN 강원도 강릉시 가작로 270, (포남동) 210954.0 25488 1 NaN NaN 128.904472 37.770252
1 17174549 세인트존스호텔Ohcrab NaN O 숙박 O01 호텔/콘도 O01A01 호텔/콘도 NaN ... 4215011300100010001017124 세인트존스호텔 강원도 강릉시 창해로 307, (강문동) 210120.0 25467 NaN NaN NaN 128.920908 37.791299
2 17174079 평창라마다호텔 NaN O 숙박 O01 호텔/콘도 O01A01 호텔/콘도 NaN ... 4276038024102450036000001 NaN 강원도 평창군 대관령면 오목길 107, (횡계리) 232954.0 25342 NaN NaN NaN 128.717971 37.660051
3 17173904 호텔탑스텐스카이라운지 NaN O 숙박 O01 호텔/콘도 O01A01 호텔/콘도 NaN ... 4215035029100920001000002 NaN 강원도 강릉시 옥계면 헌화로 455-34, (금진리) 210831.0 25633 NaN NaN NaN 129.052902 37.654680
4 24412526 레이디가구 NaN D 소매 D15 가구소매 D15A01 일반가구소매 G47520 ... 4213011500111400020035715 NaN 강원도 원주시 송삼길 156-19, (무실동) 220150.0 26385 NaN NaN NaN 127.917307 37.327668

5 rows × 39 columns

데이터 보기

전국 커피 전문점

In [9]:
#set(data["상권업종대분류명"])
set(data["상권업종중분류명"])
Out [9]:
{'PC/오락/당구/볼링등',
 '가구소매',
 '가방/신발/액세서리',
 '가전제품소매',
 '가정/주방/인테리어',
 '개인/가정용품수리',
 '개인서비스',

...

 '커피점/카페',
 '패스트푸드',
 '페인트/유리제품소매',
 '평가/개발/관리',
 '학문교육기타',
 '학원-보습교습입시',
 '학원-어학',
 '학원-예능취미체육',
 '학원-음악미술무용',
 '학원-자격/국가고시',
 '학원-창업취업취미',
 '학원-컴퓨터',
 '학원기타',
 '한식',
 '행사/이벤트',
 '호텔/콘도',
 '화장품소매'}
In [10]:
# 카페만 뽑아내기
df_coffee = data[data["상권업종중분류명"] == "커피점/카페"]
print(type(df_coffee))
print(df_coffee.index)

# index를 다시 세팅
df_coffee.index = range(len(df_coffee))
print("전국 커피 전문점 점포 수 : ", len(df_coffee))
df_coffee
Out [10]:
<class 'pandas.core.frame.DataFrame'>
Int64Index([     13,      39,      56,      83,     270,     274,     345,
                462,     544,     610,
            ...
            2446579, 2446622, 2446641, 2446653, 2446704, 2446705, 2446708,
            2446734, 2446754, 2446757],
           dtype='int64', length=114428)
전국 커피 전문점 점포 수 :  114428

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 키즈까페아이사랑 NaN 음식 커피점/카페 강원도 강릉시 성덕동
1 힐링 NaN 음식 커피점/카페 강원도 원주시 단구동
2 드롭탑 속초엑스포점 음식 커피점/카페 강원도 속초시 조양동
3 상유재카페 NaN 음식 커피점/카페 강원도 정선군 정선읍
4 수정다방 NaN 음식 커피점/카페 강원도 고성군 거진읍
... ... ... ... ... ... ... ...
114423 커피텐타 NaN 음식 커피점/카페 충청북도 제천시 청전동
114424 컴포즈커피 충주건국대점 음식 커피점/카페 충청북도 충주시 달천동
114425 에이맨 NaN 음식 커피점/카페 충청북도 청주시 복대2동
114426 달무지개 NaN 음식 커피점/카페 충청북도 청주시 오창읍
114427 홀덤킹 NaN 음식 커피점/카페 충청북도 제천시 중앙동

114428 rows × 7 columns

서울내 커피 전문점

In [11]:
set(data["시도명"])
Out [11]:
{'강원도',
 '경기도',
 '경상남도',
 '경상북도',
 '광주광역시',
 '대구광역시',
 '대전광역시',
 '부산광역시',
 '서울특별시',
 '세종특별자치시',
 '울산광역시',
 '인천광역시',
 '전라남도',
 '전라북도',
 '제주특별자치도',
 '충청남도',
 '충청북도'}
In [12]:
# 카페 중에 "서울"에 위치하고 있는 점포만 뽑아내기
df_seoul_coffee = data[(data["상권업종중분류명"] == "커피점/카페") & (data["시도명"] == "서울특별시")]
df_seoul_coffee.index = range(len(df_seoul_coffee))
print('서울시 내 커피 전문점 점포 수 :', len(df_seoul_coffee))
df_seoul_coffee
Out [12]:
서울시 내 커피 전문점 점포 수 : 20842

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 커피빈 코리아대학로대명거리점 음식 커피점/카페 서울특별시 종로구 혜화동
1 요거프레소 쌍문점 음식 커피점/카페 서울특별시 도봉구 쌍문2동
2 우성커피숍 NaN 음식 커피점/카페 서울특별시 양천구 신월4동
3 버블베어 NaN 음식 커피점/카페 서울특별시 강서구 방화3동
4 알뤼르 NaN 음식 커피점/카페 서울특별시 강남구 대치4동
... ... ... ... ... ... ... ...
20837 공유KYOUYUU 2호점 음식 커피점/카페 서울특별시 성동구 용답동
20838 운비차실 NaN 음식 커피점/카페 서울특별시 중구 회현동
20839 풀꽃 NaN 음식 커피점/카페 서울특별시 강동구 암사3동
20840 댄싱컵 가재울점 음식 커피점/카페 서울특별시 서대문구 남가좌2동
20841 플랫카페 NaN 음식 커피점/카페 서울특별시 광진구 구의1동

20842 rows × 7 columns

브랜드 커피 전문점 전국, 서울 점포 수

전국 스타벅스

In [13]:
df_coffee_star = data[data["상호명"] == "스타벅스"] # 완전히 일치하는 결과만 나옴
df_coffee_star
Out [13]:
상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
8605 스타벅스 춘천명동점 음식 커피점/카페 강원도 춘천시 약사명동
10392 스타벅스 원주터미널점 음식 커피점/카페 강원도 원주시 무실동
14450 스타벅스 춘천온의점 음식 커피점/카페 강원도 춘천시 강남동
16562 스타벅스 춘천구봉산R점 음식 커피점/카페 강원도 춘천시 동면
18068 스타벅스 속초DT점 음식 커피점/카페 강원도 속초시 조양동
... ... ... ... ... ... ... ...
2420924 스타벅스 청주율량DT점 음식 커피점/카페 충청북도 청주시 율량.사천동
2425217 스타벅스 충주연수점 음식 커피점/카페 충청북도 충주시 연수동
2427947 스타벅스 NaN 음식 커피점/카페 충청북도 음성군 원남면
2435007 스타벅스 NaN 음식 커피점/카페 충청북도 제천시 청전동
2439507 스타벅스 청주복대지웰점 음식 커피점/카페 충청북도 청주시 복대1동

1209 rows × 7 columns

In [14]:
df_coffee["상호명"].str.contains("스타벅스") # 문자열을 포함하는 경우도 나옴
Out [14]:
0         False
1         False
2         False
3         False
4         False
          ...  
114423    False
114424    False
114425    False
114426    False
114427    False
Name: 상호명, Length: 114428, dtype: bool
In [15]:
# 이번엔 전국에 있는 스타벅스를 뽑아내자
df_starbucks = df_coffee[df_coffee["상호명"].str.contains("스타벅스")]
df_starbucks.index = range(len(df_starbucks))
print('전국 스타벅스 점포 수 :', len(df_starbucks))
df_starbucks
Out [15]:
전국 스타벅스 점포 수 : 1498

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 스타벅스강릉안목항점 강릉안목항점 음식 커피점/카페 강원도 강릉시 송정동
1 스타벅스춘천후평DT점 춘천후평DT점 음식 커피점/카페 강원도 춘천시 후평3동
2 스타벅스 춘천명동점 음식 커피점/카페 강원도 춘천시 약사명동
3 스타벅스설악워터피아점 설악워터피아점 음식 커피점/카페 강원도 속초시 영랑동
4 스타벅스 원주터미널점 음식 커피점/카페 강원도 원주시 무실동
... ... ... ... ... ... ... ...
1493 스타벅스 청주율량DT점 음식 커피점/카페 충청북도 청주시 율량.사천동
1494 스타벅스 충주연수점 음식 커피점/카페 충청북도 충주시 연수동
1495 스타벅스 NaN 음식 커피점/카페 충청북도 음성군 원남면
1496 스타벅스 NaN 음식 커피점/카페 충청북도 제천시 청전동
1497 스타벅스 청주복대지웰점 음식 커피점/카페 충청북도 청주시 복대1동

1498 rows × 7 columns

서울 스타벅스

In [16]:
# 이번엔 서울에 있는 스타벅스를 뽑아내자
df_seoul_starbucks = df_starbucks[df_starbucks["시도명"] == "서울특별시"]
df_seoul_starbucks.index = range(len(df_seoul_starbucks))
print('서울시 내 스타벅스 점포 수 :', len(df_seoul_starbucks))
df_seoul_starbucks.head()
Out [16]:
서울시 내 스타벅스 점포 수 : 460

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 스타벅스 동숭로아트점 음식 커피점/카페 서울특별시 종로구 이화동
1 스타벅스남부터미널2점 남부터미널2점 음식 커피점/카페 서울특별시 서초구 서초3동
2 스타벅스 현대목동점 음식 커피점/카페 서울특별시 양천구 목1동
3 스타벅스미아사거리역점 미아사거리역점 음식 커피점/카페 서울특별시 강북구 송중동
4 스타벅스 가로수길점 음식 커피점/카페 서울특별시 강남구 신사동

전국 이디야

In [17]:
# 이번엔 전국에 있는 이디야를 뽑아내자
df_ediya = df_coffee[df_coffee["상호명"].str.contains("이디야")]
df_ediya.index = range(len(df_ediya))
print('전국 이디야 점포 수 :', len(df_ediya))
df_ediya
Out [17]:
전국 이디야 점포 수 : 2157

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 이디야커피 원주반곡동점 음식 커피점/카페 강원도 원주시 반곡관설동
1 이디야커피 춘천제일점 음식 커피점/카페 강원도 춘천시 강남동
2 이디야커피 흥업점 음식 커피점/카페 강원도 원주시 흥업면
3 이디야커피 정동진역점 음식 커피점/카페 강원도 강릉시 강동면
4 이디야커피 속초동명항점 음식 커피점/카페 강원도 속초시 동명동
... ... ... ... ... ... ... ...
2152 이디야커피 사직중앙점 음식 커피점/카페 충청북도 청주시 사직2동
2153 이디야커피 증평송산점 음식 커피점/카페 충청북도 증평군 증평읍
2154 이디야커피 제천장락중앙점 음식 커피점/카페 충청북도 제천시 교동
2155 이디야커피 제천의림지DI점 음식 커피점/카페 충청북도 제천시 의림지동
2156 이디야커피 청주운동점 음식 커피점/카페 충청북도 청주시 용암2동

2157 rows × 7 columns

서울 이디야

In [18]:
# 이번엔 서울에 있는 이디야를 뽑아내자
df_seoul_ediya = df_ediya[df_ediya["시도명"] == "서울특별시"]
df_seoul_ediya.index = range(len(df_seoul_ediya))
print('서울시 내 이디야 점포 수 :', len(df_seoul_ediya))
df_seoul_ediya.head()
Out [18]:
서울시 내 이디야 점포 수 : 427

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 이디야커피 신길역점 음식 커피점/카페 서울특별시 영등포구 신길1동
1 이디야커피 라이프점 음식 커피점/카페 서울특별시 영등포구 여의동
2 이디야커피양재AT점 양재AT점 음식 커피점/카페 서울특별시 서초구 양재2동
3 이디야커피 시흥점 음식 커피점/카페 서울특별시 금천구 시흥2동
4 이디야커피 개봉중앙점 음식 커피점/카페 서울특별시 구로구 개봉3동

전국 커피빈

In [19]:
df_coffeebean = df_coffee[df_coffee['상호명'].str.contains('커피빈')]
df_coffeebean.index = range(len(df_coffeebean))
print('전국 커피빈 점포 수 :', len(df_coffeebean))
df_coffeebean.head()
Out [19]:
전국 커피빈 점포 수 : 252

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 커피빈 NaN 음식 커피점/카페 강원도 동해시 묵호동
1 커피빈 코리아원주AK플라자점 음식 커피점/카페 강원도 원주시 단계동
2 베가커피빈스 NaN 음식 커피점/카페 경기도 수원시 율천동
3 커피빈 현대프리미엄아울렛김포점 음식 커피점/카페 경기도 김포시 고촌읍
4 커피빈 중동현대백화점U-PLEX점 음식 커피점/카페 경기도 부천시 신중동

서울 커피빈

In [20]:
df_seoul_coffeebean = df_seoul_coffee[df_seoul_coffee['상호명'].str.contains('커피빈')]
df_seoul_coffeebean.index = range(len(df_seoul_coffeebean))
print('서울시 내 커피빈 점포 수 :', len(df_seoul_coffeebean))
df_seoul_coffeebean.head()
Out [20]:
서울시 내 커피빈 점포 수 : 147

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 커피빈 코리아대학로대명거리점 음식 커피점/카페 서울특별시 종로구 혜화동
1 커피빈코리아낙성대역점 코리아낙성대역점 음식 커피점/카페 서울특별시 관악구 행운동
2 커피빈 코리아청담에스점 음식 커피점/카페 서울특별시 강남구 청담동
3 커피빈 코리아강남역랭기지타워점 음식 커피점/카페 서울특별시 강남구 역삼1동
4 커피빈 코리아청담성당점 음식 커피점/카페 서울특별시 강남구 청담동

전국 투썸

In [21]:
df_2some = df_coffee[df_coffee['상호명'].str.contains('투썸')]
df_2some.index = range(len(df_2some))
print('전국 투썸플레이스 점포 수 :', len(df_2some))
df_2some.head()
Out [21]:
전국 투썸플레이스 점포 수 : 1127

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 투썸플레이스 춘천명동점 음식 커피점/카페 강원도 춘천시 조운동
1 투썸플레이스 소양강댐점 음식 커피점/카페 강원도 춘천시 신북읍
2 투썸플레이스 용평리조트점 음식 커피점/카페 강원도 평창군 대관령면
3 투썸플레이스 철원와수점 음식 커피점/카페 강원도 철원군 서면
4 투썸플레이스동해중앙점 동해중앙점 음식 커피점/카페 강원도 동해시 천곡동

서울 투썸

In [22]:
df_seoul_2some = df_seoul_coffee[df_seoul_coffee['상호명'].str.contains('투썸')]
df_seoul_2some.index = range(len(df_seoul_2some))
print('서울시 내 투썸플레이스 점포 수 :', len(df_seoul_2some))
df_seoul_2some.head()
Out [22]:
서울시 내 투썸플레이스 점포 수 : 255

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 투썸플레이스서울대역중앙점 서울대역중앙점 음식 커피점/카페 서울특별시 관악구 중앙동
1 투썸플레이스 씨제이프레시웨이강남세브란스병원점 음식 커피점/카페 서울특별시 강남구 도곡1동
2 투썸플레이스 LG광화문빌딩점 음식 커피점/카페 서울특별시 종로구 사직동
3 투썸플레이스 가락시장역점 음식 커피점/카페 서울특별시 송파구 가락본동
4 투썸플레이스 CGV수유 음식 커피점/카페 서울특별시 강북구 수유3동

전국 빽다방

In [23]:
df_bbaek = df_coffee[df_coffee['상호명'].str.contains('빽다방')]
df_bbaek.index = range(len(df_bbaek))
print('전국 빽다방 점포 수 :', len(df_bbaek))
df_bbaek.head()
Out [23]:
전국 빽다방 점포 수 : 908

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 빽다방 춘천석사CGV점 음식 커피점/카페 강원도 춘천시 석사동
1 빽다방동해천곡점 동해천곡점 음식 커피점/카페 강원도 동해시 천곡동
2 빽다방 원주중앙1호점 음식 커피점/카페 강원도 원주시 일산동
3 빽다방 삼척대학로점 음식 커피점/카페 강원도 삼척시 성내동
4 빽다방 홍천중앙점 음식 커피점/카페 강원도 홍천군 홍천읍

서울 빽다방

In [24]:
df_seoul_bbaek = df_seoul_coffee[df_seoul_coffee['상호명'].str.contains('빽다방')]
df_seoul_bbaek.index = range(len(df_seoul_bbaek))
print('서울시 내 빽다방 점포 수 :', len(df_seoul_bbaek))
df_seoul_bbaek.head()
Out [24]:
서울시 내 빽다방 점포 수 : 170

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 빽다방공덕새창로점 공덕새창로점 음식 커피점/카페 서울특별시 마포구 도화동
1 빽다방서초우성점 서초우성점 음식 커피점/카페 서울특별시 서초구 서초2동
2 빽다방중계은행사거리점 중계은행사거리점 음식 커피점/카페 서울특별시 노원구 중계1동
3 빽다방성신여대점 성신여대점 음식 커피점/카페 서울특별시 성북구 동선동
4 빽다방신림역1호점 신림역1호점 음식 커피점/카페 서울특별시 관악구 서원동

전국 할리스

In [25]:
df_hollys = df_coffee[df_coffee['상호명'].str.contains('할리스')]
df_hollys.index = range(len(df_hollys))
print('전국 할리스 점포 수 :', len(df_hollys))
df_hollys.head()
Out [25]:
전국 할리스 점포 수 : 562

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 할리스커피 중앙점 음식 커피점/카페 강원도 원주시 중앙동
1 할리스커피동해묵호점 동해묵호점 음식 커피점/카페 강원도 동해시 천곡동
2 할리스커피강릉점 강릉점 음식 커피점/카페 강원도 강릉시 중앙동
3 할리스커피 강릉휴게소인천방면 음식 커피점/카페 강원도 강릉시 성산면
4 할리스 NaN 음식 커피점/카페 강원도 강릉시 송정동

서울 할리스

In [26]:
df_seoul_hollys = df_seoul_coffee[df_seoul_coffee['상호명'].str.contains('할리스')]
df_seoul_hollys.index = range(len(df_seoul_hollys))
print('서울시 내 할리스 점포 수 :', len(df_seoul_hollys))
df_seoul_hollys.head()
Out [26]:
서울시 내 할리스 점포 수 : 141

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 할리스커피남부터미널 NaN 음식 커피점/카페 서울특별시 서초구 서초1동
1 할리스 백석예술대점 음식 커피점/카페 서울특별시 서초구 방배3동
2 할리스커피마포역점 마포역점 음식 커피점/카페 서울특별시 마포구 용강동
3 할리스커피 목동예술인회관점 음식 커피점/카페 서울특별시 양천구 목1동
4 할리스커피 르네상스사거리점 음식 커피점/카페 서울특별시 강남구 역삼2동

전국 메가커피

In [27]:
df_mega = df_coffee[df_coffee['상호명'].str.contains('메가')]
df_mega.index = range(len(df_mega))
print('전국 메가커피 점포 수 :', len(df_mega))
df_mega.head()
Out [27]:
전국 메가커피 점포 수 : 1857

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 메가커피인제점 인제점 음식 커피점/카페 강원도 인제군 인제읍
1 메가엠지씨커피 춘천팔호광장점 음식 커피점/카페 강원도 춘천시 효자2동
2 메가엠지씨커피 NaN 음식 커피점/카페 강원도 춘천시 후평3동
3 메가MGC커피 춘천석사점 음식 커피점/카페 강원도 춘천시 석사동
4 메가엠지씨커피 동해시청점 음식 커피점/카페 강원도 동해시 천곡동

서울 메가커피

In [28]:
df_seoul_mega = df_seoul_coffee[df_seoul_coffee['상호명'].str.contains('메가')]
df_seoul_mega.index = range(len(df_seoul_mega))
print('서울시 내 메가커피 점포 수 :', len(df_seoul_mega))
df_seoul_mega.head()
Out [28]:
서울시 내 메가커피 점포 수 : 427

상호명 지점명 상권업종대분류명 상권업종중분류명 시도명 시군구명 행정동명
0 메가커피 아차산역점 음식 커피점/카페 서울특별시 광진구 중곡4동
1 메가커피 신설동역점 음식 커피점/카페 서울특별시 동대문구 용신동
2 메가엠지씨커피 영등포역점 음식 커피점/카페 서울특별시 영등포구 영등포동
3 메가엠지씨커피 강동구청점 음식 커피점/카페 서울특별시 강동구 성내1동
4 메가커피 개봉사거리점 음식 커피점/카페 서울특별시 구로구 개봉1동

커피전문점 별 비율 비교(주요 브랜드 위주)

BRI2022 커피전문점 브랜드 2022년 8월 빅데이터 분석결과

  1. 스타벅스
  2. 메가커피
  3. 투썸플레이스
  4. 이디야
  5. 빽다방

변수

  • 전체 점포 : data
  • 전체/서울 커피전문점 : df_coffee / df_seoul_coffee

  • 전체/서울 스타벅스 : df_starbucks / df_seoul_starbucks
  • 전체/서울 이디야 : df_ediya / df_seoul_ediya
  • 전체/서울 커피빈 : df_coffeebean / df_seoul_coffeebean
  • 전체/서울 투썸플레이스 : df_2some / df_seoul_2some
  • 전체/서울 빽다방 : df_bbaek / df_seoul_bbaek
  • 전체/서울 할리스 : df_hollys / df_seoul_hollys
  • 전체/서울 메가커피 : df_mega / df_seoul_mega

전체 커피전문점 내 주요 커피브랜드 입점 비율

In [29]:
print("**** 전국 커피전문점중 주요 5대 커피브랜드 입점 비율 ****")
print("주요 5대 커피브랜드 전국 입점 비율 : %.3f%%"\
      % ((len(df_starbucks)+len(df_2some)+len(df_ediya)+len(df_mega)+len(df_coffeebean))
        / len(df_coffee) * 100))
print("1. 스타벅스 : %.3f%%" % (len(df_starbucks) / len(df_coffee) * 100))
print("2. 메가커피 : %.3f%%" % (len(df_mega) / len(df_coffee) * 100))
print("3. 투썸플레이스 : %.3f%%" % (len(df_2some) / len(df_coffee) * 100))
print("3. 이디야 : %.3f%%" % (len(df_ediya) / len(df_coffee) * 100))
print("5. 빽다방 : %.3f%%" % (len(df_bbaek) / len(df_coffee) * 100))
Out [29]:
**** 전국 커피전문점중 주요 5대 커피브랜드 입점 비율 ****
주요 5대 커피브랜드 전국 입점 비율 : 6.022%
1. 스타벅스 : 1.309%
2. 메가커피 : 1.623%
3. 투썸플레이스 : 0.985%
3. 이디야 : 1.885%
5. 빽다방 : 0.794%

서울 커피전문점 내 주요 커피브랜드 입점 비율

In [30]:
print("스타벅스 : %.3f%%" % (len(df_seoul_starbucks) / len(df_seoul_coffee) * 100))
print("이디야 : %.3f%%" % (len(df_seoul_ediya) / len(df_seoul_coffee)* 100))
print("커피빈 : %.3f%%" % (len(df_seoul_coffeebean) / len(df_seoul_coffee)* 100))
print("투썸플레이스 : %.3f%%" % (len(df_seoul_2some) / len(df_seoul_coffee)* 100))
print("빽다방 : %.3f%%" % (len(df_seoul_bbaek) / len(df_seoul_coffee)* 100))
print("할리스 : %.3f%%" % (len(df_seoul_hollys) / len(df_seoul_coffee)* 100))
print("메가커피 : %.3f%%" % (len(df_seoul_mega) / len(df_seoul_coffee)* 100))
Out [30]:
스타벅스 : 2.207%
이디야 : 2.049%
커피빈 : 0.705%
투썸플레이스 : 1.223%
빽다방 : 0.816%
할리스 : 0.677%
메가커피 : 2.049%

각 커피브랜드별 서울 입점 비율

In [31]:
print("**** 주요 5대 커피브랜드별 서울 입점 비율 ****")
print("1. 스타벅스 : %.3f%%" % (len(df_seoul_starbucks) / len(df_starbucks) * 100))
print("2. 메가커피 : %.3f%%" % (len(df_seoul_mega) / len(df_mega) * 100))
print("3. 투썸플레이스 : %.3f%%" % (len(df_seoul_2some) / len(df_2some) * 100))
print("4. 이디야 : %.3f%%" % (len(df_seoul_ediya) / len(df_ediya) * 100))
print("5. 빽다방 : %.3f%%" % (len(df_seoul_bbaek) / len(df_bbaek) * 100))
Out [31]:
**** 주요 5대 커피브랜드별 서울 입점 비율 ****
1. 스타벅스 : 30.708%
2. 메가커피 : 22.994%
3. 투썸플레이스 : 22.626%
4. 이디야 : 19.796%
5. 빽다방 : 18.722%

In [32]:
# 각 구별로 스타벅스가 얼마나 있는지 확인한다.
starbucks_gu = df_seoul_starbucks.groupby('시군구명')['상호명'].count().to_frame().sort_values(by='상호명', ascending=False)
starbucks_gu = starbucks_gu.reset_index()
starbucks_gu = starbucks_gu.set_index('시군구명')
starbucks_gu
Out [32]:
상호명
시군구명
강남구 76
중구 42
서초구 37
송파구 33
영등포구 28
종로구 27
마포구 26
강서구 16
용산구 16
광진구 16
성북구 15
서대문구 15
강동구 13
양천구 13
노원구 11
관악구 11
금천구 11
동작구 11
구로구 10
동대문구 9
은평구 6
중랑구 6
성동구 5
강북구 5
도봉구 2

데이터 시각화

In [33]:
# 시각화를 위한 라이브러리를 불러오기
import seaborn as sns
import matplotlib.pyplot as plt
import platform

from matplotlib import font_manager, rc
%matplotlib inline
In [34]:
# macos에서 사용가능한 한글 글꼴 확인 코드
# [f.name for f in font_manager.fontManager.ttflist if 'Neo' in f.name]
In [35]:
## 운영체제별 글꼴 세팅

path = "c:/Windows/Fonts/malgun.ttf"
if platform.system() == 'Darwin':
    font_name = 'Apple SD Gothic Neo'
    rc('font', family='Apple SD Gothic Neo')
elif platform.system() == 'Windows':
    font_name = font_manager.FontProperties(fname=path).get_name()
    rc('font', family=font_name)
else:
    font_name = font_manager.FontProperties(fname="/usr/share/fonts/nanumfont/NanumGothic.ttf")
    rc('font', family="NanumGothic")
In [36]:
# 주요 5대 커피브랜드 서울 입점 비율을 시각화한다.
starbucks_rate = (len(df_seoul_starbucks) / len(df_seoul_coffee) * 100)
mega_rate = (len(df_seoul_mega) / len(df_seoul_coffee)* 100)
twosome_rate = (len(df_seoul_2some) / len(df_seoul_coffee)* 100)
ediya_rate = (len(df_seoul_ediya) / len(df_seoul_coffee)* 100)
bbaek_rate = (len(df_seoul_bbaek) / len(df_seoul_coffee)* 100)

X = ["스타벅스", "메가커피", "투썸플레이스", "이디야", "빽다방"]
y = [starbucks_rate, mega_rate, twosome_rate, ediya_rate, bbaek_rate]

plt.figure(figsize=(12, 12))
plt.title("2022.09 주요 5대 커피브랜드 서울 입점 비율", fontdict={"fontsize" : 20})
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)
sns.barplot(x=X, y=y)
plt.savefig("coffee_barplot.png")
plt.show()
Out [36]:

img

추가

인천 연수구에 있는 커피 브랜드 별 점포수 구하기

  1. 시도명에서 인천광역시, 시군구에서 연수구만 뽑기
  2. 상호명이 서로 다른 데이터 셋 구성
  3. 상호명에 따른 데이터 갯수 구하기
  4. 데이터프레임 형태로 출력
In [37]:
df_coffee_yeonsu = df_coffee[(df_coffee["시도명"] == "인천광역시") & (df_coffee["시군구명"] == "연수구")]
print("인천 연수구에 있는 커피 점포 수 : ", len(df_coffee_yeonsu))
Out [37]:
인천 연수구에 있는 커피 점포 수 :  748

In [38]:
df_coffee_yeonsu_brand = set(df_coffee_yeonsu["상호명"])
print("인천 연수구에 있는 커피 브랜드 : ", len(df_coffee_yeonsu_brand))
df_coffee_yeonsu_brand
Out [38]:
인천 연수구에 있는 커피 브랜드 :  571

{'11브레드',
 '1927커피잘쓰다현대아울렛송도점',
 '5스타PC카페',
 '79파운야드',
 '88스트리트커피랩',
 '8블럭',
 'C27',
 'CAFE719',
 'CAISSON24',
 'COFFEEBAY송도',

...

 '해긴',
 '향수',
 '허브네일',
 '헤이로다',
 '헤이미쉬',
 '헤이트래블러',
 '호구커피',
 '홀린이홀덤',
 '홍루이젠',
 '화이트펜슬',
 '희차',
 '힐링카페숨소리'}
In [39]:
# 상호명으로 그룹을 묶어 count, 내림차순으로 정렬
df_result = pd.DataFrame(df_coffee_yeonsu.groupby(["상호명"]).count()["시도명"]).sort_values(["시도명"], ascending=False)
df_result.columns = ["점포수"]
df_result.head(10)
Out [39]:
점포수
상호명
카페 35
이디야커피 18
컴포즈커피 13
더벤티 12
투썸플레이스 11
스타벅스 10
빽다방 10
메가엠지씨커피 9
청년다방 6
커피에반하다 6
In [40]:
# 카페 row 삭제
df_result.drop(index="카페", inplace=True)
df_result.head(10)
Out [40]:
점포수
상호명
이디야커피 18
컴포즈커피 13
더벤티 12
투썸플레이스 11
스타벅스 10
빽다방 10
메가엠지씨커피 9
청년다방 6
커피에반하다 6
팔공티 5

서울 광진구에 있는 커피 브랜드 별 점포수 구하기

In [41]:
df_coffee_gwangjin = df_seoul_coffee[df_seoul_coffee["시군구명"] == "광진구"]
print("서울 광진구에 있는 커피 점포 수 : ", len(df_coffee_gwangjin))
Out [41]:
서울 광진구에 있는 커피 점포 수 :  837

In [42]:
df_coffee_gwangjin_brand = set(df_coffee_gwangjin["상호명"])
print("인천 연수구에 있는 커피 브랜드 : ", len(df_coffee_gwangjin_brand))
df_coffee_gwangjin_brand
Out [42]:
인천 연수구에 있는 커피 브랜드 :  717

{'19티',
 '247커피',
 '29-77카페',
 '550커피',
 '597카페',
 '87커피로스터',
 '8커피앤비어',
 '99도버블티',
 'AZUR아쥐르',
 'BANANATALK',

...

 '홍과자점',
 '홍카페',
 '화양과자',
 '화양연화',
 '화이트펜슬스터디카페',
 '휴온',
 '흐룻',
 '히어로',
 '히읗히읗',
 '힐링카페지유'}
In [43]:
# 상호명으로 그룹을 묶어 count, 내림차순으로 정렬
df_result = pd.DataFrame(df_coffee_gwangjin.groupby(["상호명"]).count()["시도명"]).sort_values(["시도명"], ascending=False)
df_result.columns = ["점포수"]
df_result.head(10)
Out [43]:
점포수
상호명
카페 29
스타벅스 13
이디야커피 12
컴포즈커피 10
커피베이 7
빽다방 7
메가엠지씨커피 6
투썸플레이스 6
커피나무 4
디저트39 4
In [44]:
# 카페 row 삭제
df_result.drop(index="카페", inplace=True)
df_result.head(10)
Out [44]:
점포수
상호명
스타벅스 13
이디야커피 12
컴포즈커피 10
커피베이 7
빽다방 7
메가엠지씨커피 6
투썸플레이스 6
커피나무 4
디저트39 4
탐앤탐스 4

Reference

댓글남기기