From 36662ed9afffec57bc3ed0c79bccd3126d933fde Mon Sep 17 00:00:00 2001 From: itsGarrin Date: Sun, 5 Nov 2023 19:28:17 -0500 Subject: ZESTY AHHHHHHHHHH --- Clustering.ipynb | 703 ++++++++++++++++++++++++++++++++++++++++++++++++++++ List A.csv | 63 +++++ List B.csv | 37 +++ List C.csv | 34 +++ List D.csv | 39 +++ List E.csv | 3 + ZestySalesman.ipynb | 208 ++++++++++++++++ utils.py | 10 + 8 files changed, 1097 insertions(+) create mode 100644 Clustering.ipynb create mode 100644 List A.csv create mode 100644 List B.csv create mode 100644 List C.csv create mode 100644 List D.csv create mode 100644 List E.csv create mode 100644 ZestySalesman.ipynb create mode 100644 utils.py diff --git a/Clustering.ipynb b/Clustering.ipynb new file mode 100644 index 0000000..4bb7721 --- /dev/null +++ b/Clustering.ipynb @@ -0,0 +1,703 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 248, + "id": "initial_id", + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2023-11-06T00:18:48.861074Z", + "start_time": "2023-11-06T00:18:48.853531Z" + } + }, + "outputs": [], + "source": [ + "import folium\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "from scipy.cluster.hierarchy import dendrogram, linkage\n", + "from scipy.cluster.hierarchy import fcluster\n", + "from sklearn.metrics import silhouette_score\n", + "from sklearn.cluster import KMeans\n", + "import utils" + ] + }, + { + "cell_type": "code", + "execution_count": 249, + "outputs": [], + "source": [ + "# Load the data\n", + "ListA = pd.read_csv('List A.csv')\n", + "ListB = pd.read_csv('List B.csv')\n", + "ListC = pd.read_csv('List C.csv')\n", + "ListD = pd.read_csv('List D.csv')" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:18:49.113478Z", + "start_time": "2023-11-06T00:18:49.101708Z" + } + }, + "id": "bb6f57eef695cf76" + }, + { + "cell_type": "code", + "execution_count": 250, + "outputs": [ + { + "data": { + "text/plain": " name gps \\\n0 521 Commercial Street #525 42.3688272,-71.0553792 \n1 Acorn St 42.3576234,-71.0688746 \n2 Arlington's Great Meadows 42.4299758,-71.2038948 \n3 Arthur Fiedler Statue 42.3565057,-71.0754527 \n4 BU Beach 42.3511927,-71.1060828 \n.. ... ... \n33 The Quiet Few 42.3670906,-71.0359889 \n34 The Tall Ship Boston 42.3649544,-71.0414523 \n35 Toasted Flats 42.3711266,-71.0371343 \n36 Vega Market 42.3891835,-71.033703 \n37 Winthrop High School 42.3803348,-70.9799864 \n\n googleUrl \\\n0 https://maps.google.com/maps?q=+%4042.3688272,... \n1 https://maps.google.com/maps?q=+%4042.3576234,... \n2 https://maps.google.com/maps?q=+%4042.4299758,... \n3 https://maps.google.com/maps?q=+%4042.3565057,... \n4 https://maps.google.com/maps?q=+%4042.3511927,... \n.. ... \n33 https://maps.google.com/maps?q=+%4042.3670906,... \n34 https://maps.google.com/maps?q=+%4042.3649544,... \n35 https://maps.google.com/maps?q=+%4042.3711266,... \n36 https://maps.google.com/maps?q=+%4042.3891835,... \n37 https://maps.google.com/maps?q=+%4042.3803348,... \n\n originalUrl info types \\\n0 https://www.google.com/maps/place/521+Commerci... NaN NaN \n1 https://www.google.com/maps/place/Acorn+St/dat... NaN NaN \n2 https://www.google.com/maps/place/Arlington's+... NaN NaN \n3 https://www.google.com/maps/place/Arthur+Fiedl... NaN NaN \n4 https://www.google.com/maps/place/BU+Beach/dat... NaN NaN \n.. ... ... ... \n33 https://www.google.com/maps/place/The+Quiet+Fe... NaN NaN \n34 https://www.google.com/maps/place/The+Tall+Shi... NaN NaN \n35 https://www.google.com/maps/place/Toasted+Flat... NaN NaN \n36 https://www.google.com/maps/place/Vega+Market/... NaN NaN \n37 https://www.google.com/maps/place/Winthrop+Hig... NaN NaN \n\n address \\\n0 NaN \n1 NaN \n2 Minuteman Commuter Bikeway, Lexington, MA 0242... \n3 Charles River Esplanades, Boston, MA 02114, Un... \n4 270 Bay State Rd, Boston, MA 02215, United States \n.. ... \n33 331 Sumner St, East Boston, MA 02128, United S... \n34 1 E Pier Dr, Boston, MA 02128, United States \n35 53 Chelsea St, Boston, MA 02128, United States \n36 29 Maverick St, Chelsea, MA 02150, United States \n37 400 Main St, Winthrop, MA 02152, United States \n\n description type \\\n0 NaN NaN \n1 NaN NaN \n2 183-acres of wet meadows & uplands with trails... Nature preserve \n3 NaN Sculpture \n4 A sloping, grassy plaza on the university grou... Park \n.. ... ... \n33 NaN Bar \n34 Laid-back waterside tall ship with tables doli... Lounge \n35 Snug eatery whipping up health-conscious flatb... Sandwich shop \n36 NaN Grocery store \n37 NaN High school \n\n phone website \\\n0 NaN NaN \n1 NaN NaN \n2 +1 781-863-5385 http://www.foagm.org/ \n3 +1 617-332-2433 http://helmicksculpture.com/portfolio/arthur-f... \n4 NaN https://www.bu.edu/today/2009/icons-among-us-t... \n.. ... ... \n33 +1 617-561-1061 https://www.thequietfew.com/ \n34 +1 617-307-7714 https://www.tallshipboston.com/ \n35 +1 857-264-8531 https://toastedflats.com/ \n36 NaN NaN \n37 +1 617-846-5505 https://www.winthrop.k12.ma.us/Domain/99 \n\n ratingsAverage ratingsTotal plusCode list \n0 NaN NaN NaN A \n1 NaN NaN NaN A \n2 4.6 171.0 CQHW+XC Lexington, Massachusetts, USA A \n3 4.6 14.0 9W4F+JR Boston, Massachusetts, USA A \n4 4.5 133.0 9V2V+FH Boston, Massachusetts, USA A \n.. ... ... ... ... \n33 4.7 257.0 9X87+RJ East Boston, Boston, MA, USA D \n34 4.2 549.0 9X75+XC Boston, Massachusetts, USA D \n35 4.7 372.0 9XC7+F4 Boston, Massachusetts, USA D \n36 4.8 5.0 9XQ8+MG Chelsea, Massachusetts, USA D \n37 NaN NaN 92JC+42 Winthrop, Massachusetts, USA D \n\n[169 rows x 15 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namegpsgoogleUrloriginalUrlinfotypesaddressdescriptiontypephonewebsiteratingsAverageratingsTotalplusCodelist
0521 Commercial Street #52542.3688272,-71.0553792https://maps.google.com/maps?q=+%4042.3688272,...https://www.google.com/maps/place/521+Commerci...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNA
1Acorn St42.3576234,-71.0688746https://maps.google.com/maps?q=+%4042.3576234,...https://www.google.com/maps/place/Acorn+St/dat...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNA
2Arlington's Great Meadows42.4299758,-71.2038948https://maps.google.com/maps?q=+%4042.4299758,...https://www.google.com/maps/place/Arlington's+...NaNNaNMinuteman Commuter Bikeway, Lexington, MA 0242...183-acres of wet meadows & uplands with trails...Nature preserve+1 781-863-5385http://www.foagm.org/4.6171.0CQHW+XC Lexington, Massachusetts, USAA
3Arthur Fiedler Statue42.3565057,-71.0754527https://maps.google.com/maps?q=+%4042.3565057,...https://www.google.com/maps/place/Arthur+Fiedl...NaNNaNCharles River Esplanades, Boston, MA 02114, Un...NaNSculpture+1 617-332-2433http://helmicksculpture.com/portfolio/arthur-f...4.614.09W4F+JR Boston, Massachusetts, USAA
4BU Beach42.3511927,-71.1060828https://maps.google.com/maps?q=+%4042.3511927,...https://www.google.com/maps/place/BU+Beach/dat...NaNNaN270 Bay State Rd, Boston, MA 02215, United StatesA sloping, grassy plaza on the university grou...ParkNaNhttps://www.bu.edu/today/2009/icons-among-us-t...4.5133.09V2V+FH Boston, Massachusetts, USAA
................................................
33The Quiet Few42.3670906,-71.0359889https://maps.google.com/maps?q=+%4042.3670906,...https://www.google.com/maps/place/The+Quiet+Fe...NaNNaN331 Sumner St, East Boston, MA 02128, United S...NaNBar+1 617-561-1061https://www.thequietfew.com/4.7257.09X87+RJ East Boston, Boston, MA, USAD
34The Tall Ship Boston42.3649544,-71.0414523https://maps.google.com/maps?q=+%4042.3649544,...https://www.google.com/maps/place/The+Tall+Shi...NaNNaN1 E Pier Dr, Boston, MA 02128, United StatesLaid-back waterside tall ship with tables doli...Lounge+1 617-307-7714https://www.tallshipboston.com/4.2549.09X75+XC Boston, Massachusetts, USAD
35Toasted Flats42.3711266,-71.0371343https://maps.google.com/maps?q=+%4042.3711266,...https://www.google.com/maps/place/Toasted+Flat...NaNNaN53 Chelsea St, Boston, MA 02128, United StatesSnug eatery whipping up health-conscious flatb...Sandwich shop+1 857-264-8531https://toastedflats.com/4.7372.09XC7+F4 Boston, Massachusetts, USAD
36Vega Market42.3891835,-71.033703https://maps.google.com/maps?q=+%4042.3891835,...https://www.google.com/maps/place/Vega+Market/...NaNNaN29 Maverick St, Chelsea, MA 02150, United StatesNaNGrocery storeNaNNaN4.85.09XQ8+MG Chelsea, Massachusetts, USAD
37Winthrop High School42.3803348,-70.9799864https://maps.google.com/maps?q=+%4042.3803348,...https://www.google.com/maps/place/Winthrop+Hig...NaNNaN400 Main St, Winthrop, MA 02152, United StatesNaNHigh school+1 617-846-5505https://www.winthrop.k12.ma.us/Domain/99NaNNaN92JC+42 Winthrop, Massachusetts, USAD
\n

169 rows × 15 columns

\n
" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Combine the two lists and add a column to indicate the list\n", + "ListA['list'] = 'A'\n", + "ListB['list'] = 'B'\n", + "ListC['list'] = 'C'\n", + "ListD['list'] = 'D'\n", + "\n", + "TotalList = pd.concat([ListA, ListB, ListC, ListD])\n", + "display(TotalList)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:18:49.364284Z", + "start_time": "2023-11-06T00:18:49.351342Z" + } + }, + "id": "dc434958d5e4a3a8" + }, + { + "cell_type": "code", + "execution_count": 251, + "outputs": [], + "source": [ + "# Remove all columns but name and gps\n", + "TotalList = TotalList[['name', 'gps', 'list']]" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:18:49.785140Z", + "start_time": "2023-11-06T00:18:49.779600Z" + } + }, + "id": "2873c16423fe3119" + }, + { + "cell_type": "code", + "execution_count": 252, + "outputs": [], + "source": [ + "# Convert the gps column to a list of lists for k-means\n", + "TotalList['gps'] = TotalList['gps'].apply(lambda x: x.strip('[]').split(','))\n", + "TotalList['gps'] = TotalList['gps'].apply(lambda x: [float(i) for i in x])" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:18:50.022174Z", + "start_time": "2023-11-06T00:18:50.008422Z" + } + }, + "id": "29f9155ef8d75fda" + }, + { + "cell_type": "code", + "execution_count": 253, + "outputs": [ + { + "data": { + "text/plain": " name gps list\n0 521 Commercial Street #525 [42.3688272, -71.0553792] A\n1 Acorn St [42.3576234, -71.0688746] A\n2 Arlington's Great Meadows [42.4299758, -71.2038948] A\n3 Arthur Fiedler Statue [42.3565057, -71.0754527] A\n4 BU Beach [42.3511927, -71.1060828] A\n.. ... ... ...\n33 The Quiet Few [42.3670906, -71.0359889] D\n34 The Tall Ship Boston [42.3649544, -71.0414523] D\n35 Toasted Flats [42.3711266, -71.0371343] D\n36 Vega Market [42.3891835, -71.033703] D\n37 Winthrop High School [42.3803348, -70.9799864] D\n\n[169 rows x 3 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namegpslist
0521 Commercial Street #525[42.3688272, -71.0553792]A
1Acorn St[42.3576234, -71.0688746]A
2Arlington's Great Meadows[42.4299758, -71.2038948]A
3Arthur Fiedler Statue[42.3565057, -71.0754527]A
4BU Beach[42.3511927, -71.1060828]A
............
33The Quiet Few[42.3670906, -71.0359889]D
34The Tall Ship Boston[42.3649544, -71.0414523]D
35Toasted Flats[42.3711266, -71.0371343]D
36Vega Market[42.3891835, -71.033703]D
37Winthrop High School[42.3803348, -70.9799864]D
\n

169 rows × 3 columns

\n
" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(TotalList)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:18:50.242086Z", + "start_time": "2023-11-06T00:18:50.237892Z" + } + }, + "id": "a03a7c5dacebddd0" + }, + { + "cell_type": "markdown", + "source": [ + "# Dendrogram" + ], + "metadata": { + "collapsed": false + }, + "id": "72e85d219be8c635" + }, + { + "cell_type": "code", + "execution_count": 254, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB9gAAANcCAYAAAAU0nQ9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACaPUlEQVR4nOzdfZzVdZ3//+fAMMOAOl4loiGSJaJoIlSC60Wl5GXbuptslmZh6Y2yJfNboqVIFqaGWhtelIZuqVSaqaHGlpgmVhJ2oeamqSCCKCmYjMDA+f3hjfk5cuGbYeAMzP1+u53bjfnM5/M5r3OYaWsfvN+nplKpVAIAAAAAAAAArFWXag8AAAAAAAAAAJsCgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAYBMyadKk1NTU5MEHH1zt948++ujsuuuurY7tuuuuOemkkzb8cBvAtGnTUlNTk5/85Cdveu5JJ520ymtvT2PHjk1NTU3x+ffee2+OO+647Lzzzqmrq0tjY2OGDRuWyy+/PK+88krLeRv67+frX/96brnllg1y76eeeio1NTWZNGnSBrl/yXOvfHTr1i3bbbdd3vWud+Xzn/98Hn744Y0+0+tt6J9HAAAAqkNgBwAA2Mz99Kc/zVe+8pVqj7HBfeUrX8lPf/rTao+RJDn33HNz0EEHZc6cOfnqV7+aqVOn5sYbb8z73//+jB07Nl/+8pc32iwbMrD37t0706dPz1FHHbVB7l/itNNOy/Tp03PPPffkf/7nf/KhD30ot956a975znfmoosuqtpcAAAAbJ5qqz0AAAAAG9agQYPa7V6VSiWvvvpqGhoa1us+TU1N632PN9ptt93a9X5t9eMf/zjjxo3LyJEj893vfrfVqvcjjjgiX/ziFzN9+vQqTrj+li9fnubm5tTX12f//fev6iy77LJLqxmOPPLInH766Tn22GPzxS9+MQMHDswRRxxRxQnX7PXv44bWXr+7AAAAnZ0V7AAAAJu51W1BvmjRopxxxhnp169f6urqsvPOO2f06NGtti5Pkpqamnz2s5/NFVdckQEDBqS+vj7XXnttkuS8887Le97znmy77bbZaqutst9+++Xqq69OpVJZ5fmPPvro3HzzzRk0aFC6d++e8847L0kyZ86cfPrTn06fPn1SV1eXnXbaKf/xH/+R5557rtU9li1blrPPPjs77bRTttpqqxx66KF57LHHWp2zui25V6xYkW9/+9vZd99909DQkK233jr7779/br311pZzJk+enOHDh6d3795paGjIgAEDcuaZZ67yXpQaN25cttlmm3zrW99a7ZbyW265ZYYPH77G61d+DMBTTz3V6vjK7fKnTZvWcmzmzJk5+uijs8MOO6S+vj477bRTjjrqqDzzzDNJXvv7e+WVV3Lttde2bKV+yCGHtFw/b968nHLKKXnrW9+aurq69OvXL+edd16am5tbzlm5FfuFF16Y888/P/369Ut9fX3uvvvu1W4Rv3Ir/Ycffjgf+chH0tjYmF69euWTn/xkFi5c2Oo1vfTSSxk5cmS23XbbbLHFFjnqqKPy97//PTU1NRk7duybv9lr0NDQkKuvvjrdunVbZRX7urzmiy++OBMmTEi/fv2yxRZbZOjQoXnggQdWeb5Jkyalf//+qa+vz4ABA3Ldddetcs7a3sckufXWWzN06ND06NEjW265ZQ477LDV/kOMn/3sZ9lnn31SX1+ft73tbbnssstW+/EF7fm7e/vtt2fQoEEtvx+33357y+seMGBAevbsmXe/+91r/OgKAACAzYkV7AAAAJuglStf3+iNgWx1Fi9enIMPPjjPPPNMzjrrrOyzzz55+OGHc8455+TPf/5z/vd//7dVrLvlllty77335pxzzsmOO+6YHXbYIclrwfCUU07JLrvskiR54IEHctppp2XOnDk555xzWj3nH/7whzz66KP58pe/nH79+qVnz56ZM2dO3vWud2XZsmUtcyxYsCB33XVXXnzxxfTq1avl+rPOOisHHHBAvve972XRokX50pe+lGOOOSaPPvpounbtusbXetJJJ+UHP/hBRo4cmXHjxqWuri5/+MMfWsXrv/3tbznyyCMzevTo9OzZM3/961/zjW98I7/73e/yq1/96k3fz9ebO3du/vKXv2TEiBHp0aPHOl27rl555ZUcdthh6devX77zne+kV69emTdvXu6+++68/PLLSZLp06fnfe97X9773ve2fEzAVlttleS10Pzud787Xbp0yTnnnJPddtst06dPz/nnn5+nnnoq3//+91s937e+9a3svvvuufjii7PVVlvlHe94x1rn+/d///eMGDEiI0eOzJ///OeMGTMmSXLNNdckee0fPxxzzDF58MEHM3bs2Oy3336ZPn16Dj/88HZ5f3baaacMHjw4999/f5qbm1NbW7vOr/k73/lO9thjj1x66aVJXvsYgiOPPDJPPvlkGhsbk7wWmT/xiU/kX//1X/PNb34zCxcuzNixY7NkyZJ06bLquobVvY/XX399PvrRj2b48OG54YYbsmTJklx44YU55JBD8stf/jL/8i//kiS58847c+yxx+aggw7K5MmT09zcnIsvvniVf5CyUnv87v7xj3/MmDFjcvbZZ6exsTHnnXdejj322IwZMya//OUv8/Wvfz01NTX50pe+lKOPPjpPPvmkVfIAAMDmrQIAAMAm4/vf/34lyVofffv2bXVN3759Kx//+Mdbvh4/fnylS5culd///vetzvvJT35SSVKZMmVKy7EklcbGxso//vGPtc61fPnyyrJlyyrjxo2rbLfddpUVK1a0ev6uXbtWHnvssVbXfPKTn6x069at8sgjj6zxvnfffXclSeXII49sdfxHP/pRJUll+vTpLcc+/vGPt3rtv/71rytJKmefffZaZ3+9FStWVJYtW1a55557Kkkqf/zjH1u+d+6551be7H9GP/DAA5UklTPPPLP4Od/497Py7/jJJ59sdd7K9+Luu++uVCqVyoMPPlhJUrnlllvWev+ePXu2uv9Kp5xySmWLLbaoPP30062OX3zxxZUklYcffrhSqVQqTz75ZCVJZbfddqssXbq01bkrv/f973+/5djK9+nCCy9sde6oUaMq3bt3b/nZ+PnPf15JUrn88stbnTd+/PhKksq555671te18rkvuuiiNZ4zYsSISpLKc88916bXvPfee1eam5tbzvvd735XSVK54YYbKpXKaz/3O+20U2W//fZr9TP/1FNPVbp169bq53FN7+PKe+y9996V5cuXtxx/+eWXKzvssENl2LBhLcfe9a53Vfr06VNZsmRJq/O22267VX422+t3t6GhofLMM8+0HHvooYcqSSq9e/euvPLKKy3Hb7nllkqSyq233rrW5wMAANjU2SIeAABgE3Tdddfl97///SqPlStd1+b222/PwIEDs++++6a5ubnl8YEPfGCVLciT5H3ve1+22WabVe7zq1/9KoceemgaGxvTtWvXdOvWLeecc04WLFiQ+fPntzp3n332ye67797q2B133JH3vve9GTBgwJvO/MEPfnCV+yXJ008/vcZr7rjjjiTJZz7zmbXe++9//3uOP/747Ljjji2v4+CDD06SPProo286W7W8/e1vzzbbbJMvfelLueKKK/LII4+s0/W333573vve92annXZq9XOw8vPK77nnnlbnf/CDH0y3bt2K77+6v7NXX3215Wdj5f2PO+64Vud95CMfWafXsTaVN+zosK6v+aijjmq1Q8Ibf+4ee+yxPPvsszn++ONb7frQt2/fDBs2bLUzvfF9XHmPE044odWK9y222CL//u//ngceeCCLFy/OK6+8kgcffDAf+tCHUldX1+q8Y445ZrXP1R6/u/vuu2923nnnlq9X/r4ecsghrXZpWHl8bb+TAAAAmwNbxAMAAGyCBgwYkCFDhqxyvLGxMbNnz17rtc8991wef/zxNcbSF154odXXvXv3XuWc3/3udxk+fHgOOeSQfPe73235POtbbrklX/va19LU1PSm93j++efz1re+da2zrrTddtu1+rq+vj5JVnmeN96/a9eu2XHHHdd4zj//+c8ceOCB6d69e84///zsvvvu6dGjR2bPnp1jjz12rfdfnZVbbj/55JPrdF1bNDY25p577snXvva1nHXWWXnxxRfTu3fvfOpTn8qXv/zlN43hzz33XG677bb1+jlYmzf7O1uwYEFqa2uz7bbbtjrv9R8NsL6efvrp1NfXtzzHur7mkteQZLU/YzvuuGOrjyJY6Y3v48p7rO793WmnnbJixYq8+OKLqVQqqVQqq31/1vSetcfv7hv/flbG/TUdf/XVV1c7CwAAwOZCYAcAAOhktt9++zQ0NLR8Fvbqvv96r1+Zu9KNN96Ybt265fbbb0/37t1bjt9yyy2rvefq7vGWt7wlzzzzzDpMvm7e8pa3ZPny5Zk3b94a4/CvfvWrPPvss5k2bVrLqvUkeemll9r0nL17987ee++dX/ziF1m8eHGbPod95fu5ZMmSVsffGH+TZO+9986NN96YSqWSP/3pT5k0aVLGjRuXhoaGnHnmmWt9nu233z777LNPvva1r632+zvttFOrr1f3d7g+tttuuzQ3N+cf//hHq1g7b968drn/nDlzMmPGjBx88MGprX3t//2xrq/5zawM8KubeU2v443v48p7zJ07d5Vzn3322XTp0iXbbLNNKpVKampqVvt566XPlaz77y4AAACt2SIeAACgkzn66KPzxBNPZLvttsuQIUNWeey6665veo+amprU1ta22j67qakp//M//1M8xxFHHJG77747jz32WFteRtH9k+Tyyy9f4zkrA+TKlckrXXnllW1+3q985St58cUX87nPfW6VLcqT11bN/+IXv1jj9Svf/z/96U+tjt96661rvKampibvfOc7c8kll2TrrbfOH/7wh5bv1dfXr3Yl/tFHH52//OUv2W233Vb7c7CusXldrfwHDZMnT251/MYbb1zvezc1NeXkk09Oc3NzvvjFL7Ycb+/X3L9///Tu3Ts33HBDq7/rp59+Ovfff3/xPXbeeedcf/31re7xyiuv5KabbsrQoUPTo0eP9OzZM0OGDMktt9ySpUuXtpz3z3/+M7fffnvxzO3xuwsAANCZWcEOAADQyYwePTo33XRTDjrooHz+85/PPvvskxUrVmTWrFn5xS9+kS984Qt5z3ves9Z7HHXUUZkwYUKOP/74fPrTn86CBQty8cUXrxKq12bcuHG54447ctBBB+Wss87K3nvvnZdeeil33nlnTj/99Oyxxx7r9ToPPPDAnHDCCTn//PPz3HPP5eijj059fX1mzpyZHj165LTTTsuwYcOyzTbb5NRTT825556bbt265Yc//GH++Mc/tvl5P/zhD+crX/lKvvrVr+avf/1rRo4cmd122y2LFy/Ob3/721x55ZUZMWJEhg8fvtrr3/Wud6V///4544wz0tzcnG222SY//elPc99997U67/bbb8/EiRPzoQ99KG9729tSqVRy880356WXXsphhx3Wct7ee++dadOm5bbbbkvv3r2z5ZZbpn///hk3blymTp2aYcOG5XOf+1z69++fV199NU899VSmTJmSK664ongL/7Y4/PDDc8ABB+QLX/hCFi1alMGDB2f69Om57rrrkqTV55GvzaxZs/LAAw9kxYoVWbhwYWbOnJlrrrkmTz/9dL75zW+2ep/b+zV36dIlX/3qV3PyySfn3/7t3/KpT30qL730UsaOHbvWjyZ44z0uvPDCfPSjH83RRx+dU045JUuWLMlFF12Ul156KRdccEGr+Y866qh84AMfyH/9139l+fLlueiii7LFFlvkH//4R9HztcfvLgAAQGcmsAMAAHQyPXv2zL333psLLrggV111VZ588sk0NDRkl112yaGHHlq0gv1973tfrrnmmnzjG9/IMccck5133jmf+tSnssMOO2TkyJFFc+y888753e9+l3PPPTcXXHBBFixYkLe85S35l3/5l1U+37mtJk2alP322y9XX311Jk2alIaGhuy5554566yzkry2PffPf/7zfOELX8jHPvax9OzZM//6r/+ayZMnZ7/99mvz844bNy6HHnpovv3tb+fss8/OCy+8kIaGhuy11145/fTTc8opp6zx2q5du+a2227LZz/72Zx66qmpr6/Pf/7nf+a///u/c9RRR7Wc9453vCNbb711Lrzwwjz77LOpq6tL//79M2nSpHz84x9vOe+yyy7LZz7zmfznf/5nFi9enIMPPjjTpk1L79698+CDD+arX/1qLrroojzzzDPZcsst069fvxx++OHZZptt2vz6S3Tp0iW33XZbvvCFL+SCCy7I0qVLc8ABB+QHP/hB9t9//2y99dZF9/n2t7+db3/72+natWu22mqrvO1tb8sxxxyTT33qU9lzzz1bnbshXvPKn/dvfOMbOfbYY7PrrrvmrLPOyj333JNp06YV3eP4449Pz549M378+IwYMSJdu3bN/vvvn7vvvjvDhg1rOe/www/PTTfdlHPOOScjRozIjjvumFGjRuXZZ58tXoHeHr+7AAAAnVlNZXX71QEAAABUwfXXX5+PfvSj+c1vftMqLrN6y5Yty7777pudd955rR89AAAAQPuwgh0AAACoihtuuCFz5szJ3nvvnS5duuSBBx7IRRddlIMOOkhcX4ORI0fmsMMOS+/evTNv3rxcccUVefTRR3PZZZdVezQAAIBOQWAHAAAAqmLLLbfMjTfemPPPPz+vvPJKevfunZNOOinnn39+tUfrsF5++eWcccYZef7559OtW7fst99+mTJlSg499NBqjwYAANAp2CIeAAAAAAAAAAp0qfYAAAAAAAAAALApENgBAAAAAAAAoECn+wz2FStW5Nlnn82WW26Zmpqaao8DAAAAAAAAQJVVKpW8/PLL2WmnndKly5rXqVc9sE+cODEXXXRR5s6dm7322iuXXnppDjzwwNWee9JJJ+Xaa69d5fiee+6Zhx9+uOj5nn322fTp02e9ZgYAAAAAAABg8zN79uy89a1vXeP3ayqVSmUjztPK5MmTc8IJJ2TixIk54IADcuWVV+Z73/teHnnkkeyyyy6r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OCKPPPJIdtlll9Vec9xxx+W5557L1Vdfnbe//e2ZP39+mpubN/LkAAAAAAAAAHQ2VQ3sEyZMyMiRI3PyyScnSS699NLcddddufzyyzN+/PhVzr/zzjtzzz335O9//3u23XbbJMmuu+66MUcGAAAAAAAAoJOq2hbxS5cuzYwZMzJ8+PBWx4cPH577779/tdfceuutGTJkSC688MLsvPPO2X333XPGGWekqalpjc+zZMmSLFq0qNUDAAAAAAAAANZV1Vawv/DCC1m+fHl69erV6nivXr0yb9681V7z97//Pffdd1+6d++en/70p3nhhRcyatSo/OMf/1jj57CPHz8+5513XrvPDwAAAAAAAEDnUrUV7CvV1NS0+rpSqaxybKUVK1akpqYmP/zhD/Pud787Rx55ZCZMmJBJkyatcRX7mDFjsnDhwpbH7Nmz2/01AAAAAAAAALD5q9oK9u233z5du3ZdZbX6/PnzV1nVvlLv3r2z8847p7GxseXYgAEDUqlU8swzz+Qd73jHKtfU19envr6+fYcHAAAAAAAAoNOp2gr2urq6DB48OFOnTm11fOrUqRk2bNhqrznggAPy7LPP5p///GfLsf/7v/9Lly5d8ta3vnWDzgsAAAAAAABA51bVLeJPP/30fO9738s111yTRx99NJ///Ocza9asnHrqqUle2979xBNPbDn/+OOPz3bbbZdPfOITeeSRR/LrX/86/+///b988pOfTENDQ7VeBgAAAAAAAACdQNW2iE+SESNGZMGCBRk3blzmzp2bgQMHZsqUKenbt2+SZO7cuZk1a1bL+VtssUWmTp2a0047LUOGDMl2222X4447Lueff361XgIAAAAAAAAAnURVA3uSjBo1KqNGjVrt9yZNmrTKsT322GOVbeUBAAAAAAAAYEOr6hbxAAAAAAAAALCpENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMA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AABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoMB6BfalS5fmscceS3Nzc3vNAwAAAAAAAAAdUpsC++LFizNy5Mj06NEje+21V2bNmpUk+dznPpcLLrigXQcEAAAAAAAAgI6gTYF9zJgx+eMf/5hp06ale/fuLccPPfTQTJ48ud2GAwAAAAAAAICOorYtF91yyy2ZPHly9t9//9TU1LQc33PPPfPEE0+023AAAAAAAAAA0FG0aQX7888/nx122GGV46+88kqr4A4AAAAAAAAAm4s2BfZ3vetd+fnPf97y9cqo/t3vfjdDhw5tn8kAAAAAAAAAoANp0xbx48ePz+GHH55HHnkkzc3Nueyyy/Lwww9n+vTpueeee9p7RgAAAAAAAACoujatYB82bFh+85vfZPHixdltt93yi1/8Ir169cr06dMzePDg9p4RAAAAAAAAAKquTSvYk2TvvffOtdde256zAAAAAAAAAECH1aYV7FOmTMldd921yvG77rord9xxx3oPBQAAAAAAAAAdTZsC+5lnnpnly5evcrxSqeTMM89c76EAAAAAAAAAoKNpU2D/29/+lj333HOV43vssUcef/zx9R4KAAAAAAAAADqaNgX2xsbG/P3vf1/l+OOPP56ePXuu91AAAAAAAAAA0NG0KbB/8IMfzOjRo/PEE0+0HHv88cfzhS98IR/84AfbbTgAAAAAAAAA6CjaFNgvuuii9OzZM3vssUf69euXfv36ZcCAAdluu+1y8cUXt/eMAAAAAAAAAFB1tW25qLGxMffff3+mTp2aP/7xj2loaMg+++yTgw46qL3nAwAAAAAAAIAOoU2BPUlqamoyfPjwDB8+vD3nAQAAAAAAAIAOqc2B/Ze//GV++ctfZv78+VmxYkWr711zzTXrPRgAAAAAAAAAdCRtCuznnXdexo0blyFDhqR3796pqalp77kAAAAAAAAAoENpU2C/4oorMmnSpJxwwgntPQ8AAAAAAAAAdEhd2nLR0qVLM2zYsPaeBQAAAAAAAAA6rDYF9pNPPjnXX399e88CAAAAAAAAAB1Wm7aIf/XVV3PVVVflf//3f7PPPvukW7durb4/YcKEdhkOAAAAAAAAADqKNgX2P/3pT9l3332TJH/5y19afa+mpma9hwIAAAAAAACAjqZN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4MGDZeDAgfL9739fbr75Zhk4cKAMHjxYVq1alRDe0o54qTdBPnPy4xmVVXz/Yfny5VJZWSlDhgyRSy65RG6//XY5/fTTZfTo0bJr166M/1622pJs9HVFgn02nm+CmoPKKi1Sr7zySsK/jh07NnwdbfLkyQ1fr127Vk899VRt3ry5VlRU6PLlyxPirqmp0W7dumnz5s314osv1i1btjT8rG/fvjFhf/nLX2qHDh20c+fOOn36dO3SpYuOHj1aO3furA8++GBW020JX1JSor1799Zf//rXum3btoS44s2dO1fbtWunHTp00Orqau3fv7+ecsop2rZtW50/f35M2Hnz5mnnzp21srJSmzVrpuecc4726NFD+/fvr59++qlj/Hv37tWXXnpJf/WrX+lDDz2k8+bNS5umeDU1NZ7TrGrLE2vclvDWcrdcU9aysaTbkg5V1bfeekvLy8t14MCBOmbMGB09erQOGDBAy8vL9c0334wJO2zYMP3iiy9UVXXGjBl6/PHH65gxY7SiokJ/97vfJcRtqZclJSVaUVER869x48ZaUVGhJ5xwQkLcyXTu3Dnhe9Y8scRvyZORI0fqQw89pIsWLdKxY8fq4MGDddeuXaqq+pWvfCWjdESsWrVKN23apKqq//znP/Xpp5/WRYsWJYSztK9ODhw4oEuWLNGdO3cm/Owf//iH249hvqYs9bKyslLXrVuny5Yt0zZt2uh7772nqqqrV6/WPn36uE6jqur27dtdh3UqG0u71qtXr4avhwwZosuWLVNV1XXr1iWUjaX+qtrqgvUasaTF0jZkeq1GTJo0KenPXn311YZ71+uvv66TJk3SF154wVW8tbW1umTJkoa6HG/fvn362WefJXz//fffT/jezp07dcqUKXr33Xfr3XffrVOmTNEdO3Yk/duff/65/upXv9IbbrhBb7nlFn3qqad07969rtIdEX/PjrDkiSXds2bN0v3795vSGC1VOe7bt08PHToU8xnuuusunTlzZsbpsMStejhPIu3G9u3b9cUXX9QPPvggafzWso+WLk/cXn+pJLtOLGEteWJJt7VsoqWrv9Z0Z9KWqKYuy2TclE2qz+mlTgZVltY2zW06gq7vfrTFqs5laYnbSzvltt0Jup65vU6CHgu7zRNr/9UaPlqq/Mu0j5Qqbutziui/N2HCBJ04caJu3LhRH3jgAb3ooovS/n6EUz/aUpbWvrF1zG9JtzVuyz3EkifWsrT00y35bR2TW65va12w1Elr/nm5r7ote0vZdOvWTe+//37t2bOnHnvssTpx4kT98MMPk6bBS5sZsWLFCp0yZYouXbrU8edBPYezPgceMmSIzpw5U59++mnt0qWLTp06VVVVX3zxRT333HNTfsZ4J598csz/g3yOaW3XnDzxxBOuP1uyZx9e7jlBjXHiuelrOEnWj3bbL8mkfxRh+Zxexgqqqlu3bo35v6UNHDhwoGN79Pzzz2v//v1jvmdtR6zta1DPnLyEz3TcFxHff6iqqtLq6mpVPdw23Xjjjbpv3z694447dOzYsY5xHDx4UKurq3XatGk6bdo0ra6u1oMHDyaE89KWuB2LeOnr+pGHyZ6Nh2EMaglr7TsEOQdlTUsm7Xy8op1gLykp0cGDB+vQoUMb/jVv3lyHDh2qw4YNiwkbfcP91re+pQ899JCqqr7wwgt6zjnnJMR91lln6csvv6xbt27VO++8U0855ZSGgo+fjDr11FN1+/btun79ei0rK9O1a9eqquqWLVu0Z8+eWU23JXyvXr30hRde0FGjRmmLFi30sssu09deey0hzogBAwZoTU2Nvv7669q2bVudO3euqqouXLhQzzjjjIR0RCrtO++8o1deeaWqqj7++ON64YUXJsSdSYc6WnzjZkmzNU+scVvzL8JNuVuvKUvZWNJtSYfq4UnIyMRjtHfffTdmok81duKvqqpK169fr6qHbxKVlZUJcVjq5aRJk3TkyJG6bt26hu9VVFQkxKnqfCOJ/Gvfvn1CeGueWOK35En8oOOnP/2p9u/fX3fu3Ok4ILF+TkuH0NK+qtoGgV4nk91cU5Z6GR22vLw85mdOn9EyYLSWjaVdix6sn3766TE/i88TS/1VtdUF6zViSYulbbCmQ1X14YcfTvjXrl27hq+j3XLLLVpZWak9evTQe++9V3v16qW33nqr9uvXT++4446EuG+77baGr2tqavTYY4/V7t27a/v27RsGQhHz5s3To446Stu0aaOnnXaarl69uuFn8dfUiy++qB07dtTLLrtMb7vtNr311lt1zJgx2rFjR33xxRcT0jFjxgzt0qWLXnDBBdq2bVv91re+peedd56Wl5frypUrHfPFidOAxJIn1nQ3atRI27dvrzfddFPaSV5LOaqq9unTp6He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/IsfVDgN5i156PXaVk19/anarpNMrql0eWJNt9dyT1d/M0m3m7bEUpbW/LZ8TmtdCKosLW2aNR1B1ndrui1laY3bkm5r252teqaa+joJcixsyRNr/9US3pJ/1j6S17YhWrLnFOXl5TETURs2bFBVdTypy9qPtpSltW9sGVtY022J23oPseSJtSwt/XRrflvH5G6vb2td8FonoyXLv0zuq+nK3lI21lfQWa4p60RKUM/hrM+bhg8frv/6178Svv/555/rgAEDEr5fUVHheMSwamKdD/I5prWeBbWhzFrPghrjqNruZ5mMW1RT90ss/SPr57TmiWUS0tIGrl69Ws8++2w96qijtGfPntqrVy898sgjddiwYQmvnbD2vazta1DPnKzhrfdsS//h1Vdf1Xbt2mnPnj21Q4cODbvQN27cqFdddVXC71smza1tiWUsYu0bW/LQ2v8Kyxg0yPGqanBzUJa0WMeU6RT1BHvEo48+qqeddlrCUTkRZ511VkwDH9kZuGnTpoRjcFVVx48fr7NmzUr4/owZMxJWC7733nvat29fPe2007Smpka/853vaFlZWcxOy2yl2xLeaRV/KuPGjXPsEK5evTphF+m7776rnTp10rKyMj3xxBMbVut88cUXjivBLBWusrIy6fsl4hs3S5pVbXlijdsS3lru0dJdU5GyadGihauysX5Ot+lQVd28ebOOGzdOW7ZsqS1atNCWLVtqy5Ytddy4cQ2ruKJNnjxZO3XqpM2aNdOSkhJt3bq1Xn311Qnv9FHNrF4uWLBAf/7znzv+7Gc/+1nMYCHavffemzJeN3lijd9tnuzduzfpe1ycXsNgTYelQ2hpX1Vtg0BrJzk+/1q1apX0msqkXtbX1+uiRYscr2tV24DRWjbWtl718A6D5cuX6+LFix3zQvVw/R0/fnxD/Y3U4WT1N1q6umC9RuLTkqotsbQN1nRE7N69WydMmKBjxozRLVu2JO1sfu1rX9MHH3xQ77nnHu3du7fef//9umXLFp0yZYpj+9qpU6eGFe/xi03iH0r06NEjoc7Pnz9fu3Tpoh07doz5/re//W0dN26cLlq0SLds2aJbt27VRYsW6bhx4/Syyy5LSMe5556rU6dO1S1btuivfvUrHT16dMPP4juylnu2NU+s6U7WPqxdu1Z/9KMfJXzfbTmqHt6d8NWvflXnzp2rP//5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2bKlrF69uiH8ddddJ926dWsIAwAAAABANjHBDgAAAACADzZu3Cjf/va3Zfz48bJq1SqZP3++XHzxxaKqIiKye/duueKKK+TNN9+Ud955R04++WQZNWqU7N69Oyaeu+++W8aOHSs1NTVyyimnyH/8x3/I1VdfLT/4wQ9k0aJFIiLyve99L+Z31qxZI88995zMmjVL5syZIzU1NXLttdcmTeudd94pv//97+XRRx+VFStWyE033ST/+Z//KdXV1abPfNddd8mYMWNk+fLlMmrUKPnOd74j27dvFxGRDRs2yMUXXyyjRo2Smpoaueqqq+T222+P+f1//OMfMmLECLn44otl+fLlMmPGDHnrrbcaPt/YsWMb4q2vr5c5c+bIY489Jn/4wx84rh4AAAAAkBMlGhnpAwAAAAAAz5YsWSL9+vWTdevWSXl5edrwBw8elKOOOkqeeeYZ+frXvy4ih3eF33nnnXL33XeLiMg777wjVVVV8uSTT8r48eNFROTZZ5+VcePGyZ49e0Tk8A72e+65R9atWyedOnUSEZE5c+bI+eefL5999pl07NhRrrzyStm5c6fMnDlTamtrpV27djJv3jypqqpqSM9VV10ldXV18swzzzimt6KiQm688Ua58cYbHdNaW1srrVq1ktmzZ8t5550nP/zhD2XmzJmyYsUKKSkpERGR22+/XX7xi1/Ijh075Mgjj5SxY8dKaWmpPPbYYw1/56233pKzzjpLamtrpXnz5rJjxw7p3bu3XHDBBfLiiy/KddddJ3fccYfrcgEAAAAAwE+8gx0AAAAAAB/06dNHvva1r0llZaWMGDFChg8fLpdeeqkcddRRIiKyefNm+fGPfyzz5s2TTZs2ycGDB6Wurk7Wr18fE0/v3r0bvj7mmGNERKSysjLme3v37pVdu3ZJ69atRUSkS5cuDZPrIiJVVVVy6NAh+fDDD6Vjx44x8a9cuVL27t0r5557bsz39+/fL3379jV95ui0tmjRQlq1aiWbN28WEZFVq1bJoEGDGibXI+mKtnjxYlmzZo384Q9/aPieqsqhQ4fk448/lh49eshRRx0lTz75pIwYMUIGDx6csAseAAAAAIBsYoIdAAAAAAAfHHHEEfLaa6/J22+/LX/729/kwQcflDvuuEMWLlwoJ5xwglx55ZWyZcsWmTx5spSXl0uzZs2kqqpK9u/fHxNPkyZNGr6OTE47fe/QoUNJ0xIJEz25HRH5vVdeeUWOP/74mJ81a9bM8pFj0hX5e5H43RyYd+jQIbn66qvl+uuvT/hZly5dGr5+44035IgjjpDPP/9camtrGxYWAAAAAACQbbyDHQAAAAAAn5SUlMgZZ5whd911lyxdulSaNm0qL730koiIvPnmm3L99dfLqFGjpGfPntKsWTPZunWrL393/fr18vnnnzf8f8GCBdKoUSPp1q1bQthTTz1VmjVrJuvXr5euXbvG/OvcubMv6Yn8nXfeeSfme/H/P+2002TFihUJ6ejatas0bdpURETefvtt+eUvfymzZs2S1q1by3XXXedbGgEAAAAAsGIHOwAAAAAAPli4cKHMnTtXhg8fLh06dJCFCxfKli1bpEePHiIi0rVrV5k2bZqcfvrpsmvXLrn11lultLTUl7/dvHlzueKKK+T++++XXbt2yfXXXy9jxoxJOB5eRKRVq1Zyyy23yE033SSHDh2Sr371q7Jr1y55++23pWXLlnLFFVf4kqZrrrlGHnjgAbn55pvl6quvlsWLF8vTTz8dE2bixIkyaNAgufbaa2XChAnSokULWbVqlbz22mvy4IMPyu7du+Xyyy+X6667TkaOHCldunSR008/Xb7+9a/L6NGjfUknAAAAAAAW7GAHAAAAAMAHrVu3ljfeeENGjRol3bp1kzvvvFMeeOABGTlypIiIPPXUU7Jjxw7p27evXH755XL99ddLhw4dfPnbXbt2lYsvvlhGjRolw4cPl169eskjjzySNPzdd98tP/7xj+Xee++VHj16yIgRI2TWrFlywgkn+JIekcNHvP/pT3+SWbNmSZ8+feS3v/2t/OxnP4sJ07t3b6murpbVq1fLmWeeKX379pUf/ehHcuyxx4qIyA033CAtWrRo+L2ePXvKL37xC7nmmmvks88+8y2tAAAAAAC4VaJuXooGAAAAAABCadKkSTJz5kypqanJdVIAAAAAACh47GAHAAAAAAAAAAAAAMAFJtgBAAAAAAAAAAAAAHCBI+IBAAAAAAAAAAAAAHCBHewAAAAAAAAAAAAAALjABDsAAAAAAAAAAAAAAC4wwQ4AAAAAAAAAAAAAgAtMsAMAAAAAAAAAAAAA4AIT7AAAAAAAAAAAAAAAuMAEOwAAAAAAAAAAAAAALjDBDgAAAAAAAAAAAACAC0ywAwAAAAAAAAAAAADgwv8HFUg2ZH0eMrsAAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Create the linkage matrix\n", + "linkage_matrix = linkage(TotalList['gps'].values.tolist(), 'ward')\n", + "\n", + "# Plot the dendrogram\n", + "plt.figure(figsize=(25, 10))\n", + "plt.title('Hierarchical Clustering Dendrogram')\n", + "plt.xlabel('sample index')\n", + "plt.ylabel('distance')\n", + "dendrogram(linkage_matrix, leaf_rotation=90., leaf_font_size=8.)\n", + "plt.show()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:18:51.214742Z", + "start_time": "2023-11-06T00:18:50.736378Z" + } + }, + "id": "9e215df3a350e3cf" + }, + { + "cell_type": "code", + "execution_count": 255, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of clusters: 10\n", + "Silhouette score: 0.4218177237729999\n" + ] + } + ], + "source": [ + "# Set the threshold distance\n", + "threshold_distance = 0.15\n", + "\n", + "# Cut the dendrogram to get cluster labels\n", + "cluster_labels_hc = fcluster(linkage_matrix, t=threshold_distance, criterion='distance')\n", + "\n", + "# Now, you have the number of clusters determined by the dendrogram\n", + "num_clusters = len(np.unique(cluster_labels_hc))\n", + "print(\"Number of clusters:\", num_clusters)\n", + "\n", + "# Calculate the silhouette score to evaluate the clustering\n", + "silhouette_avg = silhouette_score(TotalList['gps'].values.tolist(), cluster_labels_hc)\n", + "print(\"Silhouette score:\", silhouette_avg)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:18:51.241741Z", + "start_time": "2023-11-06T00:18:51.217906Z" + } + }, + "id": "2f52d83746e670d" + }, + { + "cell_type": "markdown", + "source": [ + "# K-means" + ], + "metadata": { + "collapsed": false + }, + "id": "bc97c258908ac38a" + }, + { + "cell_type": "code", + "execution_count": 256, + "outputs": [], + "source": [ + "# Cluster the data using Gaussian Mixture Models\n", + "# Create two centroids, one in the North End and one in the Financial District\n", + "centroids = [[42.364506, -71.054733], [42.358894, -71.056742]]" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:18:54.543675Z", + "start_time": "2023-11-06T00:18:54.540819Z" + } + }, + "id": "45b59d81ae2de84e" + }, + { + "cell_type": "code", + "execution_count": 257, + "outputs": [ + { + "data": { + "text/plain": " name gps list weights\n0 521 Commercial Street #525 [42.3688272, -71.0553792] A 0.016268\n1 Acorn St [42.3576234, -71.0688746] A 0.007206\n2 Arlington's Great Meadows [42.4299758, -71.2038948] A 0.000607\n3 Arthur Fiedler Statue [42.3565057, -71.0754527] A 0.004854\n4 BU Beach [42.3511927, -71.1060828] A 0.001925\n.. ... ... ... ...\n33 The Quiet Few [42.3670906, -71.0359889] D 0.004835\n34 The Tall Ship Boston [42.3649544, -71.0414523] D 0.006736\n35 Toasted Flats [42.3711266, -71.0371343] D 0.004775\n36 Vega Market [42.3891835, -71.033703] D 0.002828\n37 Winthrop High School [42.3803348, -70.9799864] D 0.001269\n\n[169 rows x 4 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namegpslistweights
0521 Commercial Street #525[42.3688272, -71.0553792]A0.016268
1Acorn St[42.3576234, -71.0688746]A0.007206
2Arlington's Great Meadows[42.4299758, -71.2038948]A0.000607
3Arthur Fiedler Statue[42.3565057, -71.0754527]A0.004854
4BU Beach[42.3511927, -71.1060828]A0.001925
...............
33The Quiet Few[42.3670906, -71.0359889]D0.004835
34The Tall Ship Boston[42.3649544, -71.0414523]D0.006736
35Toasted Flats[42.3711266, -71.0371343]D0.004775
36Vega Market[42.3891835, -71.033703]D0.002828
37Winthrop High School[42.3803348, -70.9799864]D0.001269
\n

169 rows × 4 columns

\n
" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Create a weights column that increases as the location gets closer to the centroids\n", + "\n", + "# Compute the distance from each point to each centroid\n", + "TotalList['weights'] = TotalList['gps'].apply(lambda x: [np.linalg.norm(np.array(x) - np.array(centroids[0])), np.linalg.norm(np.array(x) - np.array(centroids[1]))])\n", + "\n", + "# Invert the weights so that the locations closest to the centroids have the highest weights\n", + "TotalList['weights'] = TotalList['weights'].apply(lambda x: [1/i for i in x])\n", + "\n", + "# Sum the weights\n", + "TotalList['weights'] = TotalList['weights'].apply(lambda x: sum(x))\n", + "\n", + "# Normalize the weights\n", + "TotalList['weights'] = TotalList['weights'].apply(lambda x: x/sum(TotalList['weights']))\n", + "\n", + "display(TotalList)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:18:54.970160Z", + "start_time": "2023-11-06T00:18:54.956075Z" + } + }, + "id": "2f2975484d00129c" + }, + { + "cell_type": "code", + "execution_count": 258, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/garrinshieh/anaconda3/lib/python3.11/site-packages/sklearn/cluster/_kmeans.py:1412: FutureWarning: The default value of `n_init` will change from 10 to 'auto' in 1.4. Set the value of `n_init` explicitly to suppress the warning\n", + " super()._check_params_vs_input(X, default_n_init=10)\n", + "/Users/garrinshieh/anaconda3/lib/python3.11/site-packages/sklearn/cluster/_kmeans.py:1412: RuntimeWarning: Explicit initial center position passed: performing only one init in KMeans instead of n_init=10.\n", + " super()._check_params_vs_input(X, default_n_init=10)\n" + ] + } + ], + "source": [ + "kmeans = KMeans(n_clusters=2, init=centroids).fit(TotalList['gps'].values.tolist())" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:18:56.312805Z", + "start_time": "2023-11-06T00:18:56.299246Z" + } + }, + "id": "db1ef4b14a1da5f5" + }, + { + "cell_type": "code", + "execution_count": 259, + "outputs": [], + "source": [ + "# Add the cluster labels to the dataframe\n", + "TotalList['cluster'] = kmeans.labels_" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:18:58.475575Z", + "start_time": "2023-11-06T00:18:58.468594Z" + } + }, + "id": "99891fae96a2fff7" + }, + { + "cell_type": "code", + "execution_count": 260, + "outputs": [ + { + "data": { + "text/plain": " name gps list weights \\\n0 521 Commercial Street #525 [42.3688272, -71.0553792] A 0.016268 \n1 Acorn St [42.3576234, -71.0688746] A 0.007206 \n2 Arlington's Great Meadows [42.4299758, -71.2038948] A 0.000607 \n3 Arthur Fiedler Statue [42.3565057, -71.0754527] A 0.004854 \n4 BU Beach [42.3511927, -71.1060828] A 0.001925 \n.. ... ... ... ... \n33 The Quiet Few [42.3670906, -71.0359889] D 0.004835 \n34 The Tall Ship Boston [42.3649544, -71.0414523] D 0.006736 \n35 Toasted Flats [42.3711266, -71.0371343] D 0.004775 \n36 Vega Market [42.3891835, -71.033703] D 0.002828 \n37 Winthrop High School [42.3803348, -70.9799864] D 0.001269 \n\n cluster \n0 0 \n1 0 \n2 1 \n3 0 \n4 1 \n.. ... \n33 0 \n34 0 \n35 0 \n36 0 \n37 0 \n\n[169 rows x 5 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namegpslistweightscluster
0521 Commercial Street #525[42.3688272, -71.0553792]A0.0162680
1Acorn St[42.3576234, -71.0688746]A0.0072060
2Arlington's Great Meadows[42.4299758, -71.2038948]A0.0006071
3Arthur Fiedler Statue[42.3565057, -71.0754527]A0.0048540
4BU Beach[42.3511927, -71.1060828]A0.0019251
..................
33The Quiet Few[42.3670906, -71.0359889]D0.0048350
34The Tall Ship Boston[42.3649544, -71.0414523]D0.0067360
35Toasted Flats[42.3711266, -71.0371343]D0.0047750
36Vega Market[42.3891835, -71.033703]D0.0028280
37Winthrop High School[42.3803348, -70.9799864]D0.0012690
\n

169 rows × 5 columns

\n
" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Display the dataframe\n", + "display(TotalList)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:18:58.847605Z", + "start_time": "2023-11-06T00:18:58.843691Z" + } + }, + "id": "49fc751352022ad1" + }, + { + "cell_type": "markdown", + "source": [ + "# Map" + ], + "metadata": { + "collapsed": false + }, + "id": "8c46f8ae30caa721" + }, + { + "cell_type": "code", + "execution_count": 261, + "outputs": [], + "source": [ + "# Create a map in Boston\n", + "m = folium.Map(location=[42.3601, -71.0589], zoom_start=12)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:19:00.620249Z", + "start_time": "2023-11-06T00:19:00.612951Z" + } + }, + "id": "48d76bd40c44cc61" + }, + { + "cell_type": "code", + "execution_count": 262, + "outputs": [], + "source": [ + "# Plot the centroids on the map\n", + "for i in range(len(centroids)):\n", + " folium.Marker(centroids[i], popup='Centroid ' + str(i), icon=folium.Icon(color='black')).add_to(m)\n", + " \n", + "# Add the points to the map with different colors for each cluster\n", + "for i, row in TotalList.iterrows():\n", + " if row['cluster'] == 0:\n", + " folium.Marker([row['gps'][0], row['gps'][1]], popup=row['name'], icon=folium.Icon(color='red')).add_to(m)\n", + " elif row['cluster'] == 1:\n", + " folium.Marker([row['gps'][0], row['gps'][1]], popup=row['name'], icon=folium.Icon(color='blue')).add_to(m)\n", + " elif row['cluster'] == 2:\n", + " folium.Marker([row['gps'][0], row['gps'][1]], popup=row['name'], icon=folium.Icon(color='green')).add_to(m)\n", + " elif row['cluster'] == 3:\n", + " folium.Marker([row['gps'][0], row['gps'][1]], popup=row['name'], icon=folium.Icon(color='purple')).add_to(m)\n", + " elif row['cluster'] == 4:\n", + " folium.Marker([row['gps'][0], row['gps'][1]], popup=row['name'], icon=folium.Icon(color='orange')).add_to(m)\n", + " elif row['cluster'] == 5:\n", + " folium.Marker([row['gps'][0], row['gps'][1]], popup=row['name'], icon=folium.Icon(color='darkred')).add_to(m)\n", + " elif row['cluster'] == 6:\n", + " folium.Marker([row['gps'][0], row['gps'][1]], popup=row['name'], icon=folium.Icon(color='lightred')).add_to(m)\n", + " elif row['cluster'] == 7:\n", + " folium.Marker([row['gps'][0], row['gps'][1]], popup=row['name'], icon=folium.Icon(color='beige')).add_to(m)\n", + " elif row['cluster'] == 8:\n", + " folium.Marker([row['gps'][0], row['gps'][1]], popup=row['name'], icon=folium.Icon(color='darkblue')).add_to(m)\n", + " elif row['cluster'] == 9:\n", + " folium.Marker([row['gps'][0], row['gps'][1]], popup=row['name'], icon=folium.Icon(color='lightblue')).add_to(m)\n", + " elif row['cluster'] == 10:\n", + " folium.Marker([row['gps'][0], row['gps'][1]], popup=row['name'], icon=folium.Icon(color='cadet')).add_to(m)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:19:01.125434Z", + "start_time": "2023-11-06T00:19:01.109369Z" + } + }, + "id": "3c8a7d2b34d4f22d" + }, + { + "cell_type": "code", + "execution_count": 263, + "outputs": [ + { + "data": { + "text/plain": "", + "text/html": "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + }, + "execution_count": 263, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Display the map\n", + "m" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:19:02.155307Z", + "start_time": "2023-11-06T00:19:02.145235Z" + } + }, + "id": "d6941d1f0a203ee7" + }, + { + "cell_type": "code", + "execution_count": 264, + "outputs": [ + { + "data": { + "text/plain": "0 106\n1 63\nName: cluster, dtype: int64" + }, + "execution_count": 264, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Display the number of locations in each cluster\n", + "TotalList['cluster'].value_counts()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:19:05.516139Z", + "start_time": "2023-11-06T00:19:05.510902Z" + } + }, + "id": "479ba8f36cdafbf8" + }, + { + "cell_type": "code", + "execution_count": 244, + "outputs": [], + "source": [ + "# create a method to move n number of locations from the largest cluster to the smallest cluster, taking distance into account\n", + "def equalize_clusters(df, n):\n", + " # Get the number of locations in each cluster\n", + " cluster_counts = df['cluster'].value_counts()\n", + " \n", + " # Get the largest and smallest clusters\n", + " largest_cluster = cluster_counts.index[0]\n", + " smallest_cluster = cluster_counts.index[-1]\n", + " \n", + " # Get the locations in the largest cluster\n", + " largest_cluster_locations = df[df['cluster'] == largest_cluster]\n", + " \n", + " # Get the locations in the smallest cluster\n", + " smallest_cluster_locations = df[df['cluster'] == smallest_cluster]\n", + " \n", + " # Create a list of distances from each location in the largest cluster to each location in the smallest cluster\n", + " distances = []\n", + " for i, row in largest_cluster_locations.iterrows():\n", + " for j, row2 in smallest_cluster_locations.iterrows():\n", + " distances.append([i, j, np.linalg.norm(np.array(row['gps']) - np.array(row2['gps']))])\n", + " \n", + " # Sort the distances by distance\n", + " distances.sort(key=lambda x: x[2])\n", + " \n", + " # Move the n closest locations from the largest cluster to the smallest cluster\n", + " for i in range(n):\n", + " df.loc[distances[i][0], 'cluster'] = smallest_cluster\n", + " df.loc[distances[i][1], 'cluster'] = largest_cluster\n", + " \n", + " return df" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-05T23:51:40.761645Z", + "start_time": "2023-11-05T23:51:40.752184Z" + } + }, + "id": "4b79215a12bf36e2" + }, + { + "cell_type": "code", + "execution_count": 245, + "outputs": [ + { + "data": { + "text/plain": "0 97\n1 72\nName: cluster, dtype: int64" + }, + "execution_count": 245, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Equalize the clusters\n", + "TotalList = equalize_clusters(TotalList, 20)\n", + "\n", + "# Display the number of locations in each cluster\n", + "TotalList['cluster'].value_counts()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-05T23:51:41.510095Z", + "start_time": "2023-11-05T23:51:41.434643Z" + } + }, + "id": "176d5f92130c67b8" + }, + { + "cell_type": "code", + "execution_count": 267, + "outputs": [ + { + "data": { + "text/plain": "0 106\n1 63\nName: cluster, dtype: int64" + }, + "execution_count": 267, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "TotalList['cluster'].value_counts()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:20:43.543111Z", + "start_time": "2023-11-06T00:20:43.529364Z" + } + }, + "id": "1b8e5c1793fb2feb" + }, + { + "cell_type": "code", + "execution_count": 265, + "outputs": [ + { + "data": { + "text/plain": "'-71.0553792,42.3688272;-71.0688746,42.3576234;-71.2038948,42.4299758;-71.0754527,42.3565057;-71.1060828,42.3511927;-71.0969274,42.3446263;-71.130887,42.35304;-71.0620802,42.3579151;-71.1459593,42.3501823;-71.0586014,42.357357;-71.0572023,42.3587627;-71.0556268,42.36521;-71.1460435,42.3495825;-71.1217152,42.3426377;-71.0720926,42.3489004;-71.067859,42.3500079;-71.0632036,42.3556154;-71.1258765,42.331864;-71.1095021,42.3364675;-71.133103,42.3890049;-71.0620134,42.3248471;-71.0851891,42.3500031;-71.1123834,42.3360385;-71.066414,42.354296;-71.2273649,42.3145041;-71.0834061,42.341987;-71.0992038,42.3306454;-71.0990577,42.3381442;-71.0569649,42.3604952;-71.0949218,42.3419564;-71.0942861,42.3413301;-71.0498714,42.3256817;-71.0908104,42.329969;-71.0616035,42.3537983;-71.0359433,42.3485465;-71.0913583,42.3490205;-71.1000217,42.3323776;-71.1241295,42.3518397;-71.1618052,42.3245965;-71.0638101,42.3587772;-71.1625829,42.340795;-71.167854,42.4107892;-71.155555,42.3317473;-71.1227278,42.3965778;-71.3598149,42.3140229;-71.1126695,42.3836229;-71.0555003,42.3640137;-71.119149,42.3884;-71.0712561,42.3407613;-71.0561781,42.3668968;-71.0664019,42.3554589;-71.059228,42.359349;-71.0668408,42.3524116;-71.0872846,42.2961434;-71.062146,42.366198;-71.1427371,42.3433772;-71.1438455,42.3569102;-71.0651214,42.3553972;-71.0596124,42.3509517;-71.0359354,42.3478381;-71.1313443,42.3525708;-71.1284677,42.3631904;-71.061757,42.3691906;-71.119301,42.388547;-71.097883,42.381008;-71.1107166,42.3741209;-71.0609962,42.3803747;-71.0516339,42.3609921;-71.1194344,42.3754427;-71.0809932,42.3675275;-71.0545357,42.3597994;-71.1013044,42.3627462;-71.1108423,42.3838224;-71.1026937,42.3820702;-71.1189467,42.373465;-71.1208817,42.3732344;-71.0342146,42.316274;-71.0756902,42.3695046;-71.0678704,42.3701829;-71.0968274,42.3799095;-71.0656594,42.3718401;-71.094048,42.339381;-71.1854722,42.3621177;-71.1146697,42.3782386;-71.0935443,42.3817274;-71.0611749,42.3551807;-71.0906355,42.3616095;-71.1161887,42.3766442;-71.0962734,42.3627993;-71.1155576,42.3784629;-71.0949101,42.3797674;-71.1087411,42.3640287;-71.0554239,42.3739796;-71.09476,42.37736;-71.1014951,42.3614115;-71.1024769,42.3822934;-71.1011111,42.3636597;-71.0631664,42.3741694;-71.056823,42.361531;-71.0632852,42.2857047;-71.0637877,42.2845163;-71.0496839,42.3519736;-71.0454645,42.3162356;-71.0336324,42.3441918;-71.0487437,42.3508756;-71.0512911,42.3521821;-71.0013637,42.2075316;-71.0607764,42.3763541;-71.0374911,42.316031;-71.0125206,42.3378699;-71.0672898,42.3523158;-71.02832,42.2576602;-71.0502126,42.3516479;-71.0331956,42.3639107;-71.0432778,42.3528151;-71.0035279,42.2392354;-71.0470633,42.3537343;-71.0352443,42.3291218;-71.0898829,42.3463992;-71.0240951,42.2743442;-71.0234949,42.3358743;-70.985881,42.420226;-71.0005483,42.2454086;-71.0096371,42.3367603;-71.0447796,42.3509709;-71.0983169,42.3319001;-71.0092883,42.2763168;-71.0404428,42.3478375;-71.056908,42.361288;-71.0667744,42.3270498;-71.0119933,42.2806539;-71.0618764,42.4074484;-71.0612182,42.3986053;-71.0392667,42.3855456;-71.0515875,42.4025721;-70.9903023,42.3917606;-71.055873,42.4206339;-71.0433886,42.4222989;-71.06088,42.3761612;-71.0412802,42.3936888;-71.0714924,42.3968978;-71.0282154,42.3778389;-71.0350852,42.3809511;-71.0331398,42.3734483;-70.9693867,42.3895122;-71.0945712,42.3253252;-71.0280157,42.398422;-71.0155516,42.4114215;-70.993656,42.4110462;-71.0355621,42.3976519;-71.0056995,42.390191;-71.0589219,42.403759;-71.037937,42.3698284;-71.0386285,42.3903823;-71.0316196,42.4122481;-71.0328839,42.3861321;-71.0270609,42.4213082;-71.0366491,42.391236;-71.0361399,42.3649623;-71.0116946,42.3827415;-70.9973058,42.4183123;-71.1122037,42.4008442;-70.997123,42.390501;-71.0506461,42.41826;-71.0359889,42.3670906;-71.0414523,42.3649544;-71.0371343,42.3711266;-71.033703,42.3891835;-70.9799864,42.3803348;'" + }, + "execution_count": 265, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "utils.list_to_string(TotalList['gps'].values.tolist())" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:19:09.317992Z", + "start_time": "2023-11-06T00:19:09.308541Z" + } + }, + "id": "2d83e5db093608d2" + }, + { + "cell_type": "code", + "execution_count": 268, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "106\n" + ] + }, + { + "data": { + "text/plain": "'-71.0553792,42.3688272;-71.0688746,42.3576234;-71.0754527,42.3565057;-71.0620802,42.3579151;-71.0586014,42.357357;-71.0572023,42.3587627;-71.0556268,42.36521;-71.0720926,42.3489004;-71.067859,42.3500079;-71.0632036,42.3556154;-71.0620134,42.3248471;-71.066414,42.354296;-71.0569649,42.3604952;-71.0498714,42.3256817;-71.0616035,42.3537983;-71.0359433,42.3485465;-71.0638101,42.3587772;-71.0555003,42.3640137;-71.0712561,42.3407613;-71.0561781,42.3668968;-71.0664019,42.3554589;-71.059228,42.359349;-71.0668408,42.3524116;-71.062146,42.366198;-71.0651214,42.3553972;-71.0596124,42.3509517;-71.0359354,42.3478381;-71.061757,42.3691906;-71.0609962,42.3803747;-71.0516339,42.3609921;-71.0809932,42.3675275;-71.0545357,42.3597994;-71.0342146,42.316274;-71.0756902,42.3695046;-71.0678704,42.3701829;-71.0656594,42.3718401;-71.0611749,42.3551807;-71.0554239,42.3739796;-71.0631664,42.3741694;-71.056823,42.361531;-71.0632852,42.2857047;-71.0637877,42.2845163;-71.0496839,42.3519736;-71.0454645,42.3162356;-71.0336324,42.3441918;-71.0487437,42.3508756;-71.0512911,42.3521821;-71.0013637,42.2075316;-71.0607764,42.3763541;-71.0374911,42.316031;-71.0125206,42.3378699;-71.0672898,42.3523158;-71.02832,42.2576602;-71.0502126,42.3516479;-71.0331956,42.3639107;-71.0432778,42.3528151;-71.0035279,42.2392354;-71.0470633,42.3537343;-71.0352443,42.3291218;-71.0240951,42.2743442;-71.0234949,42.3358743;-70.985881,42.420226;-71.0005483,42.2454086;-71.0096371,42.3367603;-71.0447796,42.3509709;-71.0092883,42.2763168;-71.0404428,42.3478375;-71.056908,42.361288;-71.0667744,42.3270498;-71.0119933,42.2806539;-71.0618764,42.4074484;-71.0612182,42.3986053;-71.0392667,42.3855456;-71.0515875,42.4025721;-70.9903023,42.3917606;-71.055873,42.4206339;-71.0433886,42.4222989;-71.06088,42.3761612;-71.0412802,42.3936888;-71.0714924,42.3968978;-71.0282154,42.3778389;-71.0350852,42.3809511;-71.0331398,42.3734483;-70.9693867,42.3895122;-71.0280157,42.398422;-71.0155516,42.4114215;-70.993656,42.4110462;-71.0355621,42.3976519;-71.0056995,42.390191;-71.0589219,42.403759;-71.037937,42.3698284;-71.0386285,42.3903823;-71.0316196,42.4122481;-71.0328839,42.3861321;-71.0270609,42.4213082;-71.0366491,42.391236;-71.0361399,42.3649623;-71.0116946,42.3827415;-70.9973058,42.4183123;-70.997123,42.390501;-71.0506461,42.41826;-71.0359889,42.3670906;-71.0414523,42.3649544;-71.0371343,42.3711266;-71.033703,42.3891835;-70.9799864,42.3803348;'" + }, + "execution_count": 268, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Return the list of locations in each cluster\n", + "print(len(TotalList[TotalList['cluster'] == 0]['gps'].values.tolist()))\n", + "utils.list_to_string(TotalList[TotalList['cluster'] == 0]['gps'].values.tolist())" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:25:20.703565Z", + "start_time": "2023-11-06T00:25:20.690483Z" + } + }, + "id": "89297f77828e8ed8" + }, + { + "cell_type": "code", + "execution_count": 269, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "63\n" + ] + }, + { + "data": { + "text/plain": "'-71.2038948,42.4299758;-71.1060828,42.3511927;-71.0969274,42.3446263;-71.130887,42.35304;-71.1459593,42.3501823;-71.1460435,42.3495825;-71.1217152,42.3426377;-71.1258765,42.331864;-71.1095021,42.3364675;-71.133103,42.3890049;-71.0851891,42.3500031;-71.1123834,42.3360385;-71.2273649,42.3145041;-71.0834061,42.341987;-71.0992038,42.3306454;-71.0990577,42.3381442;-71.0949218,42.3419564;-71.0942861,42.3413301;-71.0908104,42.329969;-71.0913583,42.3490205;-71.1000217,42.3323776;-71.1241295,42.3518397;-71.1618052,42.3245965;-71.1625829,42.340795;-71.167854,42.4107892;-71.155555,42.3317473;-71.1227278,42.3965778;-71.3598149,42.3140229;-71.1126695,42.3836229;-71.119149,42.3884;-71.0872846,42.2961434;-71.1427371,42.3433772;-71.1438455,42.3569102;-71.1313443,42.3525708;-71.1284677,42.3631904;-71.119301,42.388547;-71.097883,42.381008;-71.1107166,42.3741209;-71.1194344,42.3754427;-71.1013044,42.3627462;-71.1108423,42.3838224;-71.1026937,42.3820702;-71.1189467,42.373465;-71.1208817,42.3732344;-71.0968274,42.3799095;-71.094048,42.339381;-71.1854722,42.3621177;-71.1146697,42.3782386;-71.0935443,42.3817274;-71.0906355,42.3616095;-71.1161887,42.3766442;-71.0962734,42.3627993;-71.1155576,42.3784629;-71.0949101,42.3797674;-71.1087411,42.3640287;-71.09476,42.37736;-71.1014951,42.3614115;-71.1024769,42.3822934;-71.1011111,42.3636597;-71.0898829,42.3463992;-71.0983169,42.3319001;-71.0945712,42.3253252;-71.1122037,42.4008442;'" + }, + "execution_count": 269, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(len(TotalList[TotalList['cluster'] == 1]['gps'].values.tolist()))\n", + "utils.list_to_string(TotalList[TotalList['cluster'] == 1]['gps'].values.tolist())" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:25:30.097229Z", + "start_time": "2023-11-06T00:25:30.070409Z" + } + }, + "id": "6ff82e29a0366d9e" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false + }, + "id": "7949bddd34b6731" + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/List A.csv b/List A.csv new file mode 100644 index 0000000..4dd2740 --- /dev/null +++ b/List A.csv @@ -0,0 +1,63 @@ +"name","gps","googleUrl","originalUrl","info","types","address","description","type","phone","website","ratingsAverage","ratingsTotal","plusCode" +"521 Commercial Street #525","42.3688272,-71.0553792","https://maps.google.com/maps?q=+%4042.3688272,-71.0553792","https://www.google.com/maps/place/521+Commercial+Street+%23525/data=!4m2!3m1!1s0x89e3708b7c0cc279:0x830a6b01bee7c342","","",,,,,,,, +"Acorn St","42.3576234,-71.0688746","https://maps.google.com/maps?q=+%4042.3576234,-71.0688746","https://www.google.com/maps/place/Acorn+St/data=!4m2!3m1!1s0x89e3709e95846785:0x761f3c71d935f788","","",,,,,,,, +"Arlington's Great Meadows","42.4299758,-71.2038948","https://maps.google.com/maps?q=+%4042.4299758,-71.2038948","https://www.google.com/maps/place/Arlington's+Great+Meadows/data=!4m2!3m1!1s0x89e39d8d8094a345:0x1e425bc22244080","","","Minuteman Commuter Bikeway, Lexington, MA 02420, United States","183-acres of wet meadows & uplands with trails for viewing an array of plants & wildlife.","Nature preserve","+1 781-863-5385","http://www.foagm.org/",4.6,171,"CQHW+XC Lexington, Massachusetts, USA" +"Arthur Fiedler Statue","42.3565057,-71.0754527","https://maps.google.com/maps?q=+%4042.3565057,-71.0754527","https://www.google.com/maps/place/Arthur+Fiedler+Statue/data=!4m2!3m1!1s0x89e37192ce32ad1d:0xf4baa5bff5f6c2b7","","","Charles River Esplanades, Boston, MA 02114, United States",,"Sculpture","+1 617-332-2433","http://helmicksculpture.com/portfolio/arthur-fiedler-memorial/",4.6,14,"9W4F+JR Boston, Massachusetts, USA" +"BU Beach","42.3511927,-71.1060828","https://maps.google.com/maps?q=+%4042.3511927,-71.1060828","https://www.google.com/maps/place/BU+Beach/data=!4m2!3m1!1s0x89e379f0807dd4f1:0x7cba04ed5ba6288d","","","270 Bay State Rd, Boston, MA 02215, United States","A sloping, grassy plaza on the university grounds, featuring trees, a sculpture & paved pathways.","Park",,"https://www.bu.edu/today/2009/icons-among-us-the-bu-beach/",4.5,133,"9V2V+FH Boston, Massachusetts, USA" +"Blaze Pizza","42.3446263,-71.0969274","https://maps.google.com/maps?q=+%4042.3446263,-71.0969274","https://www.google.com/maps/place/Blaze+Pizza/data=!4m2!3m1!1s0x89e37a1e014633ab:0x29c2a8d0efe0c0e2","","","1282 Boylston St #122, Boston, MA 02215, United States","Hip counter-serve pizzeria dishing up crispy, thin-crust pies made with creative toppings & sauces.","Pizza restaurant","+1 617-297-9585","https://locations.blazepizza.com/ma/boston/1282-boylston-st.?utm_source=gmb&utm_medium=yext",4.5,1535,"8WV3+V6 Boston, Massachusetts, USA" +"Bonchon Allston","42.35304,-71.130887","https://maps.google.com/maps?q=+%4042.35304,-71.130887","https://www.google.com/maps/place/Bonchon+Allston/data=!4m2!3m1!1s0x89e379c509b15c13:0x331fab1ee153854f","","","123 Brighton Ave, Boston, MA 02134, United States","Casual chain serving cooked-to-order Korean fried chicken, plus other traditional eats.","Asian fusion restaurant","+1 617-254-8888","http://allstonma.bonchon.com/",4.3,1490,"9V39+6J Boston, Massachusetts, USA" +"Boston Athenaeum","42.3579151,-71.0620802","https://maps.google.com/maps?q=+%4042.3579151,-71.0620802","https://www.google.com/maps/place/Boston+Athenaeum/data=!4m2!3m1!1s0x89e3709b541ff13b:0x1586d285058646c9","","","10-1/2 Beacon St, Boston, MA 02108, United States","Stately 1807 library & museum featuring art galleries, guided tours, readings & more.","Library","+1 617-227-0270","https://www.bostonathenaeum.org/",4.4,101,"9W5Q+55 Boston, Massachusetts, USA" +"Boston Green Academy","42.3501823,-71.1459593","https://maps.google.com/maps?q=+%4042.3501823,-71.1459593","https://www.google.com/maps/place/Boston+Green+Academy/data=!4m2!3m1!1s0x405c5c8f3b2a0803:0xef2bad50fa4c93f5","","","20 Warren St, Brighton, MA 02135, United States",,"High school","+1 617-635-9860","http://www.bostongreenacademy.org/",3.9,15,"9V23+3J Brighton, Boston, MA, USA" +"Boston Irish Famine Memorial","42.357357,-71.0586014","https://maps.google.com/maps?q=+%4042.357357,-71.0586014","https://www.google.com/maps/place/Boston+Irish+Famine+Memorial/data=!4m2!3m1!1s0x89e370847e3048af:0x14beebdf83ded4cd","","","Boston, MA 02108, United States","Snug park along the Freedom Trail commemorating the 1845 Irish potato famine with statues & plaques.","Tourist attraction",,"https://irishfaminememorials.com/2014/01/16/boston-massachusetts-1998/",4.5,296,"9W4R+WH Boston, Massachusetts, USA" +"Boston Massacre Site","42.3587627,-71.0572023","https://maps.google.com/maps?q=+%4042.3587627,-71.0572023","https://www.google.com/maps/place/Boston+Massacre+Site/data=!4m2!3m1!1s0x89e370843637780d:0x9a57b8839473736b","","","Corner of State and, Congress St, Boston, MA 02109, United States","Cobblestone ring marking the site of the 1770 civilian massacre & Revolutionary War precursor.","Historical landmark","+1 617-357-8300","http://www.bostonmassacre.net/",4.6,1364,"9W5V+G4 Boston, Massachusetts, USA" +"Bova's Bakery","42.36521,-71.0556268","https://maps.google.com/maps?q=+%4042.36521,-71.0556268","https://www.google.com/maps/place/Bova's+Bakery/data=!4m2!3m1!1s0x89e370894b870f49:0xb5b16033eb824803","","","134 Salem St, Boston, MA 02113, United States","Family-owned bakeshop, opened in 1932, offering up breads, cookies & sandwiches 24 hours a day.","Bakery","+1 617-523-5601","http://bovabakeryboston.net/",4.7,3216,"9W8V+3P Boston, Massachusetts, USA" +"Brighton High School","42.3495825,-71.1460435","https://maps.google.com/maps?q=+%4042.3495825,-71.1460435","https://www.google.com/maps/place/Brighton+High+School/data=!4m2!3m1!1s0x89e3783548f7355d:0xcde15ed9a845e60a","","","25 Warren St, Brighton, MA 02135, United States",,"High school","+1 617-635-9873","https://www.brightonhighschool.org/",4.1,13,"8VX3+RH Brighton, Boston, MA, USA" +"Brookline Booksmith","42.3426377,-71.1217152","https://maps.google.com/maps?q=+%4042.3426377,-71.1217152","https://www.google.com/maps/place/Brookline+Booksmith/data=!4m2!3m1!1s0x89e379bfdb681bc1:0x279c60f655491995","","","279 Harvard St, Brookline, MA 02446, United States","Established independent bookshop offering new & used titles, plus gifts, over 2 floors.","Book store","+1 617-566-6660","http://www.brooklinebooksmith.com/",4.8,698,"8VVH+38 Brookline, Massachusetts, USA" +"Citrus & Salt Boston","42.3489004,-71.0720926","https://maps.google.com/maps?q=+%4042.3489004,-71.0720926","https://www.google.com/maps/place/Citrus+%26+Salt+Boston/data=!4m2!3m1!1s0x89e37a733f730323:0x15aa8305203333fa","","","142 Berkeley St, Boston, MA 02116, United States","Creative Baja Coast-inspired Mexican eats & cocktails in beach-y dining room with edgy rear lounge.","Mexican restaurant","+1 617-424-6711","https://www.citrusandsaltboston.com/",4.3,1311,"8WXH+H5 Boston, Massachusetts, USA" +"Cocoanut Grove Memorial Plaque","42.3500079,-71.067859","https://maps.google.com/maps?q=+%4042.3500079,-71.067859","https://www.google.com/maps/place/Cocoanut+Grove+Memorial+Plaque/data=!4m2!3m1!1s0x89e37b5eeae83b79:0xc4a2bfd90109941f","","","1-13 Piedmont St, Boston, MA 02116, United States",,"Cultural landmark",,"http://www.cocoanutgrove.org/",5,1,"9W2J+2V Boston, Massachusetts, USA" +"Commodore John Barry Memorial","42.3556154,-71.0632036","https://maps.google.com/maps?q=+%4042.3556154,-71.0632036","https://www.google.com/maps/place/Commodore+John+Barry+Memorial/data=!4m2!3m1!1s0x89e371ffbf29d28b:0xf9261ca5dc08d043","","","Station, Boston, MA 02108, United States",,"Historical landmark",,"https://www.boston.gov/parks/boston-common",,,"9W4P+6P Boston, Massachusetts, USA" +"Cypress Street Playground","42.331864,-71.1258765","https://maps.google.com/maps?q=+%4042.331864,-71.1258765","https://www.google.com/maps/place/Cypress+Street+Playground/data=!4m2!3m1!1s0x89e379a4744ada5d:0x4eb92303782a841c","","","224-298 Davis Ave, Brookline, MA 02445, United States",,"Park","+1 617-730-2069","https://www.brooklinerec.com/Facilities/Facility/Details/Cypress-Street-Playground-33",4.2,72,"8VJF+PJ Brookline, Massachusetts, USA" +"Dana-Farber Cancer Institute","42.3364675,-71.1095021","https://maps.google.com/maps?q=+%4042.3364675,-71.1095021","https://www.google.com/maps/place/Dana-Farber+Cancer+Institute/data=!4m2!3m1!1s0x89e3798de681fccd:0x28872ef16d5e4f18","","","450 Brookline Ave, Boston, MA 02215, United States",,"Cancer treatment center","+1 617-632-3000","https://www.dana-farber.org/?utm_source=google&utm_medium=organic&utm_content=mainprofile&utm_campaign=googlemybusiness",4,203,"8VPR+H5 Boston, Massachusetts, USA" +"Danehy Park","42.3890049,-71.133103","https://maps.google.com/maps?q=+%4042.3890049,-71.133103","https://www.google.com/maps/place/Danehy+Park/data=!4m2!3m1!1s0x89e3770c0d0fe659:0x3d5badfad5bd6e3f","","","99 Sherman St, Cambridge, MA 02138, United States","50-acre green space with activities such as softball & soccer, plus paths for jogging & a dog park.","Park",,"http://www.cambridgema.gov/",4.7,1103,"9VQ8+JQ Cambridge, Massachusetts, USA" +"Dave's Hot Chicken","42.3248471,-71.0620134","https://maps.google.com/maps?q=+%4042.3248471,-71.0620134","https://www.google.com/maps/place/Dave's+Hot+Chicken/data=!4m2!3m1!1s0x89e37b5223b23a59:0x27bc1f6b7cf38959","","","10 District Ave C10, Boston, MA 02210, United States",,"Chicken restaurant","+1 857-871-4810","https://www.daveshotchicken.com/location/boston-ma-district-ave-opening-soon/",4.7,235,"8WFQ+W5 Boston, Massachusetts, USA" +"Domingo F. Sarmiento Statue","42.3500031,-71.0851891","https://maps.google.com/maps?q=+%4042.3500031,-71.0851891","https://www.google.com/maps/place/Domingo+F.+Sarmiento+Statue/data=!4m2!3m1!1s0x89e37bb7991fe6bd:0x682e8beb27c268a3","","","Boston, MA 02115, United States",,"Historical landmark",,"https://friendsofthepublicgarden.org/our-parks/the-mall/",5,1,"9W27+2W Boston, Massachusetts, USA" +"Dutch House","42.3360385,-71.1123834","https://maps.google.com/maps?q=+%4042.3360385,-71.1123834","https://www.google.com/maps/place/Dutch+House/data=!4m2!3m1!1s0x89e37991087a3c07:0x91d0ecb3ead2f5f4","","","20 Netherlands Rd, Brookline, MA 02445, United States",,"Historical landmark",,,5,3,"8VPQ+C2 Brookline, Massachusetts, USA" +"Earl of Sandwich","42.354296,-71.066414","https://maps.google.com/maps?q=+%4042.354296,-71.066414","https://www.google.com/maps/place/Earl+of+Sandwich/data=!4m2!3m1!1s0x89e3709e5eea01cd:0xc7afc8d371e394af","","","Boston Common, 1B Charles St S, Boston, MA 02114, United States","Chain outpost offering a variety of hot sandwiches, wraps, salads & an array of desserts.","Sandwich shop","+1 617-426-1395","https://locations.earlofsandwichusa.com/us/ma/boston/1b-charles-street?utm_source=yext&utm_medium=organic&y_source=1_OTMzNzQxOS03MTUtbG9jYXRpb24ud2Vic2l0ZQ%3D%3D",4.2,182,"9W3M+PC Boston, Massachusetts, USA" +"Echo Bridge","42.3145041,-71.2273649","https://maps.google.com/maps?q=+%4042.3145041,-71.2273649","https://www.google.com/maps/place/Echo+Bridge/data=!4m2!3m1!1s0x89e3823ab501db77:0x3cf2969ea45f926f","","","Newton, MA 02464, United States","Grand, landmark brick & granite aqueduct bridge with giant arches, constructed in 1876.","Bridge",,,4.8,135,"8Q7F+R3 Newton, Massachusetts, USA" +"Farmers Horse Coffee","42.341987,-71.0834061","https://maps.google.com/maps?q=+%4042.341987,-71.0834061","https://www.google.com/maps/place/Farmers+Horse+Coffee/data=!4m2!3m1!1s0x89e37a17311cda13:0x292f421690b03464","","","374 Massachusetts Ave, Boston, MA 02115, United States","Ethiopian coffee & rich pastries fortify laptop warriors at this brick-walled, art-filled cafe.","Coffee shop","+1 617-866-7771","https://farmershorsecoffee.com/",4.6,405,"8WR8+QJ Boston, Massachusetts, USA" +"Fenway High School","42.3306454,-71.0992038","https://maps.google.com/maps?q=+%4042.3306454,-71.0992038","https://www.google.com/maps/place/Fenway+High+School/data=!4m2!3m1!1s0x89e37a1cec244e11:0xf82abbec69b234c3","","","67 Alleghany St, Boston, MA 02120, United States",,"High school","+1 617-635-9911","http://www.fenwayhs.org/",4.2,12,"8WJ2+78 Boston, Massachusetts, USA" +"Isabella Stewart Gardner Museum","42.3381442,-71.0990577","https://maps.google.com/maps?q=+%4042.3381442,-71.0990577","https://www.google.com/maps/place/Isabella+Stewart+Gardner+Museum/data=!4m2!3m1!1s0x89e3798a92d68549:0xdac5a0cd0f233abd","","","25 Evans Way, Boston, MA 02115, United States","Evocative of a 15th-century Venetian palace, this museum houses a world-class art collection.","Art museum","+1 617-566-1401","https://www.gardnermuseum.org/",4.7,7877,"8WQ2+79 Boston, Massachusetts, USA" +"James Michael Curley Statues","42.3604952,-71.0569649","https://maps.google.com/maps?q=+%4042.3604952,-71.0569649","https://www.google.com/maps/place/James+Michael+Curley+Statues/data=!4m2!3m1!1s0x89e37176168f3987:0xb338a323bb38332e","","","Congress St @, North St, Boston, MA 02108, United States",,"Statuary",,,5,1,"9W6V+56 Boston, Massachusetts, USA" +"James P. Kelleher Rose Garden","42.3419564,-71.0949218","https://maps.google.com/maps?q=+%4042.3419564,-71.0949218","https://www.google.com/maps/place/James+P.+Kelleher+Rose+Garden/data=!4m2!3m1!1s0x89e37a1facd5dbab:0xf1a96278c3168914","","","73 Park Dr, Boston, MA 02215, United States","Small, charming garden with a variety of rose bushes, plus statues, a fountain & arched trellises.","Garden","+1 617-522-2700","https://www.boston.gov/departments/parks-and-recreation/improvements-james-p-kelleher-rose-garden",4.5,311,"8WR4+Q2 Boston, Massachusetts, USA" +"Japanese Bell","42.3413301,-71.0942861","https://maps.google.com/maps?q=+%4042.3413301,-71.0942861","https://www.google.com/maps/place/Japanese+Bell/data=!4m2!3m1!1s0x89e37b10ecc82803:0x8297662e5fdd7cbb","","","Boston, MA 02215, United States",,"Historical landmark",,,4.5,4,"8WR4+G7 Boston, Massachusetts, USA" +"Joe Moakley Park","42.3256817,-71.0498714","https://maps.google.com/maps?q=+%4042.3256817,-71.0498714","https://www.google.com/maps/place/Joe+Moakley+Park/data=!4m2!3m1!1s0x89e37af61fc7c3f3:0xc532af20cba8c575","","","1005 Columbia Rd, Boston, MA 02127, United States","This urban park features baseball & soccer fields, a spray area & a jogging track.","Park","+1 617-635-4505","https://www.boston.gov/departments/parks-and-recreation",4.4,1154,"8XG2+73 Boston, Massachusetts, USA" +"John Eliot Square","42.329969,-71.0908104","https://maps.google.com/maps?q=+%4042.329969,-71.0908104","https://www.google.com/maps/place/John+Eliot+Square/data=!4m2!3m1!1s0x89e37a25fb367ac5:0x184ccce8f0d897b9","","","45 John Eliot Sq, Boston, MA 02119, United States",,"City park","+1 617-635-4505","https://www.boston.gov/departments/parks-and-recreation",4.2,39,"8WH5+XM Boston, Massachusetts, USA" +"Lafayette City Center","42.3537983,-71.0616035","https://maps.google.com/maps?q=+%4042.3537983,-71.0616035","https://www.google.com/maps/place/Lafayette+City+Center/data=!4m2!3m1!1s0x89e37082ca3dfde3:0xbd1347bb41704cd4","","","2 Ave de Lafayette, Boston, MA 02111, United States",,"Business center","+1 617-316-6524","http://lafayetteccboston.com/",4.5,130,"9W3Q+G9 Boston, Massachusetts, USA" +"Leader Bank Pavilion","42.3485465,-71.0359433","https://maps.google.com/maps?q=+%4042.3485465,-71.0359433","https://www.google.com/maps/place/Leader+Bank+Pavilion/data=!4m2!3m1!1s0x89e37a9d50431061:0x290bf47b5ed059d4","","","290 Northern Ave, Boston, MA 02210, United States","5,000-capacity amphitheater on Boston Harbor hosting big-name concerts throughout the summer.","Live music venue","+1 617-728-1600","https://www.livenation.com/venue/KovZpZAEAdEA/leader-bank-pavilion-events?utm_source=GMBlisting&utm_medium=organic",4.5,3011,"8XX7+CJ Boston, Massachusetts, USA" +"Leif Erikson Statue","42.3490205,-71.0913583","https://maps.google.com/maps?q=+%4042.3490205,-71.0913583","https://www.google.com/maps/place/Leif+Erikson+Statue/data=!4m2!3m1!1s0x89e37a0357fd54cf:0x97c8b2eda2a2dbe9","","","Commonwealth Ave, Charlesgate E at, Boston, MA 02215, United States",,"Sculpture","+1 249-478-9863",,4.8,10,"8WX5+JF Boston, Massachusetts, USA" +"Lilly's Gourmet Pasta Express","42.3323776,-71.1000217","https://maps.google.com/maps?q=+%4042.3323776,-71.1000217","https://www.google.com/maps/place/Lilly's+Gourmet+Pasta+Express/data=!4m2!3m1!1s0x89e379885938ec7b:0xc4620dad63b0bda3","","","1528 Tremont St, Boston, MA 02120, United States","Snug corner storefront serving handmade pastas & raviolis (with a variety of fillings) to go.","Restaurant","+1 617-427-8080","https://lillysgourmetpasta.com/",4.5,369,"8VJX+XX Boston, Massachusetts, USA" +"LimeRed Teahouse (Boston)","42.3518397,-71.1241295","https://maps.google.com/maps?q=+%4042.3518397,-71.1241295","https://www.google.com/maps/place/LimeRed+Teahouse+(Boston)/data=!4m2!3m1!1s0x89e379c301927595:0x6dfd6db4e5c11452","","","1092 Commonwealth Ave, Boston, MA 02215, United States",,"Bubble tea store","+1 617-249-0020","http://www.limeredteahouse.com/",4.5,248,"9V2G+P8 Boston, Massachusetts, USA" +"Longyear Museum","42.3245965,-71.1618052","https://maps.google.com/maps?q=+%4042.3245965,-71.1618052","https://www.google.com/maps/place/Longyear+Museum/data=!4m2!3m1!1s0x89e378f1a264532f:0x53acea414b677529","","","1125 Boylston St, Chestnut Hill, MA 02467, United States",,"History museum","+1 617-278-9000","http://www.longyear.org/",4.9,35,"8RFQ+R7 Chestnut Hill, Newton, MA, USA" +"Massachusetts State House","42.3587772,-71.0638101","https://maps.google.com/maps?q=+%4042.3587772,-71.0638101","https://www.google.com/maps/place/Massachusetts+State+House/data=!4m2!3m1!1s0x89e3709c8355a541:0x64fc806713207cb0","","","24 Beacon St, Boston, MA 02133, United States","Grand, circa-1795 building where the state legislature meets, with monuments, free tours & more.","State government office","+1 617-722-2000","https://malegislature.gov/StateHouse/Visit",4.4,392,"9W5P+GF Boston, Massachusetts, USA" +"McMullen Museum of Art, Boston College","42.340795,-71.1625829","https://maps.google.com/maps?q=+%4042.340795,-71.1625829","https://www.google.com/maps/place/McMullen+Museum+of+Art,+Boston+College/data=!4m2!3m1!1s0x89e3785da725d4c9:0x9e8ea594d0c5e7fe","","","2101 Commonwealth Ave, Boston, MA 02135, United States","Spacious museum at Boston College featuring tapestries, paintings, modern artworks & more.","Art museum","+1 617-552-8587","https://mcmullenmuseum.bc.edu/",4.5,67,"8RRP+8X Boston, Massachusetts, USA" +"Menotomy Rocks Park","42.4107892,-71.167854","https://maps.google.com/maps?q=+%4042.4107892,-71.167854","https://www.google.com/maps/place/Menotomy+Rocks+Park/data=!4m2!3m1!1s0x89e3764a8c16b9c9:0xe567e0e6f9a3a488","","","129 Jason St, Arlington, MA 02476, United States","Spread among the grounds are wooded trails, ball fields, a 3-acre fishing pond & a playground.","Park","+1 781-316-3880",,4.7,328,"CR6J+8V Arlington, Massachusetts, USA" +"Metropolitan Waterworks Museum","42.3317473,-71.155555","https://maps.google.com/maps?q=+%4042.3317473,-71.155555","https://www.google.com/maps/place/Metropolitan+Waterworks+Museum/data=!4m2!3m1!1s0x89e37857c1c3f2c5:0xe97e49e909989bac","","","2450 Beacon St, Chestnut Hill, MA 02467, United States","Exhibits on the engineering behind U.S.'s 1st metro water system, with walking & bus tours.","Museum","+1 617-277-0065","http://waterworksmuseum.org/",4.7,396,"8RJV+MQ Chestnut Hill, Newton, MA, USA" +"Mr. Crêpe","42.3965778,-71.1227278","https://maps.google.com/maps?q=+%4042.3965778,-71.1227278","https://www.google.com/maps/place/Mr.+Cr%C3%AApe/data=!4m2!3m1!1s0x89e3771f4a90abed:0xda38c6673bef881e","","","51 Davis Square, Somerville, MA 02144, United States","Unpretentious, quick-serve crêperie providing sweet & savory options plus tea & coffee.","Creperie","+1 617-623-0661","http://www.mrcrepe.com/",4.4,1104,"9VWG+JW Somerville, Massachusetts, USA" +"Muffin House Cafe","42.3140229,-71.3598149","https://maps.google.com/maps?q=+%4042.3140229,-71.3598149","https://www.google.com/maps/place/Muffin+House+Cafe/data=!4m2!3m1!1s0x89e38768213b86c7:0x2c10fd4409bc416b","","","325 N Main St, Natick, MA 01760, United States",,"Coffee shop","+1 508-647-0500","http://www.muffinhousecafe.com/",4.6,135,"8J7R+J3 Natick, Massachusetts, USA" +"Petsi Pies","42.3836229,-71.1126695","https://maps.google.com/maps?q=+%4042.3836229,-71.1126695","https://www.google.com/maps/place/Petsi+Pies/data=!4m2!3m1!1s0x89e37739058d23e1:0x9dc1c5588a09c517","","","285 Beacon St, Somerville, MA 02143, United States","Sweet & savory pies, pastries, cookies & cupcakes round out the menu at this comfortable bakery.","Bakery","+1 617-661-7437","http://petsipies.com/",4.6,305,"9VMP+CW Somerville, Massachusetts, USA" +"Polcari’s Coffee","42.3640137,-71.0555003","https://maps.google.com/maps?q=+%4042.3640137,-71.0555003","https://www.google.com/maps/place/Polcari%E2%80%99s+Coffee/data=!4m2!3m1!1s0x89e370892cf52c53:0x20c300a36a123827","","","105 Salem St, Boston, MA 02113, United States","Circa-1932 storied shop purveying dozens of varieties of coffee beans, nuts & Italian delicacies.","Coffee store","+1 617-227-0786","http://www.polcariscoffee.com/",4.9,263,"9W7V+JQ Boston, Massachusetts, USA" +"Porter","42.3884,-71.119149","https://maps.google.com/maps?q=+%4042.3884,-71.119149","https://www.google.com/maps/place/Porter/data=!4m2!3m1!1s0x89e3773da539d88f:0x2821f993055fa2de","","","1899 Massachusetts Ave, Cambridge, MA 02140, United States",,"Transit station","+1 617-222-3200","http://www.mbta.com/schedules_and_maps/subway/lines/stations/?stopId=13912&lat=42.388353&lng=-71.119159",4,78,"9VQJ+98 Cambridge, Massachusetts, USA" +"Puerto Rican Veterans Memorial","42.3407613,-71.0712561","https://maps.google.com/maps?q=+%4042.3407613,-71.0712561","https://www.google.com/maps/place/Puerto+Rican+Veterans+Memorial/data=!4m2!3m1!1s0x89e37a6c8670de6b:0x596a54ac8f26f15a","","","1440 Washington St, Boston, MA 02118, United States",,"Memorial park","+1 617-970-7824",,4.9,8,"8WRH+8F Boston, Massachusetts, USA" +"Skinny House (Spite House) Boston, MA","42.3668968,-71.0561781","https://maps.google.com/maps?q=+%4042.3668968,-71.0561781","https://www.google.com/maps/place/Skinny+House+(Spite+House)+Boston,+MA/data=!4m2!3m1!1s0x89e3716bd692b5fd:0x6e7a0a25e91dff1","","","44 Hull St, Boston, MA 02113, United States",,"Historical landmark",,,5,24,"9W8V+QG Boston, Massachusetts, USA" +"Soldiers and Sailors Monument","42.3554589,-71.0664019","https://maps.google.com/maps?q=+%4042.3554589,-71.0664019","https://www.google.com/maps/place/Soldiers+and+Sailors+Monument/data=!4m2!3m1!1s0x89e3709dc61c1a5d:0x24b024b975025449","","","139 Tremont St, Boston, MA 02109, United States",,"Monument","+1 617-635-4505","https://www.boston.gov/parks/boston-common",4.5,112,"9W4M+5C Boston, Massachusetts, USA" +"Starbucks","42.359349,-71.059228","https://maps.google.com/maps?q=+%4042.359349,-71.059228","https://www.google.com/maps/place/Starbucks/data=!4m2!3m1!1s0x89e37084fcdafd9d:0xb5e997fb5c83b04c","","","63-65 Court St, Boston, MA 02108, United States","Seattle-based coffeehouse chain known for its signature roasts, light bites and WiFi availability.","Coffee shop","+1 617-227-2284","https://www.starbucks.com/store-locator/store/18393/",3.8,273,"9W5R+P8 Boston, Massachusetts, USA" +"Steinert Hall","42.3524116,-71.0668408","https://maps.google.com/maps?q=+%4042.3524116,-71.0668408","https://www.google.com/maps/place/Steinert+Hall/data=!4m2!3m1!1s0x89e37a766d088e55:0x68e4811e47599d05","","","162 Boylston St, Boston, MA 02116, United States",,"Business center",,,4.8,5,"9W2M+X7 Boston, Massachusetts, USA" +"Sugar and Spice Ice Cream Cafe","42.2961434,-71.0872846","https://maps.google.com/maps?q=+%4042.2961434,-71.0872846","https://www.google.com/maps/place/Sugar+and+Spice+Ice+Cream+Cafe/data=!4m2!3m1!1s0x89e37b2f9e9b5939:0xe45f78c80d05267d","","","834 Blue Hill Ave, Boston, MA 02124, United States",,"Ice cream shop","+1 617-506-7559","https://sugar-and-spice-ice-cream-cafe.ueniweb.com/?utm_campaign=gmb",4.5,2,"7WW7+F3 Boston, Massachusetts, USA" +"TD Garden","42.366198,-71.062146","https://maps.google.com/maps?q=+%4042.366198,-71.062146","https://www.google.com/maps/place/TD+Garden/data=!4m2!3m1!1s0x89e3708e162d05cb:0x32d335fe5ed797a8","","","100 Legends Way, Boston, MA 02114, United States","Modern, comfortable arena, home to the Celtics & Bruins as well as large-scale concerts & ice shows.","Arena","+1 617-624-1000","http://www.tdgarden.com/?utm_source=google&utm_medium=organic&utm_campaign=gmb",4.6,18954,"9W8Q+F4 Boston, Massachusetts, USA" +"Tasca Restaurant","42.3433772,-71.1427371","https://maps.google.com/maps?q=+%4042.3433772,-71.1427371","https://www.google.com/maps/place/Tasca+Restaurant/data=!4m2!3m1!1s0x89e379b49b038a49:0xe2264ffabf4625ce","","","1612 Commonwealth Ave, Brighton, MA 02135, United States","Romantic & charming spot for tapas, traditional Spanish entrees, sangria & flamenco shows.","Spanish restaurant","+1 617-730-8002","http://www.tascatapasrestaurant.com/",4.5,631,"8VV4+9W Brighton, Boston, MA, USA" +"The Bagel Table","42.3569102,-71.1438455","https://maps.google.com/maps?q=+%4042.3569102,-71.1438455","https://www.google.com/maps/place/The+Bagel+Table/data=!4m2!3m1!1s0x89e37998326c0ee1:0xf7511ac7147206e4","","","86 Guest St, Boston, MA 02135, United States",,"Bagel shop","+1 617-208-8232","http://mybageltable.com/",3.9,36,"9V44+QF Boston, Massachusetts, USA" +"The Great Elm","42.3553972,-71.0651214","https://maps.google.com/maps?q=+%4042.3553972,-71.0651214","https://www.google.com/maps/place/The+Great+Elm/data=!4m2!3m1!1s0x89e3709daeee0791:0x8f79a06777d2e66a","","","Boston, MA 02108, United States",,"Historical landmark",,,4.4,15,"9W4M+5X Boston, Massachusetts, USA" +"Tiananmen Memorial","42.3509517,-71.0596124","https://maps.google.com/maps?q=+%4042.3509517,-71.0596124","https://www.google.com/maps/place/Tiananmen+Memorial/data=!4m2!3m1!1s0x89e37a7846afeedb:0xddd27450dbdf3d1d","","","John F Fitzgerald Surface Rd &, Beach St, Boston, MA 02111, United States",,"Memorial park",,"https://www.rosekennedygreenway.org/",4.5,15,"9W2R+95 Boston, Massachusetts, USA" +"Yankee Lobster","42.3478381,-71.0359354","https://maps.google.com/maps?q=+%4042.3478381,-71.0359354","https://www.google.com/maps/place/Yankee+Lobster/data=!4m2!3m1!1s0x89e37a9d6f4a416d:0x94d4209f737b02e4","","","300 Northern Ave, Boston, MA 02210, United States","Bare-bones, counter-serve spot for fresh seafood & live lobsters; patio seats offer seaport views.","Seafood restaurant","+1 617-345-9799","http://www.yankeelobstercompany.com/",4.5,3647,"8XX7+4J Boston, Massachusetts, USA" +"Yas Chicken - Allston","42.3525708,-71.1313443","https://maps.google.com/maps?q=+%4042.3525708,-71.1313443","https://www.google.com/maps/place/Yas+Chicken+-+Allston/data=!4m2!3m1!1s0x89e379ae7d4224fb:0x9f6ed82c2294f3","","","128 Brighton Ave, Allston, MA 02134, United States",,,"+1 617-202-5713",,3.9,84,"9V39+2F Allston, Boston, MA, USA" +"swissbakers","42.3631904,-71.1284677","https://maps.google.com/maps?q=+%4042.3631904,-71.1284677","https://www.google.com/maps/place/swissbakers/data=!4m2!3m1!1s0x89e379d8bfdd3113:0xe26d4741a3a52c0f","","","168 Western Ave, Boston, MA 02134, United States","European-style bakery showcasing homemade breads, pretzels & pastries in a bright & airy location.","Bakery","+1 617-903-3113","http://www.swissbakers.com/",4.5,414,"9V7C+7J Boston, Massachusetts, USA" \ No newline at end of file diff --git a/List B.csv b/List B.csv new file mode 100644 index 0000000..444d670 --- /dev/null +++ b/List B.csv @@ -0,0 +1,37 @@ +"name","gps","address","type","website","ratingsAverage","ratingsTotal","plusCode","googleUrl","originalUrl","info","types","description","phone" +"""The Charlestown Bells"" by Paul Matisse","42.3691906,-71.061757","Boston, MA 02129, United States","Sculpture","http://www.paulmatisse.com/charlestown-bell/",4.6,16,"9W9Q+M7 Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3691906,-71.061757","https://www.google.com/maps/place/%22The+Charlestown+Bells%22+by+Paul+Matisse/data=!4m2!3m1!1s0x89e3709278c08493:0xb779a0ad70ec05b7","","",, +"42°23'18.8""N 71°07'09.5""W","42.388547,-71.119301",,,,,,,"https://maps.google.com/maps?q=+%4042.388547,-71.119301","https://www.google.com/maps/search/42.388547,-71.119301","","",, +"Bow Market","42.381008,-71.097883","1 Bow Mkt Wy, Somerville, MA 02143, United States","Market","http://bowmarketsomerville.com/",4.6,817,"9WJ2+CR Somerville, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.381008,-71.097883","https://www.google.com/maps/place/Bow+Market/data=!4m2!3m1!1s0x89e37734d74d2c3f:0x208a25b72d87b75d","","","Former storage building featuring local boutiques, cafes & art shops around a central courtyard.", +"Cambridge Public Library","42.3741209,-71.1107166","449 Broadway, Cambridge, MA 02138, United States","Public library","http://www.cambridgepubliclibrary.org/",4.7,321,"9VFQ+JP Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3741209,-71.1107166","https://www.google.com/maps/place/Cambridge+Public+Library/data=!4m2!3m1!1s0x89e37745a7478907:0xca426e8b350c9f57","","",,"+1 617-349-4040" +"Charlestown High School","42.3803747,-71.0609962","240 Medford St, Charlestown, MA 02129, United States","High school","http://www.charlestownhs.org/",4.6,15,"9WJQ+4J Charlestown, Boston, MA, USA","https://maps.google.com/maps?q=+%4042.3803747,-71.0609962","https://www.google.com/maps/place/Charlestown+High+School/data=!4m2!3m1!1s0x89e370f01a030e2b:0xcb29b13f4cec27c9","","",,"+1 617-635-9914" +"Christopher Columbus Waterfront Park","42.3609921,-71.0516339","100 Atlantic Ave, Boston, MA 02110, United States","Park","http://www.foccp.org/",4.7,3554,"9W6X+98 Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3609921,-71.0516339","https://www.google.com/maps/place/Christopher+Columbus+Waterfront+Park/data=!4m2!3m1!1s0x89e3708871f0fc8f:0x3218180677ad009c","","","This popular city park featuring a play area, gardens & views of the water hosts many events.","+1 617-635-7275" +"Dawes Island","42.3754427,-71.1194344","Massachusetts Ave & Garden St, Cambridge, MA 02138, United States","Park",,4.3,3,"9VGJ+56 Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3754427,-71.1194344","https://www.google.com/maps/place/Dawes+Island/data=!4m2!3m1!1s0x89e377425b0e85cd:0xfffdb49327515349","","",, +"Desfina Restaurant","42.3675275,-71.0809932","202 Third St, Cambridge, MA 02141, United States","Greek restaurant","http://www.desfina.com/",4.4,629,"9W99+2J Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3675275,-71.0809932","https://www.google.com/maps/place/Desfina+Restaurant/data=!4m2!3m1!1s0x89e370bb0d445a69:0x1e7255414a1c857d","","","Convivial, casual Greek taverna serving grilled seafood & meats & other traditional specialties.","+1 617-868-9098" +"Dino Safari Boston: A Walk-Thru Adventure","42.3597994,-71.0545357","Faneuil Hall Marketplace, 4 S Market St, Boston, MA 02109, United States","Exhibit",,4.3,214,"9W5W+W5 Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3597994,-71.0545357","https://www.google.com/maps/place/Dino+Safari+Boston:+A+Walk-Thru+Adventure/data=!4m2!3m1!1s0x89e371a4e43be949:0xf28f02a7abf984e2","","",, +"F. A. Kennedy Steam Bakery","42.3627462,-71.1013044","129 Franklin St, Cambridge, MA 02139, United States","Apartment building",,,,"9V7X+3F Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3627462,-71.1013044","https://www.google.com/maps/place/F.+A.+Kennedy+Steam+Bakery/data=!4m2!3m1!1s0x89e3775445b8690f:0xb24a393bc2876575","","",, +"Forge Baking Co & Ice Cream Bar","42.3838224,-71.1108423","626 Somerville Ave, Somerville, MA 02143, United States","Bakery","http://www.forgebakingco.com/",4.5,666,"9VMQ+GM Somerville, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3838224,-71.1108423","https://www.google.com/maps/place/Forge+Baking+Co+%26+Ice+Cream+Bar/data=!4m2!3m1!1s0x89e37739bfce6ead:0x348628ea829c627","","","Artisanal breads, pastries & sandwiches are served at this bakery/cafe set in a former warehouse.","+1 617-764-5365" +"Greentown Labs","42.3820702,-71.1026937","444 Somerville Ave, Somerville, MA 02143, United States","Laboratory","http://greentownlabs.com/",4.7,77,"9VJW+RW Somerville, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3820702,-71.1026937","https://www.google.com/maps/place/Greentown+Labs/data=!4m2!3m1!1s0x89e37a80423c9c9d:0x916ce7207a296e65","","",,"+1 888-954-6836" +"Harvard Square","42.373465,-71.1189467","Brattle St, Cambridge, MA 02138, United States","Tourist attraction","http://www.harvardsquare.com/",4.5,8985,"9VFJ+9C Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.373465,-71.1189467","https://www.google.com/maps/place/Harvard+Square/data=!4m2!3m1!1s0x89e37742bc65ca79:0x59ca183286a63b76","","","Home to America's oldest university, this iconic area offers shops, eateries & theaters.","+1 617-491-3434" +"Igor Fokin memorial","42.3732344,-71.1208817","Brattle Square, Cambridge, MA 02138, United States","Cultural landmark","http://igorfokin.com/memorial.html",5,2,"9VFH+7J Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3732344,-71.1208817","https://www.google.com/maps/place/Igor+Fokin+memorial/data=!4m2!3m1!1s0x89e37798b0d1cd8f:0xb6e1c4b745e9a1b7","","",, +"John F. Kennedy Presidential Library and Museum","42.316274,-71.0342146","Columbia Point, Boston, MA 02125, United States","Library","https://www.jfklibrary.org/",4.7,740,"8X88+G8 Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.316274,-71.0342146","https://www.google.com/maps/place/John+F.+Kennedy+Presidential+Library+and+Museum/data=!4m2!3m1!1s0x89e37ae468290749:0x911b0e0aaf975e24","","","President Kennedy exhibits, videos & research collections in a striking I.M. Pei–designed building.","+1 617-514-1600" +"Lechmere Canal Park","42.3695046,-71.0756902","6 Canal Park, Cambridge, MA 02141, United States","Park","http://www.cambridgema.gov/CDD/zoninganddevelopment/advcomms/lechmerecanalpark",4.6,351,"9W9F+RP Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3695046,-71.0756902","https://www.google.com/maps/place/Lechmere+Canal+Park/data=!4m2!3m1!1s0x89e370bdd8ecfeb1:0xf0b2c8f4ca6df789","","","A tranquil, landscaped park with a focal fountain & tree-shaded areas for relaxing.","+1 617-349-4600" +"Lynch Family Skatepark","42.3701829,-71.0678704","Education St, Cambridge, MA 02141, United States","Skateboard park","https://www.stantec.com/en/projects/united-states-projects/l/lynch-family-skate-park",4.8,358,"9WCJ+3V Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3701829,-71.0678704","https://www.google.com/maps/place/Lynch+Family+Skatepark/data=!4m2!3m1!1s0x89e3709465c89cfd:0xb8db1544f3a42cd3","","",,"+1 617-608-1410" +"Machu Chicken","42.3799095,-71.0968274","25 Union Square, Somerville, MA 02143, United States","Peruvian restaurant",,4.5,422,"9WH3+X7 Somerville, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3799095,-71.0968274","https://www.google.com/maps/place/Machu+Chicken/data=!4m2!3m1!1s0x89e370cae108bd17:0x373fb45697bd208a","","","Pan flutes playing in the background set the scene for Peruvian fare, served alongside pisco sours.", +"Millers River Potato Monument","42.3718401,-71.0656594","Millers River Littoral Way, Boston, MA 02114, United States","Historical landmark",,4.5,95,"9WCM+PP Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3718401,-71.0656594","https://www.google.com/maps/place/Millers+River+Potato+Monument/data=!4m2!3m1!1s0x89e370933bca6229:0xc6598f35dfe3e8f1","","",, +"Museum of Fine Arts, Boston","42.339381,-71.094048","465 Huntington Ave, Boston, MA 02115, United States","Art museum","https://www.mfa.org/",4.8,15647,"8WQ4+Q9 Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.339381,-71.094048","https://www.google.com/maps/place/Museum+of+Fine+Arts,+Boston/data=!4m2!3m1!1s0x89e37a0de7e77a4b:0x2f033fd6c495d564","","","Neoclassical & modern wings house a vast collection from ancient Egyptian to contemporary American.","+1 617-267-9300" +"P & E Microcomputer Systems Inc","42.3621177,-71.1854722","98 Galen St 2nd floor, Watertown, MA 02472, United States","Electronics manufacturer","http://www.pemicro.com/",5,1,"9R67+RR Watertown, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3621177,-71.1854722","https://www.google.com/maps/place/P+%26+E+Microcomputer+Systems+Inc/data=!4m2!3m1!1s0x89e3780ed817e93f:0x1890fb70fb08d055","","",,"+1 617-923-0053" +"Peabody Museum of Archaeology and Ethnology","42.3782386,-71.1146697","11 Divinity Ave, Cambridge, MA 02138, United States","Museum","http://www.peabody.harvard.edu/",4.6,576,"9VHP+74 Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3782386,-71.1146697","https://www.google.com/maps/place/Peabody+Museum+of+Archaeology+and+Ethnology/data=!4m2!3m1!1s0x89e37746d15ee397:0x120a9da97291d878","","","Harvard museum with ancient cultures' artifacts & archeology, plus access to Natural History Museum.","+1 617-496-1027" +"Prospect Hill Monument","42.3817274,-71.0935443",,"Monument",,,,,"https://maps.google.com/maps?q=+%4042.3817274,-71.0935443","https://www.google.com/maps/place/Prospect+Hill+Monument/data=!4m2!3m1!1s0x89e370cb8f14d9bb:0xabf5f27c24d01c53","","",, +"Spirit Halloween","42.3551807,-71.0611749","467 Washington St, Boston, MA 02108, United States","Costume store","https://stores.spirithalloween.com/",2.5,6,"9W4Q+3G Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3551807,-71.0611749","https://www.google.com/maps/place/Spirit+Halloween/data=!4m2!3m1!1s0x89e3713395158c15:0xca3897572626f10c","","","Seasonal chain with Halloween & fancy dress costumes for all ages, plus accessories & decor.","+1 855-704-2669" +"Stata Center","42.3616095,-71.0906355",,"Building",,,,,"https://maps.google.com/maps?q=+%4042.3616095,-71.0906355","https://www.google.com/maps/place/Stata+Center/data=!4m2!3m1!1s0x89e370a95d3025a9:0xb1de557289ff6bbe","","",, +"The Collection of Historical Scientific Instruments at the Putnam Gallery","42.3766442,-71.1161887","1 Oxford St, Cambridge, MA 02138, United States","Science museum","https://chsi.harvard.edu/",4.7,104,"9VGM+MG Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3766442,-71.1161887","https://www.google.com/maps/place/The+Collection+of+Historical+Scientific+Instruments+at+the+Putnam+Gallery/data=!4m2!3m1!1s0x89e3774157d08287:0xe1392204489e893b","","",,"+1 617-495-2779" +"The Engine","42.3627993,-71.0962734","750 Main St, Cambridge, MA 02139, United States","Coworking space","https://engine.xyz/locations/750-main",4.8,12,"9W73+4F Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3627993,-71.0962734","https://www.google.com/maps/place/The+Engine/data=!4m2!3m1!1s0x89e371669346b499:0x8cb71ba4c8cd231f","","",, +"The Harvard Museum of Natural History","42.3784629,-71.1155576","26 Oxford St, Cambridge, MA 02138, United States","Natural history museum","http://www.hmnh.harvard.edu/",4.7,4040,"9VHM+9Q Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3784629,-71.1155576","https://www.google.com/maps/place/The+Harvard+Museum+of+Natural+History/data=!4m2!3m1!1s0x89e377412f2ed67b:0x613d8c4648bcba7b","","","Extensive natural-science collections, including animals, minerals & the famous Glass Flowers.","+1 617-495-3045" +"The Mµseum (tiny museum)","42.3797674,-71.0949101","71 Union Square #3032, Somerville, MA 02143, United States",,,3.3,7,"9WH4+W2 Somerville, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3797674,-71.0949101","https://www.google.com/maps/place/The+M%C2%B5seum+(tiny+museum)/data=!4m2!3m1!1s0x89e370cafcd02b17:0xe21ebbda83f7d2ef","","",, +"The Nu Do' Society","42.3640287,-71.1087411","125 River St, Cambridge, MA 02139, United States",,,4.7,202,"9V7R+JG Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3640287,-71.1087411","https://www.google.com/maps/place/The+Nu+Do'+Society/data=!4m2!3m1!1s0x89e37701ff4a17c9:0x214afd3b8e30491b","","",,"+1 857-829-3939" +"USS Constitution Museum","42.3739796,-71.0554239","Building 22, Charlestown Navy Yard, Charlestown, MA 02129, United States","History museum","https://ussconstitutionmuseum.org/",4.7,6897,"9WFV+HR Charlestown, Boston, MA, USA","https://maps.google.com/maps?q=+%4042.3739796,-71.0554239","https://www.google.com/maps/place/USS+Constitution+Museum/data=!4m2!3m1!1s0x89e370f4778a4f39:0xa5c2057045470ca5","","","Interactive museum near the 1797 wooden frigate made famous as ""Old Ironsides"" in the War of 1812.","+1 617-426-1812" +"Union Square","42.37736,-71.09476","Somerville, MA 02143, United States","Light rail station",,3.8,18,"9WG4+W3 Somerville, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.37736,-71.09476","https://www.google.com/maps/place/Union+Square/data=!4m2!3m1!1s0x89e370b57c24c687:0x13b5e2ca1f835296","","",, +"University Park Commons","42.3614115,-71.1014951","65 Sidney St, Cambridge, MA 02139, United States","Park","http://www.universityparkliving.com/",4.5,77,"9V6X+HC Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3614115,-71.1014951","https://www.google.com/maps/place/University+Park+Commons/data=!4m2!3m1!1s0x89e37755b9d8c56f:0x50132e1156dc8272","","","The Massachusetts Institute of Technology's grassy park area showcases many sculptures & art pieces.", +"Veggie Crust - Somerville","42.3822934,-71.1024769","445 Somerville Ave, Somerville, MA 02143, United States","Vegetarian restaurant","http://vegcrust.com/",4.5,735,"9VJX+W2 Somerville, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3822934,-71.1024769","https://www.google.com/maps/place/Veggie+Crust+-+Somerville/data=!4m2!3m1!1s0x89e3773422ba2b95:0x34df8b11890a5533","","","Casual, contemporary eatery specializing in creative vegetarian pizza, pasta & paninis.","+1 617-764-4605" +"Veggie Galaxy","42.3636597,-71.1011111","450 Massachusetts Ave, Cambridge, MA 02139, United States","Vegetarian restaurant","http://www.veggiegalaxy.com/",4.6,3656,"9V7X+FH Cambridge, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3636597,-71.1011111","https://www.google.com/maps/place/Veggie+Galaxy/data=!4m2!3m1!1s0x89e37754654e9227:0xabd328d66f8dad77","","","Imaginative twist on an old-school diner specializing in from-scratch vegan & vegetarian options.","+1 617-497-1513" +"Warren Tavern","42.3741694,-71.0631664","2 Pleasant St, Charlestown, MA 02129, United States","American restaurant","http://www.warrentavern.com/",4.6,1902,"9WFP+MP Charlestown, Boston, MA, USA","https://maps.google.com/maps?q=+%4042.3741694,-71.0631664","https://www.google.com/maps/place/Warren+Tavern/data=!4m2!3m1!1s0x89e370ed7348f66f:0x884dacf410968c9e","","","Legendary circa-1780 tavern draws locals & tourists for beer, varied pub food & Colonial charm.","+1 617-241-8142" \ No newline at end of file diff --git a/List C.csv b/List C.csv new file mode 100644 index 0000000..dbfa002 --- /dev/null +++ b/List C.csv @@ -0,0 +1,34 @@ +"name","gps","googleUrl","originalUrl","info","types","address","type","phone","website","ratingsAverage","ratingsTotal","plusCode","description" +"42°21'41.5""N 71°03'24.6""W","42.361531,-71.056823","https://maps.google.com/maps?q=+%4042.361531,-71.056823","https://www.google.com/maps/search/42.361531,-71.056823","","",,,,,,,, +"All Saints Church","42.2857047,-71.0632852","https://maps.google.com/maps?q=+%4042.2857047,-71.0632852","https://www.google.com/maps/place/All+Saints+Church/data=!4m2!3m1!1s0x89e37b8fc37d3635:0x465ff35cb902fe3c","","","209 Ashmont St, Boston, MA 02124, United States","Episcopal church","+1 617-436-6370","http://www.allsaints.net/",4.7,14,"7WPP+7M Boston, Massachusetts, USA", +"Ashmont","42.2845163,-71.0637877","https://maps.google.com/maps?q=+%4042.2845163,-71.0637877","https://www.google.com/maps/place/Ashmont/data=!4m2!3m1!1s0x89e37b8fab0e0d17:0xc9ac474b3fb9102a","","","Dorchester Ave &, Ashmont St, Boston, MA 02124, United States","Transit station","+1 617-222-3200","https://www.mbta.com/stops/place-asmnl",4,121,"7WMP+RF Boston, Massachusetts, USA", +"Boston Children's Museum","42.3519736,-71.0496839","https://maps.google.com/maps?q=+%4042.3519736,-71.0496839","https://www.google.com/maps/place/Boston+Children's+Museum/data=!4m2!3m1!1s0x89e37080065a07df:0xf7e753ec01cb4dc3","","","308 Congress St, Boston, MA 02210, United States","Children's museum","+1 617-426-6500","https://bostonchildrensmuseum.org/",4.7,5423,"9X22+Q4 Boston, Massachusetts, USA","Fun, hands-on educational exhibits aimed at kids 11 & under, plus a play space for toddlers." +"Boston College High School","42.3162356,-71.0454645","https://maps.google.com/maps?q=+%4042.3162356,-71.0454645","https://www.google.com/maps/place/Boston+College+High+School/data=!4m2!3m1!1s0x89e37afebcbaf589:0x780a3b22f0552951","","","150 Morrissey Blvd, Boston, MA 02125, United States","High school","+1 617-436-3900","http://www.bchigh.edu/",4.6,33,"8X83+FR Boston, Massachusetts, USA", +"Boston Design Center","42.3441918,-71.0336324","https://maps.google.com/maps?q=+%4042.3441918,-71.0336324","https://www.google.com/maps/place/Boston+Design+Center/data=!4m2!3m1!1s0x89e37a9c7a5bc021:0x5914c5143b3dccf7","","","1 Design Center Pl, Boston, MA 02210, United States","Business center","+1 617-449-5514","http://www.bostondesign.com/",4.5,425,"8XV8+MG Boston, Massachusetts, USA", +"Boston Fire Museum","42.3508756,-71.0487437","https://maps.google.com/maps?q=+%4042.3508756,-71.0487437","https://www.google.com/maps/place/Boston+Fire+Museum/data=!4m2!3m1!1s0x89e3707ff62ce797:0xc7579525550a4e1f","","","344 Congress St, Boston, MA 02210, United States","Museum","+1 617-338-9700","http://www.bostonfiremuseum.com/",4.8,184,"9X22+9G Boston, Massachusetts, USA","Small museum in an old firehouse featuring exhibits pertaining to Boston's firefighting history." +"Boston Tea Party Ships & Museum","42.3521821,-71.0512911","https://maps.google.com/maps?q=+%4042.3521821,-71.0512911","https://www.google.com/maps/place/Boston+Tea+Party+Ships+%26+Museum/data=!4m2!3m1!1s0x89e370803c04bce1:0xd1ee7b7f9a93b4b3","","","306 Congress St, Boston, MA 02210, United States","Museum","+1 617-338-1773","https://www.bostonteapartyship.com/",4.6,6514,"9W2X+VF Boston, Massachusetts, USA","Floating history museum with live reenactments, multimedia exhibits & a tearoom." +"Braintree","42.2075316,-71.0013637","https://maps.google.com/maps?q=+%4042.2075316,-71.0013637","https://www.google.com/maps/place/Braintree/data=!4m2!3m1!1s0x89e362b53bfe7401:0x103c28b87fa9eb64","","","Braintree, MA 02184, United States","Transit station","+1 617-222-3200","https://www.mbta.com/stops/place-brntn",3.5,66,"6X5X+2F Braintree, Massachusetts, USA", +"Bunker Hill Monument","42.3763541,-71.0607764","https://maps.google.com/maps?q=+%4042.3763541,-71.0607764","https://www.google.com/maps/place/Bunker+Hill+Monument/data=!4m2!3m1!1s0x89e370f20b0797ff:0xacaf173272ec0298","","","Monument Sq, Charlestown, MA 02129, United States","Monument","+1 617-242-5641","http://www.nps.gov/bost/historyculture/bhm.htm",4.6,5938,"9WGQ+GM Charlestown, Boston, MA, USA","Marking the Battle of Bunker Hill, this 221-ft. granite obelisk features 294 steps & scenic views." +"Calf Pasture Pumping Station","42.316031,-71.0374911","https://maps.google.com/maps?q=+%4042.316031,-71.0374911","https://www.google.com/maps/place/Calf+Pasture+Pumping+Station/data=!4m2!3m1!1s0x89e37b9c6db32fc3:0x682683b88d60e309","","","240 William T Morrissey Blvd, Boston, MA 02125, United States","Historical landmark",,"https://blogs.umb.edu/pumpingstation/",5,1,"8X87+C2 Boston, Massachusetts, USA", +"Castle Island","42.3378699,-71.0125206","https://maps.google.com/maps?q=+%4042.3378699,-71.0125206","https://www.google.com/maps/place/Castle+Island/data=!4m2!3m1!1s0x89e37aafac89e1ef:0x5700933eefbf7922","","","2010 William J Day Blvd, Boston, MA 02127, United States","State park","+1 617-727-5290","https://www.mass.gov/locations/castle-island-pleasure-bay-m-street-beach-and-carson-beach",4.7,5425,"8XQP+4X Boston, Massachusetts, USA","Site of Fort Independence (open in the summer), with beach, picnic & jogging areas." +"Edgar Allan Poe Statue","42.3523158,-71.0672898","https://maps.google.com/maps?q=+%4042.3523158,-71.0672898","https://www.google.com/maps/place/Edgar+Allan+Poe+Statue/data=!4m2!3m1!1s0x89e37a76743987ff:0x57d9115a6228d26e","","","Boylston St & Charles St, Boston, MA 02116, United States","Sculpture","+1 617-635-4505","https://www.boston.gov/",4.7,131,"9W2M+W3 Boston, Massachusetts, USA", +"Forbes Hill Standpipe","42.2576602,-71.02832","https://maps.google.com/maps?q=+%4042.2576602,-71.02832","https://www.google.com/maps/place/Forbes+Hill+Standpipe/data=!4m2!3m1!1s0x89e37c966595bd4b:0x63a61353e4bfebf7","","","20 Reservoir Rd, Quincy, MA 02170, United States","Historical place",,,5,1,"7X5C+3M Quincy, Massachusetts, USA", +"Glenn’s Kreme&Kone at the Hood Milk Bottle","42.3516479,-71.0502126","https://maps.google.com/maps?q=+%4042.3516479,-71.0502126","https://www.google.com/maps/place/Glenn%E2%80%99s+Kreme%26Kone+at+the+Hood+Milk+Bottle/data=!4m2!3m1!1s0x89e370800f6aac83:0x9584aa165c51cfba","","","306 Congress St, Boston, MA 02210, United States","Ice cream shop",,"http://hood.com/",4.3,57,"9W2X+MW Boston, Massachusetts, USA","40-ft.-tall wooden milk bottle, a local landmark since 1977 & housing a small restaurant." +"ICA Watershed","42.3639107,-71.0331956","https://maps.google.com/maps?q=+%4042.3639107,-71.0331956","https://www.google.com/maps/place/ICA+Watershed/data=!4m2!3m1!1s0x89e3717c1e311df1:0x458251c579149d62","","","256 Marginal St, Boston, MA 02128, United States","Art gallery","+1 617-478-3100","https://www.icaboston.org/ica-watershed",4.5,190,"9X78+HP Boston, Massachusetts, USA","Big warehouse-turned-gallery featuring video installations & other unique art exhibits, plus events." +"Institute of Contemporary Art","42.3528151,-71.0432778","https://maps.google.com/maps?q=+%4042.3528151,-71.0432778","https://www.google.com/maps/place/Institute+of+Contemporary+Art/data=!4m2!3m1!1s0x89e370793a8430c5:0x7ab1059322edd33a","","","25 Harbor Shore Dr, Boston, MA 02210, United States","Art museum","+1 617-478-3100","https://www.icaboston.org/",4.4,3693,"9X34+4M Boston, Massachusetts, USA","Striking contemporary art & performance space with glass-filled walls overlooking the Harbor." +"John Adams Birthplace - Adams National Historical Park","42.2392354,-71.0035279","https://maps.google.com/maps?q=+%4042.2392354,-71.0035279","https://www.google.com/maps/place/John+Adams+Birthplace+-+Adams+National+Historical+Park/data=!4m2!3m1!1s0x89e37ccd43d39839:0xc30376ecd57e40d6","","","141 Franklin St, Quincy, MA 02169, United States","Historical landmark","+1 617-770-1175","https://www.nps.gov/adam/planyourvisit/index.htm",4.7,312,"6XQW+MH Quincy, Massachusetts, USA", +"John Joseph Moakley United States Courthouse","42.3537343,-71.0470633","https://maps.google.com/maps?q=+%4042.3537343,-71.0470633","https://www.google.com/maps/place/John+Joseph+Moakley+United+States+Courthouse/data=!4m2!3m1!1s0x89e3707c20950b2b:0x1254d29050090bc0","","","1 Courthouse Way, Boston, MA 02210, United States","City courthouse","+1 617-261-2440","https://www.gsa.gov/about-us/regions/welcome-to-the-new-england-region-1/buildings-and-facilities/massachusetts/john-joseph-moakley-us-courthouse",3.9,23,"9X33+F5 Boston, Massachusetts, USA", +"L Street Bathhouse","42.3291218,-71.0352443","https://maps.google.com/maps?q=+%4042.3291218,-71.0352443","https://www.google.com/maps/place/L+Street+Bathhouse/data=!4m2!3m1!1s0x89e37bb79deddcb1:0xb675080411244540","","","1663 Columbia Rd, Boston, MA 02127, United States","Historical landmark",,,5,3,"8XH7+JW Boston, Massachusetts, USA", +"Massachusetts Historical Society","42.3463992,-71.0898829","https://maps.google.com/maps?q=+%4042.3463992,-71.0898829","https://www.google.com/maps/place/Massachusetts+Historical+Society/data=!4m2!3m1!1s0x89e37a1b6d4890d7:0x6ffab44ab8343536","","","1154 Boylston St, Boston, MA 02215, United States","Historical society","+1 617-536-1608","http://www.masshist.org/",5,12,"8WW6+H2 Boston, Massachusetts, USA","Early presidential papers & Revolution-era documents at this public library with craft exhibits." +"O B's Cafe","42.2743442,-71.0240951","https://maps.google.com/maps?q=+%4042.2743442,-71.0240951","https://www.google.com/maps/place/O+B's+Cafe/data=!4m2!3m1!1s0x89e37b5e6ea0cbed:0x39ef401b432e2fac","","","74 Billings Rd, Quincy, MA 02171, United States","American restaurant","+1 617-472-2777","http://o-bs-cafe.keeq.io/",4.5,374,"7XFG+P9 Quincy, Massachusetts, USA","Laid-back diner known for its generous servings of down-home breakfast classics." +"Pleasure Bay","42.3358743,-71.0234949","https://maps.google.com/maps?q=+%4042.3358743,-71.0234949","https://www.google.com/maps/place/Pleasure+Bay/data=!4m2!3m1!1s0x89e37b54c10c2f53:0x8b87653b8f52403d","","","William J Day Blvd, Boston, MA 02127, United States","Public beach",,"https://www.boston.gov/departments/parks-and-recreation",4.6,331,"8XPG+8J Boston, Massachusetts, USA", +"Revere Beach","42.420226,-70.985881","https://maps.google.com/maps?q=+%4042.420226,-70.985881","https://www.google.com/maps/place/Revere+Beach/data=!4m2!3m1!1s0x89e36dfcd362f837:0x5802dedc68b5bbcd","","","350 Revere Beach Blvd, Revere, MA 02151, United States","Public beach","+1 978-807-0167","http://www.reverebeach.com/",4.4,7721,"C2C7+3J Revere, Massachusetts, USA","America's first public beach, this landmark boasts a scenic coastline & close proximity to the T." +"Schoolhouse Pizza","42.2454086,-71.0005483","https://maps.google.com/maps?q=+%4042.2454086,-71.0005483","https://www.google.com/maps/place/Schoolhouse+Pizza/data=!4m2!3m1!1s0x89e3633519a4d7d3:0x529508048d4c0674","","","3 School St, Quincy, MA 02169, United States","Pizza restaurant","+1 617-770-3141","https://www.schoolhousepizzeria.com/",4,230,"6XWX+5Q Quincy, Massachusetts, USA","Quaint brick-walled pizzeria with a chalkboard menu creating casual fare with local ingredients." +"South Boston Korean War Memorial, Castle Island, South Boston, - Massachusetts, USA","42.3367603,-71.0096371","https://maps.google.com/maps?q=+%4042.3367603,-71.0096371","https://www.google.com/maps/place/South+Boston+Korean+War+Memorial,+Castle+Island,+South+Boston,+%0AMassachusetts,+USA/data=!4m2!3m1!1s0x89e37bd89e99002b:0xe20a866dcbc3f019","","","Boston, MA 02127, United States","War memorial",,,4.8,14,"8XPR+P4 Boston, Massachusetts, USA", +"Taiyaki NYC - Boston","42.3509709,-71.0447796","https://maps.google.com/maps?q=+%4042.3509709,-71.0447796","https://www.google.com/maps/place/Taiyaki+NYC+-+Boston/data=!4m2!3m1!1s0x89e37170160b9991:0xa8343f991b8e9e05","","","119 Seaport Blvd Suite B, Boston, MA 02210, United States","Ice cream shop","+1 617-531-3514","http://taiyakinyc.com/",4.4,1090,"9X24+93 Boston, Massachusetts, USA", +"Tavern of Tales: Café & Bar","42.3319001,-71.0983169","https://maps.google.com/maps?q=+%4042.3319001,-71.0983169","https://www.google.com/maps/place/Tavern+of+Tales:+Caf%C3%A9+%26+Bar/data=!4m2!3m1!1s0x89e3797f3e73fd45:0xe5cb134d86437cff","","","1478 Tremont St, Boston, MA 02120, United States","Cafe","+1 617-708-0172","https://www.tavernoftales.com/",4.6,210,"8WJ2+QM Boston, Massachusetts, USA","Polished joint offering classic sandwiches & cocktails, plus a large selection of board games." +"The Clam Box","42.2763168,-71.0092883","https://maps.google.com/maps?q=+%4042.2763168,-71.0092883","https://www.google.com/maps/place/The+Clam+Box/data=!4m2!3m1!1s0x89e37b51ec82f005:0xdd4a8d676f05797d","","","789 Quincy Shore Dr, Quincy, MA 02170, United States","Seafood restaurant","+1 617-302-3474","http://www.clamboxquincy.com/",4.3,2145,"7XGR+G7 Quincy, Massachusetts, USA","Classic beachfront joint with a rustic vibe dishes up clams & other seafood specials in a cozy room." +"The Partisans","42.3478375,-71.0404428","https://maps.google.com/maps?q=+%4042.3478375,-71.0404428","https://www.google.com/maps/place/The+Partisans/data=!4m2!3m1!1s0x89e3708506353877:0x73a1a526b2e474a1","","","Boston, MA 02210, United States","Sculpture",,"https://www.bostonseaport.xyz/venue/the-partisans/",4.8,6,"8XX5+4R Boston, Massachusetts, USA", +"Union Oyster House","42.361288,-71.056908","https://maps.google.com/maps?q=+%4042.361288,-71.056908","https://www.google.com/maps/place/Union+Oyster+House/data=!4m2!3m1!1s0x89e37085f3085631:0x57b1c27214abd128","","","41 Union St, Boston, MA 02108, United States","Seafood restaurant","+1 617-227-2750","http://www.unionoysterhouse.com/?y_source=1_MjY4Nzk0MjktNzE1LWxvY2F0aW9uLndlYnNpdGU%3D",4.3,8497,"9W6V+G6 Boston, Massachusetts, USA","Historic eatery serving chowder & other New England seafood standards since 1826." +"Victoria's Diner","42.3270498,-71.0667744","https://maps.google.com/maps?q=+%4042.3270498,-71.0667744","https://www.google.com/maps/place/Victoria's+Diner/data=!4m2!3m1!1s0x89e37a45cff11089:0xa136000575015fde","","","1024 Massachusetts Ave, Boston, MA 02118, United States","Diner","+1 617-442-5965","http://www.victoriasdiner.com/",4.1,1797,"8WGM+R7 Boston, Massachusetts, USA","Long-standing classic diner for breakfast & sandwich standards with round-the-clock weekend hours." +"Wollaston Beach","42.2806539,-71.0119933","https://maps.google.com/maps?q=+%4042.2806539,-71.0119933","https://www.google.com/maps/place/Wollaston+Beach/data=!4m2!3m1!1s0x89e37b4f0f0c87bd:0xf748852b94b67c04","","","Quincy, MA, United States","Beach",,,4.4,171,,"Historic 2.3-mi.-long beach with a paved promenade, plus lifeguards, boat piers & sunset views." \ No newline at end of file diff --git a/List D.csv b/List D.csv new file mode 100644 index 0000000..9a19b62 --- /dev/null +++ b/List D.csv @@ -0,0 +1,39 @@ +"name","gps","address","description","type","phone","website","ratingsAverage","ratingsTotal","plusCode","googleUrl","originalUrl","info","types" +"Abbondanza","42.4074484,-71.0618764","195 Main St, Everett, MA 02149, United States","Comfy, modest eatery prepping generous plates of Italian-style pasta, seafood & grill specialties.","Italian restaurant","+1 617-387-8422","http://www.abbondanzaristorante.com/",4.4,186,"CW4Q+X6 Everett, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.4074484,-71.0618764","https://www.google.com/maps/place/Abbondanza/data=!4m2!3m1!1s0x89e37112871853f9:0xaa2990b5e8c0d76f","","" +"Aeronaut Cannery & Taproom","42.3986053,-71.0612182","199 Ashland St, Everett, MA 02149, United States",,"Brewery","+1 617-370-5904","https://www.aeronautbrewing.com/visit/the-cannery/",4.7,46,"9WXQ+CG Everett, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3986053,-71.0612182","https://www.google.com/maps/place/Aeronaut+Cannery+%26+Taproom/data=!4m2!3m1!1s0x89e371f3ac2cc9a1:0xd32d8135448788b","","" +"Andrew McArdle Bridge","42.3855456,-71.0392667","Andrew McArdle Bridge, Boston, MA 02128, United States",,"Bridge",,,4.2,17,"9XP6+67 Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3855456,-71.0392667","https://www.google.com/maps/place/Andrew+McArdle+Bridge/data=!4m2!3m1!1s0x89e37052bf6c5cab:0x4b99bc0af1e2e29","","" +"BearMoose Brewing Company","42.4025721,-71.0515875","1934 Revere Beach Pkwy, Everett, MA 02149, United States",,"Brewery","+1 617-294-1211","https://www.bearmoosebrewing.com/",4.8,122,"CW3X+29 Everett, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.4025721,-71.0515875","https://www.google.com/maps/place/BearMoose+Brewing+Company/data=!4m2!3m1!1s0x89e3710b1fa44e87:0xf6987ec441c5b27b","","" +"Belle Isle Observation Tower","42.3917606,-70.9903023","Unnamed Road, 1399 Bennington St, Boston, MA 02128, United States",,"Scenic spot","+1 617-727-5350","https://www.mass.gov/locations/belle-isle-marsh-reservation",4.9,10,"92R5+PV Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3917606,-70.9903023","https://www.google.com/maps/place/Belle+Isle+Observation+Tower/data=!4m2!3m1!1s0x89e36f61a259031f:0x154a184925abda73","","" +"Brasil On Ferry","42.4206339,-71.055873","448 Ferry St, Malden, MA 02148, United States",,"Brazilian restaurant","+1 781-397-8808",,4.6,183,"CWCV+7M Malden, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.4206339,-71.055873","https://www.google.com/maps/place/Brasil+On+Ferry/data=!4m2!3m1!1s0x89e3717a2b964caf:0xbf30aa30852c2f16","","" +"Broadway Dairy Maid","42.4222989,-71.0433886","960 Broadway, Everett, MA 02149, United States","Seasonal dessert parlor serving ice cream cones, sundaes & other frozen treats from March-October.","Ice cream shop","+1 617-389-3433","https://www.facebook.com/BroadwayDairyMaid/",4.6,537,"CXC4+WJ Everett, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.4222989,-71.0433886","https://www.google.com/maps/place/Broadway+Dairy+Maid/data=!4m2!3m1!1s0x89e37186c9aff893:0x78b79810849fc8eb","","" +"Colonel William Prescott Statue","42.3761612,-71.06088","Freedom Trail, Boston, MA 02129, United States",,"Historical landmark",,"https://www.boston.gov/departments/parks-and-recreation",5,6,"9WGQ+FJ Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3761612,-71.06088","https://www.google.com/maps/place/Colonel+William+Prescott+Statue/data=!4m2!3m1!1s0x89e3719f9281d7c1:0x58baca450113ca4","","" +"Consulado de Honduras en Boston","42.3936888,-71.0412802","90 Everett Ave 3rd floor, Chelsea, MA 02150, United States",,"Foreign consulate","+1 617-819-4885",,3.4,283,"9XV5+FF Chelsea, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3936888,-71.0412802","https://www.google.com/maps/place/Consulado+de+Honduras+en+Boston/data=!4m2!3m1!1s0x89e3717ea2c367e7:0xb7629e23506a625b","","" +"Costco Wholesale","42.3968978,-71.0714924","2 Mystic View Rd, Everett, MA 02149, United States","Members-only warehouse selling a huge variety of items including bulk groceries, electronics & more.","Warehouse store","+1 617-544-4806","http://www.costco.com/warehouse-locations/everett-MA-333.html?utm_term=KW&utm_campaign=Homepage&utm_medium=GMB&utm_source=Google&utm_content=Link",4.6,3795,"9WWH+QC Everett, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3968978,-71.0714924","https://www.google.com/maps/place/Costco+Wholesale/data=!4m2!3m1!1s0x89e37119d8a6a045:0x2e2cc0b376fb3abd","","" +"East Boston Branch of the Boston Public Library","42.3778389,-71.0282154","365 Bremen St, Boston, MA 02128, United States",,"Public library","+1 617-569-0271","https://www.bpl.org/locations/east-boston/",4.5,74,"9XHC+4P Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3778389,-71.0282154","https://www.google.com/maps/place/East+Boston+Branch+of+the+Boston+Public+Library/data=!4m2!3m1!1s0x89e3705abf04eaf3:0xeef9f9ca2786c77b","","" +"East Boston High School","42.3809511,-71.0350852","86 White St, East Boston, MA 02128, United States",,"High school","+1 617-635-9896","http://www.ebhsjets.net/",3.7,27,"9XJ7+9X East Boston, Boston, MA, USA","https://maps.google.com/maps?q=+%4042.3809511,-71.0350852","https://www.google.com/maps/place/East+Boston+High+School/data=!4m2!3m1!1s0x89e3704e6747675f:0xff57babcfd705985","","" +"East Boston YMCA","42.3734483,-71.0331398","215 Bremen St, Boston, MA 02128, United States",,"Youth organization","+1 617-569-9622","http://www.ymcaboston.org/eastboston",4.2,67,"9XF8+9P Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3734483,-71.0331398","https://www.google.com/maps/place/East+Boston+YMCA/data=!4m2!3m1!1s0x89e3704465c2d409:0x69dae831ae3b3a9d","","" +"Fort Heath Park","42.3895122,-70.9693867","Winthrop, MA 02152, United States",,"State park",,"http://winthropmemorials.org/wars-forts/pages/fort-heath.html",4.7,61,"92QJ+R6 Winthrop, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3895122,-70.9693867","https://www.google.com/maps/place/Fort+Heath+Park/data=!4m2!3m1!1s0x89e36e437f0448bf:0x81c43dd818b95692","","" +"Fort Hill Tower","42.3253252,-71.0945712","22-98 Fort Ave, Boston, MA 02119, United States",,"Observation deck",,"https://www.nps.gov/places/fort-hill.htm",4.8,91,"8WG4+45 Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3253252,-71.0945712","https://www.google.com/maps/place/Fort+Hill+Tower/data=!4m2!3m1!1s0x89e37a29808d36e1:0x31a83cd40d528b8c","","" +"Governor Bellingham-Cary House","42.398422,-71.0280157","34 Parker St, Chelsea, MA 02150, United States",,"Historical place","+1 617-884-4090","https://bellinghamcary.org/",4.7,21,"9XXC+9Q Chelsea, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.398422,-71.0280157","https://www.google.com/maps/place/Governor+Bellingham-Cary+House/data=!4m2!3m1!1s0x89e371b8c2570f6d:0xae7e178439cd70c","","" +"Harry Della Russo Stadium","42.4114215,-71.0155516","75 Park Ave, Revere, MA 02151, United States",,"Stadium",,,4.5,224,"CX6M+HQ Revere, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.4114215,-71.0155516","https://www.google.com/maps/place/Harry+Della+Russo+Stadium/data=!4m2!3m1!1s0x89e371eff118845f:0x61fe5737f59b02c5","","" +"Hook & Reel Cajun Seafood & Bar","42.4110462,-70.993656","151 Veterans Of Foreign Wars Pkwy #10, Revere, MA 02151, United States",,"Seafood restaurant","+1 781-629-1919","https://hookreel.com/location/revere/",4.2,1055,"C264+CG Revere, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.4110462,-70.993656","https://www.google.com/maps/place/Hook+%26+Reel+Cajun+Seafood+%26+Bar/data=!4m2!3m1!1s0x89e36f24c6a27939:0xb20d3fe2535ea236","","" +"Judie Dyer Park","42.3976519,-71.0355621","252 Spruce St, Chelsea, MA 02150, United States",,"Playground",,,4,3,"9XX7+3Q Chelsea, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3976519,-71.0355621","https://www.google.com/maps/place/Judie+Dyer+Park/data=!4m2!3m1!1s0x89e371b7a1c91021:0x33221c4dab45b3bc","","" +"Madonna Queen of the Universe Shrine","42.390191,-71.0056995","120-150 Orient Ave, Boston, MA 02128, United States",,"Catholic church","+1 617-569-8792",,4.8,389,"9XRV+3P Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.390191,-71.0056995","https://www.google.com/maps/place/Madonna+Queen+of+the+Universe+Shrine/data=!4m2!3m1!1s0x89e371d779eae3e7:0x27eb703d89915400","","" +"Marao Burgers Everett","42.403759,-71.0589219","3407 318, 318 Broadway, Everett, MA 02149, United States",,"Hamburger restaurant","+1 857-363-7139","http://linktr.ee/maraoburgers",4.3,620,"CW3R+GC Everett, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.403759,-71.0589219","https://www.google.com/maps/place/Marao+Burgers+Everett/data=!4m2!3m1!1s0x89e3710e66a274e9:0x219ce91269f3dff8","","" +"Maverick House Tavern","42.3698284,-71.037937","154 Maverick St, Boston, MA 02128, United States","Neighborhood pub offering live music, craft beers & local spirits, plus breakfast & sandwiches.",,"+1 617-455-6223","http://www.maverickhousetavern.com/",4.1,242,"9X96+WR Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3698284,-71.037937","https://www.google.com/maps/place/Maverick+House+Tavern/data=!4m2!3m1!1s0x89e3705d2ca90ed9:0xc972e2054e0fe47d","","" +"My Guatemala Bakery 2","42.3903823,-71.0386285","224 Broadway, Chelsea, MA 02150, United States",,"Bakery","+1 617-887-3452",,4.4,35,"9XR6+5G Chelsea, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3903823,-71.0386285","https://www.google.com/maps/place/My+Guatemala+Bakery+2/data=!4m2!3m1!1s0x89e371ad8d78d219:0x9c6f682a5960e072","","" +"Newbridge Cafe","42.4122481,-71.0316196","650 Washington Ave, Chelsea, MA 02150, United States","Longtime eatery doling out steak tips & other meat-focused American plates amid old-school decor.","American restaurant","+1 617-884-0134","http://www.newbridgecafe.com/",4.4,1479,"CX69+V9 Chelsea, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.4122481,-71.0316196","https://www.google.com/maps/place/Newbridge+Cafe/data=!4m2!3m1!1s0x89e371922f9b2079:0xc6760b94730725a6","","" +"PORT Park","42.3861321,-71.0328839","99 Marginal St, Chelsea, MA 02150, United States",,"Park","+1 617-466-4090","https://www.facebook.com/pages/PORT-Park/1655796778032455",4.5,85,"9XP8+FR Chelsea, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3861321,-71.0328839","https://www.google.com/maps/place/PORT+Park/data=!4m2!3m1!1s0x89e3704cccb5d2f5:0xece0019104201e4f","","" +"Paws & Play Dog Park","42.4213082,-71.0270609","Webner Park, 68 Sargent St, Revere, MA 02151, United States",,"Dog park",,,4.1,157,"CXCF+G5 Revere, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.4213082,-71.0270609","https://www.google.com/maps/place/Paws+%26+Play+Dog+Park/data=!4m2!3m1!1s0x89e3718ac488d581:0x143e8fcc1c72df52","","" +"Peach's & Cream","42.391236,-71.0366491","307 Broadway, Chelsea, MA 02150, United States","Sweets shop offering cakes, pastries & other baked goods, in addition to take-out breakfast items.","Bakery","+1 617-889-1900","https://www.peachsandcreambakery.com/",4.5,105,"9XR7+F8 Chelsea, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.391236,-71.0366491","https://www.google.com/maps/place/Peach's+%26+Cream/data=!4m2!3m1!1s0x89e371b21e2de9df:0xebe2ea1d14b19ba7","","" +"Piers Park","42.3649623,-71.0361399","95 Marginal St, Boston, MA 02128, United States",,"Park",,"https://www.boston.gov/departments/parks-and-recreation",4.8,498,"9X77+XG Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3649623,-71.0361399","https://www.google.com/maps/place/Piers+Park/data=!4m2!3m1!1s0x89e37161f18ea6e5:0xf6e835f13094694","","" +"Porrazzo Skating Rink","42.3827415,-71.0116946","199 Coleridge St, East Boston, MA 02128, United States",,"Arena","+1 617-567-9571","http://fmcicesports.com/rink/east-boston-porrazzo-skating-arena/",4.8,35,"9XMQ+38 East Boston, Boston, MA, USA","https://maps.google.com/maps?q=+%4042.3827415,-71.0116946","https://www.google.com/maps/place/Porrazzo+Skating+Rink/data=!4m2!3m1!1s0x89e3702d38b64861:0xbf51b0bd578631ea","","" +"Revere Karate Academy","42.4183123,-70.9973058","351 Revere St, Revere, MA 02151, United States",,"Martial arts school","+1 781-289-9535",,3.8,19,"C293+83 Revere, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.4183123,-70.9973058","https://www.google.com/maps/place/Revere+Karate+Academy/data=!4m2!3m1!1s0x89e371e8c0e59351:0x12403ea6724e2dfa","","" +"Sphere Luxury Apartments","42.4008442,-71.1122037","640 Boston Ave, Medford, MA 02155, United States",,"Apartment building","+1 781-226-2393","http://www.sphereluxuryapartments.com/",3.7,6,"CV2Q+84 Medford, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.4008442,-71.1122037","https://www.google.com/maps/place/Sphere+Luxury+Apartments/data=!4m2!3m1!1s0x89e376d8f1325193:0xe3c776b648a7833a","","" +"Suffolk Downs","42.390501,-70.997123","Walley St, Boston, MA 02128, United States",,"MRT/LRT Station",,"http://www.mbta.com/schedules_and_maps/subway/lines/stations/?stopId=13698",4.7,13,"92R3+65 Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.390501,-70.997123","https://www.google.com/maps/place/Suffolk+Downs/data=!4m2!3m1!1s0x89e36e2612b807ad:0xcd2607e6fb960a15","","" +"Super Burritos Mexican Grill","42.41826,-71.0506461","453 Ferry St, Everett, MA 02149, United States","Unfussy spot for Salvadoran & Mexican staples, including pupusas & tamales, plus breakfast.","Mexican restaurant","+1 617-387-0405","https://www.superburritos.boston/",4.4,322,"CW9X+8P Everett, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.41826,-71.0506461","https://www.google.com/maps/place/Super+Burritos+Mexican+Grill/data=!4m2!3m1!1s0x89e371781015152b:0x3b94659b55b58c36","","" +"The Quiet Few","42.3670906,-71.0359889","331 Sumner St, East Boston, MA 02128, United States",,"Bar","+1 617-561-1061","https://www.thequietfew.com/",4.7,257,"9X87+RJ East Boston, Boston, MA, USA","https://maps.google.com/maps?q=+%4042.3670906,-71.0359889","https://www.google.com/maps/place/The+Quiet+Few/data=!4m2!3m1!1s0x89e371f718c43bf3:0x278e4de737dc510c","","" +"The Tall Ship Boston","42.3649544,-71.0414523","1 E Pier Dr, Boston, MA 02128, United States","Laid-back waterside tall ship with tables doling out seafood, global bites & creative cocktails.","Lounge","+1 617-307-7714","https://www.tallshipboston.com/",4.2,549,"9X75+XC Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3649544,-71.0414523","https://www.google.com/maps/place/The+Tall+Ship+Boston/data=!4m2!3m1!1s0x89e37153af271ec3:0xe9a3938dd5e76126","","" +"Toasted Flats","42.3711266,-71.0371343","53 Chelsea St, Boston, MA 02128, United States","Snug eatery whipping up health-conscious flatbread sandwiches, plus coffee, smoothies & juices.","Sandwich shop","+1 857-264-8531","https://toastedflats.com/",4.7,372,"9XC7+F4 Boston, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3711266,-71.0371343","https://www.google.com/maps/place/Toasted+Flats/data=!4m2!3m1!1s0x89e3704339d4dbaf:0x7a24b797018182bd","","" +"Vega Market","42.3891835,-71.033703","29 Maverick St, Chelsea, MA 02150, United States",,"Grocery store",,,4.8,5,"9XQ8+MG Chelsea, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3891835,-71.033703","https://www.google.com/maps/place/Vega+Market/data=!4m2!3m1!1s0x89e371b3bce5fc25:0xd04d905fd639609f","","" +"Winthrop High School","42.3803348,-70.9799864","400 Main St, Winthrop, MA 02152, United States",,"High school","+1 617-846-5505","https://www.winthrop.k12.ma.us/Domain/99",,,"92JC+42 Winthrop, Massachusetts, USA","https://maps.google.com/maps?q=+%4042.3803348,-70.9799864","https://www.google.com/maps/place/Winthrop+High+School/data=!4m2!3m1!1s0x89e36f2617e687a5:0xeea31e70759d4700","","" \ No newline at end of file diff --git a/List E.csv b/List E.csv new file mode 100644 index 0000000..4424e36 --- /dev/null +++ b/List E.csv @@ -0,0 +1,3 @@ +Title,Note,URL,Comment +Somerville Museum,,https://www.google.com/maps/place/Somerville+Museum/data=!4m2!3m1!1s0x89e377319800f8e5:0xa135b53119b8c58a, +Make Way for Ducklings,,https://www.google.com/maps/place/Make+Way+for+Ducklings/data=!4m2!3m1!1s0x89e3709e47f660b1:0x7a756ec808941b41, diff --git a/ZestySalesman.ipynb b/ZestySalesman.ipynb new file mode 100644 index 0000000..fb03d13 --- /dev/null +++ b/ZestySalesman.ipynb @@ -0,0 +1,208 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 62, + "id": "initial_id", + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2023-11-06T00:26:14.565659Z", + "start_time": "2023-11-06T00:26:14.551906Z" + } + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import requests\n", + "import folium" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "outputs": [], + "source": [ + "# Create a JSON request for the API\n", + "# This is the data we want to get from the API\n", + "northeastern_coordinate = \"-71.09033,42.33976;\"\n", + "coordinate_string = '-71.2038948,42.4299758;-71.1060828,42.3511927;-71.0969274,42.3446263;-71.130887,42.35304;-71.1459593,42.3501823;-71.1460435,42.3495825;-71.1217152,42.3426377;-71.1258765,42.331864;-71.1095021,42.3364675;-71.133103,42.3890049;-71.0851891,42.3500031;-71.1123834,42.3360385;-71.2273649,42.3145041;-71.0834061,42.341987;-71.0992038,42.3306454;-71.0990577,42.3381442;-71.0949218,42.3419564;-71.0942861,42.3413301;-71.0908104,42.329969;-71.0913583,42.3490205;-71.1000217,42.3323776;-71.1241295,42.3518397;-71.1618052,42.3245965;-71.1625829,42.340795;-71.167854,42.4107892;-71.155555,42.3317473;-71.1227278,42.3965778;-71.3598149,42.3140229;-71.1126695,42.3836229;-71.119149,42.3884;-71.0872846,42.2961434;-71.1427371,42.3433772;-71.1438455,42.3569102;-71.1313443,42.3525708;-71.1284677,42.3631904;-71.119301,42.388547;-71.097883,42.381008;-71.1107166,42.3741209;-71.1194344,42.3754427;-71.1013044,42.3627462;-71.1108423,42.3838224;-71.1026937,42.3820702;-71.1189467,42.373465;-71.1208817,42.3732344;-71.0968274,42.3799095;-71.094048,42.339381;-71.1854722,42.3621177;-71.1146697,42.3782386;-71.0935443,42.3817274;-71.0906355,42.3616095;-71.1161887,42.3766442;-71.0962734,42.3627993;-71.1155576,42.3784629;-71.0949101,42.3797674;-71.1087411,42.3640287;-71.09476,42.37736;-71.1014951,42.3614115;-71.1024769,42.3822934;-71.1011111,42.3636597;-71.0898829,42.3463992;-71.0983169,42.3319001;-71.0945712,42.3253252;-71.1122037,42.4008442'\n", + "coordinates = requests.get('http://acetyl.net:5000/trip/v1/bike/' + northeastern_coordinate + coordinate_string)\n", + "\n", + "coordinates = coordinates.json()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:26:15.268775Z", + "start_time": "2023-11-06T00:26:14.558083Z" + } + }, + "id": "aa618161182b5b07" + }, + { + "cell_type": "code", + "execution_count": 64, + "outputs": [], + "source": [ + "# Create a dataframe from the JSON\n", + "df = pd.DataFrame(coordinates['waypoints'])" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:26:15.278022Z", + "start_time": "2023-11-06T00:26:15.269158Z" + } + }, + "id": "32c485788eedd94" + }, + { + "cell_type": "code", + "execution_count": 65, + "outputs": [], + "source": [ + "# Separate the location column into lon and lat columns\n", + "df['lat'] = df['location'].apply(lambda x: x[0])\n", + "df['lon'] = df['location'].apply(lambda x: x[1])\n", + "\n", + "df['waypoint_index'] = df['waypoint_index'].astype(int)\n", + "\n", + "# Map out the waypoints in order of the waypoint index\n", + "df = df.sort_values(by=['waypoint_index'])" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:26:15.284313Z", + "start_time": "2023-11-06T00:26:15.275568Z" + } + }, + "id": "535ab02638d20cb2" + }, + { + "cell_type": "code", + "execution_count": 66, + "outputs": [ + { + "data": { + "text/plain": " waypoint_index trips_index \\\n0 0 0 \n14 1 0 \n60 2 0 \n46 3 0 \n16 4 0 \n.. ... ... \n61 59 0 \n15 60 0 \n19 61 0 \n31 62 0 \n62 63 0 \n\n hint distance \\\n0 DoUhgBeFIYCcAAAAJgAAAAAAAAARAAAAm0CKQdkZiEAAAA... 0.236958 \n14 lhgDgIkYA4BkAAAAIgEAAFoBAAAaAAAAJyAzQWNrAEI8Ax... 7.134933 \n60 tg0igLoNIoAOAAAAAAAAADwAAADtAQAA8CrBQAAAAACcrM... 17.496916 \n46 k4chgBiIIYAKAAAAFwAAAPQDAAB_AgAAHn2aP-biHUBi6e... 36.240351 \n16 rLwhgLG8IYAEAAAABQAAADAAAABsAAAA1X8CQHGb7D9Kz6... 24.054372 \n.. ... ... \n61 g38hgI1_IYBOAAAAfwAAAAAAAAAAAAAAZ4ECQsbEUkIAAA... 12.789906 \n15 cX8hgJF_IYA1AAAAMAAAAGcAAABOAAAATyWxQQ77nUEHMC... 22.776295 \n19 5tYhgJHXIYAIAAAArQAAADwAAABCAQAAaRlbQD16mUGpAc... 17.374491 \n31 WhEngAASJ4BcAAAAdwAAAHoBAAAFAAAAI3gkQQlZRUJLNi... 13.907079 \n62 s9QhgLbUIYAwAAAAkAAAAAAAAAAAAAAA2XmpQNgrgEEAAA... 4.111715 \n\n name location lat lon \n0 Northeastern (Inbound) [-71.090331, 42.339762] -71.090331 42.339762 \n14 [-71.083465, 42.34194] -71.083465 42.341940 \n60 Public Alley 901 [-71.089677, 42.346361] -71.089677 42.346361 \n46 [-71.093834, 42.339096] -71.093834 42.339096 \n16 [-71.099284, 42.338007] -71.099284 42.338007 \n.. ... ... ... ... \n61 Tremont Street [-71.098267, 42.332009] -71.098267 42.332009 \n15 Alleghany Street [-71.099348, 42.33047] -71.099348 42.330470 \n19 Dudley Street [-71.090904, 42.329829] -71.090904 42.329829 \n31 Blue Hill Avenue [-71.087449, 42.296172] -71.087449 42.296172 \n62 [-71.09454, 42.325354] -71.094540 42.325354 \n\n[64 rows x 8 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
waypoint_indextrips_indexhintdistancenamelocationlatlon
000DoUhgBeFIYCcAAAAJgAAAAAAAAARAAAAm0CKQdkZiEAAAA...0.236958Northeastern (Inbound)[-71.090331, 42.339762]-71.09033142.339762
1410lhgDgIkYA4BkAAAAIgEAAFoBAAAaAAAAJyAzQWNrAEI8Ax...7.134933[-71.083465, 42.34194]-71.08346542.341940
6020tg0igLoNIoAOAAAAAAAAADwAAADtAQAA8CrBQAAAAACcrM...17.496916Public Alley 901[-71.089677, 42.346361]-71.08967742.346361
4630k4chgBiIIYAKAAAAFwAAAPQDAAB_AgAAHn2aP-biHUBi6e...36.240351[-71.093834, 42.339096]-71.09383442.339096
1640rLwhgLG8IYAEAAAABQAAADAAAABsAAAA1X8CQHGb7D9Kz6...24.054372[-71.099284, 42.338007]-71.09928442.338007
...........................
61590g38hgI1_IYBOAAAAfwAAAAAAAAAAAAAAZ4ECQsbEUkIAAA...12.789906Tremont Street[-71.098267, 42.332009]-71.09826742.332009
15600cX8hgJF_IYA1AAAAMAAAAGcAAABOAAAATyWxQQ77nUEHMC...22.776295Alleghany Street[-71.099348, 42.33047]-71.09934842.330470
196105tYhgJHXIYAIAAAArQAAADwAAABCAQAAaRlbQD16mUGpAc...17.374491Dudley Street[-71.090904, 42.329829]-71.09090442.329829
31620WhEngAASJ4BcAAAAdwAAAHoBAAAFAAAAI3gkQQlZRUJLNi...13.907079Blue Hill Avenue[-71.087449, 42.296172]-71.08744942.296172
62630s9QhgLbUIYAwAAAAkAAAAAAAAAAAAAAA2XmpQNgrgEEAAA...4.111715[-71.09454, 42.325354]-71.09454042.325354
\n

64 rows × 8 columns

\n
" + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:26:15.297169Z", + "start_time": "2023-11-06T00:26:15.287354Z" + } + }, + "id": "49dba1f17ca8337e" + }, + { + "cell_type": "code", + "execution_count": 67, + "outputs": [ + { + "data": { + "text/plain": "", + "text/html": "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Create a map\n", + "m = folium.Map(location=[df['lon'].mean(), df['lat'].mean()], zoom_start=11)\n", + "\n", + "# Add a marker for each waypoint and connect with a line as the salesman would travel\n", + "for i in range(len(df)):\n", + " folium.Marker([df.iloc[i]['lon'], df.iloc[i]['lat']], popup=df.iloc[i]['name']).add_to(m)\n", + " if i < len(df) - 1:\n", + " folium.PolyLine([[df.iloc[i]['lon'], df.iloc[i]['lat']], [df.iloc[i + 1]['lon'], df.iloc[i + 1]['lat']]],\n", + " color=\"red\", weight=2.5, opacity=1).add_to(m)\n", + "\n", + "# Display the map\n", + "m" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:26:15.360267Z", + "start_time": "2023-11-06T00:26:15.298760Z" + } + }, + "id": "80fd847da2833913" + }, + { + "cell_type": "code", + "execution_count": 68, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The trip will take 10.198055555555555 hours\n" + ] + } + ], + "source": [ + "trip_hrs = int(coordinates['trips'][0]['duration'])/3600\n", + "print(\"The trip will take {} hours\".format(trip_hrs))" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:26:15.360383Z", + "start_time": "2023-11-06T00:26:15.353591Z" + } + }, + "id": "a3ec09dfb5cbb5b3" + }, + { + "cell_type": "code", + "execution_count": 68, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T00:26:15.360410Z", + "start_time": "2023-11-06T00:26:15.355568Z" + } + }, + "id": "be94c3708a1bd250" + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/utils.py b/utils.py new file mode 100644 index 0000000..f250a9c --- /dev/null +++ b/utils.py @@ -0,0 +1,10 @@ +# make a function that turns a list of lists of coordinates into a string + +def list_to_string(list_of_lists): + """ + Takes a list of lists of coordinates and returns a string of the coordinates + """ + string = '' + for i in list_of_lists: + string += str(i[1]) + ',' + str(i[0]) + ';' + return string \ No newline at end of file -- cgit v1.2.3