Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Created on Cognitive Class Labs
{
"cells": [
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd # library for data analsysis\n",
"import numpy as np # library to handle data in a vectorized manner"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np # library to handle data in a vectorized manner\n",
"\n",
"import pandas as pd # library for data analsysis\n",
"pd.set_option('display.max_columns', None)\n",
"pd.set_option('display.max_rows', None)\n",
"\n",
"import json # library to handle JSON files\n",
"\n",
"#!conda install -c conda-forge geopy --yes # uncomment this line if you haven't completed the Foursquare API lab\n",
"from geopy.geocoders import Nominatim # convert an address into latitude and longitude values\n",
"\n",
"import requests # library to handle requests\n",
"from pandas.io.json import json_normalize # tranform JSON file into a pandas dataframe\n",
"\n",
"# Matplotlib and associated plotting modules\n",
"import matplotlib.cm as cm\n",
"import matplotlib.colors as colors\n",
"\n",
"# import k-means from clustering stage\n",
"from sklearn.cluster import KMeans\n",
"\n",
"#!conda install -c conda-forge folium=0.5.0 --yes # uncomment this line if you haven't completed the Foursquare API lab\n",
"import folium # map rendering library\n",
"\n",
"\n",
"from geopy.geocoders import Nominatim\n",
"from geopy.distance import vincenty\n",
"import datetime as DT\n",
"import hmac\n",
"import pandas as pd\n",
"import io\n",
"import requests\n"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/lib/python3.6/site-packages/pandas/util/_decorators.py:188: FutureWarning: The `sheetname` keyword is deprecated, use `sheet_name` instead\n",
" return func(*args, **kwargs)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>City</th>\n",
" <th>Latitude</th>\n",
" <th>Longitude</th>\n",
" <th>Population</th>\n",
" <th>Median Age</th>\n",
" <th>Average Income</th>\n",
" <th>Venue Number</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Culver City</td>\n",
" <td>34.005820</td>\n",
" <td>-118.396781</td>\n",
" <td>39283</td>\n",
" <td>40.9</td>\n",
" <td>86997</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>El Segundo</td>\n",
" <td>33.917145</td>\n",
" <td>-118.401554</td>\n",
" <td>16853</td>\n",
" <td>38.7</td>\n",
" <td>92942</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>87854</td>\n",
" <td>33.0</td>\n",
" <td>47636</td>\n",
" <td>23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>19708</td>\n",
" <td>39.5</td>\n",
" <td>124849</td>\n",
" <td>66</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Inglewood</td>\n",
" <td>33.956068</td>\n",
" <td>-118.344274</td>\n",
" <td>110598</td>\n",
" <td>34.5</td>\n",
" <td>46389</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>35924</td>\n",
" <td>43.7</td>\n",
" <td>148899</td>\n",
" <td>26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>8866</td>\n",
" <td>39.0</td>\n",
" <td>101860</td>\n",
" <td>20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Redondo Beach</td>\n",
" <td>33.856817</td>\n",
" <td>-118.377137</td>\n",
" <td>67908</td>\n",
" <td>40.2</td>\n",
" <td>104548</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Santa Monica</td>\n",
" <td>34.023413</td>\n",
" <td>-118.481666</td>\n",
" <td>92306</td>\n",
" <td>40.5</td>\n",
" <td>86084</td>\n",
" <td>21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Torrance</td>\n",
" <td>33.834966</td>\n",
" <td>-118.341431</td>\n",
" <td>146758</td>\n",
" <td>41.7</td>\n",
" <td>85070</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Venice Beach</td>\n",
" <td>33.985000</td>\n",
" <td>-118.469500</td>\n",
" <td>40885</td>\n",
" <td>35.0</td>\n",
" <td>67647</td>\n",
" <td>29</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" City Latitude Longitude Population Median Age \\\n",
"0 Culver City 34.005820 -118.396781 39283 40.9 \n",
"1 El Segundo 33.917145 -118.401554 16853 38.7 \n",
"2 Hawthorne 33.914775 -118.348083 87854 33.0 \n",
"3 Hermosa Beach 33.865268 -118.396297 19708 39.5 \n",
"4 Inglewood 33.956068 -118.344274 110598 34.5 \n",
"5 Manhattan Beach 33.889632 -118.397370 35924 43.7 \n",
"6 Marina del Rey 33.981510 -118.453229 8866 39.0 \n",
"7 Redondo Beach 33.856817 -118.377137 67908 40.2 \n",
"8 Santa Monica 34.023413 -118.481666 92306 40.5 \n",
"9 Torrance 33.834966 -118.341431 146758 41.7 \n",
"10 Venice Beach 33.985000 -118.469500 40885 35.0 \n",
"\n",
" Average Income Venue Number \n",
"0 86997 9 \n",
"1 92942 11 \n",
"2 47636 23 \n",
"3 124849 66 \n",
"4 46389 8 \n",
"5 148899 26 \n",
"6 101860 20 \n",
"7 104548 8 \n",
"8 86084 21 \n",
"9 85070 4 \n",
"10 67647 29 "
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df4 = pd.read_excel('LAcoor2.xlsx', sheetname='Sheet1')\n",
"df4"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The geograpical coordinate of Los Angeles are 34.0536909, -118.2427666.\n"
]
}
],
"source": [
"address = 'Los Angeles, CA'\n",
"\n",
"geolocator = Nominatim(user_agent=\"la_explorer\")\n",
"location = geolocator.geocode(address)\n",
"latitude = location.latitude\n",
"longitude = location.longitude\n",
"print('The geograpical coordinate of Los Angeles are {}, {}.'.format(latitude, longitude))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYzA3ZDZlN2RkOGYwNDJhZGIwYzM5MWQ0ZGRhZjVkNTggewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2MwN2Q2ZTdkZDhmMDQyYWRiMGMzOTFkNGRkYWY1ZDU4IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9jMDdkNmU3ZGQ4ZjA0MmFkYjBjMzkxZDRkZGFmNWQ1OCA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9jMDdkNmU3ZGQ4ZjA0MmFkYjBjMzkxZDRkZGFmNWQ1OCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzQuMDUzNjkwOSwtMTE4LjI0Mjc2NjZdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyX2E0M2Y1MDg2YzdkNjRjNTZiNGNlZDZhMDFlNDU5NzIzID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2MwN2Q2ZTdkZDhmMDQyYWRiMGMzOTFkNGRkYWY1ZDU4KTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NmRjOTIyOGExMzA0NGI4YjdlNDIyMjBiYzcxOGM0ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM0LjAwNTgyLC0xMTguMzk2NzgxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2MwN2Q2ZTdkZDhmMDQyYWRiMGMzOTFkNGRkYWY1ZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RiNzQ2Mjc1YzlmZDRiODI4MjAxZGM3NjNlZmJjMjFiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM3ZDc5ZGFhYjI5YzQ1YjI5OGUwMTI2ZGUyOTM0ZTRkID0gJCgnPGRpdiBpZD0iaHRtbF8zN2Q3OWRhYWIyOWM0NWIyOThlMDEyNmRlMjkzNGU0ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q3VsdmVyIENpdHk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RiNzQ2Mjc1YzlmZDRiODI4MjAxZGM3NjNlZmJjMjFiLnNldENvbnRlbnQoaHRtbF8zN2Q3OWRhYWIyOWM0NWIyOThlMDEyNmRlMjkzNGU0ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83NmRjOTIyOGExMzA0NGI4YjdlNDIyMjBiYzcxOGM0Zi5iaW5kUG9wdXAocG9wdXBfZGI3NDYyNzVjOWZkNGI4MjgyMDFkYzc2M2VmYmMyMWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDhmYjE1NzBkOTY5NGJkY2E5MGI3NGQwOWI5M2JhMWQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszMy45MTcxNDUsLTExOC40MDE1NTRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYzA3ZDZlN2RkOGYwNDJhZGIwYzM5MWQ0ZGRhZjVkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjU3NTBjNzYxMTZiNGY1Y2E3ZDFiOWM1Yzc5ZjZjODYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmNhODA2MzcxOGU3NGFmYWE5MmE4ODliMjRkZjEzZDcgPSAkKCc8ZGl2IGlkPSJodG1sX2ZjYTgwNjM3MThlNzRhZmFhOTJhODg5YjI0ZGYxM2Q3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FbCBTZWd1bmRvPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NTc1MGM3NjExNmI0ZjVjYTdkMWI5YzVjNzlmNmM4Ni5zZXRDb250ZW50KGh0bWxfZmNhODA2MzcxOGU3NGFmYWE5MmE4ODliMjRkZjEzZDcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDhmYjE1NzBkOTY5NGJkY2E5MGI3NGQwOWI5M2JhMWQuYmluZFBvcHVwKHBvcHVwXzY1NzUwYzc2MTE2YjRmNWNhN2QxYjljNWM3OWY2Yzg2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcyN2JiM2E4NTE1YzQwYzE4MDBjZmVlZjU2NzgxZmJmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzMuOTE0Nzc1LC0xMTguMzQ4MDgzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2MwN2Q2ZTdkZDhmMDQyYWRiMGMzOTFkNGRkYWY1ZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg5YmY0MDdjZTA2NDQ2MDhhNDgyMDhlN2QzZDMzMTU3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ViYzNlYjljZTgxNjRhOWE4YWJjYjFiMDc4YjVmNGJkID0gJCgnPGRpdiBpZD0iaHRtbF9lYmMzZWI5Y2U4MTY0YTlhOGFiY2IxYjA3OGI1ZjRiZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SGF3dGhvcm5lPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84OWJmNDA3Y2UwNjQ0NjA4YTQ4MjA4ZTdkM2QzMzE1Ny5zZXRDb250ZW50KGh0bWxfZWJjM2ViOWNlODE2NGE5YThhYmNiMWIwNzhiNWY0YmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzI3YmIzYTg1MTVjNDBjMTgwMGNmZWVmNTY3ODFmYmYuYmluZFBvcHVwKHBvcHVwXzg5YmY0MDdjZTA2NDQ2MDhhNDgyMDhlN2QzZDMzMTU3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M3ODViOGRkNjIzOTRjMTJhZjE0OTBiMGQzMjhlNDI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzMuODY1MjY4LC0xMTguMzk2Mjk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2MwN2Q2ZTdkZDhmMDQyYWRiMGMzOTFkNGRkYWY1ZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RjZTI0MTc1MjgwZjRkN2JhOWIwZjRiZjBjMzE0ODBkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q5ZTEzYzdkOTUzOTQwYWJiZDUyNTQwMjFkNzAwYTQ1ID0gJCgnPGRpdiBpZD0iaHRtbF9kOWUxM2M3ZDk1Mzk0MGFiYmQ1MjU0MDIxZDcwMGE0NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SGVybW9zYSBCZWFjaDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGNlMjQxNzUyODBmNGQ3YmE5YjBmNGJmMGMzMTQ4MGQuc2V0Q29udGVudChodG1sX2Q5ZTEzYzdkOTUzOTQwYWJiZDUyNTQwMjFkNzAwYTQ1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2M3ODViOGRkNjIzOTRjMTJhZjE0OTBiMGQzMjhlNDI1LmJpbmRQb3B1cChwb3B1cF9kY2UyNDE3NTI4MGY0ZDdiYTliMGY0YmYwYzMxNDgwZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jOGFlZjU3ZDE2NDE0NTU4OWJjYmQxMzBhMmMzZGE3YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzMzLjk1NjA2OCwtMTE4LjM0NDI3NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9jMDdkNmU3ZGQ4ZjA0MmFkYjBjMzkxZDRkZGFmNWQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hZmY1MTI2YWRiYWM0MTczOTAxYTA0NWM0MDY5NThhYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80OGUwYjI5OTcwZDA0MWFlOTVkNzI3ZWM4OGQwNGM5ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfNDhlMGIyOTk3MGQwNDFhZTk1ZDcyN2VjODhkMDRjOWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkluZ2xld29vZDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWZmNTEyNmFkYmFjNDE3MzkwMWEwNDVjNDA2OTU4YWIuc2V0Q29udGVudChodG1sXzQ4ZTBiMjk5NzBkMDQxYWU5NWQ3MjdlYzg4ZDA0YzllKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2M4YWVmNTdkMTY0MTQ1NTg5YmNiZDEzMGEyYzNkYTdjLmJpbmRQb3B1cChwb3B1cF9hZmY1MTI2YWRiYWM0MTczOTAxYTA0NWM0MDY5NThhYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NDJjMTc5ZTBhODg0ZjUxOWVkZDQwOWFlZmZjNTcxZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzMzLjg4OTYzMiwtMTE4LjM5NzM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2MwN2Q2ZTdkZDhmMDQyYWRiMGMzOTFkNGRkYWY1ZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VmYWZkOGRmNjRmMTQ2ODRiN2VjNjRmMmU3NWM2ZGFiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc0MWI0OTJlYjNmNzQ4Y2Q5MTk1YzQ1OWNkMmJiY2QxID0gJCgnPGRpdiBpZD0iaHRtbF83NDFiNDkyZWIzZjc0OGNkOTE5NWM0NTljZDJiYmNkMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWFuaGF0dGFuIEJlYWNoPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lZmFmZDhkZjY0ZjE0Njg0YjdlYzY0ZjJlNzVjNmRhYi5zZXRDb250ZW50KGh0bWxfNzQxYjQ5MmViM2Y3NDhjZDkxOTVjNDU5Y2QyYmJjZDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODQyYzE3OWUwYTg4NGY1MTllZGQ0MDlhZWZmYzU3MWUuYmluZFBvcHVwKHBvcHVwX2VmYWZkOGRmNjRmMTQ2ODRiN2VjNjRmMmU3NWM2ZGFiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFlNzdmYmE0YTYzODQ3MjhhZGQ3N2E2ODY2NTQ2ZTczID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzMuOTgxNTEsLTExOC40NTMyMjldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYzA3ZDZlN2RkOGYwNDJhZGIwYzM5MWQ0ZGRhZjVkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzRiOTQ2NmFlZDEzNGUzZjk0OGYzNmRlYWJiZTZhYWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzliZGUwMmM5ZTZiNGY3MmIxNjYwMmRkNTc2ZmI1NDkgPSAkKCc8ZGl2IGlkPSJodG1sX2M5YmRlMDJjOWU2YjRmNzJiMTY2MDJkZDU3NmZiNTQ5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NYXJpbmEgZGVsIFJleTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzRiOTQ2NmFlZDEzNGUzZjk0OGYzNmRlYWJiZTZhYWEuc2V0Q29udGVudChodG1sX2M5YmRlMDJjOWU2YjRmNzJiMTY2MDJkZDU3NmZiNTQ5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzFlNzdmYmE0YTYzODQ3MjhhZGQ3N2E2ODY2NTQ2ZTczLmJpbmRQb3B1cChwb3B1cF9jNGI5NDY2YWVkMTM0ZTNmOTQ4ZjM2ZGVhYmJlNmFhYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jOWMyNGFiZjJhNDI0MjA0OTBhNTVhNmYwNjFjYTVkZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzMzLjg1NjgxNywtMTE4LjM3NzEzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9jMDdkNmU3ZGQ4ZjA0MmFkYjBjMzkxZDRkZGFmNWQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yOGJmY2YzNDZlNWE0MGE3YjRhNTUyZmMzYjgwMzM4MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ZDgzZWU1NTY5MTA0OGFlYWE5YzkyZTM1YWVjYWM1ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfOWQ4M2VlNTU2OTEwNDhhZWFhOWM5MmUzNWFlY2FjNWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJlZG9uZG8gQmVhY2g8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI4YmZjZjM0NmU1YTQwYTdiNGE1NTJmYzNiODAzMzgzLnNldENvbnRlbnQoaHRtbF85ZDgzZWU1NTY5MTA0OGFlYWE5YzkyZTM1YWVjYWM1ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jOWMyNGFiZjJhNDI0MjA0OTBhNTVhNmYwNjFjYTVkZi5iaW5kUG9wdXAocG9wdXBfMjhiZmNmMzQ2ZTVhNDBhN2I0YTU1MmZjM2I4MDMzODMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjg3MzdmOTE2NjE1NDE1NGIyZjhiNTJmODYyZjJlYmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNC4wMjM0MTMsLTExOC40ODE2NjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYzA3ZDZlN2RkOGYwNDJhZGIwYzM5MWQ0ZGRhZjVkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjlkZTM4NDE4YTNhNDc5ODk4NjFiMTVlZWJjNDUyM2QgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzY4ZDNjOTcxZjY3NGNlOWFiYzAxYzhkNTRjZTJjZGYgPSAkKCc8ZGl2IGlkPSJodG1sXzc2OGQzYzk3MWY2NzRjZTlhYmMwMWM4ZDU0Y2UyY2RmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TYW50YSBNb25pY2E8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2I5ZGUzODQxOGEzYTQ3OTg5ODYxYjE1ZWViYzQ1MjNkLnNldENvbnRlbnQoaHRtbF83NjhkM2M5NzFmNjc0Y2U5YWJjMDFjOGQ1NGNlMmNkZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iODczN2Y5MTY2MTU0MTU0YjJmOGI1MmY4NjJmMmViYi5iaW5kUG9wdXAocG9wdXBfYjlkZTM4NDE4YTNhNDc5ODk4NjFiMTVlZWJjNDUyM2QpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2ViZDZiZTM0NjZjNGE0OTg1ZWJiOGUxNDk0N2FjYzYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszMy44MzQ5NjYsLTExOC4zNDE0MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYzA3ZDZlN2RkOGYwNDJhZGIwYzM5MWQ0ZGRhZjVkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGFiZGQ1Y2Y0MWM1NDc4ZDlhNjk3ZGI4YWMzYTNjMjEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTQ4ODVjOWNjODExNDhhNThiZGExNThiOGI3YjdhODcgPSAkKCc8ZGl2IGlkPSJodG1sXzk0ODg1YzljYzgxMTQ4YTU4YmRhMTU4YjhiN2I3YTg3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ub3JyYW5jZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGFiZGQ1Y2Y0MWM1NDc4ZDlhNjk3ZGI4YWMzYTNjMjEuc2V0Q29udGVudChodG1sXzk0ODg1YzljYzgxMTQ4YTU4YmRhMTU4YjhiN2I3YTg3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzdlYmQ2YmUzNDY2YzRhNDk4NWViYjhlMTQ5NDdhY2M2LmJpbmRQb3B1cChwb3B1cF8wYWJkZDVjZjQxYzU0NzhkOWE2OTdkYjhhYzNhM2MyMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lMDgzNTM5ZGNjZDc0OWUyOGM5ZGUzMDMwMDM1NjA2MyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzMzLjk4NSwtMTE4LjQ2OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYzA3ZDZlN2RkOGYwNDJhZGIwYzM5MWQ0ZGRhZjVkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGFjN2YzNWJlNDA1NDhmZGI4MjI3ZTUxNjQzN2U4MmQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDFiN2YzNTBhNTAzNGEyZWFiNGU0Yjk0M2YzMjk0MmIgPSAkKCc8ZGl2IGlkPSJodG1sXzAxYjdmMzUwYTUwMzRhMmVhYjRlNGI5NDNmMzI5NDJiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WZW5pY2UgQmVhY2g8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhhYzdmMzViZTQwNTQ4ZmRiODIyN2U1MTY0MzdlODJkLnNldENvbnRlbnQoaHRtbF8wMWI3ZjM1MGE1MDM0YTJlYWI0ZTRiOTQzZjMyOTQyYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lMDgzNTM5ZGNjZDc0OWUyOGM5ZGUzMDMwMDM1NjA2My5iaW5kUG9wdXAocG9wdXBfOGFjN2YzNWJlNDA1NDhmZGI4MjI3ZTUxNjQzN2U4MmQpOwoKICAgICAgICAgICAgCiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7f0c74c79710>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create map of New York using latitude and longitude values\n",
"map_losangeles = folium.Map(location=[latitude, longitude], zoom_start=10)\n",
"\n",
"# add markers to map\n",
"for lat, lng, City in zip(df['Latitude'], df['Longitude'], df['City']):\n",
" label = '{}'.format(City)\n",
" label = folium.Popup(label, parse_html=True)\n",
" folium.CircleMarker(\n",
" [lat, lng],\n",
" radius=5,\n",
" popup=label,\n",
" color='blue',\n",
" fill=True,\n",
" fill_color='#3186cc',\n",
" fill_opacity=0.7,\n",
" parse_html=False).add_to(map_losangeles) \n",
" \n",
"map_losangeles"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'East Los Angeles'"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Your credentails:\n",
"CLIENT_ID: PJS5VPSQJK5GSZVFE2QVMOMLPYLINYY1XLXGOU31EELHT1MJ\n",
"CLIENT_SECRET:GPZVYLDEHPZPGQ0RPXZHNSQU2T3TDWNY2DGDP5H1H4EM5GRR\n"
]
}
],
"source": [
"CLIENT_ID = 'PJS5VPSQJK5GSZVFE2QVMOMLPYLINYY1XLXGOU31EELHT1MJ' # your Foursquare ID\n",
"CLIENT_SECRET = 'GPZVYLDEHPZPGQ0RPXZHNSQU2T3TDWNY2DGDP5H1H4EM5GRR' # your Foursquare Secret\n",
"VERSION = '20180605' # Foursquare API version\n",
"\n",
"print('Your credentails:')\n",
"print('CLIENT_ID: ' + CLIENT_ID)\n",
"print('CLIENT_SECRET:' + CLIENT_SECRET)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Redondo Beach'"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc[7, 'City']"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Latitude and longitude values of Manhattan Beach are 33.856817, -118.377137.\n"
]
}
],
"source": [
"neighborhood_latitude = df.loc[7, 'Latitude'] # neighborhood latitude value\n",
"neighborhood_longitude = df.loc[7, 'Longitude'] # neighborhood longitude value\n",
"\n",
"neighborhood_name = df.loc[5, 'City'] # neighborhood name\n",
"\n",
"print('Latitude and longitude values of {} are {}, {}.'.format(neighborhood_name, \n",
" neighborhood_latitude, \n",
" neighborhood_longitude))"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'https://api.foursquare.com/v2/venues/explore?&client_id=PJS5VPSQJK5GSZVFE2QVMOMLPYLINYY1XLXGOU31EELHT1MJ&client_secret=GPZVYLDEHPZPGQ0RPXZHNSQU2T3TDWNY2DGDP5H1H4EM5GRR&v=20180605&ll=33.856817,-118.377137&radius=4828&limit=100'"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"LIMIT = 100 # limit of number of venues returned by Foursquare API\n",
"radius = 4828 #4828 define radius\n",
"# create URL\n",
"url = 'https://api.foursquare.com/v2/venues/explore?&client_id={}&client_secret={}&v={}&ll={},{}&radius={}&limit={}'.format(\n",
" CLIENT_ID, \n",
" CLIENT_SECRET, \n",
" VERSION, \n",
" neighborhood_latitude, \n",
" neighborhood_longitude, \n",
" radius, \n",
" LIMIT)\n",
"url # display URL"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"results = requests.get(url).json()\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"def get_category_type(row):\n",
" try:\n",
" categories_list = row['categories']\n",
" except:\n",
" categories_list = row['venue.categories']\n",
" \n",
" if len(categories_list) == 0:\n",
" return None\n",
" else:\n",
" return categories_list[0]['name']"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>name</th>\n",
" <th>categories</th>\n",
" <th>lat</th>\n",
" <th>lng</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>iLoveKickboxing - Redondo Beach, CA</td>\n",
" <td>Gym</td>\n",
" <td>33.854484</td>\n",
" <td>-118.379196</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Redondo Beach Dog Park</td>\n",
" <td>Dog Run</td>\n",
" <td>33.857577</td>\n",
" <td>-118.377995</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Bistro Miyoda</td>\n",
" <td>Japanese Restaurant</td>\n",
" <td>33.854176</td>\n",
" <td>-118.379762</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Dollar Tree</td>\n",
" <td>Discount Store</td>\n",
" <td>33.853951</td>\n",
" <td>-118.380787</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>VONS</td>\n",
" <td>Grocery Store</td>\n",
" <td>33.853943</td>\n",
" <td>-118.380257</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" name categories lat \\\n",
"0 iLoveKickboxing - Redondo Beach, CA Gym 33.854484 \n",
"1 Redondo Beach Dog Park Dog Run 33.857577 \n",
"2 Bistro Miyoda Japanese Restaurant 33.854176 \n",
"3 Dollar Tree Discount Store 33.853951 \n",
"4 VONS Grocery Store 33.853943 \n",
"\n",
" lng \n",
"0 -118.379196 \n",
"1 -118.377995 \n",
"2 -118.379762 \n",
"3 -118.380787 \n",
"4 -118.380257 "
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"venues = results['response']['groups'][0]['items']\n",
" \n",
"nearby_venues = json_normalize(venues) # flatten JSON\n",
"\n",
"# filter columns\n",
"filtered_columns = ['venue.name', 'venue.categories', 'venue.location.lat', 'venue.location.lng']\n",
"nearby_venues =nearby_venues.loc[:, filtered_columns]\n",
"\n",
"# filter the category for each row\n",
"nearby_venues['venue.categories'] = nearby_venues.apply(get_category_type, axis=1)\n",
"\n",
"# clean columns\n",
"nearby_venues.columns = [col.split(\".\")[-1] for col in nearby_venues.columns]\n",
"\n",
"nearby_venues.head()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7 venues were returned by Foursquare.\n"
]
}
],
"source": [
"print('{} venues were returned by Foursquare.'.format(nearby_venues.shape[0]))"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"def getNearbyVenues(names, latitudes, longitudes, radius=500):\n",
" \n",
" venues_list=[]\n",
" for name, lat, lng in zip(names, latitudes, longitudes):\n",
" print(name)\n",
" \n",
" # create the API request URL\n",
" url = 'https://api.foursquare.com/v2/venues/explore?&client_id={}&client_secret={}&v={}&ll={},{}&radius={}&limit={}'.format(\n",
" CLIENT_ID, \n",
" CLIENT_SECRET, \n",
" VERSION, \n",
" lat, \n",
" lng, \n",
" radius, \n",
" LIMIT)\n",
" \n",
" # make the GET request\n",
" results = requests.get(url).json()[\"response\"]['groups'][0]['items']\n",
" \n",
" # return only relevant information for each nearby venue\n",
" venues_list.append([(\n",
" name, \n",
" lat, \n",
" lng, \n",
" v['venue']['name'], \n",
" v['venue']['location']['lat'], \n",
" v['venue']['location']['lng'], \n",
" v['venue']['categories'][0]['name']) for v in results])\n",
"\n",
" nearby_venues = pd.DataFrame([item for venue_list in venues_list for item in venue_list])\n",
" nearby_venues.columns = ['City', \n",
" 'City Latitude', \n",
" 'City Longitude', \n",
" 'Venue', \n",
" 'Venue Latitude', \n",
" 'Venue Longitude', \n",
" 'Venue Category']\n",
" \n",
" return(nearby_venues)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Culver City\n",
"El Segundo\n",
"Hawthorne\n",
"Hermosa Beach\n",
"Inglewood\n",
"Manhattan Beach\n",
"Marina del Rey\n",
"Redondo Beach\n",
"Santa Monica\n",
"Torrance\n",
"Venice Beach\n"
]
}
],
"source": [
"manhattan_venues = getNearbyVenues(names=df['City'],\n",
" latitudes=df['Latitude'],\n",
" longitudes=df['Longitude']\n",
" )\n"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(208, 7)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>City</th>\n",
" <th>City Latitude</th>\n",
" <th>City Longitude</th>\n",
" <th>Venue</th>\n",
" <th>Venue Latitude</th>\n",
" <th>Venue Longitude</th>\n",
" <th>Venue Category</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Culver City</td>\n",
" <td>34.005820</td>\n",
" <td>-118.396781</td>\n",
" <td>Lindberg Park</td>\n",
" <td>34.003238</td>\n",
" <td>-118.398011</td>\n",
" <td>Playground</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Culver City</td>\n",
" <td>34.005820</td>\n",
" <td>-118.396781</td>\n",
" <td>Ralphs</td>\n",
" <td>34.002368</td>\n",
" <td>-118.393548</td>\n",
" <td>Supermarket</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Culver City</td>\n",
" <td>34.005820</td>\n",
" <td>-118.396781</td>\n",
" <td>Pizza Hut</td>\n",
" <td>34.002809</td>\n",
" <td>-118.393751</td>\n",
" <td>Pizza Place</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Culver City</td>\n",
" <td>34.005820</td>\n",
" <td>-118.396781</td>\n",
" <td>Redbox</td>\n",
" <td>34.002558</td>\n",
" <td>-118.393167</td>\n",
" <td>Video Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Culver City</td>\n",
" <td>34.005820</td>\n",
" <td>-118.396781</td>\n",
" <td>The Spot Cafe &amp; Lounge</td>\n",
" <td>34.009331</td>\n",
" <td>-118.398429</td>\n",
" <td>Coffee Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Culver City</td>\n",
" <td>34.005820</td>\n",
" <td>-118.396781</td>\n",
" <td>Denny's</td>\n",
" <td>34.003629</td>\n",
" <td>-118.393315</td>\n",
" <td>Diner</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Culver City</td>\n",
" <td>34.005820</td>\n",
" <td>-118.396781</td>\n",
" <td>Coombs Park</td>\n",
" <td>34.008639</td>\n",
" <td>-118.400031</td>\n",
" <td>Park</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Culver City</td>\n",
" <td>34.005820</td>\n",
" <td>-118.396781</td>\n",
" <td>All That &amp; MORE Boutique</td>\n",
" <td>34.002879</td>\n",
" <td>-118.393184</td>\n",
" <td>Boutique</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Culver City</td>\n",
" <td>34.005820</td>\n",
" <td>-118.396781</td>\n",
" <td>The No. 1 Currywurst Truck of Los Angeles</td>\n",
" <td>34.007730</td>\n",
" <td>-118.391969</td>\n",
" <td>Food Truck</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>El Segundo</td>\n",
" <td>33.917145</td>\n",
" <td>-118.401554</td>\n",
" <td>Yellow Brick Road Doggie Playcare &amp; Gym</td>\n",
" <td>33.916564</td>\n",
" <td>-118.400132</td>\n",
" <td>Pet Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>El Segundo</td>\n",
" <td>33.917145</td>\n",
" <td>-118.401554</td>\n",
" <td>Grateful Dogs Clubhouse</td>\n",
" <td>33.918022</td>\n",
" <td>-118.398334</td>\n",
" <td>Pet Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>El Segundo</td>\n",
" <td>33.917145</td>\n",
" <td>-118.401554</td>\n",
" <td>R6 Distillery</td>\n",
" <td>33.916528</td>\n",
" <td>-118.405822</td>\n",
" <td>Distillery</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>El Segundo</td>\n",
" <td>33.917145</td>\n",
" <td>-118.401554</td>\n",
" <td>El Segundo Animal Hospital</td>\n",
" <td>33.919209</td>\n",
" <td>-118.404653</td>\n",
" <td>Pet Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>El Segundo</td>\n",
" <td>33.917145</td>\n",
" <td>-118.401554</td>\n",
" <td>McDonald's</td>\n",
" <td>33.915868</td>\n",
" <td>-118.396384</td>\n",
" <td>Fast Food Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>El Segundo</td>\n",
" <td>33.917145</td>\n",
" <td>-118.401554</td>\n",
" <td>ONEHOPE Wine</td>\n",
" <td>33.918588</td>\n",
" <td>-118.401736</td>\n",
" <td>Office</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>El Segundo</td>\n",
" <td>33.917145</td>\n",
" <td>-118.401554</td>\n",
" <td>El Segundo DinDinAGoGo</td>\n",
" <td>33.918328</td>\n",
" <td>-118.403435</td>\n",
" <td>Food Truck</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>El Segundo</td>\n",
" <td>33.917145</td>\n",
" <td>-118.401554</td>\n",
" <td>Chevron Park</td>\n",
" <td>33.915467</td>\n",
" <td>-118.399067</td>\n",
" <td>Athletics &amp; Sports</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>El Segundo</td>\n",
" <td>33.917145</td>\n",
" <td>-118.401554</td>\n",
" <td>International Garden And Floral Design</td>\n",
" <td>33.917639</td>\n",
" <td>-118.396242</td>\n",
" <td>Garden Center</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Tacos Mexico</td>\n",
" <td>33.916662</td>\n",
" <td>-118.349048</td>\n",
" <td>Taco Place</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Systems Training Center</td>\n",
" <td>33.913871</td>\n",
" <td>-118.352290</td>\n",
" <td>Martial Arts Dojo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Continental Gourmet Market - Hawthorne</td>\n",
" <td>33.914933</td>\n",
" <td>-118.344192</td>\n",
" <td>Latin American Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Bangkok Grill</td>\n",
" <td>33.914941</td>\n",
" <td>-118.352006</td>\n",
" <td>Thai Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Superior Grocers</td>\n",
" <td>33.917602</td>\n",
" <td>-118.351620</td>\n",
" <td>Market</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Dollar Tree</td>\n",
" <td>33.913837</td>\n",
" <td>-118.353326</td>\n",
" <td>Discount Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Domino's Pizza</td>\n",
" <td>33.916737</td>\n",
" <td>-118.349853</td>\n",
" <td>Pizza Place</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Starbucks</td>\n",
" <td>33.916610</td>\n",
" <td>-118.352196</td>\n",
" <td>Coffee Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>GNC</td>\n",
" <td>33.917102</td>\n",
" <td>-118.351676</td>\n",
" <td>Supplement Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>99 Cents Only Stores</td>\n",
" <td>33.914137</td>\n",
" <td>-118.352905</td>\n",
" <td>Discount Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>T-Mobile</td>\n",
" <td>33.916596</td>\n",
" <td>-118.353020</td>\n",
" <td>Mobile Phone Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Rally's Hamburgers</td>\n",
" <td>33.915843</td>\n",
" <td>-118.352072</td>\n",
" <td>Fast Food Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>ampm</td>\n",
" <td>33.916703</td>\n",
" <td>-118.344206</td>\n",
" <td>Convenience Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>SUBWAY</td>\n",
" <td>33.916816</td>\n",
" <td>-118.351883</td>\n",
" <td>Sandwich Place</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>McDonald's</td>\n",
" <td>33.916158</td>\n",
" <td>-118.347386</td>\n",
" <td>Fast Food Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>AT&amp;T</td>\n",
" <td>33.916687</td>\n",
" <td>-118.351987</td>\n",
" <td>Mobile Phone Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Taco Bell</td>\n",
" <td>33.916664</td>\n",
" <td>-118.350514</td>\n",
" <td>Fast Food Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Liquor Deli</td>\n",
" <td>33.913970</td>\n",
" <td>-118.344680</td>\n",
" <td>Convenience Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Costa Del Sol</td>\n",
" <td>33.915834</td>\n",
" <td>-118.344343</td>\n",
" <td>Latin American Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Sprint Store</td>\n",
" <td>33.916787</td>\n",
" <td>-118.351198</td>\n",
" <td>Mobile Phone Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Vicky's Donuts</td>\n",
" <td>33.916194</td>\n",
" <td>-118.344065</td>\n",
" <td>Donut Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>Hawthorne</td>\n",
" <td>33.914775</td>\n",
" <td>-118.348083</td>\n",
" <td>Fj Catering Service</td>\n",
" <td>33.918807</td>\n",
" <td>-118.349160</td>\n",
" <td>Food</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Creme de la Crepe</td>\n",
" <td>33.864180</td>\n",
" <td>-118.397104</td>\n",
" <td>French Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>The Strand</td>\n",
" <td>33.867030</td>\n",
" <td>-118.394904</td>\n",
" <td>Trail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Hermosa Beach Fish Shop</td>\n",
" <td>33.865028</td>\n",
" <td>-118.394182</td>\n",
" <td>Seafood Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>The Source Cafe</td>\n",
" <td>33.864499</td>\n",
" <td>-118.396651</td>\n",
" <td>Vegetarian / Vegan Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Fritto Misto Italian Cafe</td>\n",
" <td>33.863774</td>\n",
" <td>-118.398149</td>\n",
" <td>Italian Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Bikram Yoga</td>\n",
" <td>33.864195</td>\n",
" <td>-118.396400</td>\n",
" <td>Yoga Studio</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>The Gum Tree Cafe &amp; Boutique</td>\n",
" <td>33.863280</td>\n",
" <td>-118.398680</td>\n",
" <td>Australian Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Hermosa Beach Community Center</td>\n",
" <td>33.867028</td>\n",
" <td>-118.394938</td>\n",
" <td>Government Building</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Chipotle Mexican Grill</td>\n",
" <td>33.865331</td>\n",
" <td>-118.393487</td>\n",
" <td>Mexican Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>The Rockefeller</td>\n",
" <td>33.864037</td>\n",
" <td>-118.397268</td>\n",
" <td>American Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Abigaile</td>\n",
" <td>33.863159</td>\n",
" <td>-118.399601</td>\n",
" <td>New American Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Massage Spot</td>\n",
" <td>33.864534</td>\n",
" <td>-118.396695</td>\n",
" <td>Massage Studio</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Día de Campo</td>\n",
" <td>33.862863</td>\n",
" <td>-118.400010</td>\n",
" <td>Mexican Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Planet Earth Eco Cafe</td>\n",
" <td>33.864537</td>\n",
" <td>-118.396682</td>\n",
" <td>Café</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Deep Pocket Jean Company</td>\n",
" <td>33.863115</td>\n",
" <td>-118.399008</td>\n",
" <td>Men's Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>The Standing Room</td>\n",
" <td>33.863269</td>\n",
" <td>-118.400137</td>\n",
" <td>Burger Joint</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>El Pollo Inka</td>\n",
" <td>33.863498</td>\n",
" <td>-118.391998</td>\n",
" <td>Peruvian Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Starbucks</td>\n",
" <td>33.865963</td>\n",
" <td>-118.394487</td>\n",
" <td>Coffee Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>CVS pharmacy</td>\n",
" <td>33.865660</td>\n",
" <td>-118.394869</td>\n",
" <td>Pharmacy</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Java Man</td>\n",
" <td>33.863001</td>\n",
" <td>-118.399254</td>\n",
" <td>Coffee Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Fusion Sushi</td>\n",
" <td>33.864155</td>\n",
" <td>-118.392755</td>\n",
" <td>Sushi Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Uncorked The Wine Shop</td>\n",
" <td>33.863649</td>\n",
" <td>-118.398262</td>\n",
" <td>Wine Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>The Grindz at 1601</td>\n",
" <td>33.866915</td>\n",
" <td>-118.393830</td>\n",
" <td>Hawaiian Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Laurel Tavern</td>\n",
" <td>33.862620</td>\n",
" <td>-118.400027</td>\n",
" <td>American Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Starbucks</td>\n",
" <td>33.863130</td>\n",
" <td>-118.400336</td>\n",
" <td>Coffee Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>65</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Chelsea Pub and Lounge</td>\n",
" <td>33.863646</td>\n",
" <td>-118.400162</td>\n",
" <td>Lounge</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Underground Pub and Grill</td>\n",
" <td>33.863540</td>\n",
" <td>-118.399961</td>\n",
" <td>Sports Bar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Chef Melba's Bistro</td>\n",
" <td>33.864508</td>\n",
" <td>-118.400723</td>\n",
" <td>Italian Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Paisanos Pizza &amp; Pasta</td>\n",
" <td>33.861845</td>\n",
" <td>-118.399776</td>\n",
" <td>Pizza Place</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Zane's</td>\n",
" <td>33.862155</td>\n",
" <td>-118.399883</td>\n",
" <td>Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Curious</td>\n",
" <td>33.862359</td>\n",
" <td>-118.399397</td>\n",
" <td>Boutique</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>New Orleans Cajun Cuisine</td>\n",
" <td>33.862473</td>\n",
" <td>-118.399285</td>\n",
" <td>Cajun / Creole Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>72</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>LYFE Yoga Center</td>\n",
" <td>33.864673</td>\n",
" <td>-118.392629</td>\n",
" <td>Yoga Studio</td>\n",
" </tr>\n",
" <tr>\n",
" <th>73</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>VONS</td>\n",
" <td>33.865946</td>\n",
" <td>-118.394449</td>\n",
" <td>Grocery Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Paradise Bowls</td>\n",
" <td>33.863048</td>\n",
" <td>-118.400156</td>\n",
" <td>Juice Bar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Star Antiques Market</td>\n",
" <td>33.864281</td>\n",
" <td>-118.396288</td>\n",
" <td>Antique Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Vans</td>\n",
" <td>33.864700</td>\n",
" <td>-118.392784</td>\n",
" <td>Shoe Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Steak &amp; Whisky</td>\n",
" <td>33.862550</td>\n",
" <td>-118.399697</td>\n",
" <td>Steakhouse</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Rok Sushi Kitchen</td>\n",
" <td>33.862373</td>\n",
" <td>-118.400060</td>\n",
" <td>Sushi Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Massage Envy - Hermosa Beach</td>\n",
" <td>33.863417</td>\n",
" <td>-118.399516</td>\n",
" <td>Spa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Clark Field</td>\n",
" <td>33.862316</td>\n",
" <td>-118.394941</td>\n",
" <td>Baseball Field</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>The Bar Method</td>\n",
" <td>33.862832</td>\n",
" <td>-118.400504</td>\n",
" <td>Gym / Fitness Center</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Wells Fargo</td>\n",
" <td>33.865734</td>\n",
" <td>-118.393582</td>\n",
" <td>Bank</td>\n",
" </tr>\n",
" <tr>\n",
" <th>83</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>The UPS Store</td>\n",
" <td>33.864931</td>\n",
" <td>-118.394961</td>\n",
" <td>Shipping Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>84</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>24 Hour Fitness</td>\n",
" <td>33.867043</td>\n",
" <td>-118.393986</td>\n",
" <td>Gym / Fitness Center</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Hermosa Philly Pub</td>\n",
" <td>33.863195</td>\n",
" <td>-118.400130</td>\n",
" <td>Bar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Trader Joe's</td>\n",
" <td>33.863890</td>\n",
" <td>-118.392037</td>\n",
" <td>Grocery Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>ARCO</td>\n",
" <td>33.863644</td>\n",
" <td>-118.393016</td>\n",
" <td>Gas Station</td>\n",
" </tr>\n",
" <tr>\n",
" <th>88</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Pick Up Stix</td>\n",
" <td>33.864943</td>\n",
" <td>-118.395070</td>\n",
" <td>Chinese Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>89</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>the Hook &amp; Plow</td>\n",
" <td>33.864433</td>\n",
" <td>-118.397138</td>\n",
" <td>Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Hermosa Beach Farmers Market</td>\n",
" <td>33.862447</td>\n",
" <td>-118.395657</td>\n",
" <td>Farmers Market</td>\n",
" </tr>\n",
" <tr>\n",
" <th>91</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>McDonald's</td>\n",
" <td>33.863234</td>\n",
" <td>-118.392910</td>\n",
" <td>Fast Food Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>92</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Hampton Inn &amp; Suites Hermosa Beach</td>\n",
" <td>33.866246</td>\n",
" <td>-118.392961</td>\n",
" <td>Hotel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>93</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Hermosa Valley Greenbelt</td>\n",
" <td>33.867047</td>\n",
" <td>-118.394963</td>\n",
" <td>Trail</td>\n",
" </tr>\n",
" <tr>\n",
" <th>94</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Nutrakick</td>\n",
" <td>33.867034</td>\n",
" <td>-118.393698</td>\n",
" <td>Juice Bar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>95</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Oasis Thai Massage &amp; Spa</td>\n",
" <td>33.864193</td>\n",
" <td>-118.392392</td>\n",
" <td>Massage Studio</td>\n",
" </tr>\n",
" <tr>\n",
" <th>96</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Tennis Courts On Valley</td>\n",
" <td>33.861761</td>\n",
" <td>-118.394805</td>\n",
" <td>Park</td>\n",
" </tr>\n",
" <tr>\n",
" <th>97</th>\n",
" <td>Hermosa Beach</td>\n",
" <td>33.865268</td>\n",
" <td>-118.396297</td>\n",
" <td>Paradis</td>\n",
" <td>33.865390</td>\n",
" <td>-118.400940</td>\n",
" <td>Ice Cream Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>98</th>\n",
" <td>Inglewood</td>\n",
" <td>33.956068</td>\n",
" <td>-118.344274</td>\n",
" <td>The Forum</td>\n",
" <td>33.958209</td>\n",
" <td>-118.341878</td>\n",
" <td>Stadium</td>\n",
" </tr>\n",
" <tr>\n",
" <th>99</th>\n",
" <td>Inglewood</td>\n",
" <td>33.956068</td>\n",
" <td>-118.344274</td>\n",
" <td>7-Eleven</td>\n",
" <td>33.952217</td>\n",
" <td>-118.344243</td>\n",
" <td>Convenience Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>100</th>\n",
" <td>Inglewood</td>\n",
" <td>33.956068</td>\n",
" <td>-118.344274</td>\n",
" <td>M&amp;M Soul Food Restaurant</td>\n",
" <td>33.959956</td>\n",
" <td>-118.345284</td>\n",
" <td>Southern / Soul Food Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>101</th>\n",
" <td>Inglewood</td>\n",
" <td>33.956068</td>\n",
" <td>-118.344274</td>\n",
" <td>Sizzler</td>\n",
" <td>33.960016</td>\n",
" <td>-118.344099</td>\n",
" <td>Steakhouse</td>\n",
" </tr>\n",
" <tr>\n",
" <th>102</th>\n",
" <td>Inglewood</td>\n",
" <td>33.956068</td>\n",
" <td>-118.344274</td>\n",
" <td>Bourbon Street Fish</td>\n",
" <td>33.956555</td>\n",
" <td>-118.344286</td>\n",
" <td>Cajun / Creole Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>103</th>\n",
" <td>Inglewood</td>\n",
" <td>33.956068</td>\n",
" <td>-118.344274</td>\n",
" <td>Chase Lounge at The Forum</td>\n",
" <td>33.958165</td>\n",
" <td>-118.342369</td>\n",
" <td>Rock Club</td>\n",
" </tr>\n",
" <tr>\n",
" <th>104</th>\n",
" <td>Inglewood</td>\n",
" <td>33.956068</td>\n",
" <td>-118.344274</td>\n",
" <td>Bacon Hot Dog @ Forum Parking Lot</td>\n",
" <td>33.957977</td>\n",
" <td>-118.341951</td>\n",
" <td>Food Truck</td>\n",
" </tr>\n",
" <tr>\n",
" <th>105</th>\n",
" <td>Inglewood</td>\n",
" <td>33.956068</td>\n",
" <td>-118.344274</td>\n",
" <td>Martino's Liquor</td>\n",
" <td>33.959682</td>\n",
" <td>-118.346327</td>\n",
" <td>Smoke Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>106</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Manhattan House</td>\n",
" <td>33.887478</td>\n",
" <td>-118.397039</td>\n",
" <td>Gastropub</td>\n",
" </tr>\n",
" <tr>\n",
" <th>107</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Target</td>\n",
" <td>33.888286</td>\n",
" <td>-118.394624</td>\n",
" <td>Big Box Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>108</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Grow - The Produce Shop</td>\n",
" <td>33.892042</td>\n",
" <td>-118.395740</td>\n",
" <td>Gourmet Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>109</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Manhattan Bread &amp; Bagel</td>\n",
" <td>33.891883</td>\n",
" <td>-118.395812</td>\n",
" <td>Sandwich Place</td>\n",
" </tr>\n",
" <tr>\n",
" <th>110</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Rubio's</td>\n",
" <td>33.892651</td>\n",
" <td>-118.395783</td>\n",
" <td>Seafood Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>111</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Barsha Wines &amp; Spirits</td>\n",
" <td>33.885295</td>\n",
" <td>-118.396195</td>\n",
" <td>Wine Bar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>112</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Thai Dishes</td>\n",
" <td>33.886200</td>\n",
" <td>-118.396231</td>\n",
" <td>Thai Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>113</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Starbucks</td>\n",
" <td>33.888348</td>\n",
" <td>-118.395120</td>\n",
" <td>Coffee Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>114</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Baskin-Robbins</td>\n",
" <td>33.885459</td>\n",
" <td>-118.396353</td>\n",
" <td>Ice Cream Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>115</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>AT&amp;T</td>\n",
" <td>33.887633</td>\n",
" <td>-118.395298</td>\n",
" <td>Mobile Phone Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>116</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Grunions Sports Bar &amp; Grill</td>\n",
" <td>33.889647</td>\n",
" <td>-118.396293</td>\n",
" <td>Sports Bar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>117</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>GameStop</td>\n",
" <td>33.891968</td>\n",
" <td>-118.395556</td>\n",
" <td>Video Game Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>118</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>RockIt Body Pilates</td>\n",
" <td>33.892106</td>\n",
" <td>-118.395768</td>\n",
" <td>Pilates Studio</td>\n",
" </tr>\n",
" <tr>\n",
" <th>119</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Fresh Brothers - Manhattan Beach</td>\n",
" <td>33.892605</td>\n",
" <td>-118.395548</td>\n",
" <td>Pizza Place</td>\n",
" </tr>\n",
" <tr>\n",
" <th>120</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>El Gringo Mexican Restaurant</td>\n",
" <td>33.885342</td>\n",
" <td>-118.396363</td>\n",
" <td>Mexican Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>121</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>The UPS Store</td>\n",
" <td>33.889971</td>\n",
" <td>-118.396257</td>\n",
" <td>Shipping Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>122</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Enterprise Rent-A-Car</td>\n",
" <td>33.893550</td>\n",
" <td>-118.396340</td>\n",
" <td>Rental Car Location</td>\n",
" </tr>\n",
" <tr>\n",
" <th>123</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Chase Bank</td>\n",
" <td>33.887643</td>\n",
" <td>-118.395614</td>\n",
" <td>Bank</td>\n",
" </tr>\n",
" <tr>\n",
" <th>124</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Wells Fargo</td>\n",
" <td>33.887601</td>\n",
" <td>-118.396320</td>\n",
" <td>Bank</td>\n",
" </tr>\n",
" <tr>\n",
" <th>125</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Firestone Complete Auto Care</td>\n",
" <td>33.890330</td>\n",
" <td>-118.396442</td>\n",
" <td>Automotive Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>126</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Castle</td>\n",
" <td>33.894041</td>\n",
" <td>-118.396297</td>\n",
" <td>Sports Bar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>127</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Residence Inn Manhattan Beach</td>\n",
" <td>33.890584</td>\n",
" <td>-118.395601</td>\n",
" <td>Hotel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>128</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Hawthorne Suites by Wyndham Manhattan Beach</td>\n",
" <td>33.891774</td>\n",
" <td>-118.396174</td>\n",
" <td>Hotel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>129</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Kah Asian Restaurant and Lounge</td>\n",
" <td>33.887541</td>\n",
" <td>-118.397104</td>\n",
" <td>Asian Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>130</th>\n",
" <td>Manhattan Beach</td>\n",
" <td>33.889632</td>\n",
" <td>-118.397370</td>\n",
" <td>Sepulveda Wine Co.</td>\n",
" <td>33.885264</td>\n",
" <td>-118.396330</td>\n",
" <td>Wine Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>131</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Del Rey Yacht Club</td>\n",
" <td>33.981711</td>\n",
" <td>-118.450213</td>\n",
" <td>Boat or Ferry</td>\n",
" </tr>\n",
" <tr>\n",
" <th>132</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Chart House Restaurant</td>\n",
" <td>33.978692</td>\n",
" <td>-118.453332</td>\n",
" <td>Seafood Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>133</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Killer Shrimp</td>\n",
" <td>33.983164</td>\n",
" <td>-118.456707</td>\n",
" <td>Seafood Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>134</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>California Pizza Kitchen</td>\n",
" <td>33.979026</td>\n",
" <td>-118.453839</td>\n",
" <td>Pizza Place</td>\n",
" </tr>\n",
" <tr>\n",
" <th>135</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>The Ritz-Carlton, Marina del Rey</td>\n",
" <td>33.984155</td>\n",
" <td>-118.450223</td>\n",
" <td>Resort</td>\n",
" </tr>\n",
" <tr>\n",
" <th>136</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Mother's Beach</td>\n",
" <td>33.981535</td>\n",
" <td>-118.458084</td>\n",
" <td>Beach</td>\n",
" </tr>\n",
" <tr>\n",
" <th>137</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Marina del Rey Beach</td>\n",
" <td>33.979891</td>\n",
" <td>-118.458216</td>\n",
" <td>Beach</td>\n",
" </tr>\n",
" <tr>\n",
" <th>138</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Killer Cafe</td>\n",
" <td>33.983571</td>\n",
" <td>-118.456435</td>\n",
" <td>Breakfast Spot</td>\n",
" </tr>\n",
" <tr>\n",
" <th>139</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Jamaica Bay Inn</td>\n",
" <td>33.982687</td>\n",
" <td>-118.457709</td>\n",
" <td>Hotel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>140</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Beachside Restaurant and Bar</td>\n",
" <td>33.982455</td>\n",
" <td>-118.457597</td>\n",
" <td>American Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>141</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Cast &amp; Plow</td>\n",
" <td>33.984350</td>\n",
" <td>-118.450400</td>\n",
" <td>Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>142</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Hilton Garden Inn</td>\n",
" <td>33.983874</td>\n",
" <td>-118.457787</td>\n",
" <td>Hotel</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Marina Del Rey pier</td>\n",
" <td>33.978651</td>\n",
" <td>-118.452251</td>\n",
" <td>Beach</td>\n",
" </tr>\n",
" <tr>\n",
" <th>144</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Marina Grill &amp; Bar</td>\n",
" <td>33.983710</td>\n",
" <td>-118.457370</td>\n",
" <td>American Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>145</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Whitehall Spirit Rowing Club Marina Del Rey</td>\n",
" <td>33.979537</td>\n",
" <td>-118.456442</td>\n",
" <td>Gym / Fitness Center</td>\n",
" </tr>\n",
" <tr>\n",
" <th>146</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Waterfront Walk</td>\n",
" <td>33.984174</td>\n",
" <td>-118.450755</td>\n",
" <td>Harbor / Marina</td>\n",
" </tr>\n",
" <tr>\n",
" <th>147</th>\n",
" <td>Marina del Rey</td>\n",
" <td>33.981510</td>\n",
" <td>-118.453229</td>\n",
" <td>Wave Poolside Bar &amp; Grill</td>\n",
" <td>33.984408</td>\n",
" <td>-118.450300</td>\n",
" <td>New American Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148</th>\n",
" <td>Redondo Beach</td>\n",
" <td>33.856817</td>\n",
" <td>-118.377137</td>\n",
" <td>iLoveKickboxing - Redondo Beach, CA</td>\n",
" <td>33.854484</td>\n",
" <td>-118.379196</td>\n",
" <td>Gym</td>\n",
" </tr>\n",
" <tr>\n",
" <th>149</th>\n",
" <td>Redondo Beach</td>\n",
" <td>33.856817</td>\n",
" <td>-118.377137</td>\n",
" <td>Redondo Beach Dog Park</td>\n",
" <td>33.857577</td>\n",
" <td>-118.377995</td>\n",
" <td>Dog Run</td>\n",
" </tr>\n",
" <tr>\n",
" <th>150</th>\n",
" <td>Redondo Beach</td>\n",
" <td>33.856817</td>\n",
" <td>-118.377137</td>\n",
" <td>Bistro Miyoda</td>\n",
" <td>33.854176</td>\n",
" <td>-118.379762</td>\n",
" <td>Japanese Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>151</th>\n",
" <td>Redondo Beach</td>\n",
" <td>33.856817</td>\n",
" <td>-118.377137</td>\n",
" <td>Dollar Tree</td>\n",
" <td>33.853951</td>\n",
" <td>-118.380787</td>\n",
" <td>Discount Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>152</th>\n",
" <td>Redondo Beach</td>\n",
" <td>33.856817</td>\n",
" <td>-118.377137</td>\n",
" <td>VONS</td>\n",
" <td>33.853943</td>\n",
" <td>-118.380257</td>\n",
" <td>Grocery Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>153</th>\n",
" <td>Redondo Beach</td>\n",
" <td>33.856817</td>\n",
" <td>-118.377137</td>\n",
" <td>Papa John's Pizza</td>\n",
" <td>33.853732</td>\n",
" <td>-118.380786</td>\n",
" <td>Pizza Place</td>\n",
" </tr>\n",
" <tr>\n",
" <th>154</th>\n",
" <td>Redondo Beach</td>\n",
" <td>33.856817</td>\n",
" <td>-118.377137</td>\n",
" <td>Sweet Creations Bakery Shop</td>\n",
" <td>33.854085</td>\n",
" <td>-118.379961</td>\n",
" <td>Bakery</td>\n",
" </tr>\n",
" <tr>\n",
" <th>155</th>\n",
" <td>Santa Monica</td>\n",
" <td>34.023413</td>\n",
" <td>-118.481666</td>\n",
" <td>Co-Opportunity</td>\n",
" <td>34.024289</td>\n",
" <td>-118.482684</td>\n",
" <td>Supermarket</td>\n",
" </tr>\n",
" <tr>\n",
" <th>156</th>\n",
" <td>Santa Monica</td>\n",
" <td>34.023413</td>\n",
" <td>-118.481666</td>\n",
" <td>Memorial Park</td>\n",
" <td>34.021249</td>\n",
" <td>-118.480600</td>\n",
" <td>Park</td>\n",
" </tr>\n",
" <tr>\n",
" <th>157</th>\n",
" <td>Santa Monica</td>\n",
" <td>34.023413</td>\n",
" <td>-118.481666</td>\n",
" <td>DK's Donuts and Bakery</td>\n",
" <td>34.025783</td>\n",
" <td>-118.483409</td>\n",
" <td>Donut Shop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>158</th>\n",
" <td>Santa Monica</td>\n",
" <td>34.023413</td>\n",
" <td>-118.481666</td>\n",
" <td>The Cove Skatepark</td>\n",
" <td>34.020673</td>\n",
" <td>-118.480594</td>\n",
" <td>Skate Park</td>\n",
" </tr>\n",
" <tr>\n",
" <th>159</th>\n",
" <td>Santa Monica</td>\n",
" <td>34.023413</td>\n",
" <td>-118.481666</td>\n",
" <td>Tacos Por Favor</td>\n",
" <td>34.019741</td>\n",
" <td>-118.480247</td>\n",
" <td>Taco Place</td>\n",
" </tr>\n",
" <tr>\n",
" <th>160</th>\n",
" <td>Santa Monica</td>\n",
" <td>34.023413</td>\n",
" <td>-118.481666</td>\n",
" <td>The Chestnut Club</td>\n",
" <td>34.024216</td>\n",
" <td>-118.485936</td>\n",
" <td>Cocktail Bar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>161</th>\n",
" <td>Santa Monica</td>\n",
" <td>34.023413</td>\n",
" <td>-118.481666</td>\n",
" <td>Memorial Park Tennis Courts</td>\n",
" <td>34.021049</td>\n",
" <td>-118.481452</td>\n",
" <td>Tennis Court</td>\n",
" </tr>\n",
" <tr>\n",
" <th>162</th>\n",
" <td>Santa Monica</td>\n",
" <td>34.023413</td>\n",
" <td>-118.481666</td>\n",
" <td>IRON Fitness</td>\n",
" <td>34.026909</td>\n",
" <td>-118.479188</td>\n