{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"mount_file_id":"1U60jRK-qo80PrgTgSZ_7hHXrEUkAvyu4","authorship_tag":"ABX9TyP/AczSPRipxaGYEH8qlepU"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["# **Lab 8 - Homework: Travel Demand Forecasting**"],"metadata":{"id":"mvP1jnWEYD7p"}},{"cell_type":"markdown","source":["**Import Libraries**\n","\n","Import required Python libraries for data handling, analysis, and plotting."],"metadata":{"id":"Q1hhsyXhQO1O"}},{"cell_type":"code","execution_count":54,"metadata":{"id":"p-Vw8hBcQCLT","executionInfo":{"status":"ok","timestamp":1765003178915,"user_tz":-60,"elapsed":6,"user":{"displayName":"Sangeeth Prasanga","userId":"18151170740107952163"}}},"outputs":[],"source":["import pandas as pd\n","import numpy as np\n","import matplotlib.pyplot as plt\n","import seaborn as sns\n"]},{"cell_type":"markdown","source":["**Load the Dataset**\n","\n","Read the Parquet file into a dataframe. Update the path as needed."],"metadata":{"id":"PhiYP2ThQXGu"}},{"cell_type":"code","source":["DATAFILE = \"/content/drive/MyDrive/AFROTRANS/Lab8/yellow_tripdata_2022-10.parquet\"\n","df = pd.read_parquet(DATAFILE)\n","\n","df.head()\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":226},"id":"NhbP7yC_QXXW","executionInfo":{"status":"ok","timestamp":1765003182067,"user_tz":-60,"elapsed":3151,"user":{"displayName":"Sangeeth Prasanga","userId":"18151170740107952163"}},"outputId":"31ebe4e8-345f-4411-ce39-becbf1eabb19"},"execution_count":55,"outputs":[{"output_type":"execute_result","data":{"text/plain":["   VendorID tpep_pickup_datetime tpep_dropoff_datetime  passenger_count  \\\n","0         1  2022-10-01 00:03:41   2022-10-01 00:18:39              1.0   \n","1         2  2022-10-01 00:14:30   2022-10-01 00:19:48              2.0   \n","2         2  2022-10-01 00:27:13   2022-10-01 00:37:41              1.0   \n","3         1  2022-10-01 00:32:53   2022-10-01 00:38:55              0.0   \n","4         1  2022-10-01 00:44:55   2022-10-01 00:50:21              0.0   \n","\n","   trip_distance  RatecodeID store_and_fwd_flag  PULocationID  DOLocationID  \\\n","0           1.70         1.0                  N           249           107   \n","1           0.72         1.0                  N           151           238   \n","2           1.74         1.0                  N           238           166   \n","3           1.30         1.0                  N           142           239   \n","4           1.00         1.0                  N           238           166   \n","\n","   payment_type  fare_amount  extra  mta_tax  tip_amount  tolls_amount  \\\n","0             1          9.5    3.0      0.5        2.65           0.0   \n","1             2          5.5    0.5      0.5        0.00           0.0   \n","2             1          9.0    0.5      0.5        2.06           0.0   \n","3             1          6.5    3.0      0.5        2.05           0.0   \n","4             1          6.0    0.5      0.5        1.80           0.0   \n","\n","   improvement_surcharge  total_amount  congestion_surcharge  airport_fee  \n","0                    0.3         15.95                   2.5          0.0  \n","1                    0.3          9.30                   2.5          0.0  \n","2                    0.3         12.36                   0.0          0.0  \n","3                    0.3         12.35                   2.5          0.0  \n","4                    0.3          9.10                   0.0          0.0  "],"text/html":["\n","  <div id=\"df-0576bded-a898-4458-bf59-75e5eeec934c\" class=\"colab-df-container\">\n","    <div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>VendorID</th>\n","      <th>tpep_pickup_datetime</th>\n","      <th>tpep_dropoff_datetime</th>\n","      <th>passenger_count</th>\n","      <th>trip_distance</th>\n","      <th>RatecodeID</th>\n","      <th>store_and_fwd_flag</th>\n","      <th>PULocationID</th>\n","      <th>DOLocationID</th>\n","      <th>payment_type</th>\n","      <th>fare_amount</th>\n","      <th>extra</th>\n","      <th>mta_tax</th>\n","      <th>tip_amount</th>\n","      <th>tolls_amount</th>\n","      <th>improvement_surcharge</th>\n","      <th>total_amount</th>\n","      <th>congestion_surcharge</th>\n","      <th>airport_fee</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>1</td>\n","      <td>2022-10-01 00:03:41</td>\n","      <td>2022-10-01 00:18:39</td>\n","      <td>1.0</td>\n","      <td>1.70</td>\n","      <td>1.0</td>\n","      <td>N</td>\n","      <td>249</td>\n","      <td>107</td>\n","      <td>1</td>\n","      <td>9.5</td>\n","      <td>3.0</td>\n","      <td>0.5</td>\n","      <td>2.65</td>\n","      <td>0.0</td>\n","      <td>0.3</td>\n","      <td>15.95</td>\n","      <td>2.5</td>\n","      <td>0.0</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>2</td>\n","      <td>2022-10-01 00:14:30</td>\n","      <td>2022-10-01 00:19:48</td>\n","      <td>2.0</td>\n","      <td>0.72</td>\n","      <td>1.0</td>\n","      <td>N</td>\n","      <td>151</td>\n","      <td>238</td>\n","      <td>2</td>\n","      <td>5.5</td>\n","      <td>0.5</td>\n","      <td>0.5</td>\n","      <td>0.00</td>\n","      <td>0.0</td>\n","      <td>0.3</td>\n","      <td>9.30</td>\n","      <td>2.5</td>\n","      <td>0.0</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>2</td>\n","      <td>2022-10-01 00:27:13</td>\n","      <td>2022-10-01 00:37:41</td>\n","      <td>1.0</td>\n","      <td>1.74</td>\n","      <td>1.0</td>\n","      <td>N</td>\n","      <td>238</td>\n","      <td>166</td>\n","      <td>1</td>\n","      <td>9.0</td>\n","      <td>0.5</td>\n","      <td>0.5</td>\n","      <td>2.06</td>\n","      <td>0.0</td>\n","      <td>0.3</td>\n","      <td>12.36</td>\n","      <td>0.0</td>\n","      <td>0.0</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>1</td>\n","      <td>2022-10-01 00:32:53</td>\n","      <td>2022-10-01 00:38:55</td>\n","      <td>0.0</td>\n","      <td>1.30</td>\n","      <td>1.0</td>\n","      <td>N</td>\n","      <td>142</td>\n","      <td>239</td>\n","      <td>1</td>\n","      <td>6.5</td>\n","      <td>3.0</td>\n","      <td>0.5</td>\n","      <td>2.05</td>\n","      <td>0.0</td>\n","      <td>0.3</td>\n","      <td>12.35</td>\n","      <td>2.5</td>\n","      <td>0.0</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>1</td>\n","      <td>2022-10-01 00:44:55</td>\n","      <td>2022-10-01 00:50:21</td>\n","      <td>0.0</td>\n","      <td>1.00</td>\n","      <td>1.0</td>\n","      <td>N</td>\n","      <td>238</td>\n","      <td>166</td>\n","      <td>1</td>\n","      <td>6.0</td>\n","      <td>0.5</td>\n","      <td>0.5</td>\n","      <td>1.80</td>\n","      <td>0.0</td>\n","      <td>0.3</td>\n","      <td>9.10</td>\n","      <td>0.0</td>\n","      <td>0.0</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>\n","    <div class=\"colab-df-buttons\">\n","\n","  <div class=\"colab-df-container\">\n","    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-0576bded-a898-4458-bf59-75e5eeec934c')\"\n","            title=\"Convert this dataframe to an interactive table.\"\n","            style=\"display:none;\">\n","\n","  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n","    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n","  </svg>\n","    </button>\n","\n","  <style>\n","    .colab-df-container {\n","      display:flex;\n","      gap: 12px;\n","    }\n","\n","    .colab-df-convert {\n","      background-color: #E8F0FE;\n","      border: none;\n","      border-radius: 50%;\n","      cursor: pointer;\n","      display: none;\n","      fill: #1967D2;\n","      height: 32px;\n","      padding: 0 0 0 0;\n","      width: 32px;\n","    }\n","\n","    .colab-df-convert:hover {\n","      background-color: #E2EBFA;\n","      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n","      fill: #174EA6;\n","    }\n","\n","    .colab-df-buttons div {\n","      margin-bottom: 4px;\n","    }\n","\n","    [theme=dark] .colab-df-convert {\n","      background-color: #3B4455;\n","      fill: #D2E3FC;\n","    }\n","\n","    [theme=dark] .colab-df-convert:hover {\n","      background-color: #434B5C;\n","      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n","      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n","      fill: #FFFFFF;\n","    }\n","  </style>\n","\n","    <script>\n","      const buttonEl =\n","        document.querySelector('#df-0576bded-a898-4458-bf59-75e5eeec934c button.colab-df-convert');\n","      buttonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n","      async function convertToInteractive(key) {\n","        const element = document.querySelector('#df-0576bded-a898-4458-bf59-75e5eeec934c');\n","        const dataTable =\n","          await google.colab.kernel.invokeFunction('convertToInteractive',\n","                                                    [key], {});\n","        if (!dataTable) return;\n","\n","        const docLinkHtml = 'Like what you see? Visit the ' +\n","          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n","          + ' to learn more about interactive tables.';\n","        element.innerHTML = '';\n","        dataTable['output_type'] = 'display_data';\n","        await google.colab.output.renderOutput(dataTable, element);\n","        const docLink = document.createElement('div');\n","        docLink.innerHTML = docLinkHtml;\n","        element.appendChild(docLink);\n","      }\n","    </script>\n","  </div>\n","\n","\n","    <div id=\"df-99789cf1-2140-41b6-9d08-77d95bbbcbc1\">\n","      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-99789cf1-2140-41b6-9d08-77d95bbbcbc1')\"\n","                title=\"Suggest charts\"\n","                style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n","     width=\"24px\">\n","    <g>\n","        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n","    </g>\n","</svg>\n","      </button>\n","\n","<style>\n","  .colab-df-quickchart {\n","      --bg-color: #E8F0FE;\n","      --fill-color: #1967D2;\n","      --hover-bg-color: #E2EBFA;\n","      --hover-fill-color: #174EA6;\n","      --disabled-fill-color: #AAA;\n","      --disabled-bg-color: #DDD;\n","  }\n","\n","  [theme=dark] .colab-df-quickchart {\n","      --bg-color: #3B4455;\n","      --fill-color: #D2E3FC;\n","      --hover-bg-color: #434B5C;\n","      --hover-fill-color: #FFFFFF;\n","      --disabled-bg-color: #3B4455;\n","      --disabled-fill-color: #666;\n","  }\n","\n","  .colab-df-quickchart {\n","    background-color: var(--bg-color);\n","    border: none;\n","    border-radius: 50%;\n","    cursor: pointer;\n","    display: none;\n","    fill: var(--fill-color);\n","    height: 32px;\n","    padding: 0;\n","    width: 32px;\n","  }\n","\n","  .colab-df-quickchart:hover {\n","    background-color: var(--hover-bg-color);\n","    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n","    fill: var(--button-hover-fill-color);\n","  }\n","\n","  .colab-df-quickchart-complete:disabled,\n","  .colab-df-quickchart-complete:disabled:hover {\n","    background-color: var(--disabled-bg-color);\n","    fill: var(--disabled-fill-color);\n","    box-shadow: none;\n","  }\n","\n","  .colab-df-spinner {\n","    border: 2px solid var(--fill-color);\n","    border-color: transparent;\n","    border-bottom-color: var(--fill-color);\n","    animation:\n","      spin 1s steps(1) infinite;\n","  }\n","\n","  @keyframes spin {\n","    0% {\n","      border-color: transparent;\n","      border-bottom-color: var(--fill-color);\n","      border-left-color: var(--fill-color);\n","    }\n","    20% {\n","      border-color: transparent;\n","      border-left-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","    }\n","    30% {\n","      border-color: transparent;\n","      border-left-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","      border-right-color: var(--fill-color);\n","    }\n","    40% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","    }\n","    60% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","    }\n","    80% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","      border-bottom-color: var(--fill-color);\n","    }\n","    90% {\n","      border-color: transparent;\n","      border-bottom-color: var(--fill-color);\n","    }\n","  }\n","</style>\n","\n","      <script>\n","        async function quickchart(key) {\n","          const quickchartButtonEl =\n","            document.querySelector('#' + key + ' button');\n","          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n","          quickchartButtonEl.classList.add('colab-df-spinner');\n","          try {\n","            const charts = await google.colab.kernel.invokeFunction(\n","                'suggestCharts', [key], {});\n","          } catch (error) {\n","            console.error('Error during call to suggestCharts:', error);\n","          }\n","          quickchartButtonEl.classList.remove('colab-df-spinner');\n","          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n","        }\n","        (() => {\n","          let quickchartButtonEl =\n","            document.querySelector('#df-99789cf1-2140-41b6-9d08-77d95bbbcbc1 button');\n","          quickchartButtonEl.style.display =\n","            google.colab.kernel.accessAllowed ? 'block' : 'none';\n","        })();\n","      </script>\n","    </div>\n","\n","    </div>\n","  </div>\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"df"}},"metadata":{},"execution_count":55}]},{"cell_type":"markdown","source":["**Basic Cleaning**\n","\n","Convert datetime fields and remove unrealistic values."],"metadata":{"id":"Hgln1wHKQtJV"}},{"cell_type":"code","source":["df['tpep_pickup_datetime'] = pd.to_datetime(df['tpep_pickup_datetime'])\n","df['tpep_dropoff_datetime'] = pd.to_datetime(df['tpep_dropoff_datetime'])\n","\n","df = df[df['trip_distance'] > 0]\n","df = df[df['passenger_count'] > 0]\n"],"metadata":{"id":"jQ_6kT5JQtWq","executionInfo":{"status":"ok","timestamp":1765003182541,"user_tz":-60,"elapsed":472,"user":{"displayName":"Sangeeth Prasanga","userId":"18151170740107952163"}}},"execution_count":56,"outputs":[]},{"cell_type":"markdown","source":["**Create Time Features**\n","\n","Extract hour, date, day for demand analysis."],"metadata":{"id":"uHqMUY5aQ1t0"}},{"cell_type":"code","source":["df['date'] = df['tpep_pickup_datetime'].dt.date\n","df['hour'] = df['tpep_pickup_datetime'].dt.hour\n","df['day'] = df['tpep_pickup_datetime'].dt.day_name()\n"],"metadata":{"id":"-6KBsXCSQ12T","executionInfo":{"status":"ok","timestamp":1765003183588,"user_tz":-60,"elapsed":1044,"user":{"displayName":"Sangeeth Prasanga","userId":"18151170740107952163"}}},"execution_count":57,"outputs":[]},{"cell_type":"markdown","source":["**Compute Demand (Daily, Hourly, Zone-Based)**\n","\n","Generate aggregated demand metrics."],"metadata":{"id":"WR65i_z4Q9AM"}},{"cell_type":"code","source":["daily_demand = df.groupby('date').size()\n","hourly_demand = df.groupby('hour').size()\n","zone_demand = df['PULocationID'].value_counts().head(15)\n"],"metadata":{"id":"-tRm6k1xQ9RY","executionInfo":{"status":"ok","timestamp":1765003183877,"user_tz":-60,"elapsed":62,"user":{"displayName":"Sangeeth Prasanga","userId":"18151170740107952163"}}},"execution_count":58,"outputs":[]},{"cell_type":"markdown","source":["**Visualisation: Daily Trips**\n","\n","Plot daily demand trend."],"metadata":{"id":"hOEh78m4REFk"}},{"cell_type":"code","source":["plt.figure(figsize=(12,5))\n","daily_demand.plot()\n","plt.title(\"Daily Taxi Trip Demand\")\n","plt.xlabel(\"Date\")\n","plt.ylabel(\"Number of Trips\")\n","plt.grid()\n","plt.show()\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":487},"id":"ABy62pJSRIcw","executionInfo":{"status":"ok","timestamp":1765003184073,"user_tz":-60,"elapsed":156,"user":{"displayName":"Sangeeth Prasanga","userId":"18151170740107952163"}},"outputId":"0ca7f7c5-e7bb-472f-eb42-9996160794d5"},"execution_count":59,"outputs":[{"output_type":"display_data","data":{"text/plain":["<Figure size 1200x500 with 1 Axes>"],"image/png":"iVBORw0KGgoAAAANSUhEUgAABAcAAAHWCAYAAAALnuBvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWWhJREFUeJzt3XlYVHX///HXsLsBagmSpLS575ZRaZoIppaamZp3Lpm2SLncadptuFUmpanpnd9+pbZomS1mZgi3S1aSC0ouqekdafdtYKVIbjDA+f3hl/k6scjADANzno/r8rqccz5zzvvMW1RefM7nWAzDMAQAAAAAAEzLy90FAAAAAAAA9yIcAAAAAADA5AgHAAAAAAAwOcIBAAAAAABMjnAAAAAAAACTIxwAAAAAAMDkCAcAAAAAADA5wgEAAAAAAEyOcAAAAAAAAJMjHAAAoBJZvny5LBaLfv75Z9u2Ll26qEuXLm6rqTymT58ui8Xi0nNYLBZNnz7dpecwo6r85w4A4DjCAQAAHFTwDXzBr4CAAIWFhSkmJkYLFy7Un3/+6e4SizR8+HC7uov7NXz48AqracuWLaWqydUBw+X++jnVrFlT1113ne6//359/PHHys/Pr7BaAACoKD7uLgAAgKpq5syZioiIkNVqVXp6urZs2aJx48Zp3rx5Wrt2rVq1auXwMR966CENGjRI/v7+Tq/30UcfVVRUlO11Wlqa4uLiNHr0aHXq1Mm2/frrr3faOadOnarJkycXu79p06Z699137bZNmTJFNWvW1D/+8Y9SnePChQvy8XHuf2n8/f315ptv2o5/7Ngxff7557r//vvVpUsXffbZZwoMDHTqOQEAcCeLYRiGu4sAAKAqWb58uUaMGKGdO3eqQ4cOdvs2bdqk3r17q169ejp48KCqVatW7vMVTO3esmVLuY91uV27dunmm2/WsmXLKnS2wJW0aNFCV111VYnXm5+fr5ycHAUEBDj9/MOHD9dHH32ks2fPFtr30ksvacqUKXrggQe0atUqp5+7MnHVnzsAQOXEbQUAADjRXXfdpeeee07Hjh3Te++9Z9u+d+9eDR8+XNddd50CAgIUGhqqhx9+WH/88Yfd+4tac+ByZ8+eVY0aNTR27NhC+/7zn//I29tbs2fPLnP9panzwoULatKkiZo0aaILFy7Ytp86dUr169fXbbfdpry8PEnOW3PAYrEoNjZWK1asUPPmzeXv76+EhATbvsvXHCg456FDh/TAAw8oMDBQdevW1dixY3Xx4sVy1TF58mRFR0dr9erV+vHHH+32ffnll+rUqZNq1KihWrVqqVevXjpw4IDdmOHDh6tmzZo6fvy4evfurZo1a+qaa67R4sWLJUn79u3TXXfdpRo1aqhhw4ZauXKl3ftPnTqlp59+Wi1btlTNmjUVGBiou+++W99//73duILbNT788EO98MILatCggQICAtStWzcdPXq00HW98cYbuv7661WtWjXdcsst+vrrr8v1OQEAqh7CAQAAnOyhhx6SJCUmJtq2JSUl6aefftKIESP02muvadCgQfrggw/Us2dPOTKJr2bNmurXr59WrVpl+wa8wPvvvy/DMDRkyJAy116aOqtVq6a3335bR48etZv6P2bMGJ05c0bLly+Xt7d3mWsozqZNmzR+/HgNHDhQCxYsUKNGjUoc/8ADD+jixYuaPXu2evbsqYULF2r06NHlruOhhx6SYRhKSkqybXv33XfVq1cv1axZU3PmzNFzzz2nH374QXfccUehoCcvL0933323wsPDFR8fr0aNGik2NlbLly9Xjx491KFDB82ZM0e1atXS0KFDlZaWZnvvTz/9pDVr1qh3796aN2+eJk6cqH379unOO+/UiRMnCtX60ksv6dNPP9XTTz+tKVOm6Lvvviv05+Ott97So48+qtDQUMXHx+v222/Xvffeq19++aXcnxUAoAoxAACAQ5YtW2ZIMnbu3FnsmKCgIKNt27a21+fPny805v333zckGVu3bi107LS0NNu2O++807jzzjttrzds2GBIMr788ku747Vq1cpu3JXs3LnTkGQsW7bM4ToNwzCmTJlieHl5GVu3bjVWr15tSDLmz59vN2batGmGo//daN68eaHrkGR4eXkZBw4cKDRekjFt2rRC57z33nvtxj3xxBOGJOP7778v8fzDhg0zatSoUez+PXv2GJKM8ePHG4ZhGH/++acRHBxsjBo1ym5cenq6ERQUZLd92LBhhiTjxRdftG07ffq0Ua1aNcNisRgffPCBbfuhQ4cKXdvFixeNvLw8u/OkpaUZ/v7+xsyZM23bNm/ebEgymjZtamRnZ9u2L1iwwJBk7Nu3zzAMw8jJyTHq1atntGnTxm7cG2+8YUhy6M8TAKBqY+YAAAAuULNmTbunFly+9sDFixf1+++/69Zbb5Uk7d6926FjR0VFKSwsTCtWrLBt279/v/bu3au//e1v5arbkTqnT5+u5s2ba9iwYXriiSd055136qmnnirX+Uty5513qlmzZqUeP2bMGLvXTz75pCRp/fr15aqjZs2akmTrb1JSkjIzMzV48GD9/vvvtl/e3t7q2LGjNm/eXOgYjzzyiO33wcHBaty4sWrUqKEHHnjAtr1x48YKDg7WTz/9ZNvm7+8vL69L/33Ly8vTH3/8oZo1a6px48ZF/jkaMWKE/Pz8bK8LFp4sOOauXbt08uRJPfbYY3bjhg8frqCgIMc/HABAlcXTCgAAcIGzZ8+qXr16ttenTp3SjBkz9MEHH+jkyZN2Y8+cOePQsb28vDRkyBC9/vrrOn/+vKpXr64VK1YoICBAAwYMKFfdjtTp5+enpUuX6uabb1ZAQICWLVvm0kcORkREODT+xhtvtHt9/fXXy8vLq9j1HEqrYKHCWrVqSZKOHDki6dJ6E0X561MNAgICdPXVV9ttCwoKUoMGDQp9fkFBQTp9+rTtdX5+vhYsWKB//vOfSktLs7u1pG7duoXOfe2119q9rl27tiTZjnns2DFJhT8rX19fXXfddUVeDwDAMxEOAADgZP/5z3905swZ3XDDDbZtDzzwgLZt26aJEyeqTZs2qlmzpvLz89WjRw/l5+c7fI6hQ4fq5Zdf1po1azR48GCtXLlSvXv3LvdPex2tc8OGDZIuzTI4cuSIw9/AO6K8T35wVnCxf/9+SbL1t+BzeffddxUaGlpo/F8fs1jcegzFbTcuW5PixRdf1HPPPaeHH35Ys2bNUp06deTl5aVx48YV2Z/SHBMAAIlwAAAAp3v33XclSTExMZIu/ZR248aNmjFjhuLi4mzjCn7iXBYtWrRQ27ZttWLFCjVo0EDHjx/Xa6+9Vq66Ha1z7969mjlzpkaMGKHU1FQ98sgj2rdvX6WZjv7XsOLo0aPKz8+/4kKGV/Luu+/KYrGoe/fuki7NSJCkevXqKSoqqlzHvpKPPvpIXbt21VtvvWW3PTMzU1dddZXDx2vYsKGkS5/V5TMfrFar0tLS1Lp16/IVDACoMlhzAAAAJ9q0aZNmzZqliIgI26rwBT+9/etPa+fPn1+ucz300ENKTEzU/PnzVbduXd19993lOp4jdVqtVg0fPlxhYWFasGCBli9froyMDI0fP75cNThTweMBCxSEJ+X5nF566SUlJiZq4MCBtqn4MTExCgwM1Isvviir1VroPb/99luZz/dX3t7ehfqzevVq/fe//y3T8Tp06KCrr75aS5YsUU5Ojm378uXLlZmZWZ5SAQBVDDMHAAAooy+//FKHDh1Sbm6uMjIytGnTJiUlJalhw4Zau3atAgICJF2657xz586Kj4+X1WrVNddco8TERLtH1JXFgw8+qEmTJunTTz/V448/Ll9f33Idz5E6n3/+eaWmpmrjxo2qVauWWrVqpbi4OE2dOlX333+/evbsWa5anCEtLU333nuvevTooeTkZL333nt68MEHS/XT8NzcXL333nuSLt0ycezYMa1du1Z79+5V165d9cYbb9jGBgYG6vXXX9dDDz2kdu3aadCgQbr66qt1/PhxffHFF7r99tu1aNEip1xT7969bbM1brvtNu3bt08rVqwo8/oAvr6+ev755/Xoo4/qrrvu0sCBA5WWlqZly5ax5gAAmAzhAAAAZVQw9d7Pz0916tRRy5YtNX/+fI0YMcK2WF2BlStX6sknn9TixYtlGIaio6P15ZdfKiwsrMznDwkJUXR0tNavX6+HHnqoXNfiSJ27d+/Wiy++qNjYWHXt2tW2ffLkyfrss880atQoHThwQMHBwU6pqaxWrVqluLg4TZ48WT4+PoqNjdXLL79cqvdmZ2fbPtPq1aurXr16at++veLi4tSvXz/bEwMKPPjggwoLC9NLL72kl19+WdnZ2brmmmvUqVMnjRgxwmnX9Oyzz+rcuXNauXKlVq1apXbt2umLL77Q5MmTy3zM0aNHKy8vTy+//LImTpyoli1bau3atXruueecVjcAoPKzGKxIAwBAldWvXz/t27dPR48edXcplcb06dM1Y8YM/fbbb2W6Dx8AADNizQEAAKqoX3/9VV988YXTZg0AAADz4rYCAACqmLS0NH377bd688035evrq0cffdTdJQEAgCqOmQMAAFQxX331lR566CGlpaXp7bffVmhoqLtLAgAAVRxrDgAAAAAAYHLMHAAAAAAAwOQIBwAAAAAAMDkWJKxA+fn5OnHihGrVqiWLxeLucgAAAAAAHs4wDP35558KCwuTl1fx8wMIByrQiRMnFB4e7u4yAAAAAAAm88svv6hBgwbF7iccqEC1atWSdKkpgYGBbq4G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uHChlixZou3bt6tGjRqKiYnRxYsXbWOGDBmiAwcOKCkpSevWrdPWrVs1evRo2/6srCxFR0erYcOGSklJ0csvv6zp06frjTfesI3Ztm2bBg8erJEjR2rPnj3q27ev+vbtq/3791fMhwEAAAAAqBQ8cRKBw+HAhQsXdP78edvrY8eOaf78+UpMTHRqYdKlb8j79OmjXr16qVGjRrr//vsVHR2tHTt2SLo0a2D+/PmaOnWq+vTpo1atWumdd97RiRMntGbNGknSwYMHlZCQoDfffFMdO3bUHXfcoddee00ffPCBTpw4IUlasWKFcnJytHTpUjVv3lyDBg3SU089pXnz5tlqWbBggXr06KGJEyeqadOmmjVrltq1a6dFixY5/boBAAAAAKhIPo6+oU+fPrrvvvv02GOPKTMzUx07dpSvr69+//13zZs3T48//rjTirvtttv0xhtv6Mcff9RNN92k77//Xt98843tm/a0tDSlp6crKirK9p6goCB17NhRycnJGjRokJKTkxUcHKwOHTrYxkRFRcnLy0vbt29Xv379lJycrM6dO8vPz882JiYmRnPmzNHp06dVu3ZtJScna8KECXb1xcTE2EKIomRnZys7O9v2OisrS5JktVpltVrL9dnAuQr6QV88H702B/psDvTZHOizOdBn86iKvc7Pz5d06bb3groLtuXn5Vf6ayltfQ6HA7t379arr74qSfroo48UEhKiPXv26OOPP1ZcXJxTw4HJkycrKytLTZo0kbe3t/Ly8vTCCy9oyJAhkqT09HRJUkhIiN37QkJCbPvS09NVr149u/0+Pj6qU6eO3ZiIiIhCxyjYV7t2baWnp5d4nqLMnj1bM2bMKLQ9MTFR1atXv+L1o+IlJSW5uwRUEHptDvTZHOizOdBnc6DP5lGVen3ihJckLx08+IPWZx6QJKX9fGnbv//9b61ff6TE97vb5TP/S+JwOHD+/HnVqlVL0qVvcu+77z55eXnp1ltv1bFjxxw9XIk+/PBDrVixQitXrlTz5s2VmpqqcePGKSwsTMOGDXPquVxhypQpdrMNsrKyFB4erujoaAUGBrqxMvyV1WpVUlKSunfvLl9fX3eXAxei1+ZAn82BPpsDfTYH+mweVbHXSR/ulX5PV9OmzdTztoaSpNQvD2vLr8d0/fXXq2f0jW6usGQFM9ivxOFw4IYbbtCaNWvUr18/bdiwQePHj5cknTx50unf8E6cOFGTJ0/WoEGDJEktW7bUsWPHNHv2bA0bNkyhoaGSpIyMDNWvX9/2voyMDLVp00aSFBoaqpMnT9odNzc3V6dOnbK9PzQ0VBkZGXZjCl5faUzB/qL4+/vL39+/0HZfX98q84VgNvTGPOi1OdBnc6DP5kCfzYE+m0dV6rWX16Wl+ry9vW01F2yzeHlV+usobX0OL0gYFxenp59+Wo0aNdItt9yiyMhISZdmEbRt29bRw5Xo/Pnztg+9gLe3t+3+joiICIWGhmrjxo22/VlZWdq+fbutrsjISGVmZiolJcU2ZtOmTcrPz1fHjh1tY7Zu3Wp3L0ZSUpIaN26s2rVr28Zcfp6CMQXnAQAAAAB4Lksxv/cUDocD999/v44fP65du3Zpw4YNtu3dunWzrUXgLPfcc49eeOEFffHFF/r555/16aefat68eerXr58kyWKxaNy4cXr++ee1du1a7du3T0OHDlVYWJj69u0rSWratKl69OihUaNGaceOHfr2228VGxurQYMGKSwsTJL04IMPys/PTyNHjtSBAwe0atUqLViwwO6WgLFjxyohIUFz587VoUOHNH36dO3atUuxsbFOvWYAAAAAACqaw7cVSJem2IeGhuqXX36RJIWHh+uWW25xamGS9Nprr+m5557TE088oZMnTyosLEyPPvqo4uLibGMmTZqkc+fOafTo0crMzNQdd9yhhIQEBQQE2MasWLFCsbGx6tatm7y8vNS/f38tXLjQtj8oKEiJiYkaM2aM2rdvr6uuukpxcXEaPXq0bcxtt92mlStXaurUqXr22Wd14403as2aNWrRooXTrxsAAAAAgIrkcDiQm5urGTNmaOHChTp79qwkqWbNmnryySc1bdo0p95vUatWLc2fP1/z588vdozFYtHMmTM1c+bMYsfUqVNHK1euLPFcrVq10tdff13imAEDBmjAgAEljgEAAAAAoKpxOBx48skn9cknnyg+Pt52v31ycrKmT5+uP/74Q6+//rrTiwQAAAAAAK7jcDiwcuVKffDBB7r77rtt21q1aqXw8HANHjyYcAAAAAAAYAqGDHeX4DQOL0jo7++vRo0aFdoeEREhPz8/Z9QEAAAAAEClUNS3/xYPfFyBw+FAbGysZs2apezsbNu27OxsvfDCC6zcDwAAAADwSJ4YCFzO4dsK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eHi4qlWrpqZNm2rBggWFzrVlyxa1a9dO/v7+uuGGG7R8+XJXXx7+V0X1+ZNPPlH37t119dVXKzAwUJGRkdqwYUOFXKNZEQ7AY3z11VcaM2aMvvvuOyUlJclqtSo6Olrnzp2zjRk/frw+//xzrV69Wl999ZVOnDih++67r9CxHn74YQ0cOLDI82RlZSk6OloNGzZUSkqKXn75ZU2fPl1vvPGGy64N/6ei+rxt2za1atVKH3/8sfbu3asRI0Zo6NChWrduncuuDf+novpcwGq1avDgwerUqZPTrwXFq8g+jx07Vm+++aZeeeUVHTp0SGvXrtUtt9zikutCYRXV67S0NPXp00d33XWXUlNTtWHDBv3+++9FHgfO54w+p6SkqF69enrvvfd04MAB/eMf/9CUKVO0aNEi25i0tDT16tVLXbt2VWpqqsaNG6dHHnmEbxwrSEX1eevWrerevbvWr1+vlJQUde3aVffcc4/27NlToddrKgbgoU6ePGlIMr766ivDMAwjMzPT8PX1NVavXm0bc/DgQUOSkZycXOj906ZNM1q3bl1o+z//+U+jdu3aRnZ2tm3bM888YzRu3Nj5F4ErclWfi9KzZ09jxIgRTqkbjnF1nydNmmT87W9/M5YtW2YEBQU5u3yUkqv6/MMPPxg+Pj7GoUOHXFY7HOOqXq9evdrw8fEx8vLybNvWrl1rWCwWIycnx/kXghKVt88FnnjiCaNr166215MmTTKaN29uN2bgwIFGTEyMk68ApeGqPhelWbNmxowZM5xTOAph5gA81pkzZyRJderUkXQpobRarYqKirKNadKkia699lolJyeX+rjJycnq3Lmz/Pz8bNtiYmJ0+PBhnT592knVo7Rc1efizlVwHlQsV/Z506ZNWr16tRYvXuy8glEmrurz559/ruuuu07r1q1TRESEGjVqpEceeUSnTp1y7gWg1FzV6/bt28vLy0vLli1TXl6ezpw5o3fffVdRUVHy9fV17kXgipzV57/++5ucnGx3DOnS/8XK++88ysZVff6r/Px8/fnnn/xfzIUIB+CR8vPzNW7cON1+++1q0aKFJCk9PV1+fn6F7icOCQlRenp6qY+dnp6ukJCQQsco2IeK48o+/9WHH36onTt3asSIEeUpGWXgyj7/8ccfGj58uJYvX67AwEBnlg0HubLPP/30k44dO6bVq1frnXfe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\n"},"metadata":{}}]},{"cell_type":"markdown","source":["**Visualisation: Top Zones**\n","\n","Bar chart of most active pickup zones."],"metadata":{"id":"lJwgjxOhRKY4"}},{"cell_type":"code","source":["plt.figure(figsize=(10,5))\n","zone_demand.plot(kind='bar')\n","plt.title(\"Top 15 Pickup Zones\")\n","plt.ylabel(\"Trips\")\n","plt.xlabel(\"Zone ID\")\n","plt.show()\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":500},"id":"cftUrDboRPww","executionInfo":{"status":"ok","timestamp":1765003184187,"user_tz":-60,"elapsed":76,"user":{"displayName":"Sangeeth Prasanga","userId":"18151170740107952163"}},"outputId":"35076c1a-c8ac-4d25-8a38-92d763db7322"},"execution_count":60,"outputs":[{"output_type":"display_data","data":{"text/plain":["<Figure size 1000x500 with 1 Axes>"],"image/png":"iVBORw0KGgoAAAANSUhEUgAAA2wAAAHjCAYAAABfFZx1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWLZJREFUeJzt3XlclWX+//H3AQQEAReUJVHJzKXcS8Jck+FoTEmLpS0uo1kGllpamrnPV9PULE2mmVxqcjRnykpNxT1H0sQtHXXclxSkUnFJULh+f/TzHk+igqnn5vh6Ph73Y+a+r+vc9+c659wn3t6bwxhjBAAAAACwHS93FwAAAAAAKBiBDQAAAABsisAGAAAAADZFYAMAAAAAmyKwAQAAAIBNEdgAAAAAwKYIbAAAAABgUwQ2AAAAALApAhsAAAAA2BSBDQCA38HhcGjIkCFFes20adPkcDi0bt26G1MUAMBjENgAAFflcDgKNS1fvvyG1zJ58mS1a9dOlSpVksPhUOfOnQvsdyEUFTRlZGRcdTstWrRweU3ZsmV17733asqUKcrPz7/Oo3KfK71PF0/79u1zd6kAcEvycXcBAAD7+/jjj13mP/roI6Wmpl6yvGbNmje8lrfeeksnT55Uo0aNdOTIkav2HzZsmKKjo12WlS5dulDbqlixokaOHClJysrK0kcffaSuXbvqv//9r0aNGiVJ+uWXX+TjU3z/c9qsWbNLPscLfvjhB/Xv319VqlRRhQoVbnJlAACJwAYAKIRnnnnGZf7bb79VamrqJctvhhUrVlhH10qVKnXV/m3atNE999xzTdsKCQlxGePzzz+v6tWra+LEiRo+fLhKlCghf3//a1q3Xdx+++26/fbbL1mel5enBx54QD4+PvrHP/6hgIAAN1QHAOCUSADAdXH69Gm98sorioqKkp+fn6pXr663335bxhiXfg6HQ8nJyfrkk09UvXp1+fv7q2HDhlq5cmWhtlO5cmU5HI4i1Xby5Enl5eUV6TUFCQgI0H333afTp08rKytLUsHXsP3www/q2rWrIiMj5efnp+joaPXo0UO5ubmXXfexY8fUqFEjVaxYUTt27NDy5csLPM103759cjgcmjZtmrWsc+fOKlWqlPbs2SOn06nAwEBFRkZq2LBhl7z/hTV06FCtXLlSI0aMUExMjEvbhg0b1KZNGwUHB6tUqVJq1aqVvv32W5c+F061/Pe//60+ffqofPnyCgwM1COPPGK9dxf7+uuv1bRpUwUGBiooKEgJCQnaunWrS5+MjAx16dJFFStWlJ+fnyIiItS2bVtO1wTg0TjCBgD43Ywxevjhh7Vs2TJ17dpV9erV08KFC9W3b1/98MMPGj9+vEv/FStWaNasWXrppZfk5+en999/X61bt9batWt19913X9faWrZsqVOnTsnX11dOp1Njx45VtWrVrnl9e/bskbe392VPqzx8+LAaNWqk48ePq3v37qpRo4Z++OEH/fOf/9SZM2fk6+t7yWt+/PFH/eEPf9DPP/+sFStWqGrVqoU63fNieXl5at26te677z6NHj1aCxYs0ODBg3X+/HkNGzasSOtaunSp/vznP8vpdKpv374ubVu3blXTpk0VHBysfv36qUSJEvrLX/6iFi1aaMWKFZeEu549e6pMmTIaPHiw9u3bp3feeUfJycmaNWuW1efjjz9Wp06d5HQ69dZbb+nMmTOaPHmymjRpog0bNqhKlSqSpMcee0xbt25Vz549VaVKFR09elSpqak6cOCA1QcAPI4BAKCIkpKSzMX/CZkzZ46RZEaMGOHS7/HHHzcOh8Ps2rXLWibJSDLr1q2zlu3fv9/4+/ubRx55pEh1BAYGmk6dOhXYNmvWLNO5c2czffp08/nnn5uBAweagIAAExoaag4cOHDVdTdv3tzUqFHDZGVlmaysLLNt2zbz0ksvGUnmoYcechnP4MGDrfmOHTsaLy8v8913312yzvz8fGOMMVOnTjWSzHfffWeOHDli7rrrLnP77bebffv2WX2XLVtmJJlly5a5rGPv3r1Gkpk6daq1rFOnTkaS6dmzp8u2EhISjK+vr8nKyrrqeC/IzMw0ERERJjw83GRmZl7SnpiYaHx9fc3u3butZYcPHzZBQUGmWbNm1rILY4yLi7PGbYwxvXv3Nt7e3ub48ePGGGNOnjxpSpcubZ577jmX7WRkZJiQkBBr+bFjx4wkM2bMmEKPBQA8AadEAgB+t/nz58vb21svvfSSy/JXXnlFxhh9/fXXLstjY2PVsGFDa75SpUpq27atFi5ceF1OXZSkJ554QlOnTlXHjh2VmJio4cOHa+HChfrpp5/05z//uVDr2L59u8qXL6/y5curZs2aeu+995SQkKApU6YU2D8/P19z5szRQw89VOB1c789lfPQoUNq3ry5zp07p5UrV6py5cpFH+hFkpOTXbaVnJys3NxcLV68uFCvN8aoY8eOyszM1Mcff3zJjUby8vK0aNEiJSYmulz3FhERoaeeekqrVq1Sdna2y2u6d+/uMu6mTZsqLy9P+/fvlySlpqbq+PHj6tChg3788Udr8vb2VkxMjJYtWyZJKlmypHx9fbV8+XIdO3asaG8MABRjnBIJAPjd9u/fr8jISAUFBbksv3DXyAt/nF9Q0CmJd955p86cOaOsrCyFh4ffkDqbNGmimJiYQgeYKlWq6K9//ascDof8/f1VrVq1K94tMSsrS9nZ2YU+rfPZZ5+Vj4+Ptm3b9rvH7OXldcnNQ+68805JKvQ1Xm+99ZYWLlyo/v37Ky4u7pL2rKwsnTlzRtWrV7+krWbNmsrPz9fBgwd11113WcsrVark0q9MmTKSZIWunTt3SpIeeOCBAmsKDg6WJPn5+emtt97SK6+8orCwMN1333364x//qI4dO96w7wsA2AGBDQBwS4mKitKOHTsK1TcwMLDA4HK9PProo/roo480YcIE6/EBF1zuxirX6wjkb6WlpenNN99U48aNi3zN25V4e3sXuNz8/5uhXHim3ccff1xg8Lr4kQm9evXSQw89pDlz5mjhwoV68803NXLkSC1dulT169e/bjUDgJ0Q2AAAv1vlypW1ePFinTx50uUo2/bt2632i104qnKx//73vwoICFD58uVvaK179uy5YdsoX768goODtWXLlkL179mzp+644w4NGjRIISEhev311622C0eijh8/7vKa3x6tvCA/P1979uyxjqpJv76nkq56Q45jx46pffv2KlWqlGbMmHHZ58qVL19eAQEBBQbe7du3y8vLS1FRUVfc1m9VrVpVklShQoVCheOqVavqlVde0SuvvKKdO3eqXr16Gjt2rP7+978XabsAUFxwDRsA4Hd78MEHlZeXp4kTJ7osHz9+vBwOh9q0aeOyPC0tTevXr7fmDx48qC+++ELx8fGXPSJTVAXdOn7+/PlKT09X69atr8s2fsvLy0uJiYn66quvtG7dukvaTQG32H/zzTf16quvqn///po8ebK1vHLlyvL29r7kcQfvv//+Zbd/8ftvjNHEiRNVokQJtWrV6op1/+lPf9KBAwf04YcfXvE6Om9vb8XHx+uLL75wOc0yMzNTM2bMUJMm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nZ3tMgEAAABAYdk6sMXExGjatGlasGCBJk+erL1796pp06Y6efKkMjIy5Ovrq9KlS7u8JiwsTBkZGZKkjIwMl7B2of1C25X6ZGdn65dfftGPP/6ovLy8AvtcWMfljBw5UiEhIdYUFRVV5PcAAAAAwK3Lx90FXEmbNm2s/1+nTh3FxMSocuXK+vTTT1WyZEk3VlY4/fv3V58+faz57OxsQhsAAACAQrP1EbbfKl26tO68807t2rVL4eHhys3N1fHjx136ZGZmKjw8XJIUHh5+yV0jL8xfrU9wcLBKliyp0NBQeXt7F9jnwjoux8/PT8HBwS4TAAAAABRWsQpsp06d0u7duxUREaGGDRuqRIkSWrJkidW+Y8cOHThwQLGxsZKk2NhYff/99y53c0xNTVVwcLBq1apl9bl4HRf6XFiHr6+vGjZs6NInPz9fS5YssfoAAAAAwI1g68D26quvasWKFdq3b59Wr16tRx55RN7e3urQoYNCQkLUtWtX9enTR8uWLVN6erq6dOmi2NhY3XfffZKk+Ph41apVS88++6w2bdqkhQsXauDAgUpKSpKfn58k6YUXXtCePXvUr18/bd++Xe+//74+/fRT9e7d26qjT58++utf/6rp06dr27Zt6tGjh06fPq0uXbq45X0BAAAAcGuw9TVshw4dUocOHfTTTz+pfPnyatKkib799luVL19ekjR+/Hh5eXnpscceU05OjpxOp95//33r9d7e3po7d6569Oih2NhYBQYGqlOnTho2bJjVJzo6WvPmzVPv3r01YcIEVaxYUX/729/kdDqtPk8++aSysrI0aNAgZWRkqF69elqwYMElNyIBAAAAgOvJ1oFt5syZV2z39/fXpEmTNGnSpMv2qVy5subPn3/F9bRo0UIbNmy4Yp/k5GQlJydfsQ8AAAAAXE+2PiUSAAAAAG5lBDYAAAAAsCkCGwAAAADYFIENAAAAAGyKwAYAAAAANkVgAwAAAACbIrABAAAAgE0R2AAAAADApghsAAAAAGBTBDYAAAAAsCkCGwAAAADYFIENAAAAAGyKwAYAAAAANkVgAwAAAACbIrABAAAAgE0R2AAAAADApghsAAAAAGBTBDYAAAAAsCkCGwAAAADYFIENAAAAAGyKwAYAAAAANkVgAwAAAACbIrABAAAAgE0R2AAAAADApghsAAAAAGBTBDYAAAAA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5XA41LdvX917770FPvS8uCluvwPSrxfoZ2RkuPyLenFVs2ZNTZo0SQ888IAkad68eXrggQesELdmzRo9/vjjOnjwoDvLvGaHDh1Senq64uLiFBgY6O5yrqvitu940m/01RS3zyY6Olrr1q2z9SM8CGwe7syZM/L29pafn5+7S4EH2L17twYOHKh58+bp1KlTkn49zePee+9V3759lZiY6N4Cf6f09HStWrVKHTt2LJanc3jK53P69Gn17t1baWlpaty4sd577z29++67euONN3Tu3Dk1b95cs2bN8ojAAPe6lf7RE+7nKb/RuPkIbB7u4MGDGjx4sKZMmeLuUgrll19+UXp6usqWLXvJEY6zZ8/q008/VceOHd1UXdF52nguMMbo6NGjys/PV2hoqEqUKOHukq674rbvXMxTP5+zZ8/q3LlzLqfeFAee+jtwOcV53/kt/tHTvTx13/GE32hP/Wxsy113O8HNsXHjRuPl5eXuMgplx44dpnLlysbhcBgvLy/TrFkzc/jwYas9IyOj2IzFGM8bz9UcOHDAdOnSxd1lXDfFad8pDE/6fIrTWG613wFjPGvfKU7fNU9zq+07xem7dqt9NnbAEbZi7ssvv7xi+549e/TKK68Ui4uOH3nkEZ07d07Tpk3T8ePH1atXL/3nP//R8uXLValSJWVmZioyMrJYjEXyvPFczaZNm9SgQYNiMx5P2ncKo7h9PldSnMbiib8Dt9K+U5y+a57GE/edKylO37Vb7bOxAx93F4DfJzExUQ6HQ1fK3cXllr6rV6/W4sWLFRoaqtDQUH311Vd68cUX1bRpUy1btqzYXTDtaeMpzB9pxYkn7TuSZ30+njQWT/sdkDxr3/Gk75qn8bR9x5O+a5722RQLbj2+h98tMjLSzJkz57LtGzZsKDaHpYOCgi55iLExxiQlJZmKFSualStXFpuxGON547lw6oPD4bjsVJzG40n7jjGe9fl40lg87XfAGM/adzzpu+ZpPG3f8aTvmqd9NsUBz2Er5ho2bKj09PTLtl/tX0HtpEaNGlq3bt0lyydOnKi2bdvq4YcfdkNV187TxhMREaHPPvtM+fn5BU7r1693d4lF4kn7juRZn48njcXTfgckz9p3POm75mk8bd/xpO+ap302xQGBrZjr27evGjdufNn2O+64Q8uWLbuJFV27Rx55xHqo5G9NnDhRHTp0KDZ/BEieNx5P+iNN8qx9R/Ksz8eTxuJpvwOSZ+07nvRd8zSetu940nfN0z6b4oCbjgAolG+++UanT59W69atC2w/ffq01q1bp+bNm9/kyiB51ufjSWOBvfFdw83Cdw2/B4ENAAAAAGyKUyIBAAAAwKYIbAAAAABgUwQ2AAAAALApAhsAAAAA2BSBDQAAScuXL5fD4bjs1LJlS3eXKIfDoTlz5rjMX5gCAwNVrVo1de7c+Yq3DwcAFC8ENgAAJDVu3FhHjhy5ZPrLX/4ih8OhF1980d0lFmjq1Kk6cuSItm7dqkmTJunUqVOKiYnRRx995O7SAADXAYENAABJvr6+Cg8Pd5mOHTumV199VQMGDFC7du2svitWrFCjRo3k5+eniIgIvf766zp//rzV3qJFC7300kvq16+fypYtq/DwcA0ZMsRle8ePH1e3bt1Uvnx5BQcH64EHHtCmTZuKXHfp0qUVHh6uKlWqKD4+Xv/85z/19NNPKzk5WceOHbvm9wMAYA8ENgAACnD8+HG1bdtWLVq00PDhw63lP/zwgx588EHde++92rRpkyZPnqwPP/xQI0aMcHn99OnTFRgYqDVr1mj06NEaNmyYUlNTrfZ27drp6NGj+vrrr5Wenq4GDRqoVatW+vnnn3937b1799bJkyddtgcAKJ4IbAAA/EZ+fr6eeuop+fj46JNPPpHD4bDa3n//fUVFRWnixImqUaOGEhMTNXToUI0dO1b5+flWvzp16mjw4MGqVq2aOnbsqHvuuUdLliyRJK1atUpr167V7Nmzdc8996hatWp6++23Vbp0af3zn//83fXXqFFDkrRv377fvS4AgHv5uLsAAADsZsCAAUpLS9PatWsVFBTk0rZt2zbFxsa6hLj7779fp06d0qFDh1SpUiVJvwa2i0VEROjo0aOSpE2bNunUqVMqV66cS59ffvlFu3fv/t31G2MkyaVGAEDxRGADAOAiM2fO1Ntvv6158+apWrVq17yeEiVKuMw7HA7rCNypU6cUERGh5cuXX/K60qVLX/M2L9i2bZskKTo6+nevCwDgXgQ2AAD+v40bN6pr164aNWqUnE5ngX1q1qypf/3rXzLGWEew/v3vfysoKEgVK1Ys1HYaNGigjIwM+fj4qEqVKterfMs777yj4OBgxcXFXfd1AwBuLq5hAwBA0o8//qjExES1aNFCzzzzjDIyMlymrKwsSdKLL76ogwcPqmfPntq+fbu++OILDR48WH369JGXV+H+sxoXF6fY2FglJiZq0aJF2rdvn1avXq033nhD69atK1Ldx48fV0ZGhvbv36/U1FQ9/vjjmjFjhiZPnnxdjtYBANyLI2wAAEiaN2+e9u/fr/379ysiIuKS9sqVK2vfvn267bbbNH/+fPXt21d169ZV2bJl1bVrVw0cOLDQ23I4HJo/f77eeOMNdenSRVlZWQoPD1ezZs0UFhZWpLq7dOkiSfL399dtt92mJk2aaO3atWrQoEGR1gMAsCeHuXBlMgAAAADAVjglEgAAAABsisAGAAAAADZFYAMAAAAAmyKwAQAAAIBNEdgAAAAAwKYIbAAAAABgUwQ2AAAAALApAhsAAAAA2BSBDQAAAABsisAGAAAAADZFYAMAAAAAmyKwAQAAAIBN/T9eQeD1myrw8gAAAABJRU5ErkJggg==\n"},"metadata":{}}]},{"cell_type":"markdown","source":["**Visualisation: Hourly Heatmap**\n","\n","Hourly average demand pattern."],"metadata":{"id":"G_1ocDtyRSYs"}},{"cell_type":"code","source":["hour_day = df.groupby(['day','hour']).size().unstack()\n","\n","plt.figure(figsize=(12,6))\n","sns.heatmap(hour_day, cmap=\"viridis\")\n","plt.title(\"Hourly Trip Heatmap\")\n","plt.show()\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":564},"id":"JB6Mvm9hRW0u","executionInfo":{"status":"ok","timestamp":1765003184652,"user_tz":-60,"elapsed":449,"user":{"displayName":"Sangeeth Prasanga","userId":"18151170740107952163"}},"outputId":"89b14a39-0555-4880-ce53-652a10a89462"},"execution_count":61,"outputs":[{"output_type":"display_data","data":{"text/plain":["<Figure size 1200x600 with 2 Axes>"],"image/png":"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SPv27VNKSormzZt31dlX049CderUcfq6Vq1acnNzK9az093d3dW1a9di5ezfv1979uxR5cqVL3r8+PHjjj9v2rRJkyZNUnJyss6dO+fU7syZMwoICChWZkhIiNPXha+rXr16kf2nTp1y2rdy5Uq9/PLLSk1NdbrH/WKPlvv7eyhJdevW1blz53TixAkFBgYWq78AABiFATkA4LpxLc/rvlTF868VVVcaNmyoli1basGCBRo0aJAWLFggLy8vPfTQQ1fdp6vpx6UY9Sxzm82mJk2aaPr06Rc9XjhIPnDggLp06aL69etr+vTpql69ury8vPT5559rxowZstlsxc681IyFi+23/2VRt2+++Ua9evVS+/btNWfOHAUFBcnT01MJCQlatGhRsfMBALheMCAHAJguNDRUNptN+/fvV4MGDRz7jx07ptOnTys0NNSxr3z58jp9+rTT63Nzc5Wenn7N/Rg0aJDi4uKUnp6uRYsWqWfPnipfvvw1n/dq7N+/36mq/vPPP8tms112MbgrVatWLf3vf/9Tly5dXA76P/vsM+Xk5GjFihVOFe6/TmkvZNQvD/7zn//I29tba9askdVqdexPSEi4aPv9+/cX2ffTTz+pTJkyl5wRAABAaeIecgCA6Xr06CHpzxW6/6qwavvX1bNr1apV5NFV77zzToncE/zII4/IYrHo2Wef1cGDB10+S9xos2fPdvr67bffliR17969RHMeeugh/fbbb3r33XeLHDt//rxjZfrC6vVfK9Znzpy56GDY19e3yC9NSoK7u7ssFovT9/rw4cNOK8H/VXJystO95b/88os+/fRTdevW7bLrCgAAUBqokAMATNesWTNFRUXpnXfe0enTp9WhQwdt27ZN8+fPV58+fdSpUydH25iYGA0bNkz9+vXTPffco//9739as2aNKlWqdM39qFy5siIjI7V06VKVK1euyGO0StOhQ4fUq1cvRUZGKjk5WQsWLNCjjz6qZs2alWjOwIEDtWTJEg0bNkzr16/XnXfeqYKCAu3du1dLlizRmjVr1KpVK3Xr1k1eXl6677779I9//ENZWVl69913VaVKlSKzE1q2bKm5c+fq5ZdfVu3atVWlShXHInHXomfPnpo+fboiIyP16KOP6vjx45o9e7Zq166t77//vkj7xo0bKyIiwumxZ5L0wgsvXHNfAAAoCQzIAQDX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x8dH7u7ucnd3v2ibwnMUF1PWAQAAAAA3LJvNppycHLVs2VKenp5at26d49i+ffuUlpam8PBwSVJ4eLh27drltBp6UlKS/P391bBhQ0ebv56jsE3hOby8vNSyZUunNjabTevWrXO0KS4q5KVg8uTJWr58uVJTU83uCgAAAABcMZvdYnYXJP05vb179+4KCQnR2bNntWjRIm3YsEFr1qxRQECAoqOjFRcXpwoVKsjf319PP/20wsPD1bZtW0lSt27d1LBhQw0cOFBTp05VRkaGxo8fr+HDhzuq9MOGDdOsWbM0ZswYDRkyRF999ZWWLFmiVatWOfoRFxenqKgotWrVSq1bt9abb76p7OxsPf7441d0PTd9hXzw4MGyWCwaNmxYkWPDhw+XxWLR4MGDS79jAAAAAIArcvz4cQ0aNEj16tVTly5dtH37dq1Zs0b33HOPJGnGjBm699571a9fP7Vv316BgYH673//63i9u7u7Vq5cKXd3d4WHh+uxxx7ToEGD9OKLLzrahIWFadWqVUpKSlKzZs00bdo0vffee4qIiHC06d+/v9544w1NnDhRzZs3V2pqqlavXl1kobfLuSUq5NWrV9fHH3+sGTNmyMfHR5J04cIFLVq0SCEhISb3DgAAAACubwXXSS33/fffd3nc29tbs2fP1uzZsy/ZJjQ0VJ9//rnL83Ts2FHfffedyzaxsbGKjY112eZyro931WAtWrRQ9erVnX4z8t///lchISG6/fbbHftycnL0zDPPqEqVKvL29tZdd92l7du3O45v2LBBFotF69atU6tWrVSmTBm1a9dO+/btc8p77bXXVLVqVZUtW1bR0dG6cOGC0/Ht27frnnvuUaVKlRQQEKAOHTpo586djuNDhgzRvffe6/SavLw8ValS5bJ/AQEAAACgpNnsFsO2W9ktMSCX/hzkJiQkOL7+4IMPiszvHzNmjP7zn/9o/vz52rlzp2rXrq2IiAj98ccfTu2ef/55TZs2TTt27JCHh4eGDBniOLZkyRJNnjxZr776qnbs2KGgoCDNmTPH6fVnz55VVFSUvv32W23ZskV16tRRjx49dPbsWUlSTEyMVq9erfT0dMdrVq5cqXPnzql///4l9p4AAAAAAMxzywzIH3vsMX377bc6cuSIjhw5ok2bNumxxx5zHM/OztbcuXP1+uuvq3v37mrYsKHeffdd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adOm+s9//qOUlBTNnj1bkpSbm+vynBaLpci933l5eUXa+fr6XnF/77vvPv3xxx969913tXXrVm3durVIn2JiYpSUlKRff/1VCQkJ6ty5s0JDQy95zvj4eAUEBDhthxdtv+K+AQAAAACMd9MMyP+uYcOGys7OVkpKimw2m6ZNm6a2bduqbt26Onr0qFNbLy8vFRQUFDlH5cqVlZ6e7vh6//79l62qBwQEKCgoyDHAlqT8/HylpKQ4vj558qT27dun8ePHq0uXLmrQoIFOnTpV5FxNmjRRq1at9O6772rRokUaMmSIy+xx48bpzJkzTluNR+9w+RoAAAAAuBwq5Ma44R97dvLkST344IMaMmSImjZtqrJly2rHjh2aOnWqevfurdq1aysvL09vv/227rvvPm3atEnz5s1zOkeNGjWUlZWldevWqVmzZipTpozKlCmjzp07a9asWQoPD1dBQYHGjh1brEeaPfvss3rttddUp04d1a9fX9OnT9fp06cdx8uXL6+KFSvqnXfeUVBQkNLS0vTcc89d9FwxMTGKjY2Vr6+v7r//fpe5VqtVVqvVaZ+b1w3/LQYAAACAm9INXyH38/NTmzZtNGPGDLVv316NGzfWhAkTNHToUM2aNUvNmjXT9OnTNWXKFDVu3FgLFy5UfHy80znatWunYcOGqX///qpcubKmTp0qSZo2bZqqV6+uu+++W48++qhGjRqlMmXKXLZP//znPzVw4EBFRUUpPDxcZcuWdRpMu7m56eOPP1ZKSooaN26skSNH6vXXX7/ouR555BF5eHjokUcekbe39zW8UwAAAABwdWx2i2Hbrcxi//tN0riuHD58WLVq1dL27dvVokWLK359l/VxBvSqeA4cqWpatvcRL9Oy/Q+Z90+q/P/OmJbtdvS4adkqF3D5Nga5EFretOxTdc37e36mns207Mp1TpqW3T7ogGnZ1a3mXbe3pej6KaWlgkeWadm3eRS9nay0lHO7+KNcS0NdTx/Tss10zuZ6bSEj/d/ZMNOy3S3mfZ4HuJfMAstXY8/520zLnth4hWnZ16Lh8smGnfvHPsad+3rHfObrVF5enk6ePKnx48erbdu2VzUYBwAAAABcvxiQX6c2bdqkTp06qW7duvrkk0/M7g4AAACAW9itvviaURiQX6c6duxY5JFrAAAAAICbBwNyAAAAAIBLVMiNccOvsg4AAAAAwI2ICjkAAAAAwCVupjUGFXIAAAAAAExAhRwAAAAA4BL3kBuDATkAAAAAwDXmrBuCKesAAAAAAJiACjkAAAAAwCWmrBuDCjkAAAAAACagQg4AAAAAcMnOPeSGoEIOAAAAAIAJqJADAAAAAFziHnJjUCEHAAAAAMAEVMgBAAAAAK5RITcEA3IAAAAAgEss6mYMpqwDAAAAAGACKuQAAAAAANeokBuCCjkAAAAAACagQg4AAAAAcInHnhmDCjkAAAAAACagQg4AAAAAcI17yA1BhRwAAAAAABNQIQcAAAAAuMQ95MZgQA4AAAAAcI0p64ZgyjoAAAAAACagQn6TO5fnZV64ibNabO7mZZs5m8duNfHCPT3Ny7ab9ytbj+w807K9T5v3np8/Zd7vc8+c8zYte//ZyqZl59nMe89zbOb9uJBvN+9zrcDED3Qfd/M+WwK9Mk3LzizwMS3bzH/fB/+oaFp21lnzPlPd0q2mZfv+Zt6/74kzTIu+RkxZNwIVcgAAAAAATECFHAAAAADgGveQG4IKOQAAAAAAJqBCDgAAAABwjQq5IaiQAwAAAABgAirkAAAAAADXzHyU0E2MATkAAAAAwCUTnzJ7U2PKOgAAAAAAJqBCDgAAAABwjQq5IaiQAwAAAABgAirkAAAAAADXWNTNEFTIAQAAAAAwARVyAAAAAIBLFu4hNwQVcgAAAADADSE+Pl533HGHypYtqypVqqhPnz7at2+fU5sLFy5o+PDhqlixovz8/NSvXz8dO3bMqU1aWpp69uypMmXKqEqVKho9erTy8/Od2mzYsEEtWrSQ1WpV7dq1lZiYWKQ/s2fPVo0aNeTt7a02bdpo27ZtV3Q9DMgBAAAAAK7ZDdyuwMaNGzV8+HBt2bJFSUlJysvLU7du3ZSdne1oM3LkSH322WdaunSpNm7cqKNHj6pv376O4wUFBerZs6dyc3O1efNmzZ8/X4mJiZo4caKjzaFDh9SzZ0916tRJqampGjFihGJiYrRmzRpHm8WLFysuLk6TJk3Szp071axZM0VEROj48ePFvh6L3c4j3m9m4V8+Z1p2enp507K9fvEyLTvggHn/pMrvyTIt2/3X303LVhkf06LzK5c1LftsWBnTsk/VNXFhl8ZnTYuuX6X4/8GWtBq+J03LzrGZd4dbvt3dtOwCExcw8nHPMy070CvTtOzMAvM+z/efrWxa9sE/KpqWnXXW27Rst3Sradm+v5n37/v7GSNNy74WNf79hmHn3jf4aeXk5Djts1qtslov/3fkxIkTqlKlijZu3Kj27dvrzJkzqly5shYtWqQHHnhAkrR37141aNBAycnJatu2rb744gvde++9Onr0qKpWrSpJmjdvnsaOHasTJ07Iy8tLY8eO1apVq/TDDz84sh5++GGdPn1aq1evliS1adNGd9xxh2bNmiVJstlsql69up5++mk991zxxmFUyAEAAAAApomPj1dAQIDTFh8fX6zXnjlzRpJUoUIFSVJKSory8vLUtWtXR5v69esrJCREycnJkqTk5GQ1adLEMRiXpIiICGVmZmr37t2ONn89R2GbwnPk5uYqJSXFqY2bm5u6du3qaFMcLOoGAAAAAHDNwEmg48aNU1xcnNO+4lTHbTabRowYoTvvvFONGzeWJGVkZMjLy0vlypVzalu1alVlZGQ42vx1MF54vPCYqzaZmZk6f/68Tp06pYKCgou22bt372X7XogBOQAAAADANMWdnv53w4cP1w8//KBvv/3WgF6VDqasAwAAAABcu04WdSsUGxurlStXav369apWrZpjf2BgoHJzc3X69Gmn9seOHVNgYKCjzd9XXS/8+nJt/P395ePjo0qVKsnd3f2ibQrPURwMyAEAAAAANwS73a7Y2FgtW7ZMX331lcLCwpyOt2zZUp6enlq3bp1j3759+5SWlqbw8HBJUnh4uHbt2uW0GnpSUpL8/f3VsGFDR5u/nqOwTeE5vLy81LJlS6c2NptN69atc7Qpjquasn7w4EHVrFnzal4KAAAAALjRXCfP5ho+fLgWLVqkTz/9VGXLlnXc8x0QECAfHx8FBAQoOjpacXFxqlChgvz9/fX0008rPDxcbdu2lSR169ZNDRs21MCBAzV16lRlZGRo/PjxGj58uGPq/LBhwzRr1iyNGTNGQ4YM0VdffaUlS5Zo1apVjr7ExcUpKipKrVq1UuvWrfXmm28qOztbjz/+eLGv56oG5LVr11aHDh0UHR2tBx54QN7e5j0uAQAAAABwa5g7d64kqWPHjk77ExISNHjwYEnSjBkz5Obmpn79+iknJ0cRERGaM2eOo627u7tWrlypJ598UuHh4fL19VVUVJRefPFFR5uwsDCtWrVKI0eO1MyZM1WtWjW99957ioiIcLTp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FXIAAAAAAExAhRwAAAAA4BoVckNQIQcAAAAA3DC+/vpr3XfffQoODpbFYtHy5cudjg8ePFgWi8Vpi4yMdGrzxx9/aMCAAfL391e5cuUUHR2trKwspzbff/+97r77bnl7e6t69eqaOnVqkb4sXbpU9evXl7e3t5o0aaLPP//8iq6FATkAAAAAwCWL3bjtSmVnZ6tZs2aaPXv2JdtERkYqPT3dsf3f//2f0/EBAwZo9+7dSkpK0sqVK/X111/riSeecBzPzMxUt27dFBoaqpSUFL3++uuaPHmy3nnnHUebzZs365FHHlF0dLS+++479enTR3369NEPP/xQ7GthyjoAAAAA4IbRvXt3de/e3WUbq9WqwMDAix7bs2ePVq9ere3bt6tVq1aSpLfffls9evTQG2+8oeDgYC1cuFC5ubn64IMP5OXlpUaNGik1NVXTp093DNxnzpypyMhIjR49WpL00ksvKSkpSbNmzdK8efOKdS1UyAEAAAAArtmN23JycpSZmem05eTkXFN3N2zYoCpVqqhevXp68skndfLkScex5ORklStXzjEYl6SuXbvKzc1NW7dudbRp3769vLy8HG0iIiK0b98+nTp1ytGma9euTrkRERFKTk4udj8ZkAMAAAAAXDNwQB4fH6+AgACnLT4+/qq7GhkZqQ8//FDr1q3TlClTtHHjRnXv3l0FBQWSpIyMDFWpUsXpNR4eHqpQoYIyMjIcbapWrerUpvDry7UpPF4cTFkHAAAAAJhm3LhxiouLc9pntVqv+nwPP/yw489NmjRR06ZNVatWLW3YsEFdunS56vMagQE5AAAAAMClq1l8rbisVus1DcAvp2bNmqpUqZJ+/vlndenSRYGBgTp+/LhTm/z8fP3xxx+O+84DAwN17NgxpzaFX1+uzaXuXb8YpqwDAAAAAG5av/76q06ePKmgoCBJUnh4uE6fPq2UlBRHm6+++ko2m01t2rRxtPn666+Vl5fnaJOUlKR69eqpfPnyjjbr1q1zykpKSlJ4eHix+8aAHAAAAADgmoH3kF+prKwspaamKjU1VZJ06NAhpaamKi0tTVlZWRo9erS2bNmiw4cPa926derdu7dq166tiIgISVKDBg0UGRmpoUOHatu2bdq0aZNiY2P18MMPKzg4WJL06KOPysvLS9HR0dq9e7cWL16smTNnOk2tf/bZZ7V69WpN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yjoAAAAAwLVbvJJtFCrkAAAAAACYgAo5AAAAAMClW/1eb6MwIAcAAAAAuMaA3BBMWQcAAAAAwARUyAEAAAAArlEhNwQVcgAAAAAATECFHAAAAADgEou6GYMKOQAAAAAAJqBCDgAAAABwjQq5IaiQAwAAAABgAirkAAAAAACXLHZK5EZgQA4AAAAAcI3xuCGYsg4AAAAAgAmokAMAAAAAXOKxZ8agQg4AAAAAgAmokAMAAAAAXKNCbggq5AAAAAAAmIAKOQAAAADAJe4hNwYVcgAAAAAATECFHAAAAADgGhVyQzAgBwAAAAC4xJR1YzBlHQAAAAAAE1AhBwAAAAC4RoXcEFTIAQAAAAAwARXym5zvL+dNy7Yf/920bFtmlmnZ9vw807JlMe93bG4FNtOyLQXm/crWkm9atOz5FtOy8857mpad7+ZuWnZurnn/beblm3fdnh4FpmX7eeaalm0mX48c07K9Lea95xXds03L3nE+zLTsn7Krmpb9R46vadk/H6tsWnaZn71My75RcQ+5MaiQAwAAAABgAirkAAAAAADX7JTIjUCFHAAAAAAAE1AhBwAAAAC4xD3kxmBADgAAAABwjQG5IZiyDgAAAACACaiQAwAAAABcspj3hNubGhVyAAAAAABMwIAcAAAAAOCa3cDtCn399de67777FBwcLIvFouXLlzt31W7XxIkTFRQUJB8fH3Xt2lX79+93avPHH39owIAB8vf3V7ly5RQdHa2srCynNt9//73uvvtueXt7q3r16po6dWqRvixdulT169eXt7e3mjRpos8///yKroUBOQAAAADghpGdna1mzZpp9uzZFz0+depUvfXWW5o3b562bt0qX19fRURE6MKFC442AwYM0O7du5WUlKSVK1fq66+/1hNPPOE4npmZqW7duik0NFQpKSl6/fXXNXnyZL3zzjuONps3b9Yjjzyi6Ohofffdd+rTp4/69OmjH374odjXwj3kAAAAAACXrqfHnnXv3l3du3e/6DG73a4333xT48ePV+/evSVJH374oapWrarly5fr4Ycf1p49e7R69Wpt375drVq1kiS9/fbb6tGjh9544w0FBwdr4cKFys3N1QcffCAvLy81atRIqampmj59umPgPnPmTEVGRmr06NGSpJdeeklJSUmaNWuW5s2bV6xroUIOAAAAADBNTk6OMjMznbacnJyrOtehQ4eUkZGhrl27OvYFBASoTZs2Sk5OliQlJyerXLlyjsG4JHXt2lVubm7aunWro0379u3l5eXlaBMREaF9+/bp1KlTjjZ/zSlsU5hTHAzIAQAAAACu2e2GbfHx8QoICHDa4uPjr6qbGRkZkqSqVas67a9atarjWEZGhqpUqeJ03MPDQxUqVHBqc7Fz/DXjUm0KjxcHU9YBAAAAAC4ZOWV93LhxiouLc9pntVqNC7yOMCAHAAAAAJjGarWW2AA8MDBQknTs2DEFBQU59h87dkzNmzd3tDl+/LjT6/Lz8/XHH384Xh8YGKhjx445tSn8+nJtCo8XB1PWAQAAAACuXUePPXMlLCxMgYGBWrdunWNfZmamtm7dqvDwcElSeHi4Tp8+rZSUFEebr776SjabTW3atHG0+frrr5WXl+dok5SUpHr16ql8+fKONn/NKWxTmFMcDMgBAAAAADeMrKwspaamKjU1VdKfC7mlpqYqLS1NFotFI0aM0Msvv6wVK1Zo165dGjRokIKDg9WnTx9JUoMGDRQZGamhQ4dq27Zt2rRpk2JjY/Xwww8rODhYkvToo4/Ky8tL0dHR2r17txYvXqyZM2c6Ta1/9tlntXr1ak2bNk179+7V5MmTtWPHDsXGxhb7WpiyDgAAAABw6Xp67NmOHTvUqVMnx9eFg+SoqCglJiZqzJgxys7O1hNPPKHTp0/rrrvu0urVq+Xt7e14zcKFCxUbG6suXbrIzc1N/fr101tvveU4HhAQoC+//FLDhw9Xy5YtValSJU2cONHpWeXt2rXTokWLNH78eP3rX/9SnTp1tHz5cjVu3LjY18KAHAAAAABww+jYsaPs9kv/hsBisejFF1/Uiy++eMk2FSpU0KJFi1zmNG3aVN98843LNg8++KAefPBB1x12gQE5AAAAAMA1FwNgXD3uIQcAAAAAwARUyAEAAAAALl1P95DfTBiQAwAAAABcY0BuCKasAwAAAABgAirkAAAAAACXmLJuDCrkpchisWj58uVmdwMAAAAAcB24aQfkFovF5TZ58mSzuwgAAAAANwab3bjtFnbTTllPT093/Hnx4sWaOHGi9u3b59jn5+dnRrcAAAAAAJB0E1fIAwMDHVtAQIAsFovj63nz5umuu+5yav/mm2+qRo0aTvvee+89NWjQQN7e3qpfv77mzJnjOJabm6vY2FgFBQXJ29tboaGhio+Pdxzfv3+/2rdvL29vbzVs2FBJSUlF+jh27FjVrVtXZcqUUc2aNTVhwgTl5eVJkg4fPiw3Nzft2LGjSD9DQ0Nls9mu9S0CAAAAgOKxG7jdwm7aCvm1WrhwoSZOnKhZs2bp9ttv13fffaehQ4fK19dXUVFReuutt7RixQotWbJEISEh+uWXX/TLL79Ikmw2m/r27auqVatq69atOnPmjEaMGFEko2zZskpMTFRwcLB27dqloUOHqmzZshozZoxq1Kihrl27KiEhQa1atXK8JiEhQYMHD5ab2037uxQAAAAAuCUwIL+ESZMmadq0aerbt68kKSwsTD/++KP+/e9/KyoqSmlpaapTp47uuusuWSwWhYaGOl67du1a7d27V2vWrFFwcLAk6dVXX1X37t2dMsaPH+/4c40aNTRq1Ch9/PHHGjNmjCQpJiZGw4YN0/Tp02W1WrVz507t2rVLn376qdGXDwAAAAAOrLJuDMqsF5Gdna0DBw4oOjpafn5+ju3ll1/WgQMHJEmDBw9Wamqq6tWrp2eeeUZffvml4/V79uxR9erVHYNxSQoPDy+Ss3jxYt15550KDAyUn5+fxo8fr7S0NMfxPn36yN3dXcuWLZMkJSYmqlOnTkWm1hfKyclRZmam02az5ZfEWwIAAADgVma3G7fdwm7JAbmbm5vsf/vGF967LUlZWVmSpHfffVepqamO7YcfftCWLVskSS1atNChQ4f00ksv6fz583rooYf0wAMPFLsPycnJGjBggHr06KGVK1fqu+++0/PPP6/c3FxHGy8vLw0aNEgJCQnKzc3VokWLNGTIkEueMz4+XgEBAU7bod++LnafAAAAAACl55acsl65cmVlZGTIbrfLYrFIklJTUx3Hq1atquDgYB08eFADBgy45Hn8/f3Vv39/9e/fXw888IAiIyP1xx9/qEGDBvrll1+Unp6uoKAgSXIM5Att3rxZoaGhev755x37jhw5UiQjJiZGjRs31pw5c5Sfn++YQn8x48aNU1xcnNO++7tNv/QbAQAAAADFwJR1Y9ySA/KOHTvqxIkTmjp1qh544AGtXr1aX3zxhfz9/R1tXnjhBT3zzDMKCAhQZGSkcnJytGPHDp06dUpxcXGaPn26goKCdPvtt8vNzU1Lly5VYGCgypUrp65du6pu3bqKiorS66+/rszMTKeBtyTVqVNHaWlp+vjjj3XHHXdo1apVjqnpf9WgQQO1bdtWY8eO1ZAhQ+Tj43PJ67JarbJarU773NxuyW8xAAAAAFz3bskp6w0aNNCcOXM0e/ZsNWvWTNu2bdOoUaOc2sTExOi9995TQkKCmjRpog4dOigxMVFhYWGS/lwhferUqWrVqpXuuOMOHT58WJ9//rnc3Nzk5uamZcuW6fz582rdurViYmL0yiuvOJ2/V69eGjlypGJjY9W8eXNt3rxZEyZMuGh/o6OjlZub63K6OgAAAAAYhseeGcJi//vN1LjuvPTSS1q6dKm+//77K37tPe1eNqBHxeP+U9rlGxnElpllWrY9P+/yjYxiMe93bB4VypuWndsk9PKNDPLb3d6mZZ8PMe/vmsXTvP86LG4207LdPM3L9i2TY1q2p0eBadkh/qdNy/b3vGBatq+Hed/vrgG7Tcuu4XnStOw1WY1Ny/4pu6pp2X/k+JqW/WN6oGnZnv8z8bpfHmla9rXo1G2KYede/+VYw859vWM+83UsKytLhw8f1qxZs/Tyy+YNrAEAAADc2izUcQ1xS05Zv1HExsaqZcuW6tixI9PVAQAAAOAmQ4X8OpaYmKjExESzuwEAAADgVmfeXVs3NQbkAAAAAACXmLJuDKasAwAAAABgAirkAAAAAADXKJAbggo5AAAAAAAmoEIOAAAAAHCNe8gNQYUcAAAAAAATUCEHAAAAALhkoUBuCCrkAAAAAACYgAo5AAAAAMA17iE3BBVyAAAAAABMQIUcAAAAAOCSxWZ2D25ODMgBAAAAAK4xZd0QTFkHAAAAAMAEVMgBAAAAAK5RIDcEFXIAAAAAAExAhRwAAAAA4JKFe8gNQYUcAAAAAAATUCEHAAAAALhGhdwQVMgBAAAAADABFXIAAAAAgGs2sztwc2JADgAAAABwiUXdjMGUdQAAAAAATECFHAAAAADgGhVyQ1AhBwAAAADABFTIAQAAAACuUSE3BAPym1y+n6dp2R5l/UzLtlzIMS1b9lt0CUo3i9k9MIVbvonhJr7lbh4FpmW7e5r3b8zLy7xveFlv8z7XLJZb84cwTzfz/p57WszLruiebVq2t4nXXc+ablr2uQKradlWE/8jO1KmvGnZZ8uVMS0b+CsG5AAAAAAA127RmpPRuIccAAAAAAATUCEHAAAAALjEc8iNwYAcAAAAAOAaA3JDMGUdAAAAAAATUCEHAAAAALhGhdwQVMgBAAAAADeEyZMny2KxOG3169d3HL9w4YKGDx+uihUrys/PT/369dOxY8eczpGWlqaePXuqTJkyqlKlikaPHq38fOdHAG7YsEEtWrSQ1WpV7dq1lZiYaMj1MCAHAAAAALhmtxu3XaFGjRopPT3dsX377beOYyNHjtRnn32mpUuXauPGjTp69Kj69u3rOF5QUKCePXsqNzdXmzdv1vz585WYmKiJEyc62hw6dEg9e/ZUp06dlJqaqhEjRigmJkZr1qy5tvfwIpiyDgAAAAC4YXh4eCgwMLDI/jNnzuj999/XokWL1LlzZ0lSQkKCGjRooC1btqht27b68ssv9eOPP2rt2rWqWrWqmjdvrpdeekljx47V5MmT5eXlpXnz5iksLEzTpk2TJDVo0EDffvutZsyYoYiIiBK9FirkAAAAAADXbMZtOTk5yszMdNpycnIu2ZX9+/crODhYNWvW1IABA5SWliZJSklJUV5enrp27epoW79+fYWEhCg5OVmSlJycrCZNmqhq1aqONhEREcrMzNTu3bsdbf56jsI2hecoSQzIAQAAAACmiY+PV0BAgNMWHx9/0bZt2rRRYmKiVq9erblz5+rQoUO6++67dfbsWWVkZMjLy0vlypVzek3VqlWVkZEhScrIyHAajBceLzzmqk1mZqbOnz9fEpfswJR1AAAAAIBLFgNXWR83bpzi4uKc9lmt1ou27d69u+PPTZs2VZs2bRQaGqolS5bIx8fHsD4ahQo5AAAAAMA1Axd1s1qt8vf3d9ouNSD/u3Llyqlu3br6+eefFRgYqNzcXJ0+fdqpzbFjxxz3nAcGBhZZdb3w68u18ff3L/FBPwNyAAAAAMANKSsrSwcOHFBQUJBatmwpT09PrVu3znF83759SktLU3h4uCQpPDxcu3bt0vHjxx1tkpKS5O/vr4YNGzra/PUchW0Kz1GSGJADAAAAAFyz2Y3brsCoUaO0ceNGHT58WJs3b9b9998vd3d3PfLIIwoICFB0dLTi4uK0fv16paSk6PHHH1d4eLjatm0rSerWrZsaNmyogQMH6n//+5/WrFmj8ePHa/jw4Y6q/LBhw3Tw4EGNGTNGe/fu1Zw5c7RkyRKNHDmyxN9W7iEHAAAAANwQfv31Vz3yyCM6efKkKleurLvuuktbtmxR5cqVJUkzZsyQm5ub+vXrp5ycHEVERGjOnDmO17u7u2vlypV68sknFR4eLl9fX0VFRenFF190tAkLC9OqVas0cuRIzZw5U9WqVdN7771X4o88kxiQAwAAAAAux8BF3a7Exx9/7PK4t7e3Zs+erdmzZ1+yTWhoqD7//HOX5+nYsaO+++67q+rjlWDKOgAAAAAAJqBCDgAAAABw7TqpkN9sqJADAAAAAGACKuQAAAAAANeokBuCATkAAAAAwLUrfDwZiocp6wAAAAAAmIAKOQAAAADANbvN7B7clKiQAwAAAABggpt+QL5hwwZZLBadPn3a1H5YLBYtX77c1D4AAAAAwFWx243bbmGmDcjnzZunsmXLKj8/37EvKytLnp6e6tixo1PbwkH1gQMHSrmXAAAAAAAYw7QBeadOnZSVlaUdO3Y49n3zzTcKDAzU1q1bdeHCBcf+9evXKyQkRLVq1TKjqwAAAABwa7PZjdtuYaYNyOvVq6egoCBt2LDBsW/Dhg3q3bu3wsLCtGXLFqf9nTp1ks1mU3x8vMLCwuTj46NmzZrpk08+cTrv559/rrp168rHx0edOnXS4cOHnY4nJiaqXLlyWrNmjRo0aCA/Pz9FRkYqPT3dqd17772nBg0ayNvbW/Xr19ecOXMcx3JzcxUbG6ugoCB5e3srNDRU8fHxjuP79+9X+/bt5e3trYYNGyopKanI9Y8dO1Z169ZVmTJlVLNmTU2YMEF5eXmSpMOHD8vNzc3plxWS9Oabbyo0NFQ2GwsqAAAAAMCNztR7yDt16qT169c7vl6/fr06duyoDh06OPafP39eW7duVadOnRQfH68PP/xQ8+bN0+7duzVy5Eg99thj2rhxoyTpl19+Ud++fXXfffcpNTVVMTExeu6554rknjt3Tm+88YY++ugjff3110pLS9OoUaMcxxcuXKiJEyfqlVde0Z49e/Tqq69qwoQJmj9/viTprbfe0ooVK7RkyRLt27dPCxcuVI0aNSRJNptNffv2lZeXl7Zu3ap58+Zp7NixRfpQtmxZJSYm6scff9TMmTP17rvvasaMGZKkGjVqqGvXrkpISHB6TUJCggYPHiw3t5v+1n8AAAAA1xPuITeEqY8969Spk0aMGKH8/HydP39e3333nTp06KC8vDzNmzdPkpScnKycnBx17NhRDRs21Nq1axUeHi5Jqlmzpr799lv9+9//VocOHTR37lzVqlVL06ZNk/RnFX7Xrl2aMmWKU27h+QunwMfGxurFF190HJ80aZKmTZumvn37SpLCwsL0448/6t///reioqKUlpamOnXq6K677pLFYlFoaKjjtWvXrtXevXu1Zs0aBQcHS5JeffVVde/e3akP48ePd/y5Ro0aGjVqlD7++GONGTNGkhQTE6Nhw4Zp+vTpslqt2rlzp3bt2qVPP/302t94AAAAALgSt/jA2SimDsg7duyo7Oxsbd++XadOnVLdunVVuXJldejQQY8//rguXLigDRs2qGbNmsrKytK5c+d0zz33OJ0jNzdXt99+uyRpz549atOmjdPxwsH7X5UpU8bpfvSgoCAdP35ckpSdna0DBw4oOjpaQ4cOdbTJz89XQECAJGnw4MG65557VK9ePUVGRuree+9Vt27dHH2oXr26YzB+qT4sXrxYb731lg4cOKCsrCzl5+fL39/fcbxPnz4aPny4li1bpocffliJiYnq1KmToxJ/MTk5OcrJyXHaZ7Ply82Nx80DAAAAwPXG1JFa7dq1Va1aNa1fv16nTp1Shw4dJEnBwcGqXr26Nm/erPXr16tz587KysqSJK1atUq33Xab03msVusV5Xp6ejp9bbFYZP//f+NTmPPuu+8WGdy7u7tLklq0aKFDhw7piy++0Nq1a/XQQw+pa9euRe5nv5Tk5GQNGDBAL7zwgiIiIhQQEKCPP/7YUdmXJC8vLw0aNEgJCQnq27evFi1apJkzZ7o8b3x8vF544QWnfaE1uyis1j2XeAUAAAAAFAMVckOYXjrt1KmTNmzYoFOnTmn06NGO/e3bt9cXX3yhbdu26cknn1TDhg1ltVqVlpbmGLj/XYMGDbRixQqnfX9dHK44qlatquDgYB08eFADBgy4ZDt/f3/1799f/fv31wMPPKDIyEj98ccfatCggX755Relp6crKCjoon3YvHmzQkND9fzzzzv2HTlypEhGTEyMGjdurDlz5ig/P98xhf5Sxo0bp7i4OKd99/V9+7LXDAAAAAAofdfFgHz48OHKy8tzGmh36NBBsbGxys3NVadOnVS2bFmNGjVKI0eOlM1m01133aUzZ85o06ZN8vf3V1RUlIYNG6Zp06Zp9OjRiomJUUpKihITE6+4Ty+88IKeeeYZBQQEKDIyUjk5OdqxY4dOnTqluLg4TZ8+XUFBQbr99tvl5uampUuXKjAwUOXKlVPXrl1Vt25dRUVF6fXXX1dmZqbTwFuS6tSpo7S0NH388ce64447tGrVKi1btqxIPxo0aKC2bdtq7NixGjJkiHx8fFz222q1FpktwHR1AAAAANeMJz0ZwvTlujt16qTz58+rdu3aqlq1qmN/hw4ddPbsWcfj0STppZde0oQJExQfH68GDRooMjJSq1atUlhYmCQpJCRE//nPf7R8+XI1a9ZM8+bN06uvvnrFfYqJidF7772nhIQENWnSRB06dFBiYqIjp2zZspo6dapatWqlO+64Q4cPH9bnn38uNzc3ubm5admyZTp//rxat26tmJgYvfLKK07n79Wrl0aOHKnY2Fg1b95cmzdv1oQJEy7al+joaOXm5mrIkCFXfB0AAAAAgOuXxW7nZoDr2UsvvaSlS5fq+++/v6rXd+o25fKNDOK9/5hp2bYTJ03Ltv9tYb1bhXuF8qZl5zYKMS07PdzbtOzsWnmmZbt755uX7Wneb+i9vMy77nJlzpuWbbGY96NCZZ9s07IrWs3L9nU37/+SvuVTTMuu7G7ee743t4pp2d+dq2Fa9olcP9Oyt2TUMC377B7zfm45MCru8o2uQ90DnzLs3F9kzDHs3Nc70yvkuLisrCz98MMPmjVrlp5++mmzuwMAAAAAKGEMyK9TsbGxatmypTp27Mh0dQAAAADmstuN225hrPh1nUpMTLyqBekAAAAAoMTZbu2Bs1GokAMAAAAAYAIq5AAAAAAAl+x2HntmBCrkAAAAAACYgAo5AAAAAMA17iE3BBVyAAAAAABMQIUcAAAAAODaLf54MqNQIQcAAAAAwARUyAEAAAAArtlYZd0IDMgBAAAAAK4xZd0QTFkHAAAAAMAEVMgBAAAAAC7ZmbJuCCrkAAAAAACYgAo5AAAAAMA17iE3BBVyAAAAAABMQIUcAAAAAOCajQq5EaiQAwAAAABgAirkAAAAAADX7KyybgQq5AAAAAAAmIAKOQAAAADAJTv3kBuCATkAAAAAwDWmrBuCKesAAAAAAJiACjkAAAAAwCWmrBuDCjkAAAAAACagQg4AAAAAcI17yA1BhRwAAAAAADPYgYu4cOGCfdKkSfYLFy6QTTbZZJNNNtlkk0022SZn4+Zksdvt3J2PIjIzMxUQEKAzZ87I39+fbLLJJptssskmm2yyyTYxGzcnpqwDAAAAAGACBuQAAAAAAJiAATkAAAAAACZgQI6LslqtmjRpkqxWK9lkk0022WSTTTbZZJNtcjZuTizqBgAAAACACaiQAwAAAABgAgbkAAAAAACYgAE5AAAAAAAmYEAOAAAAAIAJGJDjombPnq0aNWrI29tbbdq00bZt2wzP/Prrr3XfffcpODhYFotFy5cvNzyzUHx8vO644w6VLVtWVapUUZ8+fbRv375SyZ47d66aNm0qf39/+fv7Kzw8XF988UWpZP/da6+9JovFohEjRhieNXnyZFksFqetfv36hucW+u233/TYY4+pYsWK8vHxUZMmTbRjxw7Dc2vUqFHkui0Wi4YPH254dkFBgSZMmKCwsDD5+PioVq1aeumll1Raa3uePXtWI0aMUGhoqHx8fNSuXTtt3769xHMu91lit9s1ceJEBQUFycfHR127dtX+/ftLJfu///2vunXrpooVK8pisSg1NbVEci+XnZeXp7Fjx6pJkyby9fVVcHCwBg0apKNHjxqeLf35771+/fry9fVV+fLl1bVrV23durVUsv9q2LBhslgsevPNN0sle/DgwUX+rUdGRpZKtiTt2bNHvXr1UkBAgHx9fXXHHXcoLS3N8OyLfcZZLBa9/vrrhmdnZWUpNjZW1apVk4+Pjxo2bKh58+Zdc25xso8dO6bBgwcrODhYZcqUUWRkZIl9thTn55QLFy5o+PDhqlixovz8/NSvXz8dO3bM8Nx33nlHHTt2lL+/vywWi06fPn1NmVeS/8cff+jpp59WvXr15OPjo5CQED3zzDM6c+aM4dmS9I9//EO1atWSj4+PKleurN69e2vv3r3XnI1bCwNyFLF48WLFxcVp0qRJ2rlzp5o1a6aIiAgdP37c0Nzs7Gw1a9ZMs2fPNjTnYjZu3Kjhw4dry5YtSkpKUl5enrp166bs7GzDs6tVq6bXXntNKSkp2rFjhzp37qzevXtr9+7dhmf/1fbt2/Xvf/9bTZs2LbXMRo0aKT093bF9++23pZJ76tQp3XnnnfL09NQXX3yhH3/8UdOmTVP58uUNz96+fbvTNSclJUmSHnzwQcOzp0yZorlz52rWrFnas2ePpkyZoqlTp+rtt982PFuSYmJilJSUpI8++ki7du1St27d1LVrV/32228lmnO5z5KpU6fqrbfe0rx587R161b5+voqIiJCFy5cMDw7Oztbd911l6ZMmXLNWVeSfe7cOe3cuVMTJkzQzp079d///lf79u1Tr169DM+WpLp162rWrFnatWuXvv32W9WoUUPdunXTiRMnDM8utGzZMm3ZskXBwcHXnHkl2ZGRkU7/5v/v//6vVLIPHDigu+66S/Xr19eGDRv0/fffa8KECfL29jY8+6/Xm56erg8++EAWi0X9+vUzPDsuLk6rV6/WggULtGfPHo0YMUKxsbFasWKFodl2u119+vTRwYMH9emnn+q7775TaGiounbtWiI/SxTn55SRI0fqs88+09KlS7Vx40YdPXpUffv2NTz33LlzioyM1L/+9a9ryrqa/KNHj+ro0aN644039MMPPygxMVGrV69WdHS04dmS1LJlSyUkJGjPnj1as2aN7Ha7unXrpoKCgmvOxy3EDvxN69at7cOHD3d8XVBQYA8ODrbHx8eXWh8k2ZctW1ZqeX93/PhxuyT7xo0bTckvX768/b333iu1vLNnz9rr1KljT0pKsnfo0MH+7LPPGp45adIke7NmzQzPuZixY8fa77rrLlOy/+7ZZ5+116pVy26z2QzP6tmzp33IkCFO+/r27WsfMGCA4dnnzp2zu7u721euXOm0v0WLFvbnn3/esNy/f5bYbDZ7YGCg/fXXX3fsO336tN1qtdr/7//+z9Dsvzp06JBdkv27774r0cziZBfatm2bXZL9yJEjpZ595swZuyT72rVrSyX7119/td922232H374wR4aGmqfMWNGieZeKjsqKsreu3fvEs8qTnb//v3tjz32mCnZf9e7d297586dSyW7UaNG9hdffNFpnxGfM3/P3rdvn12S/YcffnDsKygosFeuXNn+7rvvlmi23V7055TTp0/bPT097UuXLnW02bNnj12SPTk52bDcv1q/fr1dkv3UqVMllncl+YWWLFli9/Lysufl5ZV69v/+9z+7JPvPP/9cotm4uVEhh5Pc3FylpKSoa9eujn1ubm7q2rWrkpOTTexZ6Sqc6lShQoVSzS0oKNDHH3+s7OxshYeHl1ru8OHD1bNnT6fve2nYv3+/goODVbNmTQ0YMKBEplIWx4oVK9SqVSs9+OCDqlKlim6//Xa9++67pZL9V7m5uVqwYIGGDBkii8VieF67du20bt06/fTTT5Kk//3vf/r222/VvXt3w7Pz8/NVUFBQpDrn4+NTajMjJOnQoUPKyMhw+rseEBCgNm3a3FKfcdKfn3MWi0XlypUr1dzc3Fy98847CggIULNmzQzPs9lsGjhwoEaPHq1GjRoZnvd3GzZsUJUqVVSvXj09+eSTOnnypOGZNptNq1atUt26dRUREaEqVaqoTZs2pXorWKFjx45p1apVJVKxLI527dppxYoV+u2332S327V+/Xr99NNP6tatm6G5OTk5kuT0Gefm5iar1WrIZ9zff05JSUlRXl6e02db/fr1FRISUqKfbWb9fHQl+WfOnJG/v788PDxKNTs7O1sJCQkKCwtT9erVSzQbNzcG5HDy+++/q6CgQFWrVnXaX7VqVWVkZJjUq9Jls9k0YsQI3XnnnWrcuHGpZO7atUt+fn6yWq0aNmyYli1bpoYNG5ZK9scff6ydO3cqPj6+VPIKtWnTxjG1bO7cuTp06JDuvvtunT171vDsgwcPau7cuapTp47WrFmjJ598Us8884zmz59vePZfLV++XKdPn9bgwYNLJe+5557Tww8/rPr168vT01O33367RowYoQEDBhieXbZsWYWHh+ull17S0aNHVVBQoAULFig5OVnp6emG5xcq/By7lT/jpD/vNR07dqweeeQR+fv7l0rmypUr5efnJ29vb82YMUNJSUmqVKmS4blTpkyRh4eHnnnmGcOz/i4yMlIffvih1q1bpylTpmjjxo3q3r274dNZjx8/rqysLL322muKjIzUl19+qfvvv199+/bVxo0bDc3+u/nz56ts2bLXPHW6uN5++201bNhQ1apVk5eXlyIjIzV79my1b9/e0NzCwe+4ceN06tQp5ebmasqUKfr1119L/DPuYj+nZGRkyMvLq8gv2Erys82Mn4+uNP/333/XSy+9pCeeeKLUsufMmSM/Pz/5+fnpiy++UFJSkry8vEo0Hze3kv3VEXATGD58uH744YdSrdrVq1dPqampOnPmjD755BNFRUVp48aNhg/Kf/nlFz377LNKSkoqkfsKr8Rfq7JNmzZVmzZtFBoaqiVLlhheSbHZbGrVqpVeffVVSdLtt9+uH374QfPmzVNUVJSh2X/1/vvvq3v37iV6T6srS5Ys0cKFC7Vo0SI1atRIqampGjFihIKDg0vluj/66CMNGTJEt912m9zd3dWiRQs98sgjSklJMTwb/09eXp4eeugh2e12zZ07t9RyO3XqpNTUVP3+++969913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\n"},"metadata":{}}]},{"cell_type":"markdown","source":["**Forecasting method 1: Simple Demand Forecasting**\n","\n","Predict next-day demand using a moving average."],"metadata":{"id":"z7fvjVl6RYvG"}},{"cell_type":"code","source":["daily_series = daily_demand.astype(float)\n","\n","# 7-day moving average\n","forecast_next = daily_series.rolling(window=7).mean().iloc[-1]\n","\n","print(\"Predicted demand for next day:\", int(forecast_next))\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"mA1Xy5w9RdcK","executionInfo":{"status":"ok","timestamp":1765003184653,"user_tz":-60,"elapsed":8,"user":{"displayName":"Sangeeth Prasanga","userId":"18151170740107952163"}},"outputId":"f9758882-666e-42e4-f1a3-de24769b917a"},"execution_count":62,"outputs":[{"output_type":"stream","name":"stdout","text":["Predicted demand for next day: 96919\n"]}]},{"cell_type":"markdown","source":["**Forecasting method 2: Linear Trend Forecasting**\n","\n","This method fits a straight line to the historical data and extends it to predict the next value."],"metadata":{"id":"E0qmPw8pS4us"}},{"cell_type":"code","source":["y = daily_demand.values\n","x = np.arange(len(y))\n","\n","# Fit a linear regression line\n","coeffs = np.polyfit(x, y, deg=1)\n","trend = np.poly1d(coeffs)\n","\n","# Forecast next day\n","forecast_next = trend(len(y))\n","print(\"Next-day demand (Linear Trend):\", int(forecast_next))\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Y4lJ50uVS_ee","executionInfo":{"status":"ok","timestamp":1765003184657,"user_tz":-60,"elapsed":8,"user":{"displayName":"Sangeeth Prasanga","userId":"18151170740107952163"}},"outputId":"b119408e-b5cc-44c8-d365-959ed74c3043"},"execution_count":63,"outputs":[{"output_type":"stream","name":"stdout","text":["Next-day demand (Linear Trend): 119121\n"]}]},{"cell_type":"markdown","source":["**Forecasting method 3: Exponential Smoothing**\n","\n","A very powerful method for transport data, still lightweight.\n","\n","**Why it's better:**\n","\n","* Gives more weight to recent days\n","* Responds well to rising/falling demand\n","* Easy to use with statsmodels\n","\n","Forecast:\n","\n","![image.png](data:image/png;base64,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)\n","\t​\n"],"metadata":{"id":"_DbD0BJTTNLe"}},{"cell_type":"code","source":["from statsmodels.tsa.holtwinters import SimpleExpSmoothing\n","\n","model = SimpleExpSmoothing(daily_demand).fit(smoothing_level=0.4)\n","forecast_next = model.forecast(1)\n","\n","print(\"Next-day forecast (Exponential Smoothing):\", int(forecast_next))\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"-eNzskfdTkQW","executionInfo":{"status":"ok","timestamp":1765003184658,"user_tz":-60,"elapsed":6,"user":{"displayName":"Sangeeth Prasanga","userId":"18151170740107952163"}},"outputId":"0d628d35-3acb-450d-d56e-a7862b42a98a"},"execution_count":64,"outputs":[{"output_type":"stream","name":"stdout","text":["Next-day forecast (Exponential Smoothing): 62766\n"]},{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.12/dist-packages/statsmodels/tsa/base/tsa_model.py:473: ValueWarning: A date index has been provided, but it has no associated frequency information and so will be ignored when e.g. forecasting.\n","  self._init_dates(dates, freq)\n","/usr/local/lib/python3.12/dist-packages/pandas/util/_decorators.py:213: EstimationWarning: Model has no free parameters to estimate. Set optimized=False to suppress this warning\n","  return func(*args, **kwargs)\n","/usr/local/lib/python3.12/dist-packages/statsmodels/tsa/base/tsa_model.py:837: ValueWarning: No supported index is available. Prediction results will be given with an integer index beginning at `start`.\n","  return get_prediction_index(\n","/usr/local/lib/python3.12/dist-packages/statsmodels/tsa/base/tsa_model.py:837: FutureWarning: No supported index is available. In the next version, calling this method in a model without a supported index will result in an exception.\n","  return get_prediction_index(\n","/tmp/ipython-input-1654732414.py:6: FutureWarning: Calling int on a single element Series is deprecated and will raise a TypeError in the future. Use int(ser.iloc[0]) instead\n","  print(\"Next-day forecast (Exponential Smoothing):\", int(forecast_next))\n"]}]},{"cell_type":"markdown","source":["**Forecasting method 4: Seasonal Naïve Forecast**\n","(Taxi Data Has Weekly Patterns)\n","\n","How it works\n","\n","Predict tomorrow based on the value 7 days ago:\n","\n","![image.png](data:image/png;base64,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)"],"metadata":{"id":"Z6WZCx6WUgKu"}},{"cell_type":"code","source":["forecast_next = daily_demand.iloc[-7]\n","print(\"Next-day forecast (Seasonal Naive):\", forecast_next)\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"NqW62AE8VCyI","executionInfo":{"status":"ok","timestamp":1765003184665,"user_tz":-60,"elapsed":7,"user":{"displayName":"Sangeeth Prasanga","userId":"18151170740107952163"}},"outputId":"9b107ab7-12f3-434c-baeb-2aacfacb9bb0"},"execution_count":65,"outputs":[{"output_type":"stream","name":"stdout","text":["Next-day forecast (Seasonal Naive): 120549\n"]}]},{"cell_type":"markdown","source":["**Forecasting method 5: ARIMA (Intermediate Level)**\n","\n","Classic time-series model.\n","\n","Why it’s good\n","\n","* Strong statistical foundation\n","\n","* Works well when data shows autocorrelation\n","\n","* Good for taxi/bus demand data\n","\n","\n","Limitations\n","\n","* More complex\n","\n","* Students must install statsmodels\n","\n"],"metadata":{"id":"ACl2h9wxVWpI"}},{"cell_type":"code","source":["from statsmodels.tsa.arima.model import ARIMA\n","\n","model = ARIMA(daily_demand, order=(2,1,2)).fit()\n","forecast_next = model.forecast()\n","\n","print(\"Next-day demand (ARIMA):\", int(forecast_next))\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"H1DCHj9HV4H9","executionInfo":{"status":"ok","timestamp":1765003184777,"user_tz":-60,"elapsed":111,"user":{"displayName":"Sangeeth Prasanga","userId":"18151170740107952163"}},"outputId":"e8e2d95f-0060-404a-89ee-7cef05f18144"},"execution_count":66,"outputs":[{"output_type":"stream","name":"stdout","text":["Next-day demand (ARIMA): -563\n"]},{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.12/dist-packages/statsmodels/tsa/base/tsa_model.py:473: ValueWarning: A date index has been provided, but it has no associated frequency information and so will be ignored when e.g. forecasting.\n","  self._init_dates(dates, freq)\n","/usr/local/lib/python3.12/dist-packages/statsmodels/tsa/base/tsa_model.py:473: ValueWarning: A date index has been provided, but it has no associated frequency information and so will be ignored when e.g. forecasting.\n","  self._init_dates(dates, freq)\n","/usr/local/lib/python3.12/dist-packages/statsmodels/tsa/base/tsa_model.py:473: ValueWarning: A date index has been provided, but it has no associated frequency information and so will be ignored when e.g. forecasting.\n","  self._init_dates(dates, freq)\n","/usr/local/lib/python3.12/dist-packages/statsmodels/base/model.py:607: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals\n","  warnings.warn(\"Maximum Likelihood optimization failed to \"\n","/usr/local/lib/python3.12/dist-packages/statsmodels/tsa/base/tsa_model.py:837: ValueWarning: No supported index is available. Prediction results will be given with an integer index beginning at `start`.\n","  return get_prediction_index(\n","/usr/local/lib/python3.12/dist-packages/statsmodels/tsa/base/tsa_model.py:837: FutureWarning: No supported index is available. In the next version, calling this method in a model without a supported index will result in an exception.\n","  return get_prediction_index(\n","/tmp/ipython-input-1277555585.py:6: FutureWarning: Calling int on a single element Series is deprecated and will raise a TypeError in the future. Use int(ser.iloc[0]) instead\n","  print(\"Next-day demand (ARIMA):\", int(forecast_next))\n"]}]}]}