API de matriz de distancia de Google | Utilice API para recopilar datos y realizar análisis

Contenidos

Aviso importante antes de sumergirnos en el código; asumimos que el desarrollo de esos distritos se puede identificar por el tamaño de la familia. Por supuesto, esto no es cien por ciento cierto, sin embargo, para este caso hacemos esta suposición.

Por favor, no se quede atascado en los significados teóricos, el propósito de esta publicación de blog es extraer datos con éxito y realizar análisis de datos sobre ellos. No se trata de probar algo de verdad.

2. Extraer datos

Extraigamos datos de la plataforma de datos abiertos del municipio de Estambul (ibb) con su API. Puede encontrar varios conjuntos de datos abiertos del municipio de Estambul.

Vaya al enlace de los datos a continuación y haga clic en el botón ‘API de datos’.

https://data.ibb.gov.tr/en/dataset/ilce-bazli-ortalama-hane-halki-buyuklugu/resource/25077460-ddfb-45b6-b32c-4615f0ad2d57?view_id%3Dc369d9ea-237e-448a-b6ea- cca1e803f98f

1078kh12ovk7q7cawjhzalw-1401920

Cuando hacemos clic en el botón API de datos, se abre esta ventana, copiaremos el enlace en el rectángulo rojo a continuación y lo pegaremos en nuestro código.

1s1zmq3v-zbtj-iycawmcg-6198214

Después de eso, eliminaremos ‘$ top = 5 &’ para extraer todos los datos, no solo los primeros 5. Puede ver el código a continuación para extraer datos del sitio web y cambiarlo al formato de marco de datos usando pandas.

url = ‘https://data.ibb.gov.tr/datastore/odata3.0/25077460-ddfb-45b6-b32c-4615f0ad2d57?$format=json' #URL of family size according to districts
def pulldataToDataframe(url):
 query = urllib.request.urlopen(url) # API connection
 data = json.loads(query.read().decode()) # Change to json type
 data = data.get(“value”) # Only getting data value
 return pd.DataFrame(data) # Change to dataframe
df = df.drop(columns=”_id”) # Removal of id column
df = pulldataToDataframe(url)
print(df.columns)

Extrajimos los datos y los movimos al marco de datos. Veamos los 5 datos principales.

df.head() #Dataframe 1st column: Districts, 2nd column: family size according to districts
1xjqciikxjhnsplbxwyo2xw-4121939

Estambul tiene 2 partes; Europeos y asiáticos. Usaremos Kadikoy para el centro de la parte asiática y Besiktas para la parte europea. Separamos los distritos para la parte asiática (kadikoy_list) y la parte europea (besiktas_list)

kadikoy_list = [‘Kadıköy’, ‘Kartal’, ‘Şile’, ‘Üsküdar’, ‘Pendik’, ‘Ümraniye’, ‘Maltepe’, ‘Sultanbeyli’, ‘Tuzla’, ‘Ataşehir’, ‘Çekmeköy’, ‘Sancaktepe’, ‘Beykoz’]
besiktas_list = [‘Beşiktaş’, ‘Bakırköy’, ‘Beyoğlu’, ‘Çatalca’, ‘Eyüp’, ‘Fatih’, ‘Gaziosmanpaşa’, ‘Sarıyer’, ‘Silivri’, ‘Şişli’, ‘Zeytinburnu’, ‘Büyükçekmece’, ‘Kağıthane’, ‘Küçükçekmece’, ‘Bayrampaşa’, ‘Avcılar’, ‘Bağcılar’, ‘Arnuvutköy’, ‘Başakşehir’, ‘Beylikdüzü’, ‘Esenyurt’, ‘Sultangazi’, ‘Esenler’, ‘Güngören’, ‘Bahçelievler’]
kadikoy_dist = []
besiktas_dist = []

3. API de GOOGLE

Bien, ahora veamos la parte de la API de Google. Hay muchas API disponibles para su uso en Google Cloud Platform. Puedes consultarlos aquí: https://cloud.google.com/

1y1juphnzpfttmssmc1j3vw-1692172

Tienes que crear tu cuenta y solicitar una clave API. Está bien explicado aquí; https://developers.google.com/maps/documentation/javascript/get-api-key

1qatudoj1zqw5t2rqqowlua-6566093

He descargado las API a continuación. Sin embargo, como puede ver, solo uso la API de matriz de distancia y la API de uso del servicio. Le recomiendo que descargue también las API de JavaScript de geocodificación, geolocalización, lugares, direcciones y mapas. Si desea trabajar con datos de GoogleMaps.

1upjxmshtvwvolid3h-10qq-6870988

Ahora veamos el código de cómo usamos la API. En los comentarios del código a continuación, creo que está bien explicado.

import requests, json
api_key =’QsatasdjıgwedSDFJW-A1lkjasdbUQ’ #You need to put your api key here
 
# url variable store url 
url = ‘https://maps.googleapis.com/maps/api/distancematrix/json?'
#For every district in Asian part, we find its distance between
#(kadikoy) and append our list 'kadikoy_dist'.
for dest in kadikoy_list:   
    source = ‘kadiköy’
    r = requests.get(url + ‘origins=’ + source +
    ‘&destinations=’ + dest +
    ‘&key=’ + api_key)
    kadikoy_dist.append(r.json()[‘rows’][0][‘elements’][0][‘distance’][‘value’])
#For every district in european part, we find its distance between
#(besiktas) and append our list 'besiktas_dist'.
for dest in besiktas_list:
    source = ‘besiktas’
    r = requests.get(url + ‘origins=’ + source +
    ‘&destinations=’ + dest +
    ‘&key=’ + api_key)
    besiktas_dist.append(r.json()[‘rows’][0][‘elements’][0][‘distance’][‘value’])

Como puede ver, hemos extraído datos de distritos, tamaño medio de la familia con la API de datos ibb, y hemos generado una nueva función con la API de matriz de distancia de la API de Google y la hemos nombrado como columna Distancias.

1vzmr1yhg4xee_ylx2wpqzw-7904585
Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.