Geopy es un cliente de Python 2 y 3 para varios servicios web de geocodificación populares. La geocodificación es el proceso para identificar coordenadas geográficas como la latitud y la longitud de una ciudad/país/dirección determinada. Esto es muy útil al marcar la posición en el mapa en la visualización de datos. Usamos geopy.exec
, geocodertimedout
, geolocators
, geopy.geocoder
en el siguiente código para obtener los resultados
Instalación
Este módulo no viene integrado con Python. Para instalarlo, escriba el siguiente comando en la terminal.
pip install geopy
Ejemplo: vamos a crear un marco de datos de pandas que contenga una lista de regiones o países.
# Import pandas package import pandas as pd import numpy as np # Define a dictionary containing data data = {'City':['Bangalore', 'Mumbai', 'Chennai', 'Delhi']} # Convert the dictionary into DataFrame df = pd.DataFrame(data) # Observe the result df
Producción:
Ahora busquemos la latitud y la longitud de las siguientes regiones o países.
from geopy.exc import GeocoderTimedOut from geopy.geocoders import Nominatim # declare an empty list to store # latitude and longitude of values # of city column longitude = [] latitude = [] # function to find the coordinate # of a given city def findGeocode(city): # try and catch is used to overcome # the exception thrown by geolocator # using geocodertimedout try: # Specify the user_agent as your # app name it should not be none geolocator = Nominatim(user_agent="your_app_name") return geolocator.geocode(city) except GeocoderTimedOut: return findGeocode(city) # each value from city column # will be fetched and sent to # function find_geocode for i in (df["City"]): if findGeocode(i) != None: loc = findGeocode(i) # coordinates returned from # function is stored into # two separate list latitude.append(loc.latitude) longitude.append(loc.longitude) # if coordinate for a city not # found, insert "NaN" indicating # missing value else: latitude.append(np.nan) longitude.append(np.nan)
Mostrando la salida producida como marco de datos.
# now add this column to dataframe df["Longitude"] = longitude df["Latitude"] = latitude df
Producción: