๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Study_note(zb_data)/EDA

์Šคํ„ฐ๋”” ๋…ธํŠธ (BeautifulSoup Web data 2-3)

๐Ÿ“Œ BeautifulSoup - Web data 2-3

๐Ÿšฉ ์ฐพ์€ ๋ฐ์ดํ„ฐ ์œ„์น˜ ๊ฐ’์œผ๋กœ ์ง€๋„ ์‹œ๊ฐํ™”


๐Ÿšฉ ์ง€๋„ ์‹œ๊ฐํ™” import

  • folium, pandas, numpy, googlemaps

๐Ÿšฉ ์œ„๋„์™€ ๊ฒฝ๋„ ๊ฐ’ ์ถ”๊ฐ€ ํ•ด์ฃผ๊ธฐ

lat = []
lng = []

for idx, row in tqdm(df.iterrows()):
    if not row["Address"] == "Multiple location":
    # ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ, Address ๋ฐ์ดํ„ฐ์— Multiple location ๊ฐ’ ๋ฐœ๊ฒฌ
    # if ๋ฌธ์œผ๋กœ ๊ฐ’์„ ์ œ์™ธํ•œ ๊ณณ์„ ํ™•์ธ
        target_name=row["Address"] + ", " + "Chicago"
        # Address ๊ฐ’์— Chicago ๊ฐ’์„ str์œผ๋กœ ํ•ฉ์ณ์ค€๋‹ค
        
        gmaps_output = gmaps.geocode(target_name) # ์ฃผ์†Œ๊ฐ’์„ ๊ตฌ๊ธ€๋งต์— ์ž…๋ ฅ
        location_output = gmaps_output[0].get("geometry") # lat, lng ๊ฐ’์ด ์žˆ๋Š” geometry ๊ฐ’ ์ถœ๋ ฅ
        lat.append(location_output["location"]["lat"]) # geometry ๊ฐ’ ๋‚ด๋ถ€์— ์žˆ๋Š” lat ๊ฐ’ ์ถœ๋ ฅ
        lng.append(location_output["location"]["lng"]) # geometry ๊ฐ’ ๋‚ด๋ถ€์— ์žˆ๋Š” lng ๊ฐ’ ์ถœ๋ ฅ

    else: # Multiple location ๊ฐ’์ด๋ผ๋ฉด ์œ„๋„, ๊ฒฝ๋„๋ฅผ 0์œผ๋กœ append
        lat.append(0) 
        lng.append(0)

-

๐Ÿšฉ googlemap ์— ์‹œ๊ฐํ™” ํ•˜๊ธฐ

mapping = folium.Map(location=[41.8781136, -87.6297982], zoom_start = 11)
#๊ธฐ์ค€ ์œ„๋„์™€ ๊ฒฝ๋„๋ฅผ ์žก๋Š”๋‹ค

for idx, row in df.iterrows(): # df๋ฅผ iterrows ํ•จ์ˆ˜๋กœ ์ธ๋ฑ์Šค์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค
    if not row["Address"] == "multiple location": # multiple location์ด ์•„๋‹ ๋•Œ
        folium.Marker(
            location = [row["lat"], row["lng"]], # ๊ฐ๊ฐ row ๊ฐ’์˜ lat, lng ๊ฐ’์— ๋งˆ์ปค๋ฅผ ์ฐ๋Š”๋‹ค
            popup = row["Cafe"], # ๋งˆ์ปค๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•, Cafe ์ด๋ฆ„์„ ๋‚˜์˜ค๊ฒŒ ํ•จ
            tooltip = row["Menu"], # ๋งˆ์ปค์— ๋งˆ์šฐ์Šค๋ฅผ ๊ฐ–๋‹ค ๋Œ€์—ˆ์„ ๋•, ๋ฉ”๋‰ด ์ด๋ฆ„์„ ๋‚˜์˜ค๊ฒŒ ํ•จ
            icon = folium.Icon( 
                icon = "coffee", # coffee ์•„์ด์ฝ˜์„ ๋„ฃ๋Š”๋‹ค
                prefix = "fa" # ๋™์ผ
            )
        ).add_to(mapping)
mapping