소개

Python으로 지리공간 데이터 시각화하기

Mary van Valkenburg

Data Science Program Manager, Nashville Software School

위치

  • 1854년 런던 콜레라 발생
  • 600명 이상 사망

미아즈마 구름

Python으로 지리공간 데이터 시각화하기

스노의 점 지도

Python으로 지리공간 데이터 시각화하기

이 과정에서 배울 내용

  • 지리공간 포인트를 산점도로 시각화하는 방법
  • geopandas를 사용한 기하 도형 시각화
  • DataFrame에서 GeoDataFrame 생성 방법
  • 데이터셋 공간 결합 방법
  • 플롯에 도로 지도를 추가하는 방법
  • 단계 구분도 생성 시기 및 방법
Python으로 지리공간 데이터 시각화하기

경도와 위도

아버지와 아들 키 산점도

경도·위도 격자선이 있는 지구

Python으로 지리공간 데이터 시각화하기
plt.scatter(schools.Longitude, 
            schools.Latitude, 
            c = 'darkgreen', 
            marker = 'p')
plt.show()

학교 위치의 기본 산점도

plt.scatter(schools.Longitude, schools.Latitude, 
            c = 'darkgreen', marker = 'p')
plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.title('Nashville Public Schools')
plt.grid()
plt.show()

레이블, 제목, 격자선이 있는 학교 위치 산점도

Python으로 지리공간 데이터 시각화하기

경도 및 위도 추출

bus_stops.head()
Stop ID    StopName       Location
4431      MCC5_11    (36.16659, -86.781996)
588       CHA7AWN    (36.165, -86.78406)
590       CHA8AWN    (36.164393, -86.785451)
541       CXONGULC   (36.162249, -86.790464)
5231      7AVUNISM   (36.163822, -86.783791)

Python으로 지리공간 데이터 시각화하기

경도 및 위도 추출

bus_stops['lat'] = [loc[0] for loc in bus_stops.Location]
bus_stops['lng'] = [loc[1] for loc in bus_stops.Location]
bus_stops.head()
Stop ID    StopName  Location                  lat         lng
4431      MCC5_11   (36.16659, -86.781996)    36.16659    -86.781996    
588       CHA7AWN  (36.165, -86.78406)        36.165      -86.78406
590       CHA8AWN  (36.164393, -86.785451)    36.164393   -86.785451
541       CXONGULC  (36.162249, -86.790464)   36.162249   -86.790464
5231      7AVUNISM  (36.163822, -86.783791)   36.163822   -86.783791

Python으로 지리공간 데이터 시각화하기

정규 표현식으로 경도·위도 추출

bus_stops2.head()
Stop ID        Location            
4431       MCC - BAY 11\nNashville, TN\n(36.16659, -86.78199)
588        CHARLOTTE AVE\nNashville, TN\n(36.165, -86.78406)
590        CHARLOTTE AV\nNashville, TN\n(36.164393, -86.785451)
541        CHARLOTTE\nNashville, TN\n(36.162249, -86.790464)
5231       Nashville, TN\n(36.163822, -86.783791)
Python으로 지리공간 데이터 시각화하기

정규 표현식으로 경도·위도 추출

lat_lng_pattern = re.compile(r'\((.*),\s*(.*)\)', flags=re.MULTILINE)
def extract_lat_lng(address):
    try:
        lat_lng_match = lat_lng_pattern.search(address)
        lat = float(lat_lng_match.group(1))
        lng = float(lat_lng_match.group(2))
        return (lat, lng)
    except:
        return (np.NaN, np.NaN)
lat_lngs = [extract_lat_lng(location)for location in \
           bus_stops2.loc[:, 'Location']]
bus_stops2['lat'] = [lat for lat, lng in lat_lngs]
bus_stops2['lng'] = [lng for lat, lng in lat_lngs]

Python으로 지리공간 데이터 시각화하기

내슈빌 공개 데이터

nashville.data.gov 스크린샷

거대한 닭 머리

Python으로 지리공간 데이터 시각화하기

연습해 봅시다!

Python으로 지리공간 데이터 시각화하기

Preparing Video For Download...