Skip to content

Instantly share code, notes, and snippets.

@jaircastruita
Last active March 22, 2016 04:36
Show Gist options
  • Save jaircastruita/5a07c59a62b367360b71 to your computer and use it in GitHub Desktop.
Save jaircastruita/5a07c59a62b367360b71 to your computer and use it in GitHub Desktop.
Herramienta automatizada para extraer atributos de las estaciones en el sistema de Ecobici.
{
"metadata": {
"name": "",
"signature": "sha256:8296c2178e2786555c57c40fd6d2d90aaa28e8b8ee307021b2376537b0e2ce95"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"# -*- coding: utf-8 -*-\n",
"from urllib2 import Request, urlopen\n",
"from pandas.io.json import json_normalize\n",
"import json\n",
"import pandas as pd"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from IPython.display import HTML\n",
"#To hide code from the nbviewer render\n",
"HTML('''<script>\n",
"code_show=true; \n",
"function code_toggle() {\n",
" if (code_show){\n",
" $('div.input').hide();\n",
" } else {\n",
" $('div.input').show();\n",
" }\n",
" code_show = !code_show\n",
"} \n",
"$( document ).ready(code_toggle);\n",
"</script>\n",
"<form action=\"javascript:code_toggle()\"><input type=\"submit\" value=\"Click here to toggle on/off the raw code.\"></form>''')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<script>\n",
"code_show=true; \n",
"function code_toggle() {\n",
" if (code_show){\n",
" $('div.input').hide();\n",
" } else {\n",
" $('div.input').show();\n",
" }\n",
" code_show = !code_show\n",
"} \n",
"$( document ).ready(code_toggle);\n",
"</script>\n",
"<form action=\"javascript:code_toggle()\"><input type=\"submit\" value=\"Click here to toggle on/off the raw code.\"></form>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 2,
"text": [
"<IPython.core.display.HTML at 0x82088d0>"
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Para poder hacer uso de la API que Ecobici ofrece al p\u00fablico es necesario primero obtener la clave temporal realizando un request a los servidores. La siguiente funci\u00f3n extrae dicha clave de manera autom\u00e1tica:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def get_access_token():\n",
" client_secret = '1c954oqd8w740g48c404884scggo0ws4g0o488wckccwcw4w48'\n",
" client_id = '397_2thxdqp9tdwks4gg40o4sswo08oss44go404so4ckk8o0gkos8'\n",
" token_url = 'https://pubsbapi.smartbike.com/oauth/v2/token?client_id='+client_id+'&client_secret='+client_secret+'&grant_type=client_credentials'\n",
"\n",
" request = Request(token_url)\n",
" response = urlopen(request)\n",
" temp_token = response.read()\n",
" data = json.loads(temp_token)\n",
" \n",
" return data['access_token']"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Una vez con la clave obtenida es posible realizar dos tipos de peticiones. La siguiente petici\u00f3n nos da acceso a la siguiente informaci\u00f3n sobre las estaciones del sistema:\n",
"\n",
"- Id de la estaci\u00f3n.\n",
"- Direcci\u00f3n.\n",
"- N\u00famero de direcci\u00f3n.\n",
"- Altitud (No poblada actualmente).\n",
"- C\u00f3digo de distrito.\n",
"- Nombre de distrito.\n",
"- Latitud.\n",
"- Altitud.\n",
"- Nombre de la estaci\u00f3n.\n",
"- Lista de estaciones cercanas (N\u00famero variable).\n",
"- Tipo de estaci\u00f3n.\n",
"- C\u00f3digo postal."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"token = get_access_token()\n",
"url = 'https://pubsbapi.smartbike.com/api/v1/stations.json?access_token='\n",
"\n",
"request = Request(url+token)\n",
"response = urlopen(request)\n",
"elevations = response.read()\n",
"data = json.loads(elevations)\n",
"station_props = json_normalize(data['stations'])\n",
"station_props.set_index('id')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>address</th>\n",
" <th>addressNumber</th>\n",
" <th>altitude</th>\n",
" <th>districtCode</th>\n",
" <th>districtName</th>\n",
" <th>location.lat</th>\n",
" <th>location.lon</th>\n",
" <th>name</th>\n",
" <th>nearbyStations</th>\n",
" <th>stationType</th>\n",
" <th>zipCode</th>\n",
" </tr>\n",
" <tr>\n",
" <th>id</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>003 - Reforma - Insurgentes</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.431655</td>\n",
" <td>-99.158668</td>\n",
" <td>3 REFORMA-INSURGENTES</td>\n",
" <td>[8, 20, 86]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>06500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>012 - R\u00edo Lerma - Villalongin</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.432313</td>\n",
" <td>-99.161597</td>\n",
" <td>12 RIO LERMA-VILLALONGIN</td>\n",
" <td>[11, 19, 20, 85]</td>\n",
" <td>BIKE</td>\n",
" <td>06500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>013 - Reforma - Rio Rodano</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.423778</td>\n",
" <td>-99.175558</td>\n",
" <td>13 REFORMA-RIO RODANO</td>\n",
" <td>[7, 14, 21]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>06500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>016 - Reforma - Rio Guadalquivir</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.426530</td>\n",
" <td>-99.169164</td>\n",
" <td>16 REFORMA-RIO GUADALQUIVIR</td>\n",
" <td>[9, 23, 24]</td>\n",
" <td>BIKE</td>\n",
" <td>06500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>017 - Reforma - Rio Tiber</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.427501</td>\n",
" <td>-99.167125</td>\n",
" <td>17 REFORMA-RIO TIBER</td>\n",
" <td>[16, 18, 25]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>06500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>019 - Reforma - Rio Neva</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.430010</td>\n",
" <td>-99.161675</td>\n",
" <td>19 REFORMA-RIO NEVA</td>\n",
" <td>[12, 20, 27]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>06500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>021 - Reforma - Lieja</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.423317</td>\n",
" <td>-99.175124</td>\n",
" <td>21 REFORMA-LIEJA</td>\n",
" <td>[7, 13, 14, 28]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>06500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>036 - Puebla - Veracruz</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.419725</td>\n",
" <td>-99.175778</td>\n",
" <td>36 PUEBLA-VERACRUZ</td>\n",
" <td>[37, 41, 44]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>06140</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>047 - Glorieta Cibeles - Oaxaca</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.419515</td>\n",
" <td>-99.166299</td>\n",
" <td>47 GLORIETA CIBELES-OAXACA</td>\n",
" <td>[42, 51, 56]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>06700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>041 - Reforma - Av. de la Rep\u00fablica</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.435637</td>\n",
" <td>-99.150137</td>\n",
" <td>41 REFORMA-AV. DE LA REPUBLICA</td>\n",
" <td>[29]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>06700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>055 - 5 de Mayo - Bol\u00edvar</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.434356</td>\n",
" <td>-99.138064</td>\n",
" <td>55 5 DE MAYO-BOLIVAR</td>\n",
" <td>[65, 87, 88]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>06700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>057 - Cuernavaca - Juan Escutia</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.414903</td>\n",
" <td>-99.174950</td>\n",
" <td>57 CUERNAVACA-JUAN ESCUTIA</td>\n",
" <td>[48, 49, 50, 62]</td>\n",
" <td>BIKE</td>\n",
" <td>06140</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>066 - Mazatl\u00e1n - Francisco Marquez</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.411402</td>\n",
" <td>-99.178666</td>\n",
" <td>66 MAZATLAN-FRANCISCO MARQUEZ</td>\n",
" <td>[65, 72]</td>\n",
" <td>BIKE</td>\n",
" <td>06170</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>074 - Nuevo Le\u00f3n - Ozulama</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.410343</td>\n",
" <td>-99.172831</td>\n",
" <td>74 NUEVO LEON-OZULAMA</td>\n",
" <td>[63, 68, 71]</td>\n",
" <td>BIKE</td>\n",
" <td>06100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>063 - Nuevo Le\u00f3n - Laredo</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.413681</td>\n",
" <td>-99.171531</td>\n",
" <td>63 NUEVO LEON- LAREDO</td>\n",
" <td>[70, 76, 77]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>06100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>070 - Parque M\u00e9xico - Michoacan</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.411272</td>\n",
" <td>-99.169718</td>\n",
" <td>70 PARQUE MEXICO-MICHOACAN</td>\n",
" <td>[69, 71, 76]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>06100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>88</th>\n",
" <td>088 - 2a Cerrada de 5 de Mayo - Palma</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.433815</td>\n",
" <td>-99.135303</td>\n",
" <td>88 2A CDA 5 DE MAYO-PALMA</td>\n",
" <td>[55, 89]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>72</th>\n",
" <td>072 - Mazatl\u00e1n - Alfonso Reyes</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.409893</td>\n",
" <td>-99.179544</td>\n",
" <td>72 MAZATLAN-ALFONSO REYES</td>\n",
" <td>[65, 66, 75]</td>\n",
" <td>BIKE</td>\n",
" <td>06170</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>086 - Sullivan-Insurgentes</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.432378</td>\n",
" <td>-99.159077</td>\n",
" <td>86 SULLIVAN-INSURGENTES</td>\n",
" <td>[12, 20]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>06470</td>\n",
" </tr>\n",
" <tr>\n",
" <th>102</th>\n",
" <td>102 - Echeveste-Bolivar</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.428210</td>\n",
" <td>-99.139490</td>\n",
" <td>102 ECHEVESTE-BOLIVAR</td>\n",
" <td>[101, 104, 109]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>112</th>\n",
" <td>112 - Av. Morelos-Abraham Gonz\u00e1lez</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.432819</td>\n",
" <td>-99.151734</td>\n",
" <td>112 AV. MORELOS-ABRAHAM GONZALEZ</td>\n",
" <td>[98, 113, 114]</td>\n",
" <td>BIKE</td>\n",
" <td>06500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>123</th>\n",
" <td>123 - Claudio Bernard-Dr. Lavista</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.424161</td>\n",
" <td>-99.153117</td>\n",
" <td>123 CLAUDIO BERNARD-DR. LAVISTA</td>\n",
" <td>[124, 125, 133]</td>\n",
" <td>BIKE</td>\n",
" <td>06500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>150</th>\n",
" <td>150 - Campeche-Medell\u00edn</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.409965</td>\n",
" <td>-99.164292</td>\n",
" <td>150 CAMPECHE-MEDELL\u00cdN</td>\n",
" <td>[146, 151, 152]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>154</th>\n",
" <td>154 - Tuxpan-Tlaxcala</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.406683</td>\n",
" <td>-99.167962</td>\n",
" <td>154 TUXPAN-TLAXCALA</td>\n",
" <td>[152, 153, 157]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>110</th>\n",
" <td>110 - Dr. Valenzuela-Dr. R\u00edo de la loza</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.425130</td>\n",
" <td>-99.143390</td>\n",
" <td>110 DR. VALENZUELA-DR. R\u00cdO DE LA LOZA</td>\n",
" <td>[107, 108, 122]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>171</th>\n",
" <td>171 - Comercio-Jose Mart\u00ed</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.402584</td>\n",
" <td>-99.178199</td>\n",
" <td>171 COMERCIO-JOSE MART\u00cd</td>\n",
" <td>[167, 168, 173]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>173</th>\n",
" <td>173 - Miner\u00eda-Jose Mart\u00ed</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.401682</td>\n",
" <td>-99.176398</td>\n",
" <td>173 MINER\u00cdA-JOS\u00c9 MART\u00cd</td>\n",
" <td>[168, 169, 171]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>174</th>\n",
" <td>174 - Joaqu\u00edn Garcia-Ignacio Manuel Altamirano</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.441110</td>\n",
" <td>-99.161640</td>\n",
" <td>174 JOAQU\u00cdN GARCIA-IGNACIO MANUEL ALTAMIRANO</td>\n",
" <td>[160, 183, 254]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>181</th>\n",
" <td>181 - Benjamin Franklin-Saltillo</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.404976</td>\n",
" <td>-99.175095</td>\n",
" <td>181 BENJAMIN FRANKLIN-SALTILLO</td>\n",
" <td>[168, 169, 179]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>197</th>\n",
" <td>197 - Miguel de Cervantes Saavedra-Ferrocarril...</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Ampliaci\u00f3n Granada</td>\n",
" <td>19.440077</td>\n",
" <td>-99.204316</td>\n",
" <td>197 MIGUEL DE CERVANTES-FC DE CUERNAVACA</td>\n",
" <td>[197]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>351</th>\n",
" <td>351 - Calle 27-Avenida Revoluci\u00f3n</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>SPP</td>\n",
" <td>San Pedro de los Pinos</td>\n",
" <td>19.385751</td>\n",
" <td>-99.186297</td>\n",
" <td>351 CALLE 27-AVENIDA REVOLUCI\u00d3N</td>\n",
" <td>[332, 352, 364]</td>\n",
" <td>BIKE</td>\n",
" <td>3800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>312</th>\n",
" <td>312 - Avenida 2-Calle 7</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>SPP</td>\n",
" <td>San Pedro de los Pinos</td>\n",
" <td>19.392634</td>\n",
" <td>-99.183737</td>\n",
" <td>312 AVENIDA 2-CALLE 7</td>\n",
" <td>[310, 311, 328]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>3800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>328</th>\n",
" <td>328 - Avenida 1-Calle 7</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>SPP</td>\n",
" <td>San Pedro de los Pinos</td>\n",
" <td>19.392586</td>\n",
" <td>-99.184742</td>\n",
" <td>328 AVENIDA 1-CALLE 7</td>\n",
" <td>[311, 312, 329]</td>\n",
" <td>BIKE</td>\n",
" <td>3800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>329</th>\n",
" <td>329 - Calle 13-Avenida 1</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>SPP</td>\n",
" <td>San Pedro de los Pinos</td>\n",
" <td>19.390306</td>\n",
" <td>-99.184812</td>\n",
" <td>329 CALLE 13-AVENIDA 1</td>\n",
" <td>[312, 328, 330]</td>\n",
" <td>BIKE</td>\n",
" <td>3800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>330</th>\n",
" <td>330 - Calle 15-Avenida Patriotismo</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>SPP</td>\n",
" <td>San Pedro de los Pinos</td>\n",
" <td>19.389358</td>\n",
" <td>-99.182606</td>\n",
" <td>330 CALLE 15-AVENIDA PATRIOTISMO</td>\n",
" <td>[329, 331, 332]</td>\n",
" <td>BIKE</td>\n",
" <td>3800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>331</th>\n",
" <td>331 - Avenida 2-Calle 17</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>SPP</td>\n",
" <td>San Pedro de los Pinos</td>\n",
" <td>19.388547</td>\n",
" <td>-99.183971</td>\n",
" <td>331 AVENIDA 2-CALLE 17</td>\n",
" <td>[329, 330, 332]</td>\n",
" <td>BIKE</td>\n",
" <td>3800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>332</th>\n",
" <td>332 - Sur De Calle 27-Avenida 3</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>SPP</td>\n",
" <td>San Pedro de los Pinos</td>\n",
" <td>19.385508</td>\n",
" <td>-99.183809</td>\n",
" <td>332 SUR DE CALLE 27-AVENIDA 3</td>\n",
" <td>[330, 331, 333]</td>\n",
" <td>BIKE</td>\n",
" <td>3800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>263</th>\n",
" <td>263 - Sadi Carnot - G\u00f3mez Farias</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>S-R</td>\n",
" <td>San Rafael</td>\n",
" <td>19.436274</td>\n",
" <td>-99.158425</td>\n",
" <td>263 SADI CARNOT-G\u00d3MEZ FARIAS</td>\n",
" <td>[85, 86, 256]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>256</th>\n",
" <td>256 - G\u00f3mez Far\u00edas Sadi Carnot</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>S-R</td>\n",
" <td>San Rafael</td>\n",
" <td>19.437200</td>\n",
" <td>-99.158160</td>\n",
" <td>256 G\u00d3MEZ FAR\u00cdAS-SADI CARNOT</td>\n",
" <td>[254, 259]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>257</th>\n",
" <td>257 - Manuel Maria Contreras-Villalongin</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>S-R</td>\n",
" <td>San Rafael</td>\n",
" <td>19.433800</td>\n",
" <td>-99.166220</td>\n",
" <td>257 MANUEL MARIA CONTRERAS-VILLALONGIN</td>\n",
" <td>[183, 255]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>254</th>\n",
" <td>254 - Alfonso Herrera-Miguel Shultz</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>S-R</td>\n",
" <td>San Rafael</td>\n",
" <td>19.439350</td>\n",
" <td>-99.160070</td>\n",
" <td>254 ALFONSO HERRERA-MIGUEL SHULTZ</td>\n",
" <td>[160, 174, 256]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>183</th>\n",
" <td>183 - Gabino Barrera-Guillermo Prieto</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>S-R</td>\n",
" <td>San Rafael</td>\n",
" <td>19.437670</td>\n",
" <td>-99.164020</td>\n",
" <td>183 GABINO BARRERA-GUILLERMO PRIETO</td>\n",
" <td>[160, 174, 255]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>111</th>\n",
" <td>111 GUILLERMO PRIETO-JOAQU\u00cdN VEL\u00c1ZQUEZ DE LE\u00d3N</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>S-R</td>\n",
" <td>San Rafael</td>\n",
" <td>19.438371</td>\n",
" <td>-99.166474</td>\n",
" <td>111 GUILLERMO PRIETO-JOAQU\u00cdN VEL\u00c1ZQUEZ DE LE\u00d3N</td>\n",
" <td>[103, 160, 183]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>160</th>\n",
" <td>160 - Alfonzo Herrera-Gabino Barrera</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>S-R</td>\n",
" <td>San Rafael</td>\n",
" <td>19.440250</td>\n",
" <td>-99.163460</td>\n",
" <td>160 ALFONSO HERRERA-GABINO BARRERA</td>\n",
" <td>[174, 183, 254]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>103</th>\n",
" <td>103 JOAQU\u00cdN VEL\u00c1ZQUEZ DE LE\u00d3N-GARC\u00cdA ICAZBALCETA</td>\n",
" <td>s/n</td>\n",
" <td>None</td>\n",
" <td>S-R</td>\n",
" <td>San Rafael</td>\n",
" <td>19.441669</td>\n",
" <td>-99.165217</td>\n",
" <td>103 JOAQU\u00cdN VEL\u00c1ZQUEZ DE LE\u00d3N-GARC\u00cdA ICAZBALCETA</td>\n",
" <td>[103]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>085 - Rosas Moreno - Sullivan</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>S-R</td>\n",
" <td>San Rafael</td>\n",
" <td>19.434250</td>\n",
" <td>-99.162508</td>\n",
" <td>85 ROSAS MORENO-SULLIVAN</td>\n",
" <td>[1, 3, 12]</td>\n",
" <td>BIKE</td>\n",
" <td>06470</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>010 - Reforma - Ram\u00edrez</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>TAB</td>\n",
" <td>Tabacalera</td>\n",
" <td>19.433321</td>\n",
" <td>-99.154752</td>\n",
" <td>10 REFORMA-RAMIREZ</td>\n",
" <td>[26]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>06500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>008 - Reforma - General Prim</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>TAB</td>\n",
" <td>Tabacalera</td>\n",
" <td>19.431141</td>\n",
" <td>-99.158317</td>\n",
" <td>8 REFORMA-GENERAL PRIM</td>\n",
" <td>[3, 20, 86]</td>\n",
" <td>BIKE</td>\n",
" <td>06500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>270</th>\n",
" <td>270 - De la Republica-Ponciano Arriaga</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>TAB</td>\n",
" <td>Tabacalera</td>\n",
" <td>19.436760</td>\n",
" <td>-99.153870</td>\n",
" <td>270 DE LA REPUBLICA-PONCIANO ARRIAGA</td>\n",
" <td>[270]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>450</th>\n",
" <td>450 RAMOS ARIZPE-PUENTE DE ALVARADO</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>TAB</td>\n",
" <td>Tabacalera</td>\n",
" <td>19.438360</td>\n",
" <td>-99.152226</td>\n",
" <td>450 RAMOS ARIZPE-PUENTE DE ALVARADO</td>\n",
" <td>[450]</td>\n",
" <td>BIKE</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>392</th>\n",
" <td>392 - Patricio Sanz-Felix Cuevas</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>TLA</td>\n",
" <td>Tlacoquemecatl</td>\n",
" <td>19.373007</td>\n",
" <td>-99.174775</td>\n",
" <td>392 PATRICIO SANZ-FELIX CUEVAS</td>\n",
" <td>[380, 393, 394]</td>\n",
" <td>BIKE</td>\n",
" <td>3200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>393</th>\n",
" <td>393 - Adolfo Prieto-Felix Cuevas</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>TLA</td>\n",
" <td>Tlacoquemecatl</td>\n",
" <td>19.372796</td>\n",
" <td>-99.172558</td>\n",
" <td>393 ADOLFO PRIETO-FELIX CUEVAS</td>\n",
" <td>[380, 392, 394]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>3200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>380</th>\n",
" <td>380 - Moras-San Lorenzo</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>TLA</td>\n",
" <td>Tlacoquemecatl</td>\n",
" <td>19.374876</td>\n",
" <td>-99.173512</td>\n",
" <td>380 MORAS-SAN LORENZO</td>\n",
" <td>[392, 393, 394]</td>\n",
" <td>BIKE</td>\n",
" <td>3200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>381</th>\n",
" <td>381 - San Lorenzo-Manzanas</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>TLA</td>\n",
" <td>Tlacoquemecatl</td>\n",
" <td>19.375541</td>\n",
" <td>-99.177894</td>\n",
" <td>381 SAN LORENZO-MANZANAS</td>\n",
" <td>[382, 387, 389]</td>\n",
" <td>BIKE</td>\n",
" <td>3200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>382</th>\n",
" <td>382 - San Lorenzo-Av. Insurgentes</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>TLA</td>\n",
" <td>Tlacoquemecatl</td>\n",
" <td>19.375591</td>\n",
" <td>-99.178084</td>\n",
" <td>382 SAN LORENZO-AV. INSURGENTES</td>\n",
" <td>[381, 387, 389]</td>\n",
" <td>BIKE</td>\n",
" <td>3200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>370</th>\n",
" <td>370 - Tlacoquemecatl-Av. Insurgentes</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>TLA</td>\n",
" <td>Tlacoquemecatl</td>\n",
" <td>19.378818</td>\n",
" <td>-99.177054</td>\n",
" <td>370 TLACOQUEMECATL-AV. INSURGENTES</td>\n",
" <td>[361, 369, 371]</td>\n",
" <td>BIKE</td>\n",
" <td>3200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>371</th>\n",
" <td>371 - Tlacoquemecatl-Capulin</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>TLA</td>\n",
" <td>Tlacoquemecatl</td>\n",
" <td>19.378542</td>\n",
" <td>-99.174328</td>\n",
" <td>371 TLACOQUEMECATL-CAPULIN</td>\n",
" <td>[361, 369, 370]</td>\n",
" <td>BIKE</td>\n",
" <td>3200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>441</th>\n",
" <td>441 - Puente Xoco-Real De Mayorazgo</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>XOC</td>\n",
" <td>Xoco</td>\n",
" <td>19.361215</td>\n",
" <td>-99.167527</td>\n",
" <td>441 PUENTE XOCO-REAL DE MAYORAZGO</td>\n",
" <td>[433, 440, 442]</td>\n",
" <td>BIKE</td>\n",
" <td>3330</td>\n",
" </tr>\n",
" <tr>\n",
" <th>442</th>\n",
" <td>442 - Real De Mayorazgo-Avenida M\u00e9xico-Coyoacan</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>XOC</td>\n",
" <td>Xoco</td>\n",
" <td>19.359905</td>\n",
" <td>-99.165300</td>\n",
" <td>442 REAL DE MAYORAZGO-AVENIDA M\u00c9XICO-COYOACAN</td>\n",
" <td>[432, 443, 444]</td>\n",
" <td>BIKE,TPV</td>\n",
" <td>3330</td>\n",
" </tr>\n",
" <tr>\n",
" <th>426</th>\n",
" <td>426 - Cerrada De Popocatepetl-Av. Popocatepetl...</td>\n",
" <td>S/N</td>\n",
" <td>None</td>\n",
" <td>XOC</td>\n",
" <td>Xoco</td>\n",
" <td>19.365519</td>\n",
" <td>-99.166017</td>\n",
" <td>426 CERRADA DE POPOCATEPETL-AV. POPOCATEPETL (...</td>\n",
" <td>[411, 412, 425]</td>\n",
" <td>BIKE</td>\n",
" <td>3330</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>451 rows \u00d7 11 columns</p>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"text": [
" address addressNumber altitude \\\n",
"id \n",
"3 003 - Reforma - Insurgentes S/N None \n",
"12 012 - R\u00edo Lerma - Villalongin S/N None \n",
"13 013 - Reforma - Rio Rodano S/N None \n",
"16 016 - Reforma - Rio Guadalquivir S/N None \n",
"17 017 - Reforma - Rio Tiber S/N None \n",
"19 019 - Reforma - Rio Neva S/N None \n",
"21 021 - Reforma - Lieja S/N None \n",
"36 036 - Puebla - Veracruz S/N None \n",
"47 047 - Glorieta Cibeles - Oaxaca S/N None \n",
"41 041 - Reforma - Av. de la Rep\u00fablica S/N None \n",
"55 055 - 5 de Mayo - Bol\u00edvar S/N None \n",
"57 057 - Cuernavaca - Juan Escutia S/N None \n",
"66 066 - Mazatl\u00e1n - Francisco Marquez S/N None \n",
"74 074 - Nuevo Le\u00f3n - Ozulama S/N None \n",
"63 063 - Nuevo Le\u00f3n - Laredo S/N None \n",
"70 070 - Parque M\u00e9xico - Michoacan S/N None \n",
"88 088 - 2a Cerrada de 5 de Mayo - Palma S/N None \n",
"72 072 - Mazatl\u00e1n - Alfonso Reyes S/N None \n",
"86 086 - Sullivan-Insurgentes S/N None \n",
"102 102 - Echeveste-Bolivar S/N None \n",
"112 112 - Av. Morelos-Abraham Gonz\u00e1lez S/N None \n",
"123 123 - Claudio Bernard-Dr. Lavista S/N None \n",
"150 150 - Campeche-Medell\u00edn S/N None \n",
"154 154 - Tuxpan-Tlaxcala S/N None \n",
"110 110 - Dr. Valenzuela-Dr. R\u00edo de la loza S/N None \n",
"171 171 - Comercio-Jose Mart\u00ed S/N None \n",
"173 173 - Miner\u00eda-Jose Mart\u00ed S/N None \n",
"174 174 - Joaqu\u00edn Garcia-Ignacio Manuel Altamirano S/N None \n",
"181 181 - Benjamin Franklin-Saltillo S/N None \n",
"197 197 - Miguel de Cervantes Saavedra-Ferrocarril... S/N None \n",
".. ... ... ... \n",
"351 351 - Calle 27-Avenida Revoluci\u00f3n S/N None \n",
"312 312 - Avenida 2-Calle 7 S/N None \n",
"328 328 - Avenida 1-Calle 7 S/N None \n",
"329 329 - Calle 13-Avenida 1 S/N None \n",
"330 330 - Calle 15-Avenida Patriotismo S/N None \n",
"331 331 - Avenida 2-Calle 17 S/N None \n",
"332 332 - Sur De Calle 27-Avenida 3 S/N None \n",
"263 263 - Sadi Carnot - G\u00f3mez Farias S/N None \n",
"256 256 - G\u00f3mez Far\u00edas Sadi Carnot S/N None \n",
"257 257 - Manuel Maria Contreras-Villalongin S/N None \n",
"254 254 - Alfonso Herrera-Miguel Shultz S/N None \n",
"183 183 - Gabino Barrera-Guillermo Prieto S/N None \n",
"111 111 GUILLERMO PRIETO-JOAQU\u00cdN VEL\u00c1ZQUEZ DE LE\u00d3N S/N None \n",
"160 160 - Alfonzo Herrera-Gabino Barrera S/N None \n",
"103 103 JOAQU\u00cdN VEL\u00c1ZQUEZ DE LE\u00d3N-GARC\u00cdA ICAZBALCETA s/n None \n",
"85 085 - Rosas Moreno - Sullivan S/N None \n",
"10 010 - Reforma - Ram\u00edrez S/N None \n",
"8 008 - Reforma - General Prim S/N None \n",
"270 270 - De la Republica-Ponciano Arriaga S/N None \n",
"450 450 RAMOS ARIZPE-PUENTE DE ALVARADO S/N None \n",
"392 392 - Patricio Sanz-Felix Cuevas S/N None \n",
"393 393 - Adolfo Prieto-Felix Cuevas S/N None \n",
"380 380 - Moras-San Lorenzo S/N None \n",
"381 381 - San Lorenzo-Manzanas S/N None \n",
"382 382 - San Lorenzo-Av. Insurgentes S/N None \n",
"370 370 - Tlacoquemecatl-Av. Insurgentes S/N None \n",
"371 371 - Tlacoquemecatl-Capulin S/N None \n",
"441 441 - Puente Xoco-Real De Mayorazgo S/N None \n",
"442 442 - Real De Mayorazgo-Avenida M\u00e9xico-Coyoacan S/N None \n",
"426 426 - Cerrada De Popocatepetl-Av. Popocatepetl... S/N None \n",
"\n",
" districtCode districtName location.lat location.lon \\\n",
"id \n",
"3 1 Ampliaci\u00f3n Granada 19.431655 -99.158668 \n",
"12 1 Ampliaci\u00f3n Granada 19.432313 -99.161597 \n",
"13 1 Ampliaci\u00f3n Granada 19.423778 -99.175558 \n",
"16 1 Ampliaci\u00f3n Granada 19.426530 -99.169164 \n",
"17 1 Ampliaci\u00f3n Granada 19.427501 -99.167125 \n",
"19 1 Ampliaci\u00f3n Granada 19.430010 -99.161675 \n",
"21 1 Ampliaci\u00f3n Granada 19.423317 -99.175124 \n",
"36 1 Ampliaci\u00f3n Granada 19.419725 -99.175778 \n",
"47 1 Ampliaci\u00f3n Granada 19.419515 -99.166299 \n",
"41 1 Ampliaci\u00f3n Granada 19.435637 -99.150137 \n",
"55 1 Ampliaci\u00f3n Granada 19.434356 -99.138064 \n",
"57 1 Ampliaci\u00f3n Granada 19.414903 -99.174950 \n",
"66 1 Ampliaci\u00f3n Granada 19.411402 -99.178666 \n",
"74 1 Ampliaci\u00f3n Granada 19.410343 -99.172831 \n",
"63 1 Ampliaci\u00f3n Granada 19.413681 -99.171531 \n",
"70 1 Ampliaci\u00f3n Granada 19.411272 -99.169718 \n",
"88 1 Ampliaci\u00f3n Granada 19.433815 -99.135303 \n",
"72 1 Ampliaci\u00f3n Granada 19.409893 -99.179544 \n",
"86 1 Ampliaci\u00f3n Granada 19.432378 -99.159077 \n",
"102 1 Ampliaci\u00f3n Granada 19.428210 -99.139490 \n",
"112 1 Ampliaci\u00f3n Granada 19.432819 -99.151734 \n",
"123 1 Ampliaci\u00f3n Granada 19.424161 -99.153117 \n",
"150 1 Ampliaci\u00f3n Granada 19.409965 -99.164292 \n",
"154 1 Ampliaci\u00f3n Granada 19.406683 -99.167962 \n",
"110 1 Ampliaci\u00f3n Granada 19.425130 -99.143390 \n",
"171 1 Ampliaci\u00f3n Granada 19.402584 -99.178199 \n",
"173 1 Ampliaci\u00f3n Granada 19.401682 -99.176398 \n",
"174 1 Ampliaci\u00f3n Granada 19.441110 -99.161640 \n",
"181 1 Ampliaci\u00f3n Granada 19.404976 -99.175095 \n",
"197 1 Ampliaci\u00f3n Granada 19.440077 -99.204316 \n",
".. ... ... ... ... \n",
"351 SPP San Pedro de los Pinos 19.385751 -99.186297 \n",
"312 SPP San Pedro de los Pinos 19.392634 -99.183737 \n",
"328 SPP San Pedro de los Pinos 19.392586 -99.184742 \n",
"329 SPP San Pedro de los Pinos 19.390306 -99.184812 \n",
"330 SPP San Pedro de los Pinos 19.389358 -99.182606 \n",
"331 SPP San Pedro de los Pinos 19.388547 -99.183971 \n",
"332 SPP San Pedro de los Pinos 19.385508 -99.183809 \n",
"263 S-R San Rafael 19.436274 -99.158425 \n",
"256 S-R San Rafael 19.437200 -99.158160 \n",
"257 S-R San Rafael 19.433800 -99.166220 \n",
"254 S-R San Rafael 19.439350 -99.160070 \n",
"183 S-R San Rafael 19.437670 -99.164020 \n",
"111 S-R San Rafael 19.438371 -99.166474 \n",
"160 S-R San Rafael 19.440250 -99.163460 \n",
"103 S-R San Rafael 19.441669 -99.165217 \n",
"85 S-R San Rafael 19.434250 -99.162508 \n",
"10 TAB Tabacalera 19.433321 -99.154752 \n",
"8 TAB Tabacalera 19.431141 -99.158317 \n",
"270 TAB Tabacalera 19.436760 -99.153870 \n",
"450 TAB Tabacalera 19.438360 -99.152226 \n",
"392 TLA Tlacoquemecatl 19.373007 -99.174775 \n",
"393 TLA Tlacoquemecatl 19.372796 -99.172558 \n",
"380 TLA Tlacoquemecatl 19.374876 -99.173512 \n",
"381 TLA Tlacoquemecatl 19.375541 -99.177894 \n",
"382 TLA Tlacoquemecatl 19.375591 -99.178084 \n",
"370 TLA Tlacoquemecatl 19.378818 -99.177054 \n",
"371 TLA Tlacoquemecatl 19.378542 -99.174328 \n",
"441 XOC Xoco 19.361215 -99.167527 \n",
"442 XOC Xoco 19.359905 -99.165300 \n",
"426 XOC Xoco 19.365519 -99.166017 \n",
"\n",
" name nearbyStations \\\n",
"id \n",
"3 3 REFORMA-INSURGENTES [8, 20, 86] \n",
"12 12 RIO LERMA-VILLALONGIN [11, 19, 20, 85] \n",
"13 13 REFORMA-RIO RODANO [7, 14, 21] \n",
"16 16 REFORMA-RIO GUADALQUIVIR [9, 23, 24] \n",
"17 17 REFORMA-RIO TIBER [16, 18, 25] \n",
"19 19 REFORMA-RIO NEVA [12, 20, 27] \n",
"21 21 REFORMA-LIEJA [7, 13, 14, 28] \n",
"36 36 PUEBLA-VERACRUZ [37, 41, 44] \n",
"47 47 GLORIETA CIBELES-OAXACA [42, 51, 56] \n",
"41 41 REFORMA-AV. DE LA REPUBLICA [29] \n",
"55 55 5 DE MAYO-BOLIVAR [65, 87, 88] \n",
"57 57 CUERNAVACA-JUAN ESCUTIA [48, 49, 50, 62] \n",
"66 66 MAZATLAN-FRANCISCO MARQUEZ [65, 72] \n",
"74 74 NUEVO LEON-OZULAMA [63, 68, 71] \n",
"63 63 NUEVO LEON- LAREDO [70, 76, 77] \n",
"70 70 PARQUE MEXICO-MICHOACAN [69, 71, 76] \n",
"88 88 2A CDA 5 DE MAYO-PALMA [55, 89] \n",
"72 72 MAZATLAN-ALFONSO REYES [65, 66, 75] \n",
"86 86 SULLIVAN-INSURGENTES [12, 20] \n",
"102 102 ECHEVESTE-BOLIVAR [101, 104, 109] \n",
"112 112 AV. MORELOS-ABRAHAM GONZALEZ [98, 113, 114] \n",
"123 123 CLAUDIO BERNARD-DR. LAVISTA [124, 125, 133] \n",
"150 150 CAMPECHE-MEDELL\u00cdN [146, 151, 152] \n",
"154 154 TUXPAN-TLAXCALA [152, 153, 157] \n",
"110 110 DR. VALENZUELA-DR. R\u00cdO DE LA LOZA [107, 108, 122] \n",
"171 171 COMERCIO-JOSE MART\u00cd [167, 168, 173] \n",
"173 173 MINER\u00cdA-JOS\u00c9 MART\u00cd [168, 169, 171] \n",
"174 174 JOAQU\u00cdN GARCIA-IGNACIO MANUEL ALTAMIRANO [160, 183, 254] \n",
"181 181 BENJAMIN FRANKLIN-SALTILLO [168, 169, 179] \n",
"197 197 MIGUEL DE CERVANTES-FC DE CUERNAVACA [197] \n",
".. ... ... \n",
"351 351 CALLE 27-AVENIDA REVOLUCI\u00d3N [332, 352, 364] \n",
"312 312 AVENIDA 2-CALLE 7 [310, 311, 328] \n",
"328 328 AVENIDA 1-CALLE 7 [311, 312, 329] \n",
"329 329 CALLE 13-AVENIDA 1 [312, 328, 330] \n",
"330 330 CALLE 15-AVENIDA PATRIOTISMO [329, 331, 332] \n",
"331 331 AVENIDA 2-CALLE 17 [329, 330, 332] \n",
"332 332 SUR DE CALLE 27-AVENIDA 3 [330, 331, 333] \n",
"263 263 SADI CARNOT-G\u00d3MEZ FARIAS [85, 86, 256] \n",
"256 256 G\u00d3MEZ FAR\u00cdAS-SADI CARNOT [254, 259] \n",
"257 257 MANUEL MARIA CONTRERAS-VILLALONGIN [183, 255] \n",
"254 254 ALFONSO HERRERA-MIGUEL SHULTZ [160, 174, 256] \n",
"183 183 GABINO BARRERA-GUILLERMO PRIETO [160, 174, 255] \n",
"111 111 GUILLERMO PRIETO-JOAQU\u00cdN VEL\u00c1ZQUEZ DE LE\u00d3N [103, 160, 183] \n",
"160 160 ALFONSO HERRERA-GABINO BARRERA [174, 183, 254] \n",
"103 103 JOAQU\u00cdN VEL\u00c1ZQUEZ DE LE\u00d3N-GARC\u00cdA ICAZBALCETA [103] \n",
"85 85 ROSAS MORENO-SULLIVAN [1, 3, 12] \n",
"10 10 REFORMA-RAMIREZ [26] \n",
"8 8 REFORMA-GENERAL PRIM [3, 20, 86] \n",
"270 270 DE LA REPUBLICA-PONCIANO ARRIAGA [270] \n",
"450 450 RAMOS ARIZPE-PUENTE DE ALVARADO [450] \n",
"392 392 PATRICIO SANZ-FELIX CUEVAS [380, 393, 394] \n",
"393 393 ADOLFO PRIETO-FELIX CUEVAS [380, 392, 394] \n",
"380 380 MORAS-SAN LORENZO [392, 393, 394] \n",
"381 381 SAN LORENZO-MANZANAS [382, 387, 389] \n",
"382 382 SAN LORENZO-AV. INSURGENTES [381, 387, 389] \n",
"370 370 TLACOQUEMECATL-AV. INSURGENTES [361, 369, 371] \n",
"371 371 TLACOQUEMECATL-CAPULIN [361, 369, 370] \n",
"441 441 PUENTE XOCO-REAL DE MAYORAZGO [433, 440, 442] \n",
"442 442 REAL DE MAYORAZGO-AVENIDA M\u00c9XICO-COYOACAN [432, 443, 444] \n",
"426 426 CERRADA DE POPOCATEPETL-AV. POPOCATEPETL (... [411, 412, 425] \n",
"\n",
" stationType zipCode \n",
"id \n",
"3 BIKE,TPV 06500 \n",
"12 BIKE 06500 \n",
"13 BIKE,TPV 06500 \n",
"16 BIKE 06500 \n",
"17 BIKE,TPV 06500 \n",
"19 BIKE,TPV 06500 \n",
"21 BIKE,TPV 06500 \n",
"36 BIKE,TPV 06140 \n",
"47 BIKE,TPV 06700 \n",
"41 BIKE,TPV 06700 \n",
"55 BIKE,TPV 06700 \n",
"57 BIKE 06140 \n",
"66 BIKE 06170 \n",
"74 BIKE 06100 \n",
"63 BIKE,TPV 06100 \n",
"70 BIKE,TPV 06100 \n",
"88 BIKE None \n",
"72 BIKE 06170 \n",
"86 BIKE,TPV 06470 \n",
"102 BIKE None \n",
"112 BIKE 06500 \n",
"123 BIKE 06500 \n",
"150 BIKE None \n",
"154 BIKE,TPV None \n",
"110 BIKE None \n",
"171 BIKE None \n",
"173 BIKE None \n",
"174 BIKE,TPV None \n",
"181 BIKE None \n",
"197 BIKE,TPV None \n",
".. ... ... \n",
"351 BIKE 3800 \n",
"312 BIKE,TPV 3800 \n",
"328 BIKE 3800 \n",
"329 BIKE 3800 \n",
"330 BIKE 3800 \n",
"331 BIKE 3800 \n",
"332 BIKE 3800 \n",
"263 BIKE,TPV None \n",
"256 BIKE None \n",
"257 BIKE None \n",
"254 BIKE None \n",
"183 BIKE None \n",
"111 BIKE None \n",
"160 BIKE None \n",
"103 BIKE None \n",
"85 BIKE 06470 \n",
"10 BIKE,TPV 06500 \n",
"8 BIKE 06500 \n",
"270 BIKE,TPV None \n",
"450 BIKE None \n",
"392 BIKE 3200 \n",
"393 BIKE,TPV 3200 \n",
"380 BIKE 3200 \n",
"381 BIKE 3200 \n",
"382 BIKE 3200 \n",
"370 BIKE 3200 \n",
"371 BIKE 3200 \n",
"441 BIKE 3330 \n",
"442 BIKE,TPV 3330 \n",
"426 BIKE 3330 \n",
"\n",
"[451 rows x 11 columns]"
]
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La siguiente petici\u00f3n es la que utilizan las aplicaci\u00f3nes de smartphones para conocer la disponibilidad de bicicletas/espacios en una estaci\u00f3n:\n",
"\n",
"- Id de la estaci\u00f3n.\n",
"- Bicicletas disponibles.\n",
"- Espacioes disponibles.\n",
"- Estado de la estaci\u00f3n."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"token = get_access_token()\n",
"\n",
"avail = 'https://pubsbapi.smartbike.com/api/v1/stations/status.json?access_token='\n",
"request = Request(avail+token)\n",
"response = urlopen(request)\n",
"available_stations = response.read()\n",
"data = json.loads(available_stations)\n",
"station_props = json_normalize(data['stationsStatus'])\n",
"station_props.set_index('id')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>availability.bikes</th>\n",
" <th>availability.slots</th>\n",
" <th>status</th>\n",
" </tr>\n",
" <tr>\n",
" <th>id</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>24</td>\n",
" <td>3</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>5</td>\n",
" <td>7</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>17</td>\n",
" <td>19</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>7</td>\n",
" <td>8</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5</td>\n",
" <td>7</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>3</td>\n",
" <td>12</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>14</td>\n",
" <td>10</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>1</td>\n",
" <td>11</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>9</td>\n",
" <td>15</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>12</td>\n",
" <td>23</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>4</td>\n",
" <td>11</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>7</td>\n",
" <td>8</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>30</td>\n",
" <td>3</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>17</td>\n",
" <td>19</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>16</td>\n",
" <td>8</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>30</td>\n",
" <td>6</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>24</td>\n",
" <td>3</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>25</td>\n",
" <td>11</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>13</td>\n",
" <td>11</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>16</td>\n",
" <td>8</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>15</td>\n",
" <td>12</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>36</td>\n",
" <td>0</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>26</td>\n",
" <td>10</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>17</td>\n",
" <td>8</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>22</td>\n",
" <td>4</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>12</td>\n",
" <td>6</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>23</td>\n",
" <td>12</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>17</td>\n",
" <td>10</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>34</td>\n",
" <td>1</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>4</td>\n",
" <td>32</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>422</th>\n",
" <td>3</td>\n",
" <td>18</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>423</th>\n",
" <td>4</td>\n",
" <td>20</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>424</th>\n",
" <td>9</td>\n",
" <td>6</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>425</th>\n",
" <td>10</td>\n",
" <td>25</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>426</th>\n",
" <td>11</td>\n",
" <td>25</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>427</th>\n",
" <td>10</td>\n",
" <td>10</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428</th>\n",
" <td>4</td>\n",
" <td>23</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>429</th>\n",
" <td>7</td>\n",
" <td>14</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>430</th>\n",
" <td>22</td>\n",
" <td>8</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>431</th>\n",
" <td>4</td>\n",
" <td>17</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>432</th>\n",
" <td>12</td>\n",
" <td>24</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>433</th>\n",
" <td>1</td>\n",
" <td>20</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>434</th>\n",
" <td>3</td>\n",
" <td>24</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>435</th>\n",
" <td>5</td>\n",
" <td>31</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>436</th>\n",
" <td>4</td>\n",
" <td>26</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>437</th>\n",
" <td>12</td>\n",
" <td>9</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>438</th>\n",
" <td>4</td>\n",
" <td>20</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>439</th>\n",
" <td>8</td>\n",
" <td>10</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>440</th>\n",
" <td>1</td>\n",
" <td>35</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>441</th>\n",
" <td>8</td>\n",
" <td>28</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>442</th>\n",
" <td>13</td>\n",
" <td>11</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>443</th>\n",
" <td>7</td>\n",
" <td>23</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>444</th>\n",
" <td>8</td>\n",
" <td>10</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>445</th>\n",
" <td>12</td>\n",
" <td>23</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>446</th>\n",
" <td>12</td>\n",
" <td>24</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>447</th>\n",
" <td>12</td>\n",
" <td>14</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>449</th>\n",
" <td>10</td>\n",
" <td>26</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>450</th>\n",
" <td>25</td>\n",
" <td>4</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>451</th>\n",
" <td>2</td>\n",
" <td>34</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>452</th>\n",
" <td>6</td>\n",
" <td>12</td>\n",
" <td>OPN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>451 rows \u00d7 3 columns</p>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 5,
"text": [
" availability.bikes availability.slots status\n",
"id \n",
"1 24 3 OPN\n",
"2 5 7 OPN\n",
"3 17 19 OPN\n",
"4 7 8 OPN\n",
"5 5 7 OPN\n",
"6 3 12 OPN\n",
"7 14 10 OPN\n",
"8 1 11 OPN\n",
"9 9 15 OPN\n",
"10 12 23 OPN\n",
"11 4 11 OPN\n",
"12 7 8 OPN\n",
"13 30 3 OPN\n",
"14 17 19 OPN\n",
"15 16 8 OPN\n",
"16 30 6 OPN\n",
"17 24 3 OPN\n",
"18 25 11 OPN\n",
"19 13 11 OPN\n",
"20 16 8 OPN\n",
"21 15 12 OPN\n",
"22 36 0 OPN\n",
"23 26 10 OPN\n",
"24 17 8 OPN\n",
"25 22 4 OPN\n",
"26 12 6 OPN\n",
"27 23 12 OPN\n",
"28 17 10 OPN\n",
"29 34 1 OPN\n",
"30 4 32 OPN\n",
".. ... ... ...\n",
"422 3 18 OPN\n",
"423 4 20 OPN\n",
"424 9 6 OPN\n",
"425 10 25 OPN\n",
"426 11 25 OPN\n",
"427 10 10 OPN\n",
"428 4 23 OPN\n",
"429 7 14 OPN\n",
"430 22 8 OPN\n",
"431 4 17 OPN\n",
"432 12 24 OPN\n",
"433 1 20 OPN\n",
"434 3 24 OPN\n",
"435 5 31 OPN\n",
"436 4 26 OPN\n",
"437 12 9 OPN\n",
"438 4 20 OPN\n",
"439 8 10 OPN\n",
"440 1 35 OPN\n",
"441 8 28 OPN\n",
"442 13 11 OPN\n",
"443 7 23 OPN\n",
"444 8 10 OPN\n",
"445 12 23 OPN\n",
"446 12 24 OPN\n",
"447 12 14 OPN\n",
"449 10 26 OPN\n",
"450 25 4 OPN\n",
"451 2 34 OPN\n",
"452 6 12 OPN\n",
"\n",
"[451 rows x 3 columns]"
]
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment