ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프랜차이즈 분석] 배스킨라빈스와 던킨 위치 분석
    데이터 분석 2021. 9. 18. 21:59

    데이터 불러오기

     

    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

     

    댓글