728x90
https://www.data.go.kr/tcs/dss/selectFileDataDetailView.do?publicDataPk=15083033
해당 사이트에 접속해서 다운 받은 후 같이 진행해 봐요~
쥬피터로 아래 파일을 열어 보시면 더 예쁘게 나와요~
공공데이터를 이용한 카페 상권분석(2021 Ver.)¶
In [2]:
# 먼저 필요한 라이브러리를 불러옵니다.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
1. 데이터 불러오기¶
In [3]:
# 다운로드 받은 데이터중 일부를 열어봅니다.
temp = pd.read_csv("../my room/data1/소상공인시장진흥공단_상가(상권)정보_인천_202103.csv"
,sep=',',encoding = "utf-8")
temp.head(2)
Out[3]:
상가업소번호 | 상호명 | 지점명 | 상권업종대분류코드 | 상권업종대분류명 | 상권업종중분류코드 | 상권업종중분류명 | 상권업종소분류코드 | 상권업종소분류명 | 표준산업분류코드 | ... | 건물관리번호 | 건물명 | 도로명주소 | 구우편번호 | 신우편번호 | 동정보 | 층정보 | 호정보 | 경도 | 위도 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 23498449 | 츄로하임 | NaN | Q | 음식 | Q01 | 한식 | Q01A01 | 한식/백반/한정식 | I56111 | ... | 2826010400109750004000001 | 청라반도유보라 | 인천광역시 서구 솔빛로 55 | 404170.0 | 22765.0 | NaN | NaN | 102 | 126.626740 | 37.525163 |
1 | 22882934 | 간석미용실 | NaN | F | 생활서비스 | F01 | 이/미용/건강 | F01A01 | 여성미용실 | S96112 | ... | 2820010200101900026021270 | NaN | 인천광역시 남동구 석촌로14번길 5 | 405230.0 | 21545.0 | NaN | NaN | NaN | 126.709349 | 37.461969 |
2 rows × 39 columns
In [4]:
# 39개의 변수를 확인해 볼 필요가 있다.
temp.columns
# 변수가 너무 많다!!
# 카페를 분석하는 데 필요한 변수만 추출할 것이다!!
#temp.상권업종소분류명.unique()
Out[4]:
Index(['상가업소번호', '상호명', '지점명', '상권업종대분류코드', '상권업종대분류명', '상권업종중분류코드',
'상권업종중분류명', '상권업종소분류코드', '상권업종소분류명', '표준산업분류코드', '표준산업분류명', '시도코드',
'시도명', '시군구코드', '시군구명', '행정동코드', '행정동명', '법정동코드', '법정동명', '지번코드',
'대지구분코드', '대지구분명', '지번본번지', '지번부번지', '지번주소', '도로명코드', '도로명', '건물본번지',
'건물부번지', '건물관리번호', '건물명', '도로명주소', '구우편번호', '신우편번호', '동정보', '층정보',
'호정보', '경도', '위도'],
dtype='object')
(1) 일단 여러 csv 파일 한번에 불러오기¶
In [5]:
# data 폴더에 있는 모든 csv 파일을 읽어오기 위해 glob을 사용합니다.
from glob import glob
# csv 목록 불러오기
file_names = glob("../my room/data1/*.csv")
total = pd.DataFrame()
# 모든 csv 병합하기
for file_name in file_names:
temp = pd.read_csv(file_name,sep=',',encoding='utf-8')
total = pd.concat([total,temp])
# reset index로 인덱스를 새로 지정할 수 있다.
total.reset_index(inplace=True, drop=True) #기존 index 제거하고 싶을땐 drop=True
total
C:\work\envs\datascience\lib\site-packages\IPython\core\interactiveshell.py:3165: DtypeWarning: Columns (35) have mixed types.Specify dtype option on import or set low_memory=False.
has_raised = await self.run_ast_nodes(code_ast.body, cell_name,
Out[5]:
상가업소번호 | 상호명 | 지점명 | 상권업종대분류코드 | 상권업종대분류명 | 상권업종중분류코드 | 상권업종중분류명 | 상권업종소분류코드 | 상권업종소분류명 | 표준산업분류코드 | ... | 건물관리번호 | 건물명 | 도로명주소 | 구우편번호 | 신우편번호 | 동정보 | 층정보 | 호정보 | 경도 | 위도 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 17174079 | 평창라마다호텔 | NaN | O | 숙박 | O01 | 호텔/콘도 | O01A01 | 호텔/콘도 | NaN | ... | 4276038024102450036000001 | NaN | 강원도 평창군 대관령면 오목길 107 | 232954.0 | 25342.0 | NaN | NaN | NaN | 128.717971 | 37.660051 |
1 | 17173904 | 호텔탑스텐스카이라운지 | NaN | O | 숙박 | O01 | 호텔/콘도 | O01A01 | 호텔/콘도 | NaN | ... | 4215035029100920001000002 | NaN | 강원도 강릉시 옥계면 헌화로 455-34 | 210831.0 | 25633.0 | NaN | NaN | NaN | 129.052902 | 37.654680 |
2 | 25033300 | 동그라미중고타이어 | NaN | D | 소매 | D23 | 자동차/자동차용품 | D23A04 | 타이어판매 | G45211 | ... | 4215011100110960006010791 | NaN | 강원도 강릉시 가작로 270 | 210110.0 | 25488.0 | 1 | NaN | NaN | 128.904472 | 37.770252 |
3 | 17174549 | 세인트존스호텔Ohcrab | NaN | O | 숙박 | O01 | 호텔/콘도 | O01A01 | 호텔/콘도 | NaN | ... | 4215011300100010001017124 | 세인트존스호텔 | 강원도 강릉시 창해로 307 | 210120.0 | 25467.0 | NaN | NaN | NaN | 128.920908 | 37.791299 |
4 | 17175358 | 국수나루 | NaN | Q | 음식 | Q01 | 한식 | Q01A01 | 한식/백반/한정식 | I56111 | ... | 4215010900101730002015569 | NaN | 강원도 강릉시 토성로 193 | 210934.0 | 25531.0 | NaN | NaN | NaN | 128.896783 | 37.757642 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2233992 | 17433055 | 더:예쁨 | NaN | F | 생활서비스 | F01 | 이/미용/건강 | F01A01 | 여성미용실 | S96112 | ... | 4313011800116250000000008 | 연수세영리첼1단지아파트상가 | 충청북도 충주시 연수동산로 35 | 380100.0 | 27352.0 | 상가 | NaN | 104 | 127.941797 | 36.985736 |
2233993 | 17451070 | 우리집밥상 | NaN | Q | 음식 | Q01 | 한식 | Q01A01 | 한식/백반/한정식 | I56111 | ... | 4377025021103370004010973 | NaN | 충청북도 음성군 음성읍 시장로 68 | 369807.0 | 27702.0 | NaN | NaN | NaN | 127.693937 | 36.933781 |
2233994 | 17433002 | 빅스타 | 서충주점 | Q | 음식 | Q01 | 한식 | Q01A01 | 한식/백반/한정식 | I56111 | ... | 4313033531110450000000001 | NaN | 충청북도 충주시 대소원면 첨단산업4로 13 | 380871.0 | 27466.0 | NaN | 1.0 | 104 | 127.829923 | 36.985799 |
2233995 | 17389939 | 무한닭발 | NaN | Q | 음식 | Q05 | 닭/오리요리 | Q05A10 | 닭내장/닭발요리 | I56111 | ... | 4311311500104920003016198 | NaN | 충청북도 청주시 흥덕구 직지대로639번길 75 | 361817.0 | 28475.0 | NaN | NaN | 105 | 127.465799 | 36.646244 |
2233996 | 17433391 | 모아모아플레이 | NaN | Q | 음식 | Q01 | 한식 | Q01A01 | 한식/백반/한정식 | I56111 | ... | 4311110800100190005048885 | NaN | 충청북도 청주시 상당구 탑동로1번길 25 | 360050.0 | 28716.0 | NaN | 1.0 | 101 | 127.494822 | 36.628995 |
2233997 rows × 39 columns
In [6]:
# 분석에 필요한 column을 고릅니다. ## 자유롭게 하셔도 상관없습니다.
data=total[['상호명','지점명','상권업종대분류명','상권업종중분류명','시도명','시군구명','행정동명']]
data
Out[6]:
상호명 | 지점명 | 상권업종대분류명 | 상권업종중분류명 | 시도명 | 시군구명 | 행정동명 | |
---|---|---|---|---|---|---|---|
0 | 평창라마다호텔 | NaN | 숙박 | 호텔/콘도 | 강원도 | 평창군 | 대관령면 |
1 | 호텔탑스텐스카이라운지 | NaN | 숙박 | 호텔/콘도 | 강원도 | 강릉시 | 옥계면 |
2 | 동그라미중고타이어 | NaN | 소매 | 자동차/자동차용품 | 강원도 | 강릉시 | 포남1동 |
3 | 세인트존스호텔Ohcrab | NaN | 숙박 | 호텔/콘도 | 강원도 | 강릉시 | 초당동 |
4 | 국수나루 | NaN | 음식 | 한식 | 강원도 | 강릉시 | 옥천동 |
... | ... | ... | ... | ... | ... | ... | ... |
2233992 | 더:예쁨 | NaN | 생활서비스 | 이/미용/건강 | 충청북도 | 충주시 | 연수동 |
2233993 | 우리집밥상 | NaN | 음식 | 한식 | 충청북도 | 음성군 | 음성읍 |
2233994 | 빅스타 | 서충주점 | 음식 | 한식 | 충청북도 | 충주시 | 대소원면 |
2233995 | 무한닭발 | NaN | 음식 | 닭/오리요리 | 충청북도 | 청주시 흥덕구 | 봉명2.송정동 |
2233996 | 모아모아플레이 | NaN | 음식 | 한식 | 충청북도 | 청주시 상당구 | 성안동 |
2233997 rows × 7 columns
2. 데이터 구경하기¶
In [7]:
data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2233997 entries, 0 to 2233996
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: 119.3+ MB
In [8]:
data.describe()
Out[8]:
상호명 | 지점명 | 상권업종대분류명 | 상권업종중분류명 | 시도명 | 시군구명 | 행정동명 | |
---|---|---|---|---|---|---|---|
count | 2233994 | 327569 | 2233997 | 2233997 | 2233997 | 2233997 | 2233997 |
unique | 1273411 | 111919 | 8 | 95 | 17 | 234 | 3221 |
top | CU | 본점 | 음식 | 한식 | 경기도 | 서구 | 중앙동 |
freq | 11208 | 2371 | 845782 | 324746 | 508845 | 66428 | 40277 |
In [9]:
set(data["상권업종중분류명"])
Out[9]:
{'PC/오락/당구/볼링등',
'가구소매',
'가방/신발/액세서리',
'가전제품소매',
'가정/주방/인테리어',
'개인/가정용품수리',
'개인서비스',
'건강/미용식품',
'경마/경륜/성인오락',
'광고/인쇄',
'기타교육기관',
'기타서비스업',
'기타음식업',
'기타판매업',
'놀이/여가/취미',
'닭/오리요리',
'대중목욕탕/휴게',
'대행업',
'도서관/독서실',
'모텔/여관/여인숙',
'무도/유흥/가무',
'물품기기대여',
'민박/하숙',
'법무세무회계',
'별식/퓨전요리',
'부동산관련서비스',
'부동산임대',
'부동산중개',
'부페',
'분식',
'분양',
'사무/문구/컴퓨터',
'사진',
'사진/광학/정밀기기소매',
'선물/팬시/기념품',
'세탁/가사서비스',
'스포츠/운동',
'시계/귀금속소매',
'실내운동시설',
'실외운동시설',
'애견/애완/동물',
'양식',
'연구소',
'연극/영화/극장',
'예술품/골동품/수석/분재',
'예식/의례/관혼상제',
'요가/단전/마사지',
'운동/경기용품소매',
'운송/배달/택배',
'운영관리시설',
'유스호스텔',
'유아교육',
'유아용품',
'유흥주점',
'음/식료품소매',
'음식배달서비스',
'의복의류',
'의약/의료품소매',
'이/미용/건강',
'인력/고용/용역알선',
'일식/수산물',
'자동차/이륜차',
'자동차/자동차용품',
'장례/묘지',
'전시/관람',
'제과제빵떡케익',
'종교용품판매',
'종합소매점',
'주유소/충전소',
'주택수리',
'중고품소매/교환',
'중식',
'책/서적/도서',
'철물/난방/건설자재소매',
'취미/오락관련소매',
'캠프/별장/펜션',
'커피점/카페',
'특수교육기관',
'패스트푸드',
'페인트/유리제품소매',
'평가/개발/관리',
'학교',
'학문교육기타',
'학원-보습교습입시',
'학원-어학',
'학원-예능취미체육',
'학원-음악미술무용',
'학원-자격/국가고시',
'학원-창업취업취미',
'학원-컴퓨터',
'학원기타',
'한식',
'행사/이벤트',
'호텔/콘도',
'화장품소매'}
In [10]:
# 카페만 뽑아냅니다.
df_coffee = data[data["상권업종중분류명"]=='커피점/카페']
print("전국 커피 전문점 점포 수 : ", len(df_coffee))
df_coffee.head()
전국 커피 전문점 점포 수 : 106710
Out[10]:
상호명 | 지점명 | 상권업종대분류명 | 상권업종중분류명 | 시도명 | 시군구명 | 행정동명 | |
---|---|---|---|---|---|---|---|
16 | 키즈까페아이사랑 | NaN | 음식 | 커피점/카페 | 강원도 | 강릉시 | 성덕동 |
43 | 카페마실 | NaN | 음식 | 커피점/카페 | 강원도 | 원주시 | 단계동 |
51 | 힐링 | NaN | 음식 | 커피점/카페 | 강원도 | 원주시 | 단구동 |
67 | 드롭탑 | 속초엑스포점 | 음식 | 커피점/카페 | 강원도 | 속초시 | 조양동 |
89 | 상유재카페 | NaN | 음식 | 커피점/카페 | 강원도 | 정선군 | 정선읍 |
In [11]:
set(data['시도명'])
Out[11]:
{'강원도',
'경기도',
'경상남도',
'경상북도',
'광주광역시',
'대구광역시',
'대전광역시',
'부산광역시',
'서울특별시',
'세종특별자치시',
'울산광역시',
'인천광역시',
'전라남도',
'전라북도',
'제주특별자치도',
'충청남도',
'충청북도'}
In [12]:
# 시도별로 구분하는 데이터 만들기
df_coffee_seoul = df_coffee[df_coffee['시도명']=='서울특별시']
df_coffee_seoul.index = range(len(df_coffee_seoul)) # index 재설정
# df_coffee_seoul.reset_index(inplace=True, drop=True)
df_coffee_seoul.head()
Out[12]:
상호명 | 지점명 | 상권업종대분류명 | 상권업종중분류명 | 시도명 | 시군구명 | 행정동명 | |
---|---|---|---|---|---|---|---|
0 | 커피빈 | 코리아대학로대명거리점 | 음식 | 커피점/카페 | 서울특별시 | 종로구 | 혜화동 |
1 | 요거프레소 | 쌍문점 | 음식 | 커피점/카페 | 서울특별시 | 도봉구 | 쌍문2동 |
2 | 메머드커피 | NaN | 음식 | 커피점/카페 | 서울특별시 | 마포구 | 서교동 |
3 | 버블베어 | NaN | 음식 | 커피점/카페 | 서울특별시 | 강서구 | 방화3동 |
4 | 우성커피숍 | NaN | 음식 | 커피점/카페 | 서울특별시 | 양천구 | 신월4동 |
In [13]:
# for문으로 전국 시도명별 데이터 만드는 법
a=list(set(data['시도명']))
import sys
mod = sys.modules[__name__]
for i in range(len(a)):
setattr(mod, 'df_coffee_{}' .format(a[i]), df_coffee[df_coffee['시도명']==a[i]])
# 이건 for문을 돌릴 방법을 못 찾겠네요...
df_coffee_강원도.index = range(len(df_coffee_강원도))
df_coffee_경기도.index = range(len(df_coffee_경기도))
df_coffee_경상남도.index = range(len(df_coffee_경상남도))
df_coffee_경상북도.index = range(len(df_coffee_경상북도))
df_coffee_광주광역시.index = range(len(df_coffee_광주광역시))
df_coffee_대구광역시.index = range(len(df_coffee_대구광역시))
df_coffee_대전광역시.index = range(len(df_coffee_대전광역시))
df_coffee_부산광역시.index = range(len(df_coffee_부산광역시))
df_coffee_서울특별시.index = range(len(df_coffee_서울특별시))
df_coffee_세종특별자치시.index = range(len(df_coffee_세종특별자치시))
df_coffee_울산광역시.index = range(len(df_coffee_울산광역시))
df_coffee_인천광역시.index = range(len(df_coffee_인천광역시))
df_coffee_전라남도.index = range(len(df_coffee_전라남도))
df_coffee_전라북도.index = range(len(df_coffee_전라북도))
df_coffee_제주특별자치도.index = range(len(df_coffee_제주특별자치도))
df_coffee_충청남도.index = range(len(df_coffee_충청남도))
df_coffee_충청북도.index = range(len(df_coffee_충청북도))
df_coffee_대구광역시
Out[13]:
상호명 | 지점명 | 상권업종대분류명 | 상권업종중분류명 | 시도명 | 시군구명 | 행정동명 | |
---|---|---|---|---|---|---|---|
0 | 브라운 | NaN | 음식 | 커피점/카페 | 대구광역시 | 수성구 | 고산2동 |
1 | 커피명가 | 2호점 | 음식 | 커피점/카페 | 대구광역시 | 중구 | 삼덕동 |
2 | 대림다방 | NaN | 음식 | 커피점/카페 | 대구광역시 | 수성구 | 수성2.3가동 |
3 | 카페머그 | NaN | 음식 | 커피점/카페 | 대구광역시 | 중구 | 성내2동 |
4 | 샌디버블 | NaN | 음식 | 커피점/카페 | 대구광역시 | 남구 | 대명2동 |
... | ... | ... | ... | ... | ... | ... | ... |
5108 | 카페 | 이루다스터디 | 음식 | 커피점/카페 | 대구광역시 | 달서구 | 월성1동 |
5109 | 커피지상주의 | NaN | 음식 | 커피점/카페 | 대구광역시 | 달서구 | 용산1동 |
5110 | 그린바스켓 | NaN | 음식 | 커피점/카페 | 대구광역시 | 수성구 | 만촌3동 |
5111 | 티앤오T.N.O | NaN | 음식 | 커피점/카페 | 대구광역시 | 북구 | 침산2동 |
5112 | 커피가득 | NaN | 음식 | 커피점/카페 | 대구광역시 | 서구 | 비산2.3동 |
5113 rows × 7 columns
전국 스타벅스¶
In [14]:
df_스타벅스 = df_coffee[df_coffee["상호명"].str.contains("스타벅스")]
df_스타벅스.index = range(len(df_스타벅스))
print('전국 스타벅스 점포 수 :', len(df_스타벅스))
df_스타벅스.head()
전국 스타벅스 점포 수 : 1563
Out[14]:
상호명 | 지점명 | 상권업종대분류명 | 상권업종중분류명 | 시도명 | 시군구명 | 행정동명 | |
---|---|---|---|---|---|---|---|
0 | 스타벅스강릉안목항점 | 강릉안목항점 | 음식 | 커피점/카페 | 강원도 | 강릉시 | 송정동 |
1 | 스타벅스 | 대명델피노리조트점 | 음식 | 커피점/카페 | 강원도 | 고성군 | 토성면 |
2 | 스타벅스춘천후평DT점 | 춘천후평DT점 | 음식 | 커피점/카페 | 강원도 | 춘천시 | 후평3동 |
3 | 스타벅스 | 춘천명동점 | 음식 | 커피점/카페 | 강원도 | 춘천시 | 약사명동 |
4 | 스타벅스설악워터피아점 | 설악워터피아점 | 음식 | 커피점/카페 | 강원도 | 속초시 | 영랑동 |
In [15]:
# 한글깨짐 해결을 위해 코드
import matplotlib.font_manager as fm
path = 'C:\\Users\\설위준\\Desktop\\my room\\NanumBarunGothic.ttf'
fontprob=fm.FontProperties(fname=path,size=18)
In [16]:
# 시도별 스타벅스 분포
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
a = list(set(data['시도명']))
v1 = [len(df_스타벅스[df_스타벅스["시도명"]==a[i]]) for i in range(len(a))]
index = np.arange(len(a))
plt.bar(a, v1)
plt.xticks(index, a, fontsize=13,fontproperties=fontprob, rotation=90)
Out[16]:
([<matplotlib.axis.XTick at 0x22f93e53b50>,
<matplotlib.axis.XTick at 0x22f93e53b20>,
<matplotlib.axis.XTick at 0x22f93e4cdc0>,
<matplotlib.axis.XTick at 0x22f9429d6d0>,
<matplotlib.axis.XTick at 0x22f9429dbe0>,
<matplotlib.axis.XTick at 0x22f9429d850>,
<matplotlib.axis.XTick at 0x22f942a72e0>,
<matplotlib.axis.XTick at 0x22f942a77f0>,
<matplotlib.axis.XTick at 0x22f942a7d00>,
<matplotlib.axis.XTick at 0x22f942ae250>,
<matplotlib.axis.XTick at 0x22f942ae760>,
<matplotlib.axis.XTick at 0x22f942aec70>,
<matplotlib.axis.XTick at 0x22f942b41c0>,
<matplotlib.axis.XTick at 0x22f942b46d0>,
<matplotlib.axis.XTick at 0x22f942ae430>,
<matplotlib.axis.XTick at 0x22f942a74c0>,
<matplotlib.axis.XTick at 0x22f942b42e0>],
[Text(0, 0, '제주특별자치도'),
Text(1, 0, '대전광역시'),
Text(2, 0, '충청남도'),
Text(3, 0, '충청북도'),
Text(4, 0, '부산광역시'),
Text(5, 0, '서울특별시'),
Text(6, 0, '강원도'),
Text(7, 0, '전라북도'),
Text(8, 0, '전라남도'),
Text(9, 0, '경상남도'),
Text(10, 0, '경기도'),
Text(11, 0, '대구광역시'),
Text(12, 0, '세종특별자치시'),
Text(13, 0, '인천광역시'),
Text(14, 0, '광주광역시'),
Text(15, 0, '울산광역시'),
Text(16, 0, '경상북도')])
In [17]:
# 시도별 스타벅스 분포
plt.barh(index, v1)
plt.yticks(index, a, fontsize=13,fontproperties=fontprob, rotation=0)
plt.show()
#plt.savefig('savefig_200dpi.png', dpi=200)
# 대부분의 스타벅스가 서울과 경기도 지역에 분포하는 것을 확인할 수 있다.
In [18]:
# 지역별 스타벅스 비율
sum_star = sum(v1)
for i in range(len(a)):
print('스타벅스의 전국 대비 {}에서의 비율 : {:.3f}%' .format(a[i],v1[i]/sum_star*100))
스타벅스의 전국 대비 제주특별자치도에서의 비율 : 1.727%
스타벅스의 전국 대비 대전광역시에서의 비율 : 3.263%
스타벅스의 전국 대비 충청남도에서의 비율 : 2.687%
스타벅스의 전국 대비 충청북도에서의 비율 : 1.983%
스타벅스의 전국 대비 부산광역시에서의 비율 : 7.550%
스타벅스의 전국 대비 서울특별시에서의 비율 : 31.158%
스타벅스의 전국 대비 강원도에서의 비율 : 2.687%
스타벅스의 전국 대비 전라북도에서의 비율 : 1.663%
스타벅스의 전국 대비 전라남도에서의 비율 : 1.536%
스타벅스의 전국 대비 경상남도에서의 비율 : 3.967%
스타벅스의 전국 대비 경기도에서의 비율 : 22.905%
스타벅스의 전국 대비 대구광역시에서의 비율 : 4.543%
스타벅스의 전국 대비 세종특별자치시에서의 비율 : 0.576%
스타벅스의 전국 대비 인천광역시에서의 비율 : 4.351%
스타벅스의 전국 대비 광주광역시에서의 비율 : 3.839%
스타벅스의 전국 대비 울산광역시에서의 비율 : 1.855%
스타벅스의 전국 대비 경상북도에서의 비율 : 3.711%
전국 투썸¶
In [19]:
df_투썸 = df_coffee[df_coffee["상호명"].str.contains("투썸")]
df_투썸.index = range(len(df_투썸))
print('전국 투썸 점포 수 :', len(df_투썸))
df_투썸.head()
전국 투썸 점포 수 : 1108
Out[19]:
상호명 | 지점명 | 상권업종대분류명 | 상권업종중분류명 | 시도명 | 시군구명 | 행정동명 | |
---|---|---|---|---|---|---|---|
0 | 투썸플레이스 | 춘천명동점 | 음식 | 커피점/카페 | 강원도 | 춘천시 | 조운동 |
1 | 투썸플레이스 | 강릉포남점 | 음식 | 커피점/카페 | 강원도 | 강릉시 | 포남1동 |
2 | 투썸플레이스 | 춘천퇴계점 | 음식 | 커피점/카페 | 강원도 | 춘천시 | 퇴계동 |
3 | 투썸플레이스 | 소양강댐점 | 음식 | 커피점/카페 | 강원도 | 춘천시 | 신북읍 |
4 | 투썸플레이스 | 용평리조트점 | 음식 | 커피점/카페 | 강원도 | 평창군 | 대관령면 |
In [20]:
a = list(set(data['시도명']))
a # 이것을 계속 활용한다.
Out[20]:
['제주특별자치도',
'대전광역시',
'충청남도',
'충청북도',
'부산광역시',
'서울특별시',
'강원도',
'전라북도',
'전라남도',
'경상남도',
'경기도',
'대구광역시',
'세종특별자치시',
'인천광역시',
'광주광역시',
'울산광역시',
'경상북도']
In [21]:
v2 = [len(df_투썸[df_투썸["시도명"]==a[i]]) for i in range(len(a))]
index = np.arange(len(a))
plt.bar(a, v2)
plt.xticks(index, a, fontsize=13,fontproperties=fontprob, rotation=90)
Out[21]:
([<matplotlib.axis.XTick at 0x22f9f94a790>,
<matplotlib.axis.XTick at 0x22f9f94a760>,
<matplotlib.axis.XTick at 0x22f9f947a00>,
<matplotlib.axis.XTick at 0x22f9f99d280>,
<matplotlib.axis.XTick at 0x22f9f99d790>,
<matplotlib.axis.XTick at 0x22f9f99dca0>,
<matplotlib.axis.XTick at 0x22f9f9a41f0>,
<matplotlib.axis.XTick at 0x22f9f9a4700>,
<matplotlib.axis.XTick at 0x22f9f9a4c10>,
<matplotlib.axis.XTick at 0x22f9f9aa160>,
<matplotlib.axis.XTick at 0x22f9f9a47c0>,
<matplotlib.axis.XTick at 0x22f9f99d850>,
<matplotlib.axis.XTick at 0x22f9f9aa4c0>,
<matplotlib.axis.XTick at 0x22f9f9aa9d0>,
<matplotlib.axis.XTick at 0x22f9f9aaee0>,
<matplotlib.axis.XTick at 0x22f9f9b1430>,
<matplotlib.axis.XTick at 0x22f9f9b1970>],
[Text(0, 0, '제주특별자치도'),
Text(1, 0, '대전광역시'),
Text(2, 0, '충청남도'),
Text(3, 0, '충청북도'),
Text(4, 0, '부산광역시'),
Text(5, 0, '서울특별시'),
Text(6, 0, '강원도'),
Text(7, 0, '전라북도'),
Text(8, 0, '전라남도'),
Text(9, 0, '경상남도'),
Text(10, 0, '경기도'),
Text(11, 0, '대구광역시'),
Text(12, 0, '세종특별자치시'),
Text(13, 0, '인천광역시'),
Text(14, 0, '광주광역시'),
Text(15, 0, '울산광역시'),
Text(16, 0, '경상북도')])
In [22]:
# 시도별 투썸 분포
plt.barh(index, v2)
plt.yticks(index, a, fontsize=13,fontproperties=fontprob, rotation=0)
plt.show()
In [23]:
sum_star = sum(v2)
for i in range(len(a)):
print('투썸의 전국 대비 {}에서의 비율 : {:.3f}%' .format(a[i],v2[i]/sum_star*100))
투썸의 전국 대비 제주특별자치도에서의 비율 : 1.986%
투썸의 전국 대비 대전광역시에서의 비율 : 3.881%
투썸의 전국 대비 충청남도에서의 비율 : 4.242%
투썸의 전국 대비 충청북도에서의 비율 : 3.520%
투썸의 전국 대비 부산광역시에서의 비율 : 5.505%
투썸의 전국 대비 서울특별시에서의 비율 : 24.639%
투썸의 전국 대비 강원도에서의 비율 : 3.159%
투썸의 전국 대비 전라북도에서의 비율 : 3.159%
투썸의 전국 대비 전라남도에서의 비율 : 2.347%
투썸의 전국 대비 경상남도에서의 비율 : 4.242%
투썸의 전국 대비 경기도에서의 비율 : 21.209%
투썸의 전국 대비 대구광역시에서의 비율 : 6.137%
투썸의 전국 대비 세종특별자치시에서의 비율 : 0.722%
투썸의 전국 대비 인천광역시에서의 비율 : 5.686%
투썸의 전국 대비 광주광역시에서의 비율 : 2.527%
투썸의 전국 대비 울산광역시에서의 비율 : 2.617%
투썸의 전국 대비 경상북도에서의 비율 : 4.422%
전국 이디야¶
In [24]:
df_이디야 = df_coffee[df_coffee["상호명"].str.contains("이디야")]
df_이디야.index = range(len(df_이디야))
print('전국 이디야 점포 수 :', len(df_이디야))
df_이디야.head()
전국 이디야 점포 수 : 2158
Out[24]:
상호명 | 지점명 | 상권업종대분류명 | 상권업종중분류명 | 시도명 | 시군구명 | 행정동명 | |
---|---|---|---|---|---|---|---|
0 | 이디야커피 | 원주반곡동점 | 음식 | 커피점/카페 | 강원도 | 원주시 | 반곡관설동 |
1 | 이디야커피 | 춘천제일점 | 음식 | 커피점/카페 | 강원도 | 춘천시 | 강남동 |
2 | 이디야커피 | 흥업점 | 음식 | 커피점/카페 | 강원도 | 원주시 | 흥업면 |
3 | 이디야커피 | 주문진점 | 음식 | 커피점/카페 | 강원도 | 강릉시 | 주문진읍 |
4 | 이디야커피 | 강릉입암남부점 | 음식 | 커피점/카페 | 강원도 | 강릉시 | 성덕동 |
In [25]:
v3 = [len(df_이디야[df_이디야["시도명"]==a[i]]) for i in range(len(a))]
index = np.arange(len(a))
plt.bar(a, v3)
plt.xticks(index, a, fontsize=13,fontproperties=fontprob, rotation=90)
Out[25]:
([<matplotlib.axis.XTick at 0x22f9fa82280>,
<matplotlib.axis.XTick at 0x22f9fa82250>,
<matplotlib.axis.XTick at 0x22f9fa804f0>,
<matplotlib.axis.XTick at 0x22f9facae20>,
<matplotlib.axis.XTick at 0x22f9fad8370>,
<matplotlib.axis.XTick at 0x22f9fad8880>,
<matplotlib.axis.XTick at 0x22f9fad8d90>,
<matplotlib.axis.XTick at 0x22f9fadf2e0>,
<matplotlib.axis.XTick at 0x22f9fadf7f0>,
<matplotlib.axis.XTick at 0x22f9fadfd00>,
<matplotlib.axis.XTick at 0x22f9fadf520>,
<matplotlib.axis.XTick at 0x22f9fad85b0>,
<matplotlib.axis.XTick at 0x22f9fae60a0>,
<matplotlib.axis.XTick at 0x22f9fae65b0>,
<matplotlib.axis.XTick at 0x22f9fae6ac0>,
<matplotlib.axis.XTick at 0x22f9fae6fd0>,
<matplotlib.axis.XTick at 0x22f9faec520>],
[Text(0, 0, '제주특별자치도'),
Text(1, 0, '대전광역시'),
Text(2, 0, '충청남도'),
Text(3, 0, '충청북도'),
Text(4, 0, '부산광역시'),
Text(5, 0, '서울특별시'),
Text(6, 0, '강원도'),
Text(7, 0, '전라북도'),
Text(8, 0, '전라남도'),
Text(9, 0, '경상남도'),
Text(10, 0, '경기도'),
Text(11, 0, '대구광역시'),
Text(12, 0, '세종특별자치시'),
Text(13, 0, '인천광역시'),
Text(14, 0, '광주광역시'),
Text(15, 0, '울산광역시'),
Text(16, 0, '경상북도')])
In [26]:
# 시도별 이디야 분포
plt.barh(index, v3)
plt.yticks(index, a, fontsize=13,fontproperties=fontprob, rotation=0)
plt.show()
In [27]:
sum_star = sum(v3)
for i in range(len(a)):
print('이디야의 전국 대비 {}에서의 비율 : {:.3f}%' .format(a[i],v3[i]/sum_star*100))
이디야의 전국 대비 제주특별자치도에서의 비율 : 0.649%
이디야의 전국 대비 대전광역시에서의 비율 : 1.483%
이디야의 전국 대비 충청남도에서의 비율 : 3.105%
이디야의 전국 대비 충청북도에서의 비율 : 3.105%
이디야의 전국 대비 부산광역시에서의 비율 : 6.024%
이디야의 전국 대비 서울특별시에서의 비율 : 20.992%
이디야의 전국 대비 강원도에서의 비율 : 3.939%
이디야의 전국 대비 전라북도에서의 비율 : 3.151%
이디야의 전국 대비 전라남도에서의 비율 : 3.661%
이디야의 전국 대비 경상남도에서의 비율 : 5.746%
이디야의 전국 대비 경기도에서의 비율 : 27.108%
이디야의 전국 대비 대구광역시에서의 비율 : 2.873%
이디야의 전국 대비 세종특별자치시에서의 비율 : 0.834%
이디야의 전국 대비 인천광역시에서의 비율 : 6.441%
이디야의 전국 대비 광주광역시에서의 비율 : 2.688%
이디야의 전국 대비 울산광역시에서의 비율 : 3.475%
이디야의 전국 대비 경상북도에서의 비율 : 4.727%
3대 커피브랜드의 점포 수 비교¶
In [28]:
star = sum(v1)
two = sum(v2)
edia = sum(v3)
X=["스타벅스","투썸","이디야"]
Y=[star, two, edia]
index = [0,1,2]
plt.bar(X, Y)
plt.xticks(index, X, fontsize=13,fontproperties=fontprob, rotation=90)
Out[28]:
([<matplotlib.axis.XTick at 0x22f9fbbc670>,
<matplotlib.axis.XTick at 0x22f9fbbc640>,
<matplotlib.axis.XTick at 0x22f9fbb8940>],
[Text(0, 0, '스타벅스'), Text(1, 0, '투썸'), Text(2, 0, '이디야')])
In [29]:
from IPython.core.display import display, HTML
display(HTML("<style>.container {width:90% !important;}</style>"))
728x90
'Ccode > 데이터 시각화' 카테고리의 다른 글
데이터 시각화 Tableau 로 시작하기 (0) | 2021.11.14 |
---|---|
주가 분석 (0) | 2021.08.18 |
신용카드 사용자 연체 예측_EDA(2) (0) | 2021.08.17 |
신용카드 사용자 연체 예측_EDA(1) (0) | 2021.08.13 |
Netflix 데이터 간략히 EDA 해보기 (0) | 2021.08.05 |