[제로베이스 데이터취업스쿨 15기] Part. 4 EDA 스터디노트 -21(6.1.)

DaHye CHOI·2023년 6월 1일
0

>⛹️‍♀️ 제로베이스 데이터취업스쿨 15기 스터디노트 21(6.1.)

🗂️ 오늘(6.1.) 수강한 분량

EDA 범죄 5~6, 웹데이터 1

🗂️ EDA 범죄 5~6, 웹데이터 1 핵심 내용 정리

  • 서울시 범죄 현황에 대한 지도 시각화
  • Choropleth
    - 색상이나 패턴을 사용하여 특정 통계에 대한 데이터를 사전 정의된 영역과 관련시켜 시각화 한 지도 유형
    - 특정 구역에 대한 통계 데이터를 시각화하는데 적절함
    •  my_map = folium.Map(location = [37.5502,  126.982],
       						zoom_start=11, tiles ="stame Toner")
      folium.Choropleth(geo_data=geo_str,
                        data=crime_anal_norm["강간"], 
                        columns=[crime_anal_norm.index, 
                                 crime_anal_norm["강간"]], key_on="feature.id",
                       fill_color="PuRd", fill_opacity = 0.7, line_opacity = 0.2,
                       legend_name = "정규화된 강간 발생 건수"
                       ).add_to(my_map)
      my_map
  • 검거율 정규화
    •   col = ["살인검거","강도검거","절도검거","강간검거","폭력검거"]
      tmp = crime_anal_station[col] / crime_anal_station[col].max() #정규화
      crime_anal_station["검거"] = np.mean(tmp, axis = 1) 
      #numpy axis = 1 행(가로)를 의미,pandas에서는 열(세로)값!
      crime_anal_station.tail()
  • 경찰서 위치 마커 표기
    • my_map = folium.Map(location=[37.5502, 126.982], zoom_start=11)
      for idx, rows in crime_anal_station.iterrows():
          folium.Marker(location=[rows["lat"], rows["lng"]]).add_to(my_map)
      my_map       
  • 검거에 값을 곱한 뒤 원의 넓이, 색 등 적용
    • my_map = folium.Map(location=[37.5502, 126.982], zoom_start=11)
      folium.Choropleth(geo_data=geo_str, data=crime_anal_norm["범죄"],
      					columns=[crime_anal_norm.index, crime_anal_norm["범죄"]],
                       key_on="feature.id", fill_color="PuRd", 
                       fill_opacity = 0.7, line_opacity=0.2
                       ).add_to(my_map)
      for idx, rows in crime_anal_station.iterrows():
          folium.CircleMarker(
              location=[rows["lat"], rows["lng"]],
              radius=rows["검거"]*50, popup=rows["구분"]+ " : " +"%.2f"% rows["검거"],
          color="#3186cc", fill = True, fill_color="#3186cc").add_to(my_map)
      my_map
  • 서울시 범죄 현황 발생 장소 분석
    • 추가 검증crime_loc_raw로 진행
    • 장소 + 범죄명에 대한 값을 더함(np.sum사용) 후 사용하지 않는 칼럼 제거
    • 5대 범죄에 대한 내용 정규화 진행
    • col = ["살인","강도","강간","절도","폭력"]
      crime_loc_norm = crime_loc / crime_loc.max() #정규화
      crime_loc_norm.head() #정규화 확인
    • crime_loc_norm["종합"] = np.mean(crime_loc_norm, axis=1) #행값으로 채워짐
    • heatmap으로 데이터 시각화 진행 : import seaborm as sns이 되어있는지 확인 필수
    • crime_loc_norm_sort = crime_loc_norm.sort_values("종합", ascending=False)
      def drawGraph():
      	plt.figure(figsize=(10,10))
        sns.heatmap(crime_loc_norm_sort, annot=True, fmt="f" #실수형,
        			linewidths=0.5,cmap="RdPu")
        plt.title("범죄 발생 장소")
        plt.show()
      drawGraph()
  • Beautiful Soup for web data
    • html파일 읽기
      -open: `page=open("파일 위치","r").read()
      • 파일명과 함께 읽기(r),쓰기(w)
      • html.parser: html을 읽는 엔진 중 하나
      • prettify: html을 가독성 있게 읽어주는 기능(class를 찾을 시에는 class_로 작성하여 찾기, 파이썬 내 변수여서 오류 발생 가능!!)
      • find_all() : 지정된 태그를 모두 찾아줌
        - soup.p : 처음 발견한 p태그만 출력(=soup.find("p"))
        - soup,find("p",{"class":""outer-text first-item"}) : 특정 데이터 찾기
  • Beautiful Soup 예제 1 - 네이버 금융
    • 파이썬으로 환율 체크 → HTML → 모르면 크롬 개발자 도구 사용
      • 크롬 개발자 도구 활용 : 크롬 설정 → 도구 더보기 → 개발자 도구
    • 원하는 HTML 태그 위치 찾기 가능 : 예제에서는 <span class="value">
      • 웹주소 접근 시 url = "웹주소" / page = urlopne(url)

👩‍🚀 스터디 감정 노트

시각화가 파이썬보다 훨~씬 재밌다 잘하는것도 아니고 안되는것도 더 많지만 시각화가 분명하게 보이고 그걸로 내가 뭘 할 수 있는지가 지금까지는 더 다양하게 보이는 것이라 그런건지 몰라도 재밌고 어려운 시각화,,
html까지 배울지는 몰랐는데 옛날에 그래도 한번 본 적 있다고 좀 익숙하다 너,,

[이미지 출처 : 미리캔버스]

profile
데이터가 궁금한 비전공자의 데이터스터디🫠

0개의 댓글