{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [],
"source": [
"from datascience import *\n",
"%matplotlib inline\n",
"path_data = 'https://raw.githubusercontent.com/ChemeketaCS/datasci-textbook/main/assets/data/'\n",
"import matplotlib.pyplot as plt\n",
"plt.style.use('fivethirtyeight')\n",
"import math\n",
"from scipy import stats\n",
"import numpy as np\n",
"import warnings\n",
"warnings.simplefilter(action='ignore', category=np.VisibleDeprecationWarning)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Bike Sharing in the Bay Area\n",
"\n",
"We end this chapter by using all the methods we have learned to examine a new and large dataset. We will also introduce `map_table`, a powerful visualization tool.\n",
"\n",
"The [Bay Area Bike Share](http://www.bayareabikeshare.com/) service published a [dataset](http://www.bayareabikeshare.com/open-data) describing every bicycle rental from September 2014 to August 2015 in their system. There were 354,152 rentals in all. The columns are:\n",
"\n",
"- An ID for the rental\n",
"- Duration of the rental, in seconds\n",
"- Start date\n",
"- Name of the Start Station and code for Start Terminal\n",
"- Name of the End Station and code for End Terminal\n",
"- A serial number for the bike\n",
"- Subscriber type and zip code"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
" \n",
"
\n",
"
Trip ID
Duration
Start Date
Start Station
Start Terminal
End Date
End Station
End Terminal
Bike #
Subscriber Type
Zip Code
\n",
"
\n",
" \n",
" \n",
"
\n",
"
913460
765
8/31/2015 23:26
Harry Bridges Plaza (Ferry Building)
50
8/31/2015 23:39
San Francisco Caltrain (Townsend at 4th)
70
288
Subscriber
2139
\n",
"
\n",
"
\n",
"
913459
1036
8/31/2015 23:11
San Antonio Shopping Center
31
8/31/2015 23:28
Mountain View City Hall
27
35
Subscriber
95032
\n",
"
\n",
"
\n",
"
913455
307
8/31/2015 23:13
Post at Kearny
47
8/31/2015 23:18
2nd at South Park
64
468
Subscriber
94107
\n",
"
\n",
"
\n",
"
913454
409
8/31/2015 23:10
San Jose City Hall
10
8/31/2015 23:17
San Salvador at 1st
8
68
Subscriber
95113
\n",
"
\n",
"
\n",
"
913453
789
8/31/2015 23:09
Embarcadero at Folsom
51
8/31/2015 23:22
Embarcadero at Sansome
60
487
Customer
9069
\n",
"
\n",
"
\n",
"
913452
293
8/31/2015 23:07
Yerba Buena Center of the Arts (3rd @ Howard)
68
8/31/2015 23:12
San Francisco Caltrain (Townsend at 4th)
70
538
Subscriber
94118
\n",
"
\n",
"
\n",
"
913451
896
8/31/2015 23:07
Embarcadero at Folsom
51
8/31/2015 23:22
Embarcadero at Sansome
60
363
Customer
92562
\n",
"
\n",
"
\n",
"
913450
255
8/31/2015 22:16
Embarcadero at Sansome
60
8/31/2015 22:20
Steuart at Market
74
470
Subscriber
94111
\n",
"
\n",
"
\n",
"
913449
126
8/31/2015 22:12
Beale at Market
56
8/31/2015 22:15
Temporary Transbay Terminal (Howard at Beale)
55
439
Subscriber
94130
\n",
"
\n",
"
\n",
"
913448
932
8/31/2015 21:57
Post at Kearny
47
8/31/2015 22:12
South Van Ness at Market
66
472
Subscriber
94702
\n",
"
\n",
" \n",
"
\n",
"
... (354142 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Date | End Station | End Terminal | Bike # | Subscriber Type | Zip Code\n",
"913460 | 765 | 8/31/2015 23:26 | Harry Bridges Plaza (Ferry Building) | 50 | 8/31/2015 23:39 | San Francisco Caltrain (Townsend at 4th) | 70 | 288 | Subscriber | 2139\n",
"913459 | 1036 | 8/31/2015 23:11 | San Antonio Shopping Center | 31 | 8/31/2015 23:28 | Mountain View City Hall | 27 | 35 | Subscriber | 95032\n",
"913455 | 307 | 8/31/2015 23:13 | Post at Kearny | 47 | 8/31/2015 23:18 | 2nd at South Park | 64 | 468 | Subscriber | 94107\n",
"913454 | 409 | 8/31/2015 23:10 | San Jose City Hall | 10 | 8/31/2015 23:17 | San Salvador at 1st | 8 | 68 | Subscriber | 95113\n",
"913453 | 789 | 8/31/2015 23:09 | Embarcadero at Folsom | 51 | 8/31/2015 23:22 | Embarcadero at Sansome | 60 | 487 | Customer | 9069\n",
"913452 | 293 | 8/31/2015 23:07 | Yerba Buena Center of the Arts (3rd @ Howard) | 68 | 8/31/2015 23:12 | San Francisco Caltrain (Townsend at 4th) | 70 | 538 | Subscriber | 94118\n",
"913451 | 896 | 8/31/2015 23:07 | Embarcadero at Folsom | 51 | 8/31/2015 23:22 | Embarcadero at Sansome | 60 | 363 | Customer | 92562\n",
"913450 | 255 | 8/31/2015 22:16 | Embarcadero at Sansome | 60 | 8/31/2015 22:20 | Steuart at Market | 74 | 470 | Subscriber | 94111\n",
"913449 | 126 | 8/31/2015 22:12 | Beale at Market | 56 | 8/31/2015 22:15 | Temporary Transbay Terminal (Howard at Beale) | 55 | 439 | Subscriber | 94130\n",
"913448 | 932 | 8/31/2015 21:57 | Post at Kearny | 47 | 8/31/2015 22:12 | South Van Ness at Market | 66 | 472 | Subscriber | 94702\n",
"... (354142 rows omitted)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips = Table.read_table(path_data + 'trip.csv')\n",
"trips"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We'll focus only on the *free trips*, which are trips that last less than 1800 seconds (half an hour). There is a charge for longer trips.\n",
"\n",
"The histogram below shows that most of the trips took around 10 minutes (600 seconds) or so. Very few took near 30 minutes (1800 seconds), possibly because people try to return the bikes before the cutoff time so as not to have to pay."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"commute = trips.where('Duration', are.below(1800))\n",
"commute.hist('Duration', unit='Second')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can get more detail by specifying a larger number of bins. But the overall shape doesn't change much."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAccAAAEcCAYAAACyBX9eAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABAT0lEQVR4nO3deViTV9oG8DuiiOKCYoiiohYoooKMKFgdN1yq2EJhRBSnQ7UoRVymFSvuY7WDSF2qItpSpq4zomKhat2p4N5SKYpVcURxI8gqRCAC+f7wI2NIwKAJCXD/riuX5HlP3vc5SfDh3c4R5Ofny0BERERyTXSdABERkb5hcSQiIqqCxZGIiKgKFkciIqIqWByJiIiqYHEkIiKqgsWRiIioChZHIiKiKlgcX1NaWpquU3hj7IN+YB/0R0PoB/ugGSyOREREVbA4EhERVcHiSEREVAWLIxERURUsjkRERFWwOBIREVXB4khERFQFiyMREVEVTXWdADUc4id5yM57qhDr0K4NRMJ2OsqIiOj1sDiSxmTnPcUXG3crxJbNmcLiSET1Dg+rEhERVcE9R9IqgQBIvXVPKV7d4VZVh2Zrak9EpA0sjqRVBYXPsCHqoFJ8+dwpKotgqVSK0K37lOI8PEtEdYnFkXSiuqL592keOsiGiEgRzzkSERFVUS+KY2RkJOzt7SESiTBs2DCcP3++2rYlJSUICAjAoEGD0KFDB4wfP16pTWJiIkxMTJQet27d0mY3Ggzxkzyk3rqn9CiVSnWdGhGRRuj9YdWYmBgEBwdj7dq1GDhwICIjI+Hl5YWLFy+ia9euSu3Ly8thZGSEGTNm4Pjx4ygoKKh23RcvXkS7dv87j9WhQwet9KGhUXXLBsBDokTUcOj9nmN4eDh8fHzg6+sLGxsbhIWFQSQSISoqSmV7Y2NjrF+/Hh999BE6d+5c47qFQiFEIpH8YWBgoI0uEBFRPaPXe45SqRTJycmYPXu2QtzFxQWXLl164/UPHz4cUqkUNjY2CAoKwtChQ994naQdqm4J6dCujY6yIaKGTq+LY05ODsrLyyEUChXiQqEQWVlZr73ejh07Yt26dejXrx+kUin27t0Ld3d3HDp0CIMHD37TtEkLVF3dumzOFBgKdJQQETVoel0cKwkEiv8DymQypVhtWFtbw9raWv7cyckJGRkZ2LRpU43FMS0trcbn9dHr9KFIIoVEIlGKl5WXKcVVxTQVL5IUoX0rw0b7OeibhtAHoGH0g31Qz8t1oCq9Lo6mpqYwMDBQ2kvMzs5W2pt8U46OjoiJiamxzctvZFpaWo1vbH3wqj5UN1pNs2Yvzu1W1dSgqVJcVUxT8VbGrQBIG/znUB80hD4ADaMf7INm6HVxNDQ0hIODA+Lj4/HBBx/I4/Hx8XBzc9Potq5evQqRSKTRddZ3vCqViBorvS6OABAYGAh/f384OjrC2dkZUVFRyMzMxNSpUwEAK1asQFJSEuLi4uSvuXHjBqRSKXJyciCRSJCSkgIAsLe3BwBs2bIFFhYWsLW1hVQqRXR0NA4fPowdO3bUfQf1hKq9RN63SESNld4XR09PT+Tm5iIsLAxisRi2traIjo6GhYUFACAzMxPp6ekKr/Hy8sL9+/flzyuvQs3PzwcAPH/+HEuXLsXjx49hZGQkX+eYMWPqplN6SNVeIvcQiaix0vviCAB+fn7w8/NTuSwiIkIpdvXq1RrXN3fuXMydO1cjuZHuCARAbpFU5S0eHKSciN5EvSiORKoUFD7Dl5v2KF2owxk8iOhNsTg2Mi+fWyyS/G+vi+cXiYj+h8WxkXn53KJEIpHvdfH8IhHR/+j92KpERER1jcWRiIioChZHIiKiKlgciYiIqmBxJCIiqqLaq1VfHmGmNrp27frayRAREemDaoujvb39a00LlZub+0YJERER6Vq1xXHz5s0KxVEmk2Hr1q3IyMjAxIkTYWVlBZlMhtu3b2P//v2wsLCAv79/nSRNRESkTdUWxylTpig837BhA549e4YrV66gffv2CsuCg4MxZswY5OTkaCdLoloQCKA03irAMVeJSH1qj5ATGRkJf39/pcIIAB06dICvry++/fZbzJkzR6MJEtVWQeEzbIg6qBTnmKtEpC61r1bNzs7G8+fPq11eVlaG7OxsjSRFRESkS2oXR3t7e0RGRuLePeXDVXfv3kVkZKR8MmEiIqL6TO3Dql9++SU8PDzg5OSEcePGwcrKCgCQlpaGo0ePomnTpli1apXWEiUiIqorahfHAQMG4NSpU1i1ahVOnDiB2NhYAEDLli0xZswYLFq0CLa2tlpLlIiIqK7UasoqGxsb7Ny5ExUVFcjOzoZMJoNQKESTJhxoh4iIGo7Xms+xSZMmMDMz03QupEEvT2r8Mk5qTET0arUqjvn5+Thw4ADu3r2LvLw8yGQyheUCgQCbN2/WaIL0el6e1PhlnNSYiOjV1C6OZ86cwYcffojCwkK0bt0aJiYmSm1eZ7g5orqianAADgxARKqoXRwXLVqEdu3a4fDhw7Czs9NmTkRaoWpwAA4MQESqqH0lze3btxEQEMDCSEREDZ7axbFbt24oKSnRZi5ERER6Qe3i+Nlnn+Ff//oX8vLyNJpA5cg6IpEIw4YNw/nz56ttW1JSgoCAAAwaNAgdOnTA+PHjldrExcXBw8MDlpaW6NKlC0aOHIkjR44otNm9ezdMTEyUHiz+REQE1OKco1gsRvv27dGvXz94eHigS5cuMDAwUGgjEAhqNfB4TEwMgoODsXbtWgwcOBCRkZHw8vLCxYsXVU6aXF5eDiMjI8yYMQPHjx9HQUGBUptz585h6NChWLJkCdq1a4fo6Gj89a9/xaFDhzBo0CB5u5YtW+LKlSsKrzUyMlI7dyIiarjULo7/+Mc/5D//61//UtmmtsUxPDwcPj4+8PX1BQCEhYXh1KlTiIqKwvLly5XaGxsbY/369QCA1NRUlcUxNDRU4XlwcDCOHz+Ow4cPKxRHgUAAkUikdq5ERNR4qF0cf//9d41uWCqVIjk5GbNnz1aIu7i44NKlSxrdVlFRkdKtJ8XFxejTpw8qKipgZ2eHRYsWoW/fvhrdLhER1U9qF0cLCwuNbjgnJwfl5eUQCoUKcaFQiKysLI1t59tvv8WjR4/g7e0tj1lbW2Pz5s3o06cPioqKsHXrVowdOxZnz56FpaWlxrZNRET1U62HjyssLMTZs2eRkZEB4EXR/POf/4zWrVu/VgJVBw6QyWQaG0wgNjYWy5Ytw3fffadQ3J2cnODk5CR/7uzsjCFDhmDbtm1Ys2ZNtetLS0ur8bk+KZJIIZFIlOJl5WUK8cqfq8ari9U2rol11LTul/vwOusokhTpxeeoDzm8qYbQB6Bh9IN9UI+1tXW1y2pVHLdt24ZVq1ZBIpEoDB1nbGyMpUuXwt/fX+11mZqawsDAQGkvMTs7W2lv8nXExsbik08+wdatW+Hq6lpjWwMDAzg4OODOnTs1tnv5jUxLS6vxjdW11Fv3YGxsrBRvatBUHpdIJPKfX46ravu6cU2so6Z1A3ijbbYybgVr625KbeuSvn+X1NEQ+gA0jH6wD5qh9q0c//nPfxAcHAwbGxt8++23SExMREJCAiIjI2Fra4uFCxciOjpa7Q0bGhrCwcEB8fHxCvH4+Hg4Ozur3wMVDh48CH9/f2zZsgXu7u6vbC+TyZCamsoLdIiICEAt9hzDw8Ph7OyMQ4cOoWnT/73Mzs4O7u7ueO+997Bp0yZMnDhR7Y0HBgbC398fjo6OcHZ2RlRUFDIzMzF16lQAwIoVK5CUlIS4uDj5a27cuAGpVIqcnBxIJBKkpKQAAOzt7QEABw4cgL+/P1auXIlBgwZBLBYDeFGM27V7MUzY6tWrMWDAAFhaWuLp06fYtm0bUlNTsW7dOrVzJyKihkvt4piWloYvvvhCoTDKV9K0KTw9PVXeflETT09P5ObmIiwsDGKxGLa2toiOjpafH8zMzER6errCa7y8vHD//n3586FDhwJ4MWMIAERFRaGsrAwLFy7EwoUL5e0GDx6Mw4cPAwAKCgowd+5cZGVloU2bNrC3t8eRI0fg6OhYq/yJiKhhUrs4Ghsby/fCVBGLxWjZsmWtE/Dz84Ofn5/KZREREUqxq1ev1ri+ygJYk5CQEISEhKiXIBERNTpqF0cXFxds27YNw4cPx5AhQxSWnT17Ft988w3GjRun8QSJtEnVNFYAp7IiauzULo7Lly/H+fPn4e7uDnt7e7z99tsAgFu3biElJQWdOnWq9WFVIl1TNY0VwKmsiBo7ta9W7dKlCxITEzFz5kw8e/YMcXFxiIuLw7NnzxAYGIjExER07txZm7kSERHViVrd59i+fXusWrUKq1at0lY+REREOqf2nqNEIlG4SrSq+/fv49mzZxpJioiISJfU3nNctGgRfvvtNyQmJqpcPmXKFAwYMABr167VWHJEusILdYgaN7WLY3x8PKZMmVLt8vfeew979uzRSFJEusYLdYgaN7UPq4rFYnTs2LHa5SKRCJmZmRpJioiISJfULo4dOnTAH3/8Ue3yP/74A23bttVIUkRERLqkdnEcPXo0tm/frnIi4l9++QXbt2/H6NGjNZocERGRLqh9znHhwoU4ceIEXF1dMWrUKPTq1QsCgQCpqak4efIkRCIRFi9erM1ciYiI6oTaxVEkEiE+Ph7Lly/H4cOHcfz4cQBA69at4e3tjeXLl3PKJyIiahBqNQiAmZkZIiIiIJPJkJ2dDZlMBqFQCIFAoK38iIiI6lytimOliooKGBgYoE2bNiyMRETU4Kh9QQ4A/Pbbb/jggw9gbm4OKysrnDt3DgCQk5ODiRMn4syZM1pJkoiIqC6pXRwvX74MV1dXpKenY9KkSZDJZPJlpqamKCoqws6dO7WSJBERUV1SuziuXLkSlpaWuHTpEpYtW6a0fMiQIfj11181mhwREZEuqH3O8bfffsOSJUtgZGSkcoDxzp07QywWazQ5In2jasxVjrdK1PCoXRybNGmCJk2q39EUi8Vo0aKFRpIi0leqxlzleKtEDY/ah1UdHBxw9OhRlcukUin27dsHJycnjSVGRESkK2oXx88++wwJCQmYNWsWrl69CgDIzMzEyZMn4ebmhvT0dMybN09riRIREdUVtQ+rjhgxAtu2bcP8+fPlU1MFBARAJpOhbdu2iIyMxIABA7SWKBERUV2p1SAAEyZMgKurK+Lj4/Hf//4XFRUV6NGjB0aOHIlWrVppK0ciIqI6VesRclq2bInx48drIxciIiK98FrDxwFAYmIioqOjkZmZibfffhuffPIJunbtqsnciIiIdKLGC3JWr14NoVCodP/i7t274e7ujl27duHkyZPYsmULXFxckJGRodVkaxIZGQl7e3uIRCIMGzYM58+fr7ZtSUkJAgICMGjQIHTo0IF7wkREpKDG4piYmAgXFxeFqahKS0uxcOFCtGnTBrGxsXjw4AGioqJQVFSEdevWaT1hVWJiYhAcHIx58+YhISEBTk5O8PLywv3791W2Ly8vh5GREWbMmIExY8bUcbZERKTvaiyOd+7cQf/+/RViZ86cQWFhIWbNmoWhQ4fC2NgYHh4emDhxIn7++Wdt5lqt8PBw+Pj4wNfXFzY2NggLC4NIJEJUVJTK9sbGxli/fj0++ugjdO7cuY6zJSIifVdjcczLy0PHjh0VYomJiRAIBHj33XcV4g4ODsjMzNR8hq8glUqRnJwMFxcXhbiLiwsuXbpU5/kQEVH9V+MFOWZmZnj06JFC7MKFC2jVqhX69OmjEG/SpAkMDQ01n+Er5OTkoLy8HEKhUCEuFAqRlZWl0W2lpaXV+FyfFEmkkEgkSvGy8jKFeOXPVePVxWob18Q6alr3y33QVX5FkqI3/i7o83dJXQ2hD0DD6Af7oB5ra+tql9VYHPv164c9e/bA398fJiYmuHbtGq5cuYJx48YpTXJ88+ZNnR6irJqPTCbT+ETML7+RaWlpNb6xupZ66x6MjY2V4k0NmsrjEolE/vPLcVVtXzeuiXXUtG4Ab7RNTeTRulUrSGVKTdUekFzfv0vqaAh9ABpGP9gHzaixOM6fPx8uLi7o168fevbsiWvXrkEgEGDu3LkK7WQyGQ4dOqR0aLMumJqawsDAQGkvMTs7W2lvkkgbVA1GDnBAcqL6rMZzjr1790ZsbCz69++P7OxsODk5ISYmRmmYuMTERLRq1Qpubm5aTVYVQ0NDODg4ID4+XiEeHx8PZ2fnOs+HiIjqv1cOAjBw4EBER0fX2Gbo0KE13leobYGBgfD394ejoyOcnZ0RFRWFzMxMTJ06FQCwYsUKJCUlIS4uTv6aGzduQCqVIicnBxKJBCkpKQAAe3t7nfSBiIj0x2uPkKNPPD09kZubi7CwMIjFYtja2iI6OhoWFhYAXswekp6ervCaqvdBDh06FACQn59fZ3lrivhJHrLznirESqVSHWVDRFT/NYjiCAB+fn7w8/NTuSwiIkIpVjntVkOQnfcUX2zcrRD7+zQPHWVDRFT/qT2fIxERUWPB4khERFQFiyMREVEVahXHkpIShIaG4vTp09rOh4iISOfUKo5GRkZYv349Hjx4oO18iIiIdE7tw6p2dna4c+eONnMhIiLSC2oXx2XLlmHHjh04duyYNvMhIiLSObXvc9y4cSNMTEwwefJkmJubo3v37mjRooVCG4FA8MrRdIgaC4HgxQDwVak7IDkR6Y7axfHGjRsQCATo0qULACAjI0OpjaZnwSCqzzggOVH9pXZxbEgjyhAREdWE9zkSERFVUaviWF5ejujoaMyaNQve3t64du0agBeDdR88eBCZmZlaSZKIiKguqV0cCwoKMGbMGPj7+yM2NhYnTpxATk4OAKB169ZYvHgxvvnmG60lSkREVFfULo4rVqzAjRs3sG/fPiQnJ0Mmk8mXGRgY4P3338eJEye0kiQREVFdUrs4Hj58GDNmzMCoUaNUXpVqaWmpMD8iEalWeYtH5SO3SArxkzxdp0VEL1H7atX8/Hz06NGj2uUymQxSTrBL9EpVb/GQSCQIXTiDt3cQ6RG19xwtLCxw/fr1apefO3cOVlZWGkmKiIhIl9Qujl5eXtixYwfOnTsnj1UeXt22bRsOHToEHx8fzWdIRERUx9Q+rPrpp5/i119/hZubG6ysrCAQCBAcHIzc3FyIxWKMHz8e/v7+2syViIioTqhdHJs1a4bo6Gjs27cPP/zwAwQCAcrKytC3b194enpi4sSJHD6OiIgaBLWLYyUvLy94eXlpIxciIiK9UOviCADXrl2T37bRtWtX9O7dm3uNRETUYNSqOB44cADLly/Ho0eP5IMACAQCmJubY/ny5dyjJCKiBkHt4rh7927MmjUL1tbWWLFiBaysrCCTyfDf//4XO3bsgL+/P6RSKaZMmaLNfImIiLRO7Vs51q1bB0dHRyQkJGD27NkYN24cXF1dMXv2bCQmJsLBwQHr1q2rdQKRkZGwt7eHSCTCsGHDcP78+Rrbp6amwtXVFR07doStrS1CQ0MVhrILCAiAiYmJ0sPc3FzeZvfu3SrblJSU1Dp/IiJqeNQujg8fPoSXlxeMjIyUlhkZGcHb2xuPHj2q1cZjYmIQHByMefPmISEhAU5OTvDy8qp2GLqnT5/Cw8MDZmZmOH36NFavXo1NmzZh8+bN8jarV6/GzZs3FR7du3fHBx98oLCuli1bKrVT1TciImp81D6s2rNnTzx+/Lja5Y8ePYKNjU2tNh4eHg4fHx/4+voCAMLCwnDq1ClERUVh+fLlSu337duH4uJiREREoEWLFujVqxdu3bqFLVu2YNasWRAIBGjbti3atm0rf83Fixdx9+5dbNu2TWFdAoEAIpGoVvkSaUvleKtVdWjXhsPKEemA2sXxiy++gK+vL/r27QsPDw+FZQcOHMCOHTuwY8cOtTcslUqRnJyM2bNnK8RdXFxw6dIlla+5fPky3nnnHbRo0UIeGzlyJL788kvcu3cP3bt3V3rN9u3bYWtrC2dnZ4V4cXEx+vTpg4qKCtjZ2WHRokXo27ev2vkTaVLV8VYrLZszhcWRSAfULo6bNm2CqakpPv74YwQHB6NHjx4QCAS4c+cOnjx5AktLS2zcuBEbN26Uv0YgECA6Olrl+nJyclBeXg6hUKgQFwqFyMrKUvmarKwshXOHle0rl1UtjgUFBYiNjcXSpUsV4tbW1ti8eTP69OmDoqIibN26FWPHjsXZs2dhaWlZ7XuQlpZW43NdKZJIIZFIFGJl5WVKMVXxyp9VtVd3HTXFNbGOmtb9ch90lZ8211EkKdKb79mr1Jc8X6Uh9IN9UI+1tXW1y9Qujjdu3IBAIECXLl0AQH5+sXnz5ujSpQtKS0tx8+ZNhdeoc+9j1TYymazG16lqX922oqOjUV5ejkmTJinEnZyc4OTkJH/u7OyMIUOGYNu2bVizZk212375jUxLS6vxja1LqbfuwdjYWCHW1KCpUqxqXCKRyH9W1V6ddbwqrol11LRuAG+0TX3oo0QiqbZtK+NWsLbuphTXN/r0+/AmGkI/2AfNULs4Xr16VaMbNjU1hYGBgdJeYnZ2ttLeZCUzMzOV7QGofM327dvh5uaGdu1qPixlYGAABwcH3LlzpzZdICKiBkrtq1U1zdDQEA4ODoiPj1eIx8fHK50frOTk5IQLFy4o3HIRHx+PTp06oVs3xb+uk5KScO3aNfztb397ZS4ymQypqam8QIeIiADosDgCQGBgIPbs2YMdO3bg5s2bWLBgATIzMzF16lQAwIoVK+Dm5iZvP2HCBLRo0QIzZ87E9evXERcXhw0bNmDmzJlKh1W///57WFpa4s9//rPSdlevXo1Tp07h7t27SElJwaxZs5Camopp06Zpt8NERFQvvNbYqpri6emJ3NxchIWFQSwWw9bWFtHR0bCwsAAAZGZmIj09Xd6+bdu2OHjwIIKCgjBixAiYmJggMDAQs2bNUlhvYWEhYmJi8Pnnn6s8F1lQUIC5c+ciKysLbdq0gb29PY4cOQJHR0ftdpiIiOoFnRZHAPDz84Ofn5/KZREREUqx3r1746effqpxna1bt8bDhw+rXR4SEoKQkJDaJUpERI2GTg+rEhER6SOd7zkSUfU4cg6RbqhdHPv27YuQkBC4urqqXH706FEsWLAAv//+u8aSI2rsOHIOkW6ofVg1IyND5QgelSQSSbUDhhMREdUntTrnWNPINbdv30br1q3fOCEiIiJdq/Gw6p49e/Dvf/9b/vyrr77C9u3bldrl5+fj+vXrePfddzWfIRERUR2rsThKJBKIxWL584KCAlRUVCi0EQgEaNmyJXx9fREcHKydLImIiOpQjcVx+vTpmD59OgDA3t4eq1evrvaCHCIiooZC7atVU1JStJkHERGR3qj1fY6FhYV48OAB8vLy5NNFvWzw4MEaSYyIiEhX1C6OeXl5WLBgAQ4ePIjy8nKl5ZXzMObm5mo0QSIiorqmdnH89NNPcejQIUyfPh2DBw+GiYmJFtMioppw5Bwi7VK7OJ48eRL+/v748ssvtZkPEamBI+cQaZfagwAYGhrC0tJSm7kQERHpBbWLo7u7O06cOKHNXIiIiPSC2sVx9uzZyMzMxCeffIJffvkFmZmZePLkidKDiIiovlP7nKOjoyMEAgGSk5MRHR1dbTterao94id5yM57qhQvlUp1kA0RUcOldnH8/PPPaxx4nLQvO+8pvti4Wyn+92keOsiGiKjhUrs4Lly4UJt5EBER6Y1aTVlVqby8HLm5uSgrK9N0PkRERDpXq+L422+/4YMPPoC5uTmsrKxw7tw5AEBOTg4mTpyIM2fOaCVJIiKiuqR2cbx8+TJcXV2Rnp6OSZMmKYyrampqiqKiIuzcuVMrSRIREdUltc85rly5EpaWljh16hQkEgl27NihsHzIkCHYu3evxhMkIvWpGlaOQ8oR1Z7axfG3337DkiVLYGRkhGfPnikt79y5s8LEyERU91QNK8ch5YhqT+3Dqk2aNEGTJtU3F4vFaNGihUaSqioyMhL29vYQiUQYNmwYzp8/X2P71NRUuLq6omPHjrC1tUVoaKjCYeDExESYmJgoPW7duqWV/ImIqH5Ruzg6ODjg6NGjKpdJpVLs27cPTk5OGkusUkxMDIKDgzFv3jwkJCTAyckJXl5euH//vsr2T58+hYeHB8zMzHD69GmsXr0amzZtwubNm5XaXrx4ETdv3pQ/OHYsEREBtSiOn332GRISEjBr1ixcvXoVAJCZmYmTJ0/Czc0N6enpmDdvnsYTDA8Ph4+PD3x9fWFjY4OwsDCIRCJERUWpbL9v3z4UFxcjIiICvXr1gru7O+bOnYstW7YoTc4sFAohEonkDwMDA43nT0RE9Y/axXHEiBHYtm0bDh8+DA+PFyOyBAQEwMvLCzdu3EBkZCQGDBig0eSkUimSk5Ph4uKiEHdxccGlS5dUvuby5ct45513FA7xjhw5Eo8fP8a9e4oXKgwfPhw2NjZwc3NDQkKCRnMnIqL6S+0LcgBgwoQJcHV1RXx8PP773/+ioqICPXr0wMiRI9GqVSuNJ5eTk4Py8nIIhUKFuFAoRFZWlsrXZGVlwdzcXKl95bLu3bujY8eOWLduHfr16wepVIq9e/fC3d0dhw4dwuDBg6vNJy0trcbn2lYkkUIikSjFy8rLlOKqYqrilT+/yTo0kcfrrvvlPugqP31ZR3XxIklRnXxX6/r3QVsaQj/YB/VYW1tXu6xWxREAWrZsifHjx79RQrVVdUxXmUxW4zivqtq/HLe2tlZ4U5ycnJCRkYFNmzbVWBxffk1aWlqNb6w2pN66B2NjY6V4U4OmSnFVsapxiUQi//l116GJPN5k3QDeaJv60EeJRKLV96mVcStYW3dTaqtJuvh90IaG0A/2QTPUPqx65MgRzJ8/v9rl8+fPr/aCnddlamoKAwMDpb3E7Oxspb3JSmZmZirbA6j2NcCLWUfu3LnzhhkTEVFDoHZx3LRpk8r7GyuVlJTg66+/1khSlQwNDeHg4ID4+HiFeHx8PJydnVW+xsnJCRcuXEBJSYlC+06dOqFbt+r/er569SpEIpFmEifSI5UDA1R9iJ/k6To1Ir2l9mHV69evw9PTs9rlffv2xaFDhzSS1MsCAwPh7+8PR0dHODs7IyoqCpmZmZg6dSoAYMWKFUhKSkJcXByAF+dFQ0NDMXPmTAQFBeH27dvYsGGDwpRbW7ZsgYWFBWxtbSGVShEdHY3Dhw8rjfpD1BCoGhgA4OAARDVRuziWlZWhuLi42uXFxcUoLS3VSFIv8/T0RG5uLsLCwiAWi2Fra4vo6GhYWFgAeHE7SXp6urx927ZtcfDgQQQFBWHEiBEwMTFBYGAgZs2aJW/z/PlzLF26FI8fP4aRkZF8nWPGjNF4/kREVP+oXRx79eqFuLg4zJo1S2mknIqKCsTFxaFnz54aTxAA/Pz84Ofnp3JZRESEUqx379746aefql3f3LlzMXfuXI3lR0REDYva5xw/+eQTJCUlYfLkyUhOTkZpaSlKS0uRnJwMHx8fJCUlwd/fX5u5EhER1Qm19xz/8pe/ID09HSEhIThx4gSAF7dGVN5WsWDBAnh7e2stUSIiorpSq/scg4KCMGHCBPz444+4e/cuZDIZevTogffffx/du3fXUopERER1S63iWFxcjIkTJ8Lb2xt//etfMXv2bG3nRURapmruR4DzPxIBahbHFi1a4Pfff8eECRO0nQ8R1RHe4kFUPbUvyPnzn//8ynkUiYiIGgK1i2NoaCh+++03LF26FHfv3kVFRYU28yIiItIZtS/IGTBgAGQyGcLDwxEeHo4mTZqgWbNmCm0EAgEePXqk8SSJiIjqktrF0cPDo8aZMIiIiBoKtYujqpFoiIiIGiK1zzkSERE1FrUqjhkZGZgzZw4cHBzQtWtXnD17FgCQk5ODefPmITk5WRs5ElEdUjXFFae3osZG7cOqN2/exNixY1FRUYH+/fsjIyMD5eXlAF5MSvzLL7+gtLQUmzdv1lqyRKR9qu5/5L2P1NioXRyXL1+O1q1b4+TJkzAwMICVlZXC8jFjxuCHH37QdH5ERER1Tu3ieP78eQQFBcHMzAy5ublKy7t27YrHjx9rNLnGSvwkD9l5T5XipVKpDrIhImp8ajXZsbGxcbXL8/LyYGBgoJGkGrvsvKf4YuNupfjfp3noIBsiosZH7QtyevXqhcTERJXLZDIZfvzxRzg4OGgqLyIiIp1RuzgGBAQgNjYWa9askR9WraiowK1btzBt2jRcuXKFs3UQEVGDUKvJju/fv48vv/wSq1evlscAwMDAAKtWrcLo0aO1kyUR6RSnt6LGplaTHf/973/HhAkTEBcXhzt37qCiogI9evSAm5sbunXrpq0ciUjHOL0VNTavLI6lpaU4cuQI7t69i/bt2+Pdd9/FzJkz6yI3IiIinaixOIrFYri6uiI9PR0ymQwAYGxsjL1792Lw4MF1kiAREVFdq/GCnFWrVuHu3buYOXMm9u7di5CQEDRv3hyff/55XeVHRERU52rcczx9+jQmT56MVatWyWNmZmbw8/PDw4cP0blzZ60nSET6q/JCnSKJVOGCHV6oQ/VdjXuOYrEYzs7OCrGBAwdCJpPhwYMHGkkgMjIS9vb2EIlEGDZsGM6fP19j+9TUVLi6uqJjx46wtbVFaGio/JAvAMTFxcHDwwOWlpbo0qULRo4ciSNHjiisY/fu3TAxMVF6lJSUaKRPRI1FQeEzfLFxN1Zu3IMvNu6WP1SN8ERUn9RYHMvLy2FkZKQQq3yuiUISExOD4OBgzJs3DwkJCXBycoKXlxfu37+vsv3Tp0/h4eEBMzMznD59GqtXr8amTZsUBjs/d+4chg4diujoaCQkJGD06NH461//qlR0W7ZsiZs3byo8qvaViIgap1derXr37l0kJSXJnz99+uIvwrS0NLRq1UqpvaOjo9obDw8Ph4+PD3x9fQEAYWFhOHXqFKKiorB8+XKl9vv27UNxcTEiIiLQokUL9OrVC7du3cKWLVswa9YsCAQChIaGKrwmODgYx48fx+HDhzFo0CB5XCAQQCQSqZ0rERE1Hq8sjiEhIQgJCVGKV70oRyaTQSAQqByUXBWpVIrk5GSlUXVcXFxw6dIlla+5fPky3nnnHbRo0UIeGzlyJL788kvcu3cP3bt3V/m6oqIimJiYKMSKi4vRp08fVFRUwM7ODosWLULfvn3Vyp2IiBq2GotjeHi41jack5OD8vJyCIVChbhQKERWVpbK12RlZcHc3FypfeUyVcXx22+/xaNHj+Dt7S2PWVtbY/PmzejTpw+KioqwdetWjB07FmfPnoWlpWW1OaelpdX4XFOKJFJIJBKleFl5mdpxddtW/vwm69BEHq+77pf7oKv89GUdus7v5eVlZc9x6UqqQluTVi3RBGVK69A32vq9rkvsg3qsra2rXVZjcfTx8dF4MlUJBAKF55V7oLVpryoOALGxsVi2bBm+++47WFhYyONOTk5wcnKSP3d2dsaQIUOwbds2rFmzptptv/xGpqWl1fjGvonUW/dUzoDS1KCp2nF12kokEvnPr7sOTeTxJusG8Ebb1Ic+SiQSrb9P2l7Hy98lAHhW8hwbomIV2i6bMwW939bO74ymaPP3uq6wD5qh9sDjmmZqagoDAwOlvcTs7GylvclKZmZmKtsDUHpNbGwsPvnkE2zduhWurq415mJgYAAHBwfcuXOntt0gIqIGSGfF0dDQEA4ODoiPj1eIx8fHK90+UsnJyQkXLlxQuFI2Pj4enTp1Uhjb9eDBg/D398eWLVvg7u7+ylxkMhlSU1N5gQ4REQGo5cDjmhYYGAh/f384OjrC2dkZUVFRyMzMxNSpUwEAK1asQFJSEuLi4gAAEyZMQGhoKGbOnImgoCDcvn0bGzZswOeffy4/rHrgwAH4+/tj5cqVGDRoEMRiMYAXxbhduxc3Ja9evRoDBgyApaUlnj59im3btiE1NRXr1q3TwbtA1DhwZg+qT3RaHD09PZGbm4uwsDCIxWLY2toiOjpafn4wMzMT6enp8vZt27bFwYMHERQUhBEjRsDExASBgYGYNWuWvE1UVBTKysqwcOFCLFy4UB4fPHgwDh8+DAAoKCjA3LlzkZWVhTZt2sDe3h5Hjhyp1W0oRFQ7nNmD6hOdFkcA8PPzg5+fn8plERERSrHevXvjp59+qnZ9lQWwJtXdnkJERATo8JwjERGRvmJxJCIiqkLnh1UbM/GTPJUDNJdKpTrIhkg3eKEO6SMWRx3KznuKLzbuVor/fZqHDrIh0g1eqEP6iIdViYiIquCeIxHpJVWHW3moleoKiyMR6SVVh1t5qJXqCosjEdUbvHiH6gqLIxHVG7x4h+oKL8ghIiKqgnuORFTv8XAraRqLIxHVezzcSprG4khEDRb3KOl1sTgSUYPFPUp6XSyORNToVDfAAFElFkcianRU7VEunzsFhUVSjspDAFgc64yqGTg4+waR/igofIYvN+2BsbGxQnz53CkqZ89h0WzYWBzriKoZODj7BpH+q+68paqiyYLZcLA4EhG9huoOzaray2xp1BzPSkqV4iym+ovFkYhIQ6rby/z7NA+19z5ZSPUDiyMRkY6oKqa1KaSAcjEtkry4qEhVkWWBVR+LIxFRPaDuXqlEIoGxsbHKIsvDvupjcSQiaiS0edi3oRVYFkciIlKpNod9G9p51UZdHCMjI7Fx40aIxWL07NkTISEhGDRokK7TIiJqMF7nvGrledNKujh/2miLY0xMDIKDg7F27VoMHDgQkZGR8PLywsWLF9G1a1ddp0dE1OhUFtLK86aVVBVTbY+P22gnOw4PD4ePjw98fX1hY2ODsLAwiEQiREVF6To1IiLSMUF+fr5M10nUNalUik6dOuG7777DBx98II8HBQXh+vXrOHLkiO6SIyIinWuUe445OTkoLy+HUChUiAuFQmRlZekoKyIi0heNsjhWEggECs9lMplSjIiIGp9GWRxNTU1hYGCgtJeYnZ2ttDdJRESNT6MsjoaGhnBwcEB8fLxCPD4+Hs7OzjrKioiI9EWjvZUjMDAQ/v7+cHR0hLOzM6KiopCZmYmpU6fqOjUiItKxRrnnCACenp4ICQlBWFgYhgwZgosXLyI6OhoWFhY1vi4yMhL29vYQiUQYNmwYzp8/X0cZv9q6deswYsQIdO3aFZaWlvD29sb169cV2gQEBMDExEThMWrUKIU2paWlmD9/Pt566y2Ym5tj0qRJePjwYZ30ISQkRCm/t99+W75cJpMhJCQEPXv2RMeOHTF+/Hj88ccfepM/ANjZ2Sn1wcTEBBMnTgSgn5/BuXPnMGnSJNja2sLExAS7dyvOPaqp9z0/Px8zZsyAhYUFLCwsMGPGDOTn52u9D8+fP8fy5csxaNAgmJubw8bGBn5+frh//77COsaPH6/02UybNq3O+vCqfgCa+/7o6rMAoPL3w8TEBEFBQfI2uv4sGm1xBAA/Pz9cvXoVWVlZOHPmDAYPHlxj+8qBA+bNm4eEhAQ4OTnBy8tL6RdMV86ePYuPP/4Yx44dQ1xcHJo2bYoPPvgAeXl5Cu2GDx+Omzdvyh/79u1TWL5w4UL8+OOP+O6773DkyBEUFhbC29sb5eXlddIPa2trhfxe/gPk66+/Rnh4OEJDQ3H69GkIhUJ4eHigsLBQb/KPj49XyP/MmTMQCAQKtw3p22cgkUjQq1cvrF69Gi1atFBarqn33c/PDykpKdi3bx/279+PlJQU+Pv7a70Pz549w++//46goCCcOXMGe/bswcOHDzFhwgSUlZUptJ0yZYrCZ7N+/XqF5drsw6v6UUkT3x9dfRYAFHK/efMm/vOf/wCAwu8IoNvPolHe5/i6Ro4cid69e2Pjxo3yWL9+/eDu7o7ly5frMDPVioqKYGFhgd27d2PcuHEAXvzVmZubi71796p8TUFBAaysrBAeHi7f03nw4AHs7Oywf/9+jBw5Uqs5h4SEIC4uDhcuXFBaJpPJ0LNnT0yfPl3+F2ZxcTGsra2xcuVKTJ06Vef5q/LVV19h48aNuHHjBlq2bKn3n0Hnzp2xZs0aTJkyBYDm3vebN2/C2dkZR48excCBAwEAFy5cwLhx4/DLL7/A2tpaa31Q5caNGxg4cCDOnTuH3r17A3ixt9KrVy+EhYWpfE1d9qG6fmji+6Nvn8WcOXNw/vx5/Prrr/KYrj+LRr3nWBtSqRTJyclwcXFRiLu4uODSpUs6yqpmRUVFqKiogImJiUL8woULsLKygqOjI+bMmYMnT57IlyUnJ+P58+cK/ezSpQtsbGzqrJ93796Fra0t7O3tMW3aNNy9excAcO/ePYjFYoXcWrRogUGDBslz04f8XyaTybBz5054e3ujZcuW8ri+fwYv09T7fvnyZbRq1UrhoreBAwfC2NhYJ/2q3Out+vtx4MABvPXWWxg4cCCWLFmisHesL3140++PvvQDePH/VExMDHx9fZWW6fKzaLQX5NRWfRw4IDg4GHZ2dnBycpLHRo0ahffffx/dunVDRkYGVq1aBTc3N/z8889o3rw5srKyYGBgAFNTU4V11VU/+/fvjy1btsDa2hrZ2dkICwvDmDFjcPHiRYjFYnkuVXN7/PgxAOg8/6ri4+Nx7949fPjhh/KYvn8GVWnqfc/KyoKpqanCvcQCgQAdOnSo835JpVIsWbIEY8eORefOneVxLy8vdO3aFR07dsSNGzewYsUKXLt2DT/88IPe9EET3x996Eel/fv3o7S0FJMnT1aI6/qzYHGspfoycMCiRYtw8eJFHD16FAYGBvL4X/7yF/nPvXv3hoODA+zs7HDs2DG4ublVu7666ufo0aMVnvfv3x8ODg7Ys2cPBgwYAOD1PgNdfU7bt29Hv379YG9vL4/p+2dQHU2876ra13W/ysrKMGPGDBQUFODf//63wrKPPvpI/nPv3r3RvXt3jBw5EsnJyXBwcACg+z5o6vuj635U2r59O8aPH48OHTooxHX9WfCwqprq08ABCxcuxIEDBxAXF4fu3bvX2LZTp04wNzfHnTt3AABmZmYoLy9HTk6OQjtd9bNVq1bo2bMn7ty5A5FIBAA1fgb6lP+TJ09w5MgRlYeLXqbvn4Gm3nczMzNkZ2dDJvvfZQ4ymQw5OTl11q+ysjJ8/PHHSE1NRWxsLNq3b19j+z/96U8wMDBQ+Gx03YeqXuf7oy/9SElJwZUrV175OwLU/WfB4qim+jJwwIIFC7B//37ExcUp3AJRnZycHDx+/Fj+H6CDgwOaNWum0M+HDx/KT37XtZKSEqSlpUEkEqFbt24QiUQKuZWUlODChQvy3PQp/z179qB58+bw9PSssZ2+fwaaet+dnJxQVFSEy5cvy9tcvnwZEomkTvr1/PlzTJ06Fampqfjxxx/l73dNUlNTUV5eLm+r6z6o8jrfH33px/bt22FhYYHhw4e/sm1dfxY8rFoL+j5wQFBQEPbu3Ytdu3bBxMREfq7I2NgYrVq1QlFREVavXg03NzeIRCJkZGTgiy++gFAoxHvvvQcAaNu2LT788EMsW7YMQqEQ7dq1w+LFi9G7d2+1vsBvqvI8UJcuXeTnHJ89e4bJkydDIBAgICAAa9euhbW1NaysrPDVV1/B2NgYEyZM0Iv8K8lkMuzYsQOenp5o3bq1PK6vn0FRUZH8L/KKigo8ePAAKSkpaNeuHbp27aqR993GxgajRo3Cp59+iq+//hoymQyffvop3n33XY1cHVlTHzp16gRfX19cuXIF//73vyEQCOS/H23atEGLFi2Qnp6O6OhojBkzBu3bt8fNmzexZMkS2Nvby6+G1HYfXtWPdu3aaeT7o8vPonK+3GfPnmHfvn2YM2eO0mFQffgseCtHLUVGRuLrr7+GWCyGra0t/vnPf77y/si6UvWqu0oLFizAwoULUVxcjClTpiAlJQUFBQUQiUQYMmQIFi9ejC5dusjbl5SUYOnSpdi/fz9KSkowdOhQrF27VqGNtkybNg3nz59HTk4OOnTogP79+2Px4sXo2bMngBdFZ/Xq1fj++++Rn58PR0dHfPXVV+jVq5de5F8pISEBbm5uOHXqFBwdHeVxff0MEhMT8f777yvFJ0+ejIiICI2973l5eViwYAF++uknAMC4ceOwZs2aar+7mupDcHAw+vbtq/J14eHhmDJlCh48eIAZM2bgjz/+gEQiQefOnTFmzBgEBwejXbv/TaqrzT68qh/r1q3T2PdHV59FREQEAGDXrl2YO3curl27hk6dOim004fPgsWRiIioCp5zJCIiqoLFkYiIqAoWRyIioipYHImIiKpgcSQiIqqCxZGIiKgKFkdqVHbv3q0weaq5uTns7OwwZcoUHDx4EBUVFTrLLSUlBSEhIUrzbwIv7mENCQnRQVbApk2bMGjQIIVhuu7evYuAgAD07dsXZmZmsLKywujRo7Fq1Sqd5KgpAQEBsLOzkz/PzMxEp06dkJSUpMOsSBc4Qg41Stu3b4e5uTlKS0vx4MEDHD9+HB9//DG+//57/Oc//6l2klltunr1KkJDQ+Ht7a1wozMAnDhxAubm5nWeU35+PtatW4cNGzbIRzHJyMjAsGHD0LVrV3z++eewsLDAkydPkJSUhLi4OCxZsqTO89SWjh074m9/+xuWLl2KI0eO6DodqkMsjtQo2dnZ4a233pI/nzRpEtzd3fHRRx9h2bJl1U6wWhsymQzPnz+HoaHhG6+rckaSurZz5040a9ZMPjRZZUwikSAuLk5h4G5PT0+sXLlSF2lq1dSpUzFw4EAkJSUpjHZEDRsPqxL9P3d3d7i6umLHjh149uwZgBfDYJmYmCAxMVGhbeXh2Xv37sljdnZ2mDFjBnbu3IkBAwZAKBTi2LFjAIB//vOfGDp0KCwsLPDWW2/h/fffxy+//KKwvsDAQABAv3795Id9K9ev6rDqyZMnMXr0aHTs2BEWFhbw8fFBWlqaQpvx48dj7Nix+PnnnzF06FB06tQJ77zzDg4dOqTWe7Jz5054eHgoTHuWn58PIyMjtG3bVql9kyaK/6WUlZVh3bp1GDBgAMzMzNCzZ08sXrwYJSUlCu0kEgn+8Y9/wMHBAWZmZnj77bfx4YcfKswEkpSUBHd3d3Tu3Bnm5uZwc3NTOtwZEBCAXr164ffff8e4cePQqVMn9OvXD1FRUUq5njlzBkOHDoVIJIKDgwP+9a9/qXwPevbsiV69emHHjh2vfsOowWBxJHrJmDFjUFpaiitXrrzW6xMTE7FlyxYsWLAABw4cQJ8+fQAAjx8/xsyZM7Fr1y5s2bIFQqEQrq6uuHbtGgDg3XffRVBQEIAXh3xPnDiBEydOoGPHjiq3c/LkSUycOBHGxsaIiorC2rVr8ccff2Ds2LF49OiRQtv09HQEBwcjMDAQO3fuhEgkgq+vr3xg6Orcv38ft27dwqBBgxTi/fr1Q1FREaZOnYpz586htLS02nXMmDEDX331FSZMmIDo6Gh8+umn2LlzJ6ZPny5vI5VK4eHhgW3btsHHxwd79+5FWFgY2rVrh/z8fADAtWvXMH78eOTn52PLli2IiIhAYWEhxo8fj6tXrypss7CwENOnT8fEiROxZ88e9OvXD5999hkSEhLkbW7evAkvLy+0aNEC3333HZYtW4aIiAiFNi8bPHgwTp06VeP7RQ0LD6sSvaRyYObKGRtqKz8/Hz///LPSdEibNm2S/1xeXo5Ro0Zh4MCB2LlzJ0JDQ9GhQwf06NEDgPIhX1VWrVqF7t27Y//+/Wja9MWv8YABA9C/f39s3rwZ//znP+Vtc3JycOTIEVhaWgIA+vbtCxsbGxw8eBDz5s2rdhuVe7aVBb7SpEmTcPnyZXz//feIi4uDoaEhHB0d4erqiunTp8PIyAgAcP78ecTExCAiIkI+y/vw4cPRrl07zJgxAykpKbC3t8fevXtx+fJl7NmzB66urvLtuLu7y39es2YNDA0NERsbKx9UesSIEbC3t0doaCh27dolb1tYWIjdu3dj6NChAIBBgwbh9OnTOHDggDz21VdfoVWrVoiJiYGxsTGAF1Mg/elPf1L5B4mdnR2+/fZbPH78WGmQbGqYuOdI9JLKKzJfdybx/v37q5wn8Oeff8Z7772HHj16wNTUFB06dMDt27dx+/btWm9DIpHg999/h6enp7wwAkD37t3h7OyMc+fOKbS3tLSUF0YAEAqFEAqFePDgQY3befz4MYAXE32/TCAQYP369bhy5QrWrFkDNzc33LlzB0uXLoWLiwuKi4sBAKdOnYKhoSHc3NxQVlYmf7i4uAB4UTyBF3OiikQihcJY1fnz5zF27FiF2RbatGmDcePGKfW3ZcuW8iIIAM2bN4elpaVCfy9fvozRo0fLCyPw4g+j6uYBrJylPjMzs9ocqWFhcSR6ycOHDwFArYlwVVG115GcnAwvLy8YGxtj06ZNOHnyJOLj49GnTx+lc2/qyM/Ph0wmU5mjSCRSuhWk6pWvwIvJu1+17crDpc2bN1e5vHv37pgxYwYiIyNx/fp1zJ07F9evX8fOnTsBAE+ePIFUKkXnzp3RoUMH+cPKygoAkJubK//3VXtjeXl51fa38tBrJVXTFVXtr1gshpmZmVI7VTEA8quXKws/NXw8rEr0kmPHjsHIyAgODg4AID9E+Pz5c4V2lf+xV6Vqj/PHH39E06ZNsWvXLjRr1kwez8/PV3lRy6uYmJgoTNb7MrFYrHAF6ZuoXE9+fv4rb20xMDDAvHnz8PXXX+PmzZvy1xsZGcnn2quq8g8JU1NT/PHHHzWuv127dtX2V1XxfxWRSKRwsU8lVTEA8j84qu5FU8PFPUei/xcXF4effvoJU6dORcuWLQFAPmv59evXFdqeOHFC7fU+e/YMBgYGCoXzzJkzSoc1K/fQXrV3YmxsDAcHB8TGxqK8vFwez8jIwOXLlzU2+XblbOp3795ViD969EhhQIBKlVfKVu7hjRw5EiUlJXj69Cn+9Kc/KT0q9xZHjBgBsVhcbREFXlwQc/z4cRQWFspjhYWFOHr06Gv118nJCSdOnIBEIpHHHjx4gEuXLqlsf+/ePRgaGqJbt2613hbVT9xzpEbp6tWryMnJgVQqxYMHD3Ds2DH88MMPGDFiBJYvXy5v17FjRwwePBjr16+HqakphEIhoqOjkZ6erva2Ro0ahYiICMycORNTpkzB7du3ERYWpnRTv42NDQAgMjISkydPRrNmzdC7d2+V90kuXrwYEydOhLe3Nz7++GNIJBKEhISgTZs2mDVr1mu+K4ocHR3RvHlzJCUl4Z133pHH169fjzNnzsDHxwf29vZo2rQpUlNTsXHjRrRv3x5TpkwBAAwZMgQTJkzA3/72NwQGBsLR0RFNmjRBRkYGjh8/jhUrVsDKygre3t7YsWMH/Pz88Omnn6J///4oLCzE6dOnERAQgLfffhvz58/HsWPH4O7ujrlz50IgEODrr79GcXExPv/881r3LSgoCD/88AM8PT0xe/ZsPH/+HCEhIdUeVv3111/Rr18/+ZEEavi450iNkq+vL0aPHo2//OUvWLlyJUpLSxEVFYUDBw4o/Qf4zTffoH///liwYAFmzpyJLl26YP78+Wpva+TIkQgNDcXFixfh7e2NXbt2YevWrfKrUyvZ2dkhODgYR48exdixYzFixAj5RTFVjRo1CtHR0SgoKMDUqVPx2Wef4e2338bRo0c1djWlkZERXF1dcfToUYW4t7c3Bg8ejL179+Kjjz6Cp6cnwsPDMXz4cJw6dQqdO3eWt/3mm28QHByM2NhY+Pj4wNfXF9988w0sLS0hFAoBAM2aNUNMTAymTZuG77//Hl5eXggKCkJOTo78kGmfPn1w6NAhtG7dGjNnzsQnn3wCY2NjHD58WGG4N3XZ2Nhg3759ePbsGaZNm4Z//OMfCAgIULiQp1JxcTESEhLg6elZ6+1Q/SXIz89XPj5CRIQX9226ubkhJSVFfoi5sYmJicGcOXNw7do1lRf7UMPEPUciqtaQIUMwfPhwbNy4Udep6MyGDRswe/ZsFsZGhsWRiGoUGhoKc3NzlRfhNHRisRiurq6YPXu2rlOhOsbDqkRERFVwz5GIiKgKFkciIqIqWByJiIiqYHEkIiKqgsWRiIioChZHIiKiKv4Pt1NikC5ih/MAAAAASUVORK5CYII=\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"commute.hist('Duration', bins=60, unit='Second')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Exploring the Data with `group` and `pivot`\n",
"\n",
"We can use `group` to identify the most highly used Start Station:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
" \n",
"
\n",
"
Start Station
count
\n",
"
\n",
" \n",
" \n",
"
\n",
"
San Francisco Caltrain (Townsend at 4th)
25858
\n",
"
\n",
"
\n",
"
San Francisco Caltrain 2 (330 Townsend)
21523
\n",
"
\n",
"
\n",
"
Harry Bridges Plaza (Ferry Building)
15543
\n",
"
\n",
"
\n",
"
Temporary Transbay Terminal (Howard at Beale)
14298
\n",
"
\n",
"
\n",
"
2nd at Townsend
13674
\n",
"
\n",
"
\n",
"
Townsend at 7th
13579
\n",
"
\n",
"
\n",
"
Steuart at Market
13215
\n",
"
\n",
"
\n",
"
Embarcadero at Sansome
12842
\n",
"
\n",
"
\n",
"
Market at 10th
11523
\n",
"
\n",
"
\n",
"
Market at Sansome
11023
\n",
"
\n",
" \n",
"
\n",
"
... (60 rows omitted)
"
],
"text/plain": [
"Start Station | count\n",
"San Francisco Caltrain (Townsend at 4th) | 25858\n",
"San Francisco Caltrain 2 (330 Townsend) | 21523\n",
"Harry Bridges Plaza (Ferry Building) | 15543\n",
"Temporary Transbay Terminal (Howard at Beale) | 14298\n",
"2nd at Townsend | 13674\n",
"Townsend at 7th | 13579\n",
"Steuart at Market | 13215\n",
"Embarcadero at Sansome | 12842\n",
"Market at 10th | 11523\n",
"Market at Sansome | 11023\n",
"... (60 rows omitted)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"starts = commute.group('Start Station').sort('count', descending=True)\n",
"starts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The largest number of trips started at the Caltrain Station on Townsend and 4th in San Francisco. People take the train into the city, and then use a shared bike to get to their next destination."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `group` method can also be used to classify the rentals by both Start Station and End Station."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
" \n",
"
\n",
"
Start Station
End Station
count
\n",
"
\n",
" \n",
" \n",
"
\n",
"
2nd at Folsom
2nd at Folsom
54
\n",
"
\n",
"
\n",
"
2nd at Folsom
2nd at South Park
295
\n",
"
\n",
"
\n",
"
2nd at Folsom
2nd at Townsend
437
\n",
"
\n",
"
\n",
"
2nd at Folsom
5th at Howard
113
\n",
"
\n",
"
\n",
"
2nd at Folsom
Beale at Market
127
\n",
"
\n",
"
\n",
"
2nd at Folsom
Broadway St at Battery St
67
\n",
"
\n",
"
\n",
"
2nd at Folsom
Civic Center BART (7th at Market)
47
\n",
"
\n",
"
\n",
"
2nd at Folsom
Clay at Battery
240
\n",
"
\n",
"
\n",
"
2nd at Folsom
Commercial at Montgomery
128
\n",
"
\n",
"
\n",
"
2nd at Folsom
Davis at Jackson
28
\n",
"
\n",
" \n",
"
\n",
"
... (1619 rows omitted)
"
],
"text/plain": [
"Start Station | End Station | count\n",
"2nd at Folsom | 2nd at Folsom | 54\n",
"2nd at Folsom | 2nd at South Park | 295\n",
"2nd at Folsom | 2nd at Townsend | 437\n",
"2nd at Folsom | 5th at Howard | 113\n",
"2nd at Folsom | Beale at Market | 127\n",
"2nd at Folsom | Broadway St at Battery St | 67\n",
"2nd at Folsom | Civic Center BART (7th at Market) | 47\n",
"2nd at Folsom | Clay at Battery | 240\n",
"2nd at Folsom | Commercial at Montgomery | 128\n",
"2nd at Folsom | Davis at Jackson | 28\n",
"... (1619 rows omitted)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"commute.group(['Start Station', 'End Station'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fifty-four trips both started and ended at the station on 2nd at Folsom. A much large number (437) were between 2nd at Folsom and 2nd at Townsend. \n",
"\n",
"The `pivot` method does the same classification but displays its results in a contingency table that shows all possible combinations of Start and End Stations, even though some of them didn't correspond to any trips. Remember that the first argument of a `pivot` statement specifies the column labels of the pivot table; the second argument labels the rows.\n",
"\n",
"There is a train station as well as a Bay Area Rapid Transit (BART) station near Beale at Market, explaining the high number of trips that start and end there."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
" \n",
"
\n",
"
End Station
2nd at Folsom
2nd at South Park
2nd at Townsend
5th at Howard
Adobe on Almaden
Arena Green / SAP Center
Beale at Market
Broadway St at Battery St
California Ave Caltrain Station
Castro Street and El Camino Real
Civic Center BART (7th at Market)
Clay at Battery
Commercial at Montgomery
Cowper at University
Davis at Jackson
Embarcadero at Bryant
Embarcadero at Folsom
Embarcadero at Sansome
Embarcadero at Vallejo
Evelyn Park and Ride
Franklin at Maple
Golden Gate at Polk
Grant Avenue at Columbus Avenue
Harry Bridges Plaza (Ferry Building)
Howard at 2nd
Japantown
MLK Library
Market at 10th
Market at 4th
Market at Sansome
Mechanics Plaza (Market at Battery)
Mezes Park
Mountain View Caltrain Station
Mountain View City Hall
Palo Alto Caltrain Station
Park at Olive
Paseo de San Antonio
Post at Kearny
Powell Street BART
Powell at Post (Union Square)
Redwood City Caltrain Station
Redwood City Medical Center
Redwood City Public Library
Rengstorff Avenue / California Street
Ryland Park
SJSU - San Salvador at 9th
SJSU 4th at San Carlos
San Antonio Caltrain Station
San Antonio Shopping Center
San Francisco Caltrain (Townsend at 4th)
San Francisco Caltrain 2 (330 Townsend)
San Francisco City Hall
San Jose City Hall
San Jose Civic Center
San Jose Diridon Caltrain Station
San Mateo County Center
San Pedro Square
San Salvador at 1st
Santa Clara County Civic Center
Santa Clara at Almaden
South Van Ness at Market
Spear at Folsom
St James Park
Stanford in Redwood City
Steuart at Market
Temporary Transbay Terminal (Howard at Beale)
Townsend at 7th
University and Emerson
Washington at Kearny
Yerba Buena Center of the Arts (3rd @ Howard)
\n",
"
\n",
" \n",
" \n",
"
\n",
"
2nd at Folsom
54
190
554
107
0
0
40
21
0
0
44
78
54
0
9
77
32
41
14
0
0
11
30
416
53
0
0
169
114
302
33
0
0
0
0
0
0
60
121
88
0
0
0
0
0
0
0
0
0
694
445
21
0
0
0
0
0
0
0
0
38
57
0
0
39
237
342
0
17
31
\n",
"
\n",
"
\n",
"
2nd at South Park
295
164
71
180
0
0
208
85
0
0
112
87
160
0
37
56
178
83
116
0
0
57
73
574
500
0
0
139
199
1633
119
0
0
0
0
0
0
299
84
113
0
0
0
0
0
0
0
0
0
559
480
48
0
0
0
0
0
0
0
0
66
152
0
0
374
429
143
0
63
209
\n",
"
\n",
"
\n",
"
2nd at Townsend
437
151
185
92
0
0
608
350
0
0
80
329
168
0
386
361
658
506
254
0
0
27
315
2607
295
0
0
110
225
845
177
0
0
0
0
0
0
120
100
141
0
0
0
0
0
0
0
0
0
905
299
14
0
0
0
0
0
0
0
0
72
508
0
0
2349
784
417
0
57
166
\n",
"
\n",
"
\n",
"
5th at Howard
113
177
148
83
0
0
59
130
0
0
203
76
129
0
30
57
49
166
54
0
0
85
78
371
478
0
0
303
158
168
90
0
0
0
0
0
0
93
183
169
0
0
0
0
0
0
0
0
0
690
1859
48
0
0
0
0
0
0
0
0
116
102
0
0
182
750
200
0
43
267
\n",
"
\n",
"
\n",
"
Adobe on Almaden
0
0
0
0
11
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
17
7
0
0
0
0
0
0
0
0
0
25
0
0
0
0
0
0
0
7
7
16
0
0
0
0
0
19
23
265
0
20
4
5
10
0
0
14
0
0
0
0
0
0
0
\n",
"
\n",
"
\n",
"
Arena Green / SAP Center
0
0
0
0
7
64
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
16
5
0
0
0
0
0
0
0
0
0
21
0
0
0
0
0
0
0
24
3
7
0
0
0
0
0
6
20
7
0
56
12
38
259
0
0
13
0
0
0
0
0
0
0
\n",
"
\n",
"
\n",
"
Beale at Market
127
79
183
59
0
0
59
661
0
0
201
75
101
0
247
178
38
590
165
0
0
54
435
57
72
0
0
286
236
163
26
0
0
0
0
0
0
49
227
179
0
0
0
0
0
0
0
0
0
640
269
25
0
0
0
0
0
0
0
0
243
128
0
0
16
167
35
0
64
45
\n",
"
\n",
"
\n",
"
Broadway St at Battery St
67
89
279
119
0
0
1022
110
0
0
62
283
226
0
191
198
79
231
35
0
0
5
70
168
49
0
0
32
97
341
214
0
0
0
0
0
0
169
71
218
0
0
0
0
0
0
0
0
0
685
438
7
0
0
0
0
0
0
0
0
18
106
0
0
344
748
50
0
79
47
\n",
"
\n",
"
\n",
"
California Ave Caltrain Station
0
0
0
0
0
0
0
0
38
1
0
0
0
29
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
192
40
0
0
0
0
0
0
0
6
0
0
0
17
10
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
57
0
0
\n",
"
\n",
"
\n",
"
Castro Street and El Camino Real
0
0
0
0
0
0
0
0
0
30
0
0
0
0
0
0
0
0
0
14
0
0
0
0
0
0
0
0
0
0
0
0
931
34
0
0
0
0
0
0
0
0
0
7
0
0
0
4
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
\n",
"
\n",
" \n",
"
\n",
"
... (60 rows omitted)
"
],
"text/plain": [
"End Station | 2nd at Folsom | 2nd at South Park | 2nd at Townsend | 5th at Howard | Adobe on Almaden | Arena Green / SAP Center | Beale at Market | Broadway St at Battery St | California Ave Caltrain Station | Castro Street and El Camino Real | Civic Center BART (7th at Market) | Clay at Battery | Commercial at Montgomery | Cowper at University | Davis at Jackson | Embarcadero at Bryant | Embarcadero at Folsom | Embarcadero at Sansome | Embarcadero at Vallejo | Evelyn Park and Ride | Franklin at Maple | Golden Gate at Polk | Grant Avenue at Columbus Avenue | Harry Bridges Plaza (Ferry Building) | Howard at 2nd | Japantown | MLK Library | Market at 10th | Market at 4th | Market at Sansome | Mechanics Plaza (Market at Battery) | Mezes Park | Mountain View Caltrain Station | Mountain View City Hall | Palo Alto Caltrain Station | Park at Olive | Paseo de San Antonio | Post at Kearny | Powell Street BART | Powell at Post (Union Square) | Redwood City Caltrain Station | Redwood City Medical Center | Redwood City Public Library | Rengstorff Avenue / California Street | Ryland Park | SJSU - San Salvador at 9th | SJSU 4th at San Carlos | San Antonio Caltrain Station | San Antonio Shopping Center | San Francisco Caltrain (Townsend at 4th) | San Francisco Caltrain 2 (330 Townsend) | San Francisco City Hall | San Jose City Hall | San Jose Civic Center | San Jose Diridon Caltrain Station | San Mateo County Center | San Pedro Square | San Salvador at 1st | Santa Clara County Civic Center | Santa Clara at Almaden | South Van Ness at Market | Spear at Folsom | St James Park | Stanford in Redwood City | Steuart at Market | Temporary Transbay Terminal (Howard at Beale) | Townsend at 7th | University and Emerson | Washington at Kearny | Yerba Buena Center of the Arts (3rd @ Howard)\n",
"2nd at Folsom | 54 | 190 | 554 | 107 | 0 | 0 | 40 | 21 | 0 | 0 | 44 | 78 | 54 | 0 | 9 | 77 | 32 | 41 | 14 | 0 | 0 | 11 | 30 | 416 | 53 | 0 | 0 | 169 | 114 | 302 | 33 | 0 | 0 | 0 | 0 | 0 | 0 | 60 | 121 | 88 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 694 | 445 | 21 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 38 | 57 | 0 | 0 | 39 | 237 | 342 | 0 | 17 | 31\n",
"2nd at South Park | 295 | 164 | 71 | 180 | 0 | 0 | 208 | 85 | 0 | 0 | 112 | 87 | 160 | 0 | 37 | 56 | 178 | 83 | 116 | 0 | 0 | 57 | 73 | 574 | 500 | 0 | 0 | 139 | 199 | 1633 | 119 | 0 | 0 | 0 | 0 | 0 | 0 | 299 | 84 | 113 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 559 | 480 | 48 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 66 | 152 | 0 | 0 | 374 | 429 | 143 | 0 | 63 | 209\n",
"2nd at Townsend | 437 | 151 | 185 | 92 | 0 | 0 | 608 | 350 | 0 | 0 | 80 | 329 | 168 | 0 | 386 | 361 | 658 | 506 | 254 | 0 | 0 | 27 | 315 | 2607 | 295 | 0 | 0 | 110 | 225 | 845 | 177 | 0 | 0 | 0 | 0 | 0 | 0 | 120 | 100 | 141 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 905 | 299 | 14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 72 | 508 | 0 | 0 | 2349 | 784 | 417 | 0 | 57 | 166\n",
"5th at Howard | 113 | 177 | 148 | 83 | 0 | 0 | 59 | 130 | 0 | 0 | 203 | 76 | 129 | 0 | 30 | 57 | 49 | 166 | 54 | 0 | 0 | 85 | 78 | 371 | 478 | 0 | 0 | 303 | 158 | 168 | 90 | 0 | 0 | 0 | 0 | 0 | 0 | 93 | 183 | 169 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 690 | 1859 | 48 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 116 | 102 | 0 | 0 | 182 | 750 | 200 | 0 | 43 | 267\n",
"Adobe on Almaden | 0 | 0 | 0 | 0 | 11 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 17 | 7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 25 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 7 | 7 | 16 | 0 | 0 | 0 | 0 | 0 | 19 | 23 | 265 | 0 | 20 | 4 | 5 | 10 | 0 | 0 | 14 | 0 | 0 | 0 | 0 | 0 | 0 | 0\n",
"Arena Green / SAP Center | 0 | 0 | 0 | 0 | 7 | 64 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 16 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 21 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 24 | 3 | 7 | 0 | 0 | 0 | 0 | 0 | 6 | 20 | 7 | 0 | 56 | 12 | 38 | 259 | 0 | 0 | 13 | 0 | 0 | 0 | 0 | 0 | 0 | 0\n",
"Beale at Market | 127 | 79 | 183 | 59 | 0 | 0 | 59 | 661 | 0 | 0 | 201 | 75 | 101 | 0 | 247 | 178 | 38 | 590 | 165 | 0 | 0 | 54 | 435 | 57 | 72 | 0 | 0 | 286 | 236 | 163 | 26 | 0 | 0 | 0 | 0 | 0 | 0 | 49 | 227 | 179 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 640 | 269 | 25 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 243 | 128 | 0 | 0 | 16 | 167 | 35 | 0 | 64 | 45\n",
"Broadway St at Battery St | 67 | 89 | 279 | 119 | 0 | 0 | 1022 | 110 | 0 | 0 | 62 | 283 | 226 | 0 | 191 | 198 | 79 | 231 | 35 | 0 | 0 | 5 | 70 | 168 | 49 | 0 | 0 | 32 | 97 | 341 | 214 | 0 | 0 | 0 | 0 | 0 | 0 | 169 | 71 | 218 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 685 | 438 | 7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 18 | 106 | 0 | 0 | 344 | 748 | 50 | 0 | 79 | 47\n",
"California Ave Caltrain Station | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 38 | 1 | 0 | 0 | 0 | 29 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 192 | 40 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6 | 0 | 0 | 0 | 17 | 10 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 57 | 0 | 0\n",
"Castro Street and El Camino Real | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 30 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 931 | 34 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 7 | 0 | 0 | 0 | 4 | 12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0\n",
"... (60 rows omitted)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"commute.pivot('Start Station', 'End Station')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also use `pivot` to find the shortest time of the rides between Start and End Stations. Here `pivot` has been given `Duration` as the optional `values` argument, and `min` as the function which to perform on the values in each cell."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
" \n",
"
\n",
"
End Station
2nd at Folsom
2nd at South Park
2nd at Townsend
5th at Howard
Adobe on Almaden
Arena Green / SAP Center
Beale at Market
Broadway St at Battery St
California Ave Caltrain Station
Castro Street and El Camino Real
Civic Center BART (7th at Market)
Clay at Battery
Commercial at Montgomery
Cowper at University
Davis at Jackson
Embarcadero at Bryant
Embarcadero at Folsom
Embarcadero at Sansome
Embarcadero at Vallejo
Evelyn Park and Ride
Franklin at Maple
Golden Gate at Polk
Grant Avenue at Columbus Avenue
Harry Bridges Plaza (Ferry Building)
Howard at 2nd
Japantown
MLK Library
Market at 10th
Market at 4th
Market at Sansome
Mechanics Plaza (Market at Battery)
Mezes Park
Mountain View Caltrain Station
Mountain View City Hall
Palo Alto Caltrain Station
Park at Olive
Paseo de San Antonio
Post at Kearny
Powell Street BART
Powell at Post (Union Square)
Redwood City Caltrain Station
Redwood City Medical Center
Redwood City Public Library
Rengstorff Avenue / California Street
Ryland Park
SJSU - San Salvador at 9th
SJSU 4th at San Carlos
San Antonio Caltrain Station
San Antonio Shopping Center
San Francisco Caltrain (Townsend at 4th)
San Francisco Caltrain 2 (330 Townsend)
San Francisco City Hall
San Jose City Hall
San Jose Civic Center
San Jose Diridon Caltrain Station
San Mateo County Center
San Pedro Square
San Salvador at 1st
Santa Clara County Civic Center
Santa Clara at Almaden
South Van Ness at Market
Spear at Folsom
St James Park
Stanford in Redwood City
Steuart at Market
Temporary Transbay Terminal (Howard at Beale)
Townsend at 7th
University and Emerson
Washington at Kearny
Yerba Buena Center of the Arts (3rd @ Howard)
\n",
"
\n",
" \n",
" \n",
"
\n",
"
2nd at Folsom
61
97
164
268
0
0
271
407
0
0
483
329
306
0
494
239
262
687
599
0
0
639
416
282
80
0
0
506
237
167
250
0
0
0
0
0
0
208
264
290
0
0
0
0
0
0
0
0
0
300
303
584
0
0
0
0
0
0
0
0
590
208
0
0
318
149
448
0
429
165
\n",
"
\n",
"
\n",
"
2nd at South Park
61
60
77
86
0
0
78
345
0
0
290
188
171
0
357
104
81
490
341
0
0
369
278
122
60
0
0
416
142
61
68
0
0
0
0
0
0
60
237
106
0
0
0
0
0
0
0
0
0
63
66
458
0
0
0
0
0
0
0
0
399
63
0
0
79
61
78
0
270
96
\n",
"
\n",
"
\n",
"
2nd at Townsend
137
67
60
423
0
0
311
469
0
0
546
520
474
0
436
145
232
509
494
0
0
773
549
325
221
0
0
667
367
265
395
0
0
0
0
0
0
319
455
398
0
0
0
0
0
0
0
0
0
125
133
742
0
0
0
0
0
0
0
0
777
241
0
0
291
249
259
0
610
284
\n",
"
\n",
"
\n",
"
5th at Howard
215
300
384
68
0
0
357
530
0
0
179
412
364
0
543
419
359
695
609
0
0
235
474
453
145
0
0
269
161
250
306
0
0
0
0
0
0
234
89
202
0
0
0
0
0
0
0
0
0
256
221
347
0
0
0
0
0
0
0
0
375
402
0
0
455
265
357
0
553
109
\n",
"
\n",
"
\n",
"
Adobe on Almaden
0
0
0
0
84
275
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
701
387
0
0
0
0
0
0
0
0
0
229
0
0
0
0
0
0
0
441
452
318
0
0
0
0
0
309
146
182
0
207
358
876
101
0
0
369
0
0
0
0
0
0
0
\n",
"
\n",
"
\n",
"
Arena Green / SAP Center
0
0
0
0
305
62
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
526
546
0
0
0
0
0
0
0
0
0
403
0
0
0
0
0
0
0
288
875
685
0
0
0
0
0
440
420
153
0
166
624
759
116
0
0
301
0
0
0
0
0
0
0
\n",
"
\n",
"
\n",
"
Beale at Market
219
343
417
387
0
0
60
155
0
0
343
122
153
0
115
216
170
303
198
0
0
437
235
149
204
0
0
535
203
88
72
0
0
0
0
0
0
191
316
191
0
0
0
0
0
0
0
0
0
499
395
526
0
0
0
0
0
0
0
0
575
173
0
0
87
94
619
0
222
264
\n",
"
\n",
"
\n",
"
Broadway St at Battery St
351
424
499
555
0
0
195
62
0
0
520
90
129
0
70
340
284
128
101
0
0
961
148
168
357
0
0
652
351
218
221
0
0
0
0
0
0
255
376
316
0
0
0
0
0
0
0
0
0
611
599
799
0
0
0
0
0
0
0
0
738
336
0
0
169
291
885
0
134
411
\n",
"
\n",
"
\n",
"
California Ave Caltrain Station
0
0
0
0
0
0
0
0
82
1645
0
0
0
628
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1771
0
484
131
0
0
0
0
0
0
0
1077
0
0
0
870
911
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
531
0
0
\n",
"
\n",
"
\n",
"
Castro Street and El Camino Real
0
0
0
0
0
0
0
0
0
74
0
0
0
0
0
0
0
0
0
499
0
0
0
0
0
0
0
0
0
0
0
0
201
108
0
0
0
0
0
0
0
0
0
654
0
0
0
953
696
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
\n",
"
\n",
" \n",
"
\n",
"
... (60 rows omitted)
"
],
"text/plain": [
"End Station | 2nd at Folsom | 2nd at South Park | 2nd at Townsend | 5th at Howard | Adobe on Almaden | Arena Green / SAP Center | Beale at Market | Broadway St at Battery St | California Ave Caltrain Station | Castro Street and El Camino Real | Civic Center BART (7th at Market) | Clay at Battery | Commercial at Montgomery | Cowper at University | Davis at Jackson | Embarcadero at Bryant | Embarcadero at Folsom | Embarcadero at Sansome | Embarcadero at Vallejo | Evelyn Park and Ride | Franklin at Maple | Golden Gate at Polk | Grant Avenue at Columbus Avenue | Harry Bridges Plaza (Ferry Building) | Howard at 2nd | Japantown | MLK Library | Market at 10th | Market at 4th | Market at Sansome | Mechanics Plaza (Market at Battery) | Mezes Park | Mountain View Caltrain Station | Mountain View City Hall | Palo Alto Caltrain Station | Park at Olive | Paseo de San Antonio | Post at Kearny | Powell Street BART | Powell at Post (Union Square) | Redwood City Caltrain Station | Redwood City Medical Center | Redwood City Public Library | Rengstorff Avenue / California Street | Ryland Park | SJSU - San Salvador at 9th | SJSU 4th at San Carlos | San Antonio Caltrain Station | San Antonio Shopping Center | San Francisco Caltrain (Townsend at 4th) | San Francisco Caltrain 2 (330 Townsend) | San Francisco City Hall | San Jose City Hall | San Jose Civic Center | San Jose Diridon Caltrain Station | San Mateo County Center | San Pedro Square | San Salvador at 1st | Santa Clara County Civic Center | Santa Clara at Almaden | South Van Ness at Market | Spear at Folsom | St James Park | Stanford in Redwood City | Steuart at Market | Temporary Transbay Terminal (Howard at Beale) | Townsend at 7th | University and Emerson | Washington at Kearny | Yerba Buena Center of the Arts (3rd @ Howard)\n",
"2nd at Folsom | 61 | 97 | 164 | 268 | 0 | 0 | 271 | 407 | 0 | 0 | 483 | 329 | 306 | 0 | 494 | 239 | 262 | 687 | 599 | 0 | 0 | 639 | 416 | 282 | 80 | 0 | 0 | 506 | 237 | 167 | 250 | 0 | 0 | 0 | 0 | 0 | 0 | 208 | 264 | 290 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 300 | 303 | 584 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 590 | 208 | 0 | 0 | 318 | 149 | 448 | 0 | 429 | 165\n",
"2nd at South Park | 61 | 60 | 77 | 86 | 0 | 0 | 78 | 345 | 0 | 0 | 290 | 188 | 171 | 0 | 357 | 104 | 81 | 490 | 341 | 0 | 0 | 369 | 278 | 122 | 60 | 0 | 0 | 416 | 142 | 61 | 68 | 0 | 0 | 0 | 0 | 0 | 0 | 60 | 237 | 106 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 63 | 66 | 458 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 399 | 63 | 0 | 0 | 79 | 61 | 78 | 0 | 270 | 96\n",
"2nd at Townsend | 137 | 67 | 60 | 423 | 0 | 0 | 311 | 469 | 0 | 0 | 546 | 520 | 474 | 0 | 436 | 145 | 232 | 509 | 494 | 0 | 0 | 773 | 549 | 325 | 221 | 0 | 0 | 667 | 367 | 265 | 395 | 0 | 0 | 0 | 0 | 0 | 0 | 319 | 455 | 398 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 125 | 133 | 742 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 777 | 241 | 0 | 0 | 291 | 249 | 259 | 0 | 610 | 284\n",
"5th at Howard | 215 | 300 | 384 | 68 | 0 | 0 | 357 | 530 | 0 | 0 | 179 | 412 | 364 | 0 | 543 | 419 | 359 | 695 | 609 | 0 | 0 | 235 | 474 | 453 | 145 | 0 | 0 | 269 | 161 | 250 | 306 | 0 | 0 | 0 | 0 | 0 | 0 | 234 | 89 | 202 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 256 | 221 | 347 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 375 | 402 | 0 | 0 | 455 | 265 | 357 | 0 | 553 | 109\n",
"Adobe on Almaden | 0 | 0 | 0 | 0 | 84 | 275 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 701 | 387 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 229 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 441 | 452 | 318 | 0 | 0 | 0 | 0 | 0 | 309 | 146 | 182 | 0 | 207 | 358 | 876 | 101 | 0 | 0 | 369 | 0 | 0 | 0 | 0 | 0 | 0 | 0\n",
"Arena Green / SAP Center | 0 | 0 | 0 | 0 | 305 | 62 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 526 | 546 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 403 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 288 | 875 | 685 | 0 | 0 | 0 | 0 | 0 | 440 | 420 | 153 | 0 | 166 | 624 | 759 | 116 | 0 | 0 | 301 | 0 | 0 | 0 | 0 | 0 | 0 | 0\n",
"Beale at Market | 219 | 343 | 417 | 387 | 0 | 0 | 60 | 155 | 0 | 0 | 343 | 122 | 153 | 0 | 115 | 216 | 170 | 303 | 198 | 0 | 0 | 437 | 235 | 149 | 204 | 0 | 0 | 535 | 203 | 88 | 72 | 0 | 0 | 0 | 0 | 0 | 0 | 191 | 316 | 191 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 499 | 395 | 526 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 575 | 173 | 0 | 0 | 87 | 94 | 619 | 0 | 222 | 264\n",
"Broadway St at Battery St | 351 | 424 | 499 | 555 | 0 | 0 | 195 | 62 | 0 | 0 | 520 | 90 | 129 | 0 | 70 | 340 | 284 | 128 | 101 | 0 | 0 | 961 | 148 | 168 | 357 | 0 | 0 | 652 | 351 | 218 | 221 | 0 | 0 | 0 | 0 | 0 | 0 | 255 | 376 | 316 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 611 | 599 | 799 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 738 | 336 | 0 | 0 | 169 | 291 | 885 | 0 | 134 | 411\n",
"California Ave Caltrain Station | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 82 | 1645 | 0 | 0 | 0 | 628 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1771 | 0 | 484 | 131 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1077 | 0 | 0 | 0 | 870 | 911 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 531 | 0 | 0\n",
"Castro Street and El Camino Real | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 74 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 499 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 201 | 108 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 654 | 0 | 0 | 0 | 953 | 696 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0\n",
"... (60 rows omitted)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"commute.pivot('Start Station', 'End Station', 'Duration', min)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Someone had a very quick trip (271 seconds, or about 4.5 minutes) from 2nd at Folsom to Beale at Market, about five blocks away. There are no bike trips between the 2nd Avenue stations and Adobe on Almaden, because the latter is in a different city."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Drawing Maps\n",
"The table `stations` contains geographical information about each bike station, including latitude, longitude, and a \"landmark\" which is the name of the city where the station is located."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
" \n",
"
\n",
"
station_id
name
lat
long
dockcount
landmark
installation
\n",
"
\n",
" \n",
" \n",
"
\n",
"
2
San Jose Diridon Caltrain Station
37.3297
-121.902
27
San Jose
8/6/2013
\n",
"
\n",
"
\n",
"
3
San Jose Civic Center
37.3307
-121.889
15
San Jose
8/5/2013
\n",
"
\n",
"
\n",
"
4
Santa Clara at Almaden
37.334
-121.895
11
San Jose
8/6/2013
\n",
"
\n",
"
\n",
"
5
Adobe on Almaden
37.3314
-121.893
19
San Jose
8/5/2013
\n",
"
\n",
"
\n",
"
6
San Pedro Square
37.3367
-121.894
15
San Jose
8/7/2013
\n",
"
\n",
"
\n",
"
7
Paseo de San Antonio
37.3338
-121.887
15
San Jose
8/7/2013
\n",
"
\n",
"
\n",
"
8
San Salvador at 1st
37.3302
-121.886
15
San Jose
8/5/2013
\n",
"
\n",
"
\n",
"
9
Japantown
37.3487
-121.895
15
San Jose
8/5/2013
\n",
"
\n",
"
\n",
"
10
San Jose City Hall
37.3374
-121.887
15
San Jose
8/6/2013
\n",
"
\n",
"
\n",
"
11
MLK Library
37.3359
-121.886
19
San Jose
8/6/2013
\n",
"
\n",
" \n",
"
\n",
"
... (60 rows omitted)
"
],
"text/plain": [
"station_id | name | lat | long | dockcount | landmark | installation\n",
"2 | San Jose Diridon Caltrain Station | 37.3297 | -121.902 | 27 | San Jose | 8/6/2013\n",
"3 | San Jose Civic Center | 37.3307 | -121.889 | 15 | San Jose | 8/5/2013\n",
"4 | Santa Clara at Almaden | 37.334 | -121.895 | 11 | San Jose | 8/6/2013\n",
"5 | Adobe on Almaden | 37.3314 | -121.893 | 19 | San Jose | 8/5/2013\n",
"6 | San Pedro Square | 37.3367 | -121.894 | 15 | San Jose | 8/7/2013\n",
"7 | Paseo de San Antonio | 37.3338 | -121.887 | 15 | San Jose | 8/7/2013\n",
"8 | San Salvador at 1st | 37.3302 | -121.886 | 15 | San Jose | 8/5/2013\n",
"9 | Japantown | 37.3487 | -121.895 | 15 | San Jose | 8/5/2013\n",
"10 | San Jose City Hall | 37.3374 | -121.887 | 15 | San Jose | 8/6/2013\n",
"11 | MLK Library | 37.3359 | -121.886 | 19 | San Jose | 8/6/2013\n",
"... (60 rows omitted)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stations = Table.read_table(path_data + 'station.csv')\n",
"stations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can draw a map of where the stations are located, using `Marker.map_table`. The function operates on a table, whose columns are (in order) latitude, longitude, and an optional identifier for each point."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
Make this Notebook Trusted to load map: File -> Trust Notebook
"
],
"text/plain": [
""
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Marker.map_table(stations.select('lat', 'long', 'name').relabel('name', 'labels'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The map is created using [OpenStreetMap](http://www.openstreetmap.org/#map=5/51.500/-0.100), which is an open online mapping system that you can use just as you would use Google Maps or any other online map. Zoom in to San Francisco to see how the stations are distributed. Click on a marker to see which station it is."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also represent points on a map by colored circles. Here is such a map of the San Francisco bike stations."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
Make this Notebook Trusted to load map: File -> Trust Notebook
"
],
"text/plain": [
""
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sf = stations.where('landmark', are.equal_to('San Francisco'))\n",
"sf_map_data = sf.select('lat', 'long', 'name').relabel('name', 'labels')\n",
"Circle.map_table(sf_map_data, color='green')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## More Informative Maps: An Application of `join`\n",
"The bike stations are located in five different cities in the Bay Area. To distinguish the points by using a different color for each city, let's start by using group to identify all the cities and assign each one a color."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
],
"text/plain": [
"city | count | color\n",
"Mountain View | 7 | blue\n",
"Palo Alto | 5 | red\n",
"Redwood City | 7 | green\n",
"San Francisco | 35 | orange\n",
"San Jose | 16 | purple"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"colors = cities.with_column('color', make_array('blue', 'red', 'green', 'orange', 'purple'))\n",
"colors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can join `stations` and `colors` by `landmark`, and then select the columns we need to draw a map."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
Make this Notebook Trusted to load map: File -> Trust Notebook
"
],
"text/plain": [
""
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"joined = stations.join('landmark', colors, 'city')\n",
"colored = joined.select('lat', 'long', 'name', 'color').relabel('name', 'labels')\n",
"Marker.map_table(colored)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now the markers have five different colors for the five different cities."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To see where most of the bike rentals originate, let's identify the start stations:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
" \n",
"
\n",
"
Start Station
count
\n",
"
\n",
" \n",
" \n",
"
\n",
"
San Francisco Caltrain (Townsend at 4th)
25858
\n",
"
\n",
"
\n",
"
San Francisco Caltrain 2 (330 Townsend)
21523
\n",
"
\n",
"
\n",
"
Harry Bridges Plaza (Ferry Building)
15543
\n",
"
\n",
"
\n",
"
Temporary Transbay Terminal (Howard at Beale)
14298
\n",
"
\n",
"
\n",
"
2nd at Townsend
13674
\n",
"
\n",
"
\n",
"
Townsend at 7th
13579
\n",
"
\n",
"
\n",
"
Steuart at Market
13215
\n",
"
\n",
"
\n",
"
Embarcadero at Sansome
12842
\n",
"
\n",
"
\n",
"
Market at 10th
11523
\n",
"
\n",
"
\n",
"
Market at Sansome
11023
\n",
"
\n",
" \n",
"
\n",
"
... (60 rows omitted)
"
],
"text/plain": [
"Start Station | count\n",
"San Francisco Caltrain (Townsend at 4th) | 25858\n",
"San Francisco Caltrain 2 (330 Townsend) | 21523\n",
"Harry Bridges Plaza (Ferry Building) | 15543\n",
"Temporary Transbay Terminal (Howard at Beale) | 14298\n",
"2nd at Townsend | 13674\n",
"Townsend at 7th | 13579\n",
"Steuart at Market | 13215\n",
"Embarcadero at Sansome | 12842\n",
"Market at 10th | 11523\n",
"Market at Sansome | 11023\n",
"... (60 rows omitted)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"starts = commute.group('Start Station').sort('count', descending=True)\n",
"starts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can include the geographical data needed to map these stations, by first joining `starts` with `stations`:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
" \n",
"
\n",
"
name
station_id
lat
long
dockcount
landmark
installation
count
\n",
"
\n",
" \n",
" \n",
"
\n",
"
2nd at Folsom
62
37.7853
-122.396
19
San Francisco
8/22/2013
7841
\n",
"
\n",
"
\n",
"
2nd at South Park
64
37.7823
-122.393
15
San Francisco
8/22/2013
9274
\n",
"
\n",
"
\n",
"
2nd at Townsend
61
37.7805
-122.39
27
San Francisco
8/22/2013
13674
\n",
"
\n",
"
\n",
"
5th at Howard
57
37.7818
-122.405
15
San Francisco
8/21/2013
7394
\n",
"
\n",
"
\n",
"
Adobe on Almaden
5
37.3314
-121.893
19
San Jose
8/5/2013
522
\n",
"
\n",
"
\n",
"
Arena Green / SAP Center
14
37.3327
-121.9
19
San Jose
8/5/2013
590
\n",
"
\n",
"
\n",
"
Beale at Market
56
37.7923
-122.397
19
San Francisco
8/20/2013
8135
\n",
"
\n",
"
\n",
"
Broadway St at Battery St
82
37.7985
-122.401
15
San Francisco
1/22/2014
7460
\n",
"
\n",
"
\n",
"
California Ave Caltrain Station
36
37.4291
-122.143
15
Palo Alto
8/14/2013
300
\n",
"
\n",
"
\n",
"
Castro Street and El Camino Real
32
37.386
-122.084
11
Mountain View
12/31/2013
1137
\n",
"
\n",
" \n",
"
\n",
"
... (58 rows omitted)
"
],
"text/plain": [
"name | station_id | lat | long | dockcount | landmark | installation | count\n",
"2nd at Folsom | 62 | 37.7853 | -122.396 | 19 | San Francisco | 8/22/2013 | 7841\n",
"2nd at South Park | 64 | 37.7823 | -122.393 | 15 | San Francisco | 8/22/2013 | 9274\n",
"2nd at Townsend | 61 | 37.7805 | -122.39 | 27 | San Francisco | 8/22/2013 | 13674\n",
"5th at Howard | 57 | 37.7818 | -122.405 | 15 | San Francisco | 8/21/2013 | 7394\n",
"Adobe on Almaden | 5 | 37.3314 | -121.893 | 19 | San Jose | 8/5/2013 | 522\n",
"Arena Green / SAP Center | 14 | 37.3327 | -121.9 | 19 | San Jose | 8/5/2013 | 590\n",
"Beale at Market | 56 | 37.7923 | -122.397 | 19 | San Francisco | 8/20/2013 | 8135\n",
"Broadway St at Battery St | 82 | 37.7985 | -122.401 | 15 | San Francisco | 1/22/2014 | 7460\n",
"California Ave Caltrain Station | 36 | 37.4291 | -122.143 | 15 | Palo Alto | 8/14/2013 | 300\n",
"Castro Street and El Camino Real | 32 | 37.386 | -122.084 | 11 | Mountain View | 12/31/2013 | 1137\n",
"... (58 rows omitted)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"station_starts = stations.join('name', starts, 'Start Station')\n",
"station_starts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we extract just the data needed for drawing our map, adding a color and an area to each station. The area is 0.3 times the count of the number of rentals starting at each station, where the constant 0.3 was chosen so that the circles would appear at an appropriate scale on the map."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"