{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Analysis of Bike Trips in 2019"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Setup\n",
    "Import all libraries."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting chart_studio\n",
      "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/b9/3f/d2f3f506ba1aaf109f549f8b01d1483cd3e324c5ebe6b206acee66efdf46/chart_studio-1.0.0-py3-none-any.whl (76kB)\n",
      "\u001b[K    100% |████████████████████████████████| 81kB 18.3MB/s ta 0:00:01\n",
      "\u001b[?25hRequirement already satisfied: requests in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from chart_studio) (2.20.0)\n",
      "Requirement already satisfied: plotly in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from chart_studio) (4.2.1)\n",
      "Requirement already satisfied: retrying>=1.3.3 in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from chart_studio) (1.3.3)\n",
      "Requirement already satisfied: six in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from chart_studio) (1.11.0)\n",
      "Requirement already satisfied: idna<2.8,>=2.5 in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from requests->chart_studio) (2.6)\n",
      "Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from requests->chart_studio) (3.0.4)\n",
      "Requirement already satisfied: urllib3<1.25,>=1.21.1 in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from requests->chart_studio) (1.23)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in /home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages (from requests->chart_studio) (2019.9.11)\n",
      "Installing collected packages: chart-studio\n",
      "Successfully installed chart-studio-1.0.0\n",
      "\u001b[33mYou are using pip version 10.0.1, however version 19.3.1 is available.\n",
      "You should consider upgrading via the 'pip install --upgrade pip' command.\u001b[0m\n"
     ]
    }
   ],
   "source": [
    "!pip install chart_studio"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import os\n",
    "import chart_studio.plotly as py\n",
    "import plotly.graph_objects as go\n",
    "from plotly import tools\n",
    "from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Download\n",
    "Get all available trip data for 2019."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "[1/10]: https://s3.amazonaws.com/tripdata/201901-citibike-tripdata.csv.zip --> 201901-citibike-tripdata.csv.zip\n",
      "--_curl_--https://s3.amazonaws.com/tripdata/201901-citibike-tripdata.csv.zip\n",
      "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n",
      "                                 Dload  Upload   Total   Spent    Left  Speed\n",
      "100 39.5M  100 39.5M    0     0  34.9M      0  0:00:01  0:00:01 --:--:-- 34.9M\n",
      "\n",
      "[2/10]: https://s3.amazonaws.com/tripdata/201902-citibike-tripdata.csv.zip --> 201902-citibike-tripdata.csv.zip\n",
      "--_curl_--https://s3.amazonaws.com/tripdata/201902-citibike-tripdata.csv.zip\n",
      "100 38.5M  100 38.5M    0     0  42.5M      0 --:--:-- --:--:-- --:--:-- 60.5M\n",
      "\n",
      "[3/10]: https://s3.amazonaws.com/tripdata/201903-citibike-tripdata.csv.zip --> 201903-citibike-tripdata.csv.zip\n",
      "--_curl_--https://s3.amazonaws.com/tripdata/201903-citibike-tripdata.csv.zip\n",
      "100 54.5M  100 54.5M    0     0  52.5M      0  0:00:01  0:00:01 --:--:-- 52.1M\n",
      "\n",
      "[4/10]: https://s3.amazonaws.com/tripdata/201904-citibike-tripdata.csv.zip --> 201904-citibike-tripdata.csv.zip\n",
      "--_curl_--https://s3.amazonaws.com/tripdata/201904-citibike-tripdata.csv.zip\n",
      "100 72.1M  100 72.1M    0     0  49.1M      0  0:00:01  0:00:01 --:--:-- 65.1M\n",
      "\n",
      "[5/10]: https://s3.amazonaws.com/tripdata/201905-citibike-tripdata.csv.zip --> 201905-citibike-tripdata.csv.zip\n",
      "--_curl_--https://s3.amazonaws.com/tripdata/201905-citibike-tripdata.csv.zip\n",
      "100 78.3M  100 78.3M    0     0  45.3M      0  0:00:01  0:00:01 --:--:-- 48.1M\n",
      "\n",
      "[6/10]: https://s3.amazonaws.com/tripdata/201906-citibike-tripdata.csv.zip --> 201906-citibike-tripdata.csv.zip\n",
      "--_curl_--https://s3.amazonaws.com/tripdata/201906-citibike-tripdata.csv.zip\n",
      "100 86.8M  100 86.8M    0     0  75.1M      0  0:00:01  0:00:01 --:--:-- 81.2M\n",
      "\n",
      "[7/10]: https://s3.amazonaws.com/tripdata/201907-citibike-tripdata.csv.zip --> 201907-citibike-tripdata.csv.zip\n",
      "--_curl_--https://s3.amazonaws.com/tripdata/201907-citibike-tripdata.csv.zip\n",
      "100 89.0M  100 89.0M    0     0  90.9M      0 --:--:-- --:--:-- --:--:-- 92.9M\n",
      "\n",
      "[8/10]: https://s3.amazonaws.com/tripdata/201908-citibike-tripdata.csv.zip --> 201908-citibike-tripdata.csv.zip\n",
      "--_curl_--https://s3.amazonaws.com/tripdata/201908-citibike-tripdata.csv.zip\n",
      "100 95.3M  100 95.3M    0     0  81.4M      0  0:00:01  0:00:01 --:--:-- 97.0M\n",
      "\n",
      "[9/10]: https://s3.amazonaws.com/tripdata/201909-citibike-tripdata.csv.zip --> 201909-citibike-tripdata.csv.zip\n",
      "--_curl_--https://s3.amazonaws.com/tripdata/201909-citibike-tripdata.csv.zip\n",
      "100 99.3M  100 99.3M    0     0  82.1M      0  0:00:01  0:00:01 --:--:-- 86.3M\n",
      "\n",
      "[10/10]: https://s3.amazonaws.com/tripdata/201910-citibike-tripdata.csv.zip --> 201910-citibike-tripdata.csv.zip\n",
      "--_curl_--https://s3.amazonaws.com/tripdata/201910-citibike-tripdata.csv.zip\n",
      "100 85.0M  100 85.0M    0     0  65.6M      0  0:00:01  0:00:01 --:--:-- 86.0M\n",
      "Archive:  201908-citibike-tripdata.csv.zip\n",
      "  inflating: 201908-citibike-tripdata.csv  \n",
      "\n",
      "Archive:  201907-citibike-tripdata.csv.zip\n",
      "  inflating: 201907-citibike-tripdata.csv  \n",
      "\n",
      "Archive:  201910-citibike-tripdata.csv.zip\n",
      "  inflating: 201910-citibike-tripdata.csv  \n",
      "\n",
      "Archive:  201905-citibike-tripdata.csv.zip\n",
      "  inflating: 201905-citibike-tripdata.csv  \n",
      "\n",
      "Archive:  201909-citibike-tripdata.csv.zip\n",
      "  inflating: 201909-citibike-tripdata.csv  \n",
      "\n",
      "Archive:  201901-citibike-tripdata.csv.zip\n",
      "  inflating: 201901-citibike-tripdata.csv  \n",
      "\n",
      "Archive:  201903-citibike-tripdata.csv.zip\n",
      "  inflating: 201903-citibike-tripdata.csv  \n",
      "\n",
      "Archive:  201906-citibike-tripdata.csv.zip\n",
      "  inflating: 201906-citibike-tripdata.csv  \n",
      "\n",
      "Archive:  201904-citibike-tripdata.csv.zip\n",
      "  inflating: 201904-citibike-tripdata.csv  \n",
      "\n",
      "Archive:  201902-citibike-tripdata.csv.zip\n",
      "  inflating: 201902-citibike-tripdata.csv  \n",
      "   creating: __MACOSX/\n",
      "  inflating: __MACOSX/._201902-citibike-tripdata.csv  \n",
      "\n",
      "10 archives were successfully processed.\n"
     ]
    }
   ],
   "source": [
    "!curl -O \"https://s3.amazonaws.com/tripdata/2019[01-10]-citibike-tripdata.csv.zip\"\n",
    "!unzip -o \"*.zip\"\n",
    "!rm *.zip"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Create DataFrame\n",
    "Read 2019 trip data into a DataFrame."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "
\n",
       "\n",
       "
\n",
       "  \n",
       "    \n",
       "      | \n",
       " | \n",
       " | tripduration\n",
       " | starttime\n",
       " | stoptime\n",
       " | start station id\n",
       " | start station name\n",
       " | start station latitude\n",
       " | start station longitude\n",
       " | end station id\n",
       " | end station name\n",
       " | end station latitude\n",
       " | end station longitude\n",
       " | bikeid\n",
       " | usertype\n",
       " | birth year\n",
       " | gender\n",
       " | 
\n",
       "  \n",
       "  \n",
       "    \n",
       "      | 201901-citibike-tripdata.csv\n",
       " | 0\n",
       " | 320\n",
       " | 2019-01-01 00:01:47.4010\n",
       " | 2019-01-01 00:07:07.5810\n",
       " | 3160.0\n",
       " | Central Park West & W 76 St\n",
       " | 40.778968\n",
       " | -73.973747\n",
       " | 3283.0\n",
       " | W 89 St & Columbus Ave\n",
       " | 40.788221\n",
       " | -73.970416\n",
       " | 15839\n",
       " | Subscriber\n",
       " | 1971\n",
       " | 1\n",
       " | 
\n",
       "    \n",
       "      | 1\n",
       " | 316\n",
       " | 2019-01-01 00:04:43.7360\n",
       " | 2019-01-01 00:10:00.6080\n",
       " | 519.0\n",
       " | Pershing Square North\n",
       " | 40.751873\n",
       " | -73.977706\n",
       " | 518.0\n",
       " | E 39 St & 2 Ave\n",
       " | 40.747804\n",
       " | -73.973442\n",
       " | 32723\n",
       " | Subscriber\n",
       " | 1964\n",
       " | 1\n",
       " | 
\n",
       "    \n",
       "      | 2\n",
       " | 591\n",
       " | 2019-01-01 00:06:03.9970\n",
       " | 2019-01-01 00:15:55.4380\n",
       " | 3171.0\n",
       " | Amsterdam Ave & W 82 St\n",
       " | 40.785247\n",
       " | -73.976673\n",
       " | 3154.0\n",
       " | E 77 St & 3 Ave\n",
       " | 40.773142\n",
       " | -73.958562\n",
       " | 27451\n",
       " | Subscriber\n",
       " | 1987\n",
       " | 1\n",
       " | 
\n",
       "    \n",
       "      | 3\n",
       " | 2719\n",
       " | 2019-01-01 00:07:03.5450\n",
       " | 2019-01-01 00:52:22.6500\n",
       " | 504.0\n",
       " | 1 Ave & E 16 St\n",
       " | 40.732219\n",
       " | -73.981656\n",
       " | 3709.0\n",
       " | W 15 St & 6 Ave\n",
       " | 40.738046\n",
       " | -73.996430\n",
       " | 21579\n",
       " | Subscriber\n",
       " | 1990\n",
       " | 1\n",
       " | 
\n",
       "    \n",
       "      | 4\n",
       " | 303\n",
       " | 2019-01-01 00:07:35.9450\n",
       " | 2019-01-01 00:12:39.5020\n",
       " | 229.0\n",
       " | Great Jones St\n",
       " | 40.727434\n",
       " | -73.993790\n",
       " | 503.0\n",
       " | E 20 St & Park Ave\n",
       " | 40.738274\n",
       " | -73.987520\n",
       " | 35379\n",
       " | Subscriber\n",
       " | 1979\n",
       " | 1\n",
       " | 
\n",
       "  \n",
       "
\n",
       "
\n",
       "\n",
       "
\n",
       "  \n",
       "    \n",
       "      | \n",
       " | tripduration\n",
       " | start station id\n",
       " | start station latitude\n",
       " | start station longitude\n",
       " | end station id\n",
       " | end station latitude\n",
       " | end station longitude\n",
       " | bikeid\n",
       " | birth year\n",
       " | gender\n",
       " | 
\n",
       "  \n",
       "  \n",
       "    \n",
       "      | count\n",
       " | 1.811778e+07\n",
       " | 1.811760e+07\n",
       " | 1.811778e+07\n",
       " | 1.811778e+07\n",
       " | 1.811760e+07\n",
       " | 1.811778e+07\n",
       " | 1.811778e+07\n",
       " | 1.811778e+07\n",
       " | 1.811778e+07\n",
       " | 1.811778e+07\n",
       " | 
\n",
       "    \n",
       "      | mean\n",
       " | 9.975303e+02\n",
       " | 1.663640e+03\n",
       " | 4.073724e+01\n",
       " | -7.398201e+01\n",
       " | 1.655954e+03\n",
       " | 4.073693e+01\n",
       " | -7.398221e+01\n",
       " | 2.931836e+04\n",
       " | 1.980243e+03\n",
       " | 1.162605e+00\n",
       " | 
\n",
       "    \n",
       "      | std\n",
       " | 1.070981e+04\n",
       " | 1.475535e+03\n",
       " | 3.049230e-02\n",
       " | 1.977536e-02\n",
       " | 1.475292e+03\n",
       " | 3.037217e-02\n",
       " | 1.986180e-02\n",
       " | 7.402559e+03\n",
       " | 1.208459e+01\n",
       " | 5.421212e-01\n",
       " | 
\n",
       "    \n",
       "      | min\n",
       " | 6.100000e+01\n",
       " | 7.200000e+01\n",
       " | 4.065540e+01\n",
       " | -7.402535e+01\n",
       " | 7.200000e+01\n",
       " | 4.065540e+01\n",
       " | -7.408364e+01\n",
       " | 1.452900e+04\n",
       " | 1.857000e+03\n",
       " | 0.000000e+00\n",
       " | 
\n",
       "    \n",
       "      | 25%\n",
       " | 3.670000e+02\n",
       " | 3.820000e+02\n",
       " | 4.071755e+01\n",
       " | -7.399530e+01\n",
       " | 3.800000e+02\n",
       " | 4.071749e+01\n",
       " | -7.399595e+01\n",
       " | 2.516500e+04\n",
       " | 1.970000e+03\n",
       " | 1.000000e+00\n",
       " | 
\n",
       "    \n",
       "      | 50%\n",
       " | 6.260000e+02\n",
       " | 5.140000e+02\n",
       " | 4.073782e+01\n",
       " | -7.398518e+01\n",
       " | 5.130000e+02\n",
       " | 4.073705e+01\n",
       " | -7.398565e+01\n",
       " | 3.067700e+04\n",
       " | 1.983000e+03\n",
       " | 1.000000e+00\n",
       " | 
\n",
       "    \n",
       "      | 75%\n",
       " | 1.101000e+03\n",
       " | 3.295000e+03\n",
       " | 4.075725e+01\n",
       " | -7.397121e+01\n",
       " | 3.295000e+03\n",
       " | 4.075715e+01\n",
       " | -7.397137e+01\n",
       " | 3.440700e+04\n",
       " | 1.990000e+03\n",
       " | 1.000000e+00\n",
       " | 
\n",
       "    \n",
       "      | max\n",
       " | 3.812666e+06\n",
       " | 3.891000e+03\n",
       " | 4.086900e+01\n",
       " | -7.387800e+01\n",
       " | 3.891000e+03\n",
       " | 4.086900e+01\n",
       " | -7.387800e+01\n",
       " | 4.206800e+04\n",
       " | 2.003000e+03\n",
       " | 2.000000e+00\n",
       " | 
\n",
       "  \n",
       "
\n",
       "
\n",
       "        \n",
       "        \n",
       "            
\n",
       "            \n",
       "        
\n",
       "        \n",
       "        \n",
       "            
\n",
       "            \n",
       "        
\n",
       "\n",
       "
\n",
       "  \n",
       "    \n",
       "      | \n",
       " | \n",
       " | tripduration\n",
       " | starttime\n",
       " | stoptime\n",
       " | start station id\n",
       " | start station name\n",
       " | start station latitude\n",
       " | start station longitude\n",
       " | end station id\n",
       " | end station name\n",
       " | end station latitude\n",
       " | end station longitude\n",
       " | bikeid\n",
       " | usertype\n",
       " | birth year\n",
       " | gender\n",
       " | part of day\n",
       " | 
\n",
       "  \n",
       "  \n",
       "    \n",
       "      | 201901-citibike-tripdata.csv\n",
       " | 0\n",
       " | 320\n",
       " | 2019-01-01 00:01:47.401\n",
       " | 2019-01-01 00:07:07.5810\n",
       " | 3160.0\n",
       " | Central Park West & W 76 St\n",
       " | 40.778968\n",
       " | -73.973747\n",
       " | 3283.0\n",
       " | W 89 St & Columbus Ave\n",
       " | 40.788221\n",
       " | -73.970416\n",
       " | 15839\n",
       " | Subscriber\n",
       " | 1971\n",
       " | 1\n",
       " | night\n",
       " | 
\n",
       "    \n",
       "      | 1\n",
       " | 316\n",
       " | 2019-01-01 00:04:43.736\n",
       " | 2019-01-01 00:10:00.6080\n",
       " | 519.0\n",
       " | Pershing Square North\n",
       " | 40.751873\n",
       " | -73.977706\n",
       " | 518.0\n",
       " | E 39 St & 2 Ave\n",
       " | 40.747804\n",
       " | -73.973442\n",
       " | 32723\n",
       " | Subscriber\n",
       " | 1964\n",
       " | 1\n",
       " | night\n",
       " | 
\n",
       "    \n",
       "      | 2\n",
       " | 591\n",
       " | 2019-01-01 00:06:03.997\n",
       " | 2019-01-01 00:15:55.4380\n",
       " | 3171.0\n",
       " | Amsterdam Ave & W 82 St\n",
       " | 40.785247\n",
       " | -73.976673\n",
       " | 3154.0\n",
       " | E 77 St & 3 Ave\n",
       " | 40.773142\n",
       " | -73.958562\n",
       " | 27451\n",
       " | Subscriber\n",
       " | 1987\n",
       " | 1\n",
       " | night\n",
       " | 
\n",
       "    \n",
       "      | 3\n",
       " | 2719\n",
       " | 2019-01-01 00:07:03.545\n",
       " | 2019-01-01 00:52:22.6500\n",
       " | 504.0\n",
       " | 1 Ave & E 16 St\n",
       " | 40.732219\n",
       " | -73.981656\n",
       " | 3709.0\n",
       " | W 15 St & 6 Ave\n",
       " | 40.738046\n",
       " | -73.996430\n",
       " | 21579\n",
       " | Subscriber\n",
       " | 1990\n",
       " | 1\n",
       " | night\n",
       " | 
\n",
       "    \n",
       "      | 4\n",
       " | 303\n",
       " | 2019-01-01 00:07:35.945\n",
       " | 2019-01-01 00:12:39.5020\n",
       " | 229.0\n",
       " | Great Jones St\n",
       " | 40.727434\n",
       " | -73.993790\n",
       " | 503.0\n",
       " | E 20 St & Park Ave\n",
       " | 40.738274\n",
       " | -73.987520\n",
       " | 35379\n",
       " | Subscriber\n",
       " | 1979\n",
       " | 1\n",
       " | night\n",
       " | 
\n",
       "  \n",
       "
\n",
       "
\n",
       "        \n",
       "        \n",
       "            
\n",
       "            \n",
       "        
\n",
       "        \n",
       "        \n",
       "            
\n",
       "            \n",
       "        
\n",
       "        \n",
       "        \n",
       "            
\n",
       "            \n",
       "        
\n",
       "        \n",
       "        \n",
       "            
\n",
       "            \n",
       "