본문 바로가기

sparta coding club/데이터분석

[데이터분석] 코로나 데이터 분석(2)_지도 시각화, 히트맵 그리기

실습 내용

1. 파이썬 지도 시각화 패키지인 folium을 사용하여 코로나 데이터 분석 및 시각화
2. plugins와 HeatMap 을 이용하기.

 

 

 

코로나 분석전 지도 시각화 사용해보기.

 

 

  • #파이썬 지도 시각화 패키지 임포트
import folium 
 
 
 
 
 
 
 

 

  • #map()함수를 사용하여 지도 불러오기
  • #location=[37.55, 126.98] 위도와 경도
  • #zoom_start=12 (12번 확대하여 표시)
 
seoul = folium.Map(location=[37.55126.98], zoom_start=8)
seoul

 

 

 

 

 

 

 

 

지도 시각화에 사용할 데이터 분석

 

  • #지도상에 코로나 확진자에 대한 정보를 나타내기 위해 필요한 case데이터의 상위 5개만 출력해본다.
  • #여기서 group열의 그룹핑을 시작으로 데이터를 분석해 나갈 예정
  • #True = 지역 내 집단감염
  • #False = 외부요인에 의한 집단감염
 
case.head()

 

 

 

 

 

 

 

  • #pivot_table()은 그룹핑하고 싶은 열에 있는 값을 기준으로 지정한 연산을 적용시켜 그룹화한다.
  • #pivot_table(index=['그룹핑하고 싶은 열의 이름'], aggfunc=그룹핑에 적용할 연산)
 
case.pivot_table(index=['group'], aggfunc='sum')

 

 

 

 

 

 

 

  • #True값만 추출해본다.
  • #124개의 데이터가 출력되고, latitude(위도),longirude(경도)값에 -값, 즉 알 수 없는값이 존재함을 확인.(결측값이 아님)
 
local_infected = case[case['group']==True]
local_infected #변수로 저장하여 출력

 

 

 

 

 

  • #latitud값에 -가 아닌 것만 출력
 
local_infected = local_infected[local_infected['latitude']!='-']
local_infected

latitud와 longitude 중 한개만 -값을 빼주면 되는데, 혹시 모르니 longitude값도 한번 더 진행해준다.

 
 
 
 
 
 
 
 
#비어있는 값 체크
local_infected.isnull().sum()
 
 
 
 
 

 

 

 

 

 

지도위에 히트맵으로 코로나 데이터 시각화

 

 

 

#지도에 무언가를 띄울때 plugins를 사용한다.
from folium import plugins
 
 
 
latitude, longitude = 35.9078127.7669 # 대한민국의 좌표
S_korea = folium.Map(location = [latitude, longitude], zoom_start = 8)
S_korea

 

 

 

 

 

 

 

 

 

 

#add_child -> 지도에 어떤 요소(히트맵)를 추가하겠다.
#zip -> 데이터를 묶어서 표시 (위도,경도,확진자 수)
#radius -> 히트맵으로 표시되는 원의 크기
S_korea.add_child(plugins.HeatMap(zip(local_infected['latitude'],
                                      local_infected['longitude'],
                                      local_infected['confirmed']), radius =18))

 

 

 

 

★ 오류 발생 및 해결 ★

 

RecursionError: maximum recursion depth exceeded 에러 내용을 구글링한 결과, 데이터 타입 오류로 확인

 

 

#info()로 확인
#변수가 Object타입이었던 것이 문제
local_infected.info()

 

#문자열로 입력되어 있는 값을 숫자(Float)타입으로 변환한 후 다시 실행
#astype -> 데이터 타입을 바꿔주는 함수
local_infected['latitude'] = local_infected['latitude'].astype('float')
local_infected['longitude'] = local_infected['longitude'].astype('float')

 

 

 

 

 

 

 

● 완성