-
[프랜차이즈 분석] 배스킨라빈스와 던킨 위치 분석데이터 분석 2021. 9. 18. 21:59
데이터 불러오기
- 공공데이터 포털 : https://www.data.go.kr/dataset/15012005/fileData.do
- 공공데이터 포털에서 소상공인시장진흥공단 상가업소정보를 다운로드 받아 사용했습니다
df = pd.read_csv('data/상가업소정보_201912_01.csv', sep='|') df.head()
서울 데이터 서브셋으로 가져오기
# 서브셋을 만들때 copy 하기! 데이터 오류 발생 방지 df_seoul = df[df['시도명'] == '서울특별시'].copy() print(df_seoul.shape) df_seoul.head()
서울의 배스킨라빈스와 던킨도너츠 데이터 가져오기
# 상호명을 소문자로 변경 df_seoul["상호명_소문자"] = df_seoul["상호명"].str.lower()
df_31 = df_seoul[df_seoul["상호명_소문자"].str.contains( "배스킨라빈스|베스킨라빈스|baskinrobbins|던킨|dunkin")].copy() df_31.shape
df_31.loc[df_31["상호명_소문자"].str.contains("배스킨라빈스|베스킨라빈스|baskinrobbins"), "브랜드명"] = "배스킨라빈스" df_31[["상호명", "브랜드명"]].head()
즉, 배스킨라빈스, 베스킨라빈스, beskinrobbins 이름인 경우 브랜드명을 배스킨라빈스로 채운다.
남은 데이터 값을 던킨도너츠로 채우기
# df_31.loc[~df_31["상호명_소문자"].str.contains("배스킨라빈스|베스킨라빈스|baskinrobbins"), "브랜드명"] = "던킨도너츠" df_31["브랜드명"] = df_31["브랜드명"].fillna("던킨도너츠") df_31["브랜드명"]
의도하지 않은 데이터는 제외하기
# df_31에 의도한 데이터만 있는지 확인 한다. df_31["상권업종대분류명"].value_counts()
# 소매, 생활서비스가 우리가 의도한 데이터가 아님을 확인. df_31[df_31["상권업종대분류명"].isin(["소매", "생활서비스"])]
# 소매, 생활 서비스는 제외하고 다시 저장한다. df_31 = df_31[~df_31["상권업종대분류명"].isin(["소매", "생활서비스"])].copy() df_31.shape
# jointplot 은 두 개의 그래프를 같이 보여준다. sns.jointplot(data=df_31, x="경도", y="위도", kind="hex")
Folium으로 지도 시각화하기
import folium
# 지도의 중심을 지정하기 위해 위도와 경도의 평균을 구한다 lat = df_31["위도"].mean() long = df_31["경도"].mean() lat, long
m = folium.Map([lat, long]) # 127.039032 37.495593 folium.Marker( [37.495593, 127.039032], popup='<i>던킨도너츠</i>', tooltip="던킨도너츠").add_to(m) m.save('index.html') m
서울의 배스킨라빈스와 던킨도너츠의 매장 분포
df_31.index
기본 마커로 표현하기
m = folium.Map([lat, long], zoom_start = 12) for i in df_31.index: sub_lat = df_31.loc[i, "위도"] sub_long = df_31.loc[i, "경도"] title = df_31.loc[i, "상호명"] + "-" + df_31.loc[i, "도로명주소"] icon_color = "pink" if df_31.loc[i, "브랜드명"] == "던킨도너츠": icon_color = "orange" folium.Marker( [sub_lat, sub_long], icon = folium.Icon(color=icon_color), popup=f'<i>{title}</i>', tooltip=title).add_to(m) m.save('index.html') m
MarkerCluster로 표현하기
from folium.plugins import MarkerCluster m = folium.Map([lat, long], zoom_start=12) marker_cluster = MarkerCluster().add_to(m) for i in df_31.index: sub_lat = df_31.loc[i, "위도"] sub_long = df_31.loc[i, "경도"] title = df_31.loc[i, "상호명"] + " - " + df_31.loc[i, "도로명주소"] icon_color = "pink" if df_31.loc[i, "브랜드명"] == "던킨도너츠": icon_color = "orange" folium.Marker( [sub_lat, sub_long], icon=folium.Icon(color=icon_color), popup=f'<i>{title}</i>', tooltip=title).add_to(marker_cluster) m.save('index.html') m
GitHub - DAWUNHAN/DataAnalysisInPython
Contribute to DAWUNHAN/DataAnalysisInPython development by creating an account on GitHub.
github.com
'데이터 분석' 카테고리의 다른 글
[도시공원 분석] Pandas Profiling (0) 2021.09.22 [프랜차이즈 분석] 파리바게트와 뚜레쥬르 위치 분석 (0) 2021.09.19 [상권 정보 분석] Folium으로 지도 시각화하기 (0) 2021.09.15 [상권 정보 분석] 기술 통계 분석 (0) 2021.09.14 [상권 정보 분석] 전처리 과정 (0) 2021.09.13