본문 바로가기
Data Analysis

예제 3-2. 시카고 맛집 하위페이지 데이터 분석 + 지도 시각화

by ram_ 2022. 11. 23.

Step 01

requirements들을 import 해주고, 상위페이지 분석에서 완성한 csv 파일을 불러온다.

 


Step 02

하위 페이지의 가격과 주소를 가져온다. 첫번째 박스의 코드의 경우 403Error가 떠서 애를 먹었다. 해당 블로그의 ERROR 카테고리에 정리해놨으니 참고바란다. text으로 문자열만 불러와서 re.split(".,", price_tmp) price_tmp를 ,을 기준으로 분리시켜준 뒤, [0]번째 값만 price_tmp에 다시 담아준다. re.search를 사용하여 "\$\d+\.(\d+)?" 괄호 안의 값은 뒤에 숫자가 있을 수도 있고 ~? 하고 가능성을 열어 둔 것이다. .group()로 $값만 추출해준다.[len(tmp) + 2:]는 가격의 길이 뒷부분. 즉, 이후에 서술되어있는 주소 값만 가져오라는 명령이다.

 


Step 02

for문을 돌려 각각 price와 address만 추출하여 append 해준다. 이를 "Price"와 "Address"에 할당하여 df.loc를 이용해 재정렬하고 inplace=True로 저장해주었다. 

화자는 위 for문을 돌리는 과정에서 error가 떴는데, 불안정한 인터넷 환경 상태에 영향을 받은 듯 하다. for문이 돌고 나서 값들이 정리된 csv 파일을 다운받아 뒤 실습을 진행하였다.

 


Step 03_시각화

필요 툴들을 import 해주고, google cloud에서 geocoding API를 가져오고, key 값에 담아준다.

해당 파일에 이미 위도 경도 값이 포함되어 있기 때문에, for문 iterrows()를 사용하여 다중주소가 아니라면, 주소를 해당 지도에 표시해주도록 한다. len()으로 모든 정보가 맞게 담겼는지 확인한다.

df["lat"] = lat, df["lng"]=lng로 저장해준다.

mapping변수에 시카고가 한눈에 보이게끔 좌표값을 넣어주고 , for문을 돌려 표시해준다. if문으로 다중주소가 아니라면, folium.Marker()을 사용해 location, popup, tooltip, icon을 설정해주었다.