(BigData Analysis 도전기) Kaggle Geospatial Analysis Tutorial (4. Manipulating Geospatial Data)
by 줌코딩
Introduction
- 이번 튜토리얼에서는 지리 데이터를 조작하는 두가지 방법인 geocoding과 table joins에 대해 배워보도록 하겠다.
Geocoding
- Geocoding이란 장소의 이름이나 주소를 맵상의 위치로 변경하는 것을 의미한다.
- 다음의 사진과 같이 location을 설명과 연계 시키는 것을 본 적이 있다면 geocoding을 접해본적 있는 것이다.
- geocoder를 사용하기 위해서는 다음의 정보만 제공해주면 된다.
- 이름이나 주소(string), 제공자명
- 만약 geocoding이 성공적으로 진행되면 2개의 column(geometry, address)을 가진 GeoDataFrame을 제공한다.
result = geocode("The Great Pyramid of Giza", provider="nominatim")
- 위의 코드와 같이 할 수 있다.
- 만일 이름의 데이터가 주어진다면 이를 geocode를 이용해서 위치값을 반환해줄 수도 있다.
def my_geocoder(row):
try:
point = geocode(row, provider='nominatim').geometry.iloc[0]
return pd.Series({'Latitude': point.y, 'Longitude': point.x, 'geometry': point})
except:
return None
universities[['Latitude', 'Longitude', 'geometry']] = universities.apply(lambda x: my_geocoder(x['Name']), axis=1)
print("{}% of addresses were geocoded!".format(
(1 - sum(np.isnan(universities["Latitude"])) / len(universities)) * 100))
# Drop universities that were not successfully geocoded
universities = universities.loc[~np.isnan(universities["Latitude"])]
universities = gpd.GeoDataFrame(universities, geometry=universities.geometry)
universities.crs = {'init': 'epsg:4326'}
universities.head()
Table joins
- 두개의 다른 table을 합치는 방법에 대해서 배워보도록 하겠다.
Attribute join
- DataFrame에서 사용해봤듯이
pd.DataFrame.join()
을 이용해서 데이터를 합칠 수도 있고- 하지만 그냥 merge()함수를 사용하는 것도 효과적이다.
- merge할때 어떤 column을 기준으로 합칠지에 대한 정보를 on에 보내주면 된다.
Spatial join
- 이 방법은 여러개의 정보중에 원하는 정보와 연관성이 있는 애들만 join하는 방법이다.
- 예를 들어 둘다 특정 column에 대해서 같은 값을 가지고 있는 애들만 join하는 것이다.
- 이 방법은
sjoin()
을 통해 구현할 수 있다.
# Use spatial join to match universities to countries in Europe
european_universities = gpd.sjoin(universities, europe)
# Investigate the result
print("We located {} universities.".format(len(universities)))
print("Only {} of the universities were located in Europe (in {} different countries).".format(
len(european_universities), len(european_universities.name.unique())))
We located 90 universities.
Only 84 of the universities were located in Europe (in 15 different countries).
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Subscribe via RSS