-
국내 SPA 패션 브랜드 매장 수 비교 분석(ZARA, 8Seconds, SPAO, Etc)Data Analysis/LifeStyles 2021. 4. 6. 17:34
국내에서 영업하고 있는 주요 SPA 패션 브랜드로는 ZARA, 유니클로, 에잇세컨즈, 스파오, 탑텐을 꼽을 수 있을 것 같다. 이번 포스팅에서는 위 주요 SPA 브랜드의 위치 데이터를 가져와서 분석해보도록 하겠다.
1. 데이터 가져오기
데이터는 역시나 내가 가장 선호하는 카카오 지도 API에서 가져오도록 하겠다. 조금 복잡해보이기는 하지만 반복문만 잘 사용하면 쉽게 데이터를 가져올 수 있을 것이다.
import pandas as pd import requests from bs4 import BeautifulSoup as bs link='https://inasie.github.io/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/5/' gu=pd.read_html(link,encoding='utf-8')[0] gu['법정동코드']=gu['법정동코드'].astype(str) sido=gu[(gu['법정동코드'].str.contains('000')) | (gu['법정동주소']=='세종특별자치시') ] api='~~' spa=['유니클로','uniqlo','탑텐','top10','자라','zara','스파오','spao','에잇세컨즈','8seconds'] data=[] for a in sido['법정동주소']: for q in spa: for i in range(1,46): query = a + q url = f'''https://dapi.kakao.com/v2/local/search/keyword?query={query}&page={i}&size=15''' headers = { "Authorization": f"KakaoAK {api}" } places = requests.get(url, headers = headers).json()['documents'] data.extend(places) df=pd.DataFrame(data) df=df.drop_duplicates('place_name',keep='first')
2. 브랜드별 국내 매장 수
국내 매장 수에는 탑텐, 유니클로, SPAO가 100개 이상으로 가장 많았다. 모두 카카오 API에서 검색해서 가져온 데이터로 실제 데이터와는 다를 수 있다.
df2=df[df['category_name'].str.contains('패션')] df2['name']=df2['place_name'].apply(lambda x:x.split(' ')[0]) df3=df2[(df2['name'] =='유니클로') | (df2['name'] =='탑텐') | (df2['name'] =='자라') | (df2['name'] =='ZARA') | (df2['name'] =='스파오')| (df2['name'] =='에잇세컨즈')] df3['name']=df3['name'].str.replace('자라','ZARA') df3['name']=df3['name'].str.replace('유니클로','UNIQLO') df3['name']=df3['name'].str.replace('탑텐','TOP10') df3['name']=df3['name'].str.replace('스파오','SPAO') df3['name']=df3['name'].str.replace('에잇세컨즈','8SECONDS') stores=pd.DataFrame(df3.groupby(['name']).count()['x']) stores.columns=['counts'] stores=stores.reset_index() import plotly.express as px fig = px.bar(stores, x='name', y='counts',title='Stores Per Brands') fig.show()
3. 지역/브랜드별 매장 수
다음으로는 지역별, 브랜드별 매장 수를 한 그래프로 그려보도록 하겠다.
유니클로, 스파오의 경우 전반적으로 모든 지역에 다 분포되어 있는 것을 볼 수 있고, 자라의 경우 확실히 매장 수도 적고 브랜드 이미지가 있어서 그런지 수도권에 밀집되어 있는 점을 확인할 수 있다.
eng={'강원':'Gangwon-do','경기':'Gyeonggi-do', '경남':'Gyeongsangnam-do','경북':'Gyeongsangbuk-do', '광주':'Gwangju','대구':'Daegu','대전':'Daejeon','부산':'Busan', '서울':'Seoul','세종특별자치시':'Sejongsi','울산':'Ulsan','인천':'Incheon', '전남':'Jeollanam-do','전북':'Jeollabuk-do','제주특별자치도':'Jeju-do','충남':'Chungcheongnam-do', '충북':'Chungcheongbuk-do'} engdf=pd.DataFrame.from_dict(eng,orient='index').reset_index() engdf.columns=['kor','eng'] df3['sido']=df3['address_name'].apply(lambda x:x.split(' ')[0]) region=pd.DataFrame(df3.groupby(['sido','name']).count()['x']).reset_index() region.columns=['sido','name','counts'] region2=pd.merge(left=region,right=engdf,how='left',left_on=region['sido'],right_on=engdf['kor']) import plotly.express as px fig = px.bar(region2, x="eng", y="counts", color="name", title='Stores per brands/region') fig.show()
4. 오프라인 매장 지도 시각화
우버에서 만든 시각화 패키지 Pydeck을 활용해서 지도에 시각화하고 마무리하도록 하겠다.
import pydeck as pdk df3=df3.rename(columns={'y':'lat','x':'lng'}) df3['lat']=df3['lat'].astype(float) df3['lng']=df3['lng'].astype(float) spao=df3[df3['name']=='SPAO'] zara=df3[df3['name']=='ZARA'] eight=df3[df3['name']=='8SECONDS'] top10=df3[df3['name']=='TOP10'] uniqlo=df3[df3['name']=='UNIQLO'] layer = pdk.Layer( 'ScatterplotLayer', spao, get_position=['lng','lat'], get_radius=800, get_fill_color='[180]', pickable=True, auto_highlight=True, opacity=0.6, stroked=True, filled=True, ) layer2 = pdk.Layer( 'ScatterplotLayer', zara, get_position=['lng','lat'], get_radius=800, get_fill_color='[242, 255, 0]', pickable=True, auto_highlight=True, opacity=0.6, stroked=True, filled=True, ) layer3 = pdk.Layer( 'ScatterplotLayer', eight, get_position=['lng','lat'], get_radius=800, get_fill_color='[0,200]', pickable=True, auto_highlight=True, opacity=0.6, stroked=True, filled=True, ) layer4 = pdk.Layer( 'ScatterplotLayer', top10, get_position=['lng','lat'], get_radius=800, get_fill_color='[255, 140, 0]', pickable=True, auto_highlight=True, opacity=0.6, stroked=True, filled=True, ) layer5 = pdk.Layer( 'ScatterplotLayer', uniqlo, get_position=['lng','lat'], get_radius=800, get_fill_color='[0, 115, 255]', pickable=True, auto_highlight=True, opacity=0.6, stroked=True, filled=True, ) center = [126.986, 37.565] view_state = pdk.ViewState( longitude=center[0], latitude=center[1], zoom=9) r = pdk.Deck(layers=[layer,layer2,layer3,layer4,layer5], initial_view_state=view_state, tooltip={"text": "{name}\n{place_name}\n{address_name}\n"}) r.to_html("scatterplot_layer.html")
'Data Analysis > LifeStyles' 카테고리의 다른 글
제주도 렌터카 업체 정보 분석 & 시각화 With Python & Mapbox (0) 2021.06.07 서울 크로스핏 박스 지도 시각화 with Python, Mapbox, 카카오 API (0) 2021.05.31 NBA Data Analysis - Top 10 포인트 가드의 어시스트/턴오버 분석 (0) 2021.05.19 국내 메이저 영화관 브랜드(CJCGV, 메가박스, 롯데시네마) 데이터 분석 (0) 2021.04.05 서울시 프랜차이즈 햄버거(버거킹/맥도날드/맘스터치/롯데리아) 분석 & 시각화 with Python, Pydeck (0) 2021.03.06