Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# nb 013: Charging Event Extraction\n",
"\n",
"Okay, time to do this for totally real now.\n",
"\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from math import floor, ceil\n",
"import matplotlib\n",
"from matplotlib import path\n",
"from matplotlib import pyplot as plt\n",
"\n",
"matplotlib.rcParams['figure.dpi']= 150"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"start_time = 1404360000\n",
"end_time = 1405828798\n",
"\n",
"def time_to_index(tt, st = 1404360000, divisor=60):\n",
" return floor((tt-st)/divisor)\n",
"\n",
"NN = ceil((end_time - start_time)/60)\n",
"\n",
"# Our combined dataframes\n",
"# Index on `id`. For a given DataFrame.loc[id], the values will be sorted by time / pickup time\n",
"\n",
"OD = pd.read_pickle(\"./data/OD_combined.pkl\")\n",
"GPS = pd.read_pickle(\"./data/GPS_combined.pkl\")\n",
"\n",
"def _from_traffic_dataframe_get_dict_of_ids_to_dataframe(DF, time_key=\"time\"):\n",
" IDs = list(set(DF.index))\n",
" \n",
" dict_of_ids_to_dataframe = {}\n",
" \n",
" for key in IDs:\n",
" try:\n",
" dict_of_ids_to_dataframe[key] = DF.loc[key].set_index(keys=time_key)\n",
" except:\n",
" # If it doesn't work, it means the key is only associated with one entry.\n",
" # So, just don't include it.\n",
" pass\n",
" \n",
" return dict_of_ids_to_dataframe\n",
"\n",
"# Get IDs\n",
"OD_IDs = set(OD.index)\n",
"GPS_IDs = set(GPS.index)\n",
"IDs = OD_IDs.intersection(GPS_IDs)\n",
"\n",
"# Dict of ID to dataframe\n",
"OD_ddf = _from_traffic_dataframe_get_dict_of_ids_to_dataframe(OD, time_key=\"ptime\")\n",
"GPS_ddf = _from_traffic_dataframe_get_dict_of_ids_to_dataframe(GPS, time_key=\"time\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"charging_locations = pd.read_csv(\"./email_from_sihong/ChargeLocation201406.dms\",\n",
" names=['id', 'name', 'lon', 'lat', 'flag', 'num points'])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>name</th>\n",
" <th>lon</th>\n",
" <th>lat</th>\n",
" <th>flag</th>\n",
" <th>num points</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>A01</td>\n",
" <td>114.007401</td>\n",
" <td>22.535500</td>\n",
" <td>1</td>\n",
" <td>112</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>FN0002</td>\n",
" <td>114.009001</td>\n",
" <td>22.534233</td>\n",
" <td>1</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>N04</td>\n",
" <td>113.987547</td>\n",
" <td>22.560519</td>\n",
" <td>1</td>\n",
" <td>40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>D08</td>\n",
" <td>114.088303</td>\n",
" <td>22.562599</td>\n",
" <td>1</td>\n",
" <td>20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>6</td>\n",
" <td>D10</td>\n",
" <td>114.074406</td>\n",
" <td>22.559000</td>\n",
" <td>1</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>7</td>\n",
" <td>B04</td>\n",
" <td>113.922977</td>\n",
" <td>22.546375</td>\n",
" <td>1</td>\n",
" <td>20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>8</td>\n",
" <td>D01</td>\n",
" <td>114.123241</td>\n",
" <td>22.562538</td>\n",
" <td>1</td>\n",
" <td>12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>9</td>\n",
" <td>C01</td>\n",
" <td>114.101748</td>\n",
" <td>22.582541</td>\n",
" <td>1</td>\n",
" <td>52</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>10</td>\n",
" <td>E11</td>\n",
" <td>114.068837</td>\n",
" <td>22.573326</td>\n",
" <td>1</td>\n",
" <td>20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>11</td>\n",
" <td>A02</td>\n",
" <td>114.023404</td>\n",
" <td>22.542650</td>\n",
" <td>1</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>12</td>\n",
" <td>E01</td>\n",
" <td>114.023902</td>\n",
" <td>22.619512</td>\n",
" <td>1</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>13</td>\n",
" <td>F02</td>\n",
" <td>113.817750</td>\n",
" <td>22.650682</td>\n",
" <td>1</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>14</td>\n",
" <td>A08</td>\n",
" <td>113.944128</td>\n",
" <td>22.506854</td>\n",
" <td>1</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>15</td>\n",
" <td>A09</td>\n",
" <td>113.941642</td>\n",
" <td>22.527053</td>\n",
" <td>1</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>16</td>\n",
" <td>A10</td>\n",
" <td>113.962844</td>\n",
" <td>22.528519</td>\n",
" <td>1</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>18</td>\n",
" <td>D06</td>\n",
" <td>114.304419</td>\n",
" <td>22.600844</td>\n",
" <td>1</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>19</td>\n",
" <td>N02</td>\n",
" <td>114.032902</td>\n",
" <td>22.524276</td>\n",
" <td>1</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>20</td>\n",
" <td>F07</td>\n",
" <td>113.858390</td>\n",
" <td>22.579457</td>\n",
" <td>1</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>21</td>\n",
" <td>A03</td>\n",
" <td>113.995054</td>\n",
" <td>22.547247</td>\n",
" <td>1</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>23</td>\n",
" <td>D09</td>\n",
" <td>114.045125</td>\n",
" <td>22.551410</td>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>24</td>\n",
" <td>F08</td>\n",
" <td>113.838486</td>\n",
" <td>22.609576</td>\n",
" <td>1</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>25</td>\n",
" <td>F10</td>\n",
" <td>114.043404</td>\n",
" <td>22.601000</td>\n",
" <td>1</td>\n",
" <td>12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>27</td>\n",
" <td>F12</td>\n",
" <td>113.813400</td>\n",
" <td>22.624201</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>28</td>\n",
" <td>F13</td>\n",
" <td>114.135002</td>\n",
" <td>22.544001</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>29</td>\n",
" <td>PSBYD</td>\n",
" <td>114.353401</td>\n",
" <td>22.679399</td>\n",
" <td>1</td>\n",
" <td>12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>30</td>\n",
" <td>S1</td>\n",
" <td>113.856400</td>\n",
" <td>22.616899</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>31</td>\n",
" <td>F15</td>\n",
" <td>114.031502</td>\n",
" <td>22.525200</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>32</td>\n",
" <td>S2</td>\n",
" <td>114.179800</td>\n",
" <td>22.558500</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id name lon lat flag num points\n",
"0 1 A01 114.007401 22.535500 1 112\n",
"1 2 FN0002 114.009001 22.534233 1 6\n",
"2 3 N04 113.987547 22.560519 1 40\n",
"3 4 D08 114.088303 22.562599 1 20\n",
"4 6 D10 114.074406 22.559000 1 16\n",
"5 7 B04 113.922977 22.546375 1 20\n",
"6 8 D01 114.123241 22.562538 1 12\n",
"7 9 C01 114.101748 22.582541 1 52\n",
"8 10 E11 114.068837 22.573326 1 20\n",
"9 11 A02 114.023404 22.542650 1 16\n",
"10 12 E01 114.023902 22.619512 1 16\n",
"11 13 F02 113.817750 22.650682 1 8\n",
"12 14 A08 113.944128 22.506854 1 14\n",
"13 15 A09 113.941642 22.527053 1 16\n",
"14 16 A10 113.962844 22.528519 1 14\n",
"15 18 D06 114.304419 22.600844 1 16\n",
"16 19 N02 114.032902 22.524276 1 16\n",
"17 20 F07 113.858390 22.579457 1 8\n",
"18 21 A03 113.995054 22.547247 1 16\n",
"19 23 D09 114.045125 22.551410 1 10\n",
"20 24 F08 113.838486 22.609576 1 16\n",
"21 25 F10 114.043404 22.601000 1 12\n",
"22 27 F12 113.813400 22.624201 1 100\n",
"23 28 F13 114.135002 22.544001 1 100\n",
"24 29 PSBYD 114.353401 22.679399 1 12\n",
"25 30 S1 113.856400 22.616899 1 100\n",
"26 31 F15 114.031502 22.525200 1 100\n",
"27 32 S2 114.179800 22.558500 1 100"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"charging_locations"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7f9f6b130bd0>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAD4CAYAAADlwTGnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAecklEQVR4nO3df5Dcd33f8ed7f92eLZ0ULJ38Q5LlJMThRxvabLHlIGoHGxsKg3HslkzLQG1qMhmmHVIyhqET5HbSGUxaJ4WUoAmyHSZ1oDAkmdjGUJCtjKU4c0oMyHUcXMcgAZHPAZ8t+W53v9/vu398v3ve29u927v7rva7+309ZnZu97Pf7/fet/rq+97v56e5OyIikj+FYQcgIiLDoQQgIpJTSgAiIjmlBCAiklNKACIiOVUadgBrsW3bNt+zZ8+wwxARGSnHjh17zt23d5aPVALYs2cPMzMzww5DRGSkmNl3u5WrCkhEJKeUAEREckoJQEQkp5QARERySglARCSnlABERHJKCUBEJKeUAEREsiyK4NQpGMDU/UoAIiJZFUVw1VWwcydceWX8OkVKACIiWTU7C0eOQBDEP2dnUz28EoCISFZNT8MVV0CpFP+cnk718CM1F5CISK6YwaFD8Tf/6en4dYqUAEREsqxQgB07BnPogRxVREQyTwlARCSnlABERHJKCUBEJKeUAEREckoJQEQkp5QARERySglARCSnlABERHJKCUBEJKeUAEREckoJQEQkp1ZNAGZ20MyeNbPjbWU3mdnjZhaZWa3LPrvN7LSZfajHMT9rZt80s2+Z2RfNbNPG/gyRETTAlZ5E+tHPHcDdwHUdZceBG4DDPfa5E3hghWN+0N1/zt3/MfA94AN9xCEyPga80pNIP1adDtrdD5vZno6yJwCsy9zUZnY98DRwZoVjvpBsa8AkoK9Aki/dVnoa0JS/Ir2k2gZgZucCtwG397HtXcDfAz8LfHKF7W41sxkzm5lNeTk0kaEZ8EpPIv1IuxH4duBOdz+92obu/m+BC4EngH+1wnYH3L3m7rXt27enF6nIMLVWejp5Eh56KPWVnkT6kfaKYJcBN5rZHcBWIDKzBXf/VLeN3T00s88Dvw7clXIsItk2wJWeRPqRagJw932t52a2HzjdefFP6v1/yt2fSp6/HfibNOMQEZHV9dMN9F7gKHCpmZ00s1vM7J1mdhLYC9xnZg/2cZz7zexCwIB7zOzbwLeBC4D/vKG/QkRE1sx8hPog12o1n5mZGXYYIiIjxcyOufuyMVsaCSwiklNKACIiOaUEICKSU0oAIiI5pQQgIpJTSgAiIjmlBCAiklNKACIiOaUEICKSU0oAIiI5pQQgIpJTSgAiIjmlBCAiklNKACIiOaUEICKSU0oAIiI5pQQgIpJTSgAiIjmlBCAiklNKACIiOaUEICKSU0oAIiI5pQQgIpJTSgAiIjmlBCAiklNKACIiOaUEICKSU6smADM7aGbPmtnxtrKbzOxxM4vMrNZln91mdtrMPtTjmH9oZk+a2fHk+OWN/RkiIrJW/dwB3A1c11F2HLgBONxjnzuBB1Y45h8CPwv8I2ASeF8fcYiISIpKq23g7ofNbE9H2RMAZrZsezO7HngaOLPCMe9v2/4vgZ39BiwiIulItQ3AzM4FbgNu73P7MvBu4CsrbHOrmc2Y2czs7Gw6gYqISOqNwLcDd7r76T63/5/AYXf/814buPsBd6+5e2379u2pBCkiIn1UAa3RZcCNZnYHsBWIzGzB3T/VuaGZfQzYDrw/5RhERKQPqSYAd9/Xem5m+4HTPS7+7wOuBd7k7lGaMYiISH/66QZ6L3AUuNTMTprZLWb2TjM7CewF7jOzB/s4zv1mdmHy8veAHcBRM3vMzH5jA3+DiIisQz+9gH65x1tfXmW//R2v39r2PO2qJxERWSONBJZ0RRGcOgXuw45ERFahBCDpiSK46irYuROuvDJ+LSKZpQQg6ZmdhSNHIAjinxq3IZJpSgCSnulpuOIKKJXin9PTw45IRFagxlhJjxkcOhR/85+ejl+LSGYpAUi6CgXYsWPYUYhIH1QFJCKSU0oAIiI5pQQgIpJTSgAiIjmlBCAiklNKACIiOaUEICKSU0oAIiI5pQQgIpJTSgAiIjmlBJAnmqtfRNooAeRFH3P1N5tN6vX62Y9NRIZCk8HlRZe5+qPt22k2m3hyR1Aulxefi8j40x1AXiRz9TeKReqXX059yxaCIGBiYoJqtUq1WoUTYHcbnBh2sCJyNugOIAcWq3W+8hUqc3PYjh3L5uoPw5CX7nuJTX+8KT4rbh5QMFGk9QJEMkIJYEw1Go3F6pxKpYK1LraTk123LxaLbHr7JprlJvxzoMHi/q19O1+XSiUKhTXcRLbaIY4ciVcMO3QoXj9ARIZCCWDMhGFIs9mkUqms7eIM2G6jcmul7+2bzSbNZvPl/c1WTgrd1gzW4jEiQ6OvX2MkDEPCMKRara754r8e5XKZiYmJxUelUiEMQ+bn57vvoDWDRTJFdwBjonXxr1T6/wY/CCv2JNKawSKZogQwBoIgwN2HfvHvi9YMFskMVQGNuDAMiaKIcrk87FBEZMSsmgDM7KCZPWtmx9vKbjKzx80sMrNal312m9lpM/tQj2N+wMyeMjM3s20b+xPyK4oigiAYjW/+IpI5/dwB3A1c11F2HLgBONxjnzuBB1Y45iPA1cB3+/j90kOj0WBiYmLYYYwuzY0kObdqAnD3w8CPOsqecPcnu21vZtcDTwOPr3DMv3b3Z9YWqnQql8tLumGuV6PRoNFoUK/XqdfrG5oOIoqi0ZhOoo+5kUTGXaqNwGZ2LnAbcA3QtfpnHce8FbgVYPfu3WkccmwUi0WCIFhWHgQBURQRRRHfLxT4OvAmYFeP45TL5SWDvRqNBrB0AJj16LHT7WI/EnclGpMgknovoNuBO939dK8Lxlq5+wHgAECtVhuBr5bD1bojqFQqzM3N8fXJSb4ARGHIr/QYBdzOzEbjAr5RrTEJrVHJGpMgOZR2ArgMuNHM7gC2ApGZLbj7p1L+PZJo/wbeaDQws8UeQRMTE7ylUiGan+c6NRQvpTEJIukmAHff13puZvuB07r4D1alUlmc7K1YLFIqvfxP6u5sm5/n/dVqzyqcsy5Lk8FpTILkXD/dQO8FjgKXmtlJM7vFzN5pZieBvcB9ZvZgH8e538wuTJ7/+2T/ncC3zOz3N/Zn5Fu9XqdUKi25+NefqhPeFTL53GS2Lv5qeBXJDBuJHhuJWq3mMzMzww4jM9ydubk5pqamls398/ynnmfrn26FdzG4qZ3X6tSp+OIfBHixSOPppxe/gbfOw4mJiewkLJExYWbH3H3ZmC1NBTGigiBgYWGBc845Z9nFv9FoUL22CucQ98cakvYpqc0M37IFLr8cjh6FvXup7NyJtcXe3gOpfZWyYrF49oMXyQElgBFyAviqO3tffJHdhQKTk5NdL45hGFK+pEzj4vhiSuPl99rv+AqFwoankAiCgDAMl5W3GqOXfZt/+OGebQDdeiA1m80lXV3NTCOfRVKiBDBC/uyll/hCo4FPTfHqQoEoinjxxRcXL7JRFDExMUG5XF7SHtBLGIaL37jbfc+drwNXm7GL7n39W2WlUml5t9H2ht5Oa2x47UxQYRjywgsvsHnzZlUViWyQEsAIaDQaRFHEvkaDwuQk1ybVJoVCgc2bNy9u5+6cOXOm7378xWKx6x3EYeBLQJl1NB8McNWvVpXS1NRUKscTyTslgAxrXfDK5TKFQoHXVqu8Oopo1us02kbptmYDbTabbNq0acO/95qOn2sygBG2YRgSBMHi5wBkqzupyIjSdNAZNT8/v1i90t7IWygUFlffqlQqi++XSqXUqkR2EX/z7zV1xIpSXPXL3VlYWFis2lpy8Vd3UpEN0x1ARhWLxTUv61gulxcHhXUu4L5WURQtW++3/bg9q2FSHGG7sLBAtdsgNs3jI5IKJYCM6nd8RhiGixfIbnX6rV46/SSC9t9ZLBaZ7GPuoK5SGGHbaDSoVCrd49Y8PiKpUAIYcc1mc8UpmIvF4khO7mZmBEFAEATLprjQPD4i6VACyKDWSl+9tE/PvLCwwJYtW8auS2R7988gCBarthaTmebxEdkwJYAMajab3fvX9zBuF38gHvX2NeAaKO2K5zmq1+tEUbTmthER6U4JYMSN28W/2WzG1VkPgH/BscDgvfF762kYF5HelABG3MAn8zvL/e2jKIobf99i8dl5DaCZH0QGQl+nRlgYhoNNAEPob1+pVOLpKTY0GGFEaFF6GTLdAWRMEATMzc1RrVaXzKbZrtUI3Ood0znrZi+d2yyZqbPt9yy+PnUKHnkEC0P8kUfg5MmeDa+tmEql0oZm7xy3Kq2eBjhlhki/lACG7MUXXwRevuh+34yHp6Z4a7U6/C+/u3bBL/zCyxepXbtWrQbqnL2zm179+6MootFo5GP6Zw1mkwxQAhiyzsncDs3P86VicX0TsaVtHf3t+5leunXH0pkEzIxqtbrucEeKBrNJBigBDFqrEXXbNnjuuRUvpI1Gg6sLBSbK5WGu47LUAPrbaz5/NJhNMkGVjoPUque96CI477xVG1PdnYsLhbFv+5REK7nq4i9DogQwSK163jCEubml9b1dRFGUn0ZQERk6JYBBatXzFouwZcuqUyRPTk4yPz+/ZBbOVKi7ofSicyPXlAAGqVXP+/3vwz/8Q9yN8qGHet7ymxlTU1MsLCwwPz+fTgyaO1960bmRe0oAg9aq5y0W+67v3bx587L5+NetW3dDEdC5IUoAWVWtVtO5C0hxhS4ZMzo3ck/dQDOotYhLKn3i1d1QetG5kXu6A8iY1gIvy6aC3khjnbobSi86N3JNdwAZcubMmcWLf6PRIAxDnn/+eQrAxNvfjh09Cnv34p/7HJx/PlYodJ/Dp4ueyyuKSG6tegdgZgfN7FkzO95WdpOZPW5mkZnVuuyz28xOm9mHehzzEjN71My+Y2afNzMNDSW+gFcqFdwddycIgrhsbg4/epRKGFJ55BEmfvqnmbj2WirJojGtR6VSWfK6vbzZbFKv11d9NJ9uwkHiBVlEZKz1UwV0N3BdR9lx4AbgcI997gQeWOGYHwfudPdXAj8GbukjjrFXKBQWVwKbmJhg06ZNnHvuuTS2bsX27o0b69zjgWVr6LXRSizdkkP7w8xoPtiEPyJejUtExtqqCcDdDwM/6ih7wt2f7La9mV0PPA083uN9A34R+GJSdA9w/RpiHlvVapUoilhYWKBer9NoNAiCgM1TU0w8/DCcOAH79qXea6PZbLKwsECpVOKct50D74LsTEYkIoOSahuAmZ0L3EZ8+eha/QOcBzzv7q05g08CF6UZxygrl8vdZ9Q0g/PPjweSpdRr4wRw/8IC1xaL7Jmbi4/ZWohFRMZe2r2Abieu2jm9wjbdrlo9u7aY2a1mNmNmM7MaqJJqr42vEd+GTVx9tUaDiuRQ2r2ALgNuNLM7gK1AZGYL7v6ptm2eA7aaWSm5C9gJ/KDXAd39AHAAoFaracKSFF0DlGZnOV8Lk4jkUqp3AO6+z933uPse4LeB/9px8cfjfoqHgBuTovcAf5JmHNKfXcC7pqexQY4G1WRjIpnVTzfQe4GjwKVmdtLMbjGzd5rZSWAvcJ+ZPdjHce43swuTl7cBv2ZmTxG3CXx2/X+CbIgZ/o1vrDpR3bposjGRTLNeA4eyqFar+czMzLDDGDv1en35yOM0nDoVX/yDIL7DWGFReREZHDM75u7LxmxpKgghiiLq9XrPUcTrpsnGRDJNU0EIk5OTQHwn0FIsFimVNnh6aLIxkUxTApBF7dVArcFhEI8kXncV0QAWlReRdCgBSFftA9LcfcndQalUolgsDis0EUmJEoCsqvMOIAgCGo0GECeHcrlMoaDmJJFRowQga9bZNlCv15UEREaQ/scO2xgMlJqYmFhSRSQio0EJYJjGaKCUvv2LjB79rx2m2dl4/p32eXhERM4SJYBhGpOBUmEY6g5AZASpEXiYxmSgVBAEg5lKQkQGSglg2DRQSkSGRPftsiFBEGhQmMiIyk8CGIPullkUhuHG5wwSkaHIRwLIWndLJSMRyYB8JIAsdbfMWjLagGazqW//IiMsHwkgS90ts5SMNiiKItX/i4ywfCSAVnfLQSx7uFZZSkYikmv5uX/PSnfLMen7LyKjLx93AEPwwgsvMDc3t7ioCieAg8nPVjLSxV9Ehig/dwBn2dTUFAALCwvMzc3Bn0DlyxWC+YDJ90+etcbTKIpoNptYW7Jprf1r7hu6E2k0GkuO2y93p1gsUiwW17W/iKRDCWDAqtUq1WoV3gHzpXmifRFhGBKG4eI2pVJpyeu0tC60XadpaPVGOnIkbos4dCi+M1nj8SuVyrriaiUmd19MAlpcRuTsUgLYgNaqWH3ZAcWbi5SaJZrNJpVKBXen0WjQbDY555xzzu6Fr1tvpDW2kfg6xzGY2eIdQKdGo/HyHYoZhUJBXU1FBkT/szagXC5Tr9cxM/6+XObrhQLXALtW2KdSqRAEAWfOnKFarbJ58+azFe5Srd5IrTuAdfRGGkT1TecdRRiGi4vNmBnuTqFQWFyvWETWTwlgA8wsrt4BHmw0+II7TXfe2+XC2Lp4tWzatIkwDJd8421t1+vbccrBb6g30prufjag22fRnhRalBRE1k4JICVvqVQoAdcA/U6M3OsiHwQB9XqdYrE42OqPdXSNbTabRFE01Lr6lZJCe6JVUhBZmRJASnYBN6d0rFKpRKlUIggCFhYWOPlD4xt/V+Dqn4LdF9lZ6z0ThiFBECyLLYsX1X7vFMxsXQ3XIuNICSDDWong4e85/3sKis/Ae3fGvWfS0KsRt9Uzp1AojPRCL92SQhRFSgoiiVUTgJkdBN4GPOvur03KbgL2A68CXu/uM0n564EDrV2B/e7+5S7H/EXgt4AKcAy4xd2Dzu0k9uZXGvYUXPPK7hc16V+3pKakIHnVTyXu3cB1HWXHgRuAw13Ka+7+umSfz5jZkiRjZgXgHuBdSUL5LvCetYeeH7suhJvfGP+U9LWSQvujVCpRr9eXPUTGyap3AO5+2Mz2dJQ9Acu7Abr7S20vq0C3OobzgLq7/23y+mvAR4DP9hu0yKB1u1Nw965JYJSrySTfUm8DMLPLiGe9uRh4d5eqneeAspnVkqqjG1mh67yZ3QrcCrB79+60wxXpm5n1TArtg9cgHs+gaS4k61JPAO7+KPAaM3sVcI+ZPeDuC23vu5m9C7jTzCaArwI96//d/QBJu0KtVtMSWpIpKyWF1bYTGbaB9QJy9yfM7AzwWmCm472jwD4AM3sz8DODikPkbGsfINjS2dDcGtGshmYZplQTgJldApxw98DMLgYuBZ7pst20uz+b3AHcBvxmmnGIZE2v3ket6cJbA9iKxWImx1nIeOqnG+i9wJXANjM7CXwM+BHwSWA7cJ+ZPebu1wJvAD5sZk0gAn7V3Z9LjnM/8D53/wHw62b2NuJeSJ9292+k/6eJZFuhUFh2pxCG4ZKkAAx+RLjklq13RsdhqNVqPjMzs/qGImMkCILFEdmtpFAqlTQeRPpmZsfcvdZZrq8VIhnXGhHertlsLhsRXqlUtJaCrIkSgMgIKpfLy9oKGo0GURQtvlbPI1mNEoDImOjsUdTZyKxkIJ2UAETGVHsjs5KBdKMEIJIDvZKBxiLkmxKASM50JoP2JTeVDPJFCUAkx9oHqLUnA62mlg/qMybjL4rg1CkYoTEvw9A+LXahUKBery/pVSTjRwlAxlsUwVVXwc6dcOWV8eu8WkMiLBaLTExMEARBaivQSfYoAch4m52FI0cgCOKfs7PDjmg41pkIK5UKxWKRer1OGIaDjVHOOiUAGW/T03DFFVAqxT+np4cd0XBsIBEWCgVKpZKqg8aQEoCMNzM4dAhOnoSHHopf59EGEmHr278ahcePegHJ+CsUYMeOYUcxXK1EODsbX/z7SIStHkFa3Wx8KQGI5EUfibC1mllrTIAu/ONNVUAio2gAXVsbjQaNRmOxK6gu/uNPCUBk1Ayga+vCwsJi109d+PNDCUBk1KTYtTUIAhYWFpiYmNACMzmkBCAyalLo2tq68Ls71WpV3/pzSo3AIqNmHT16WlrLSxaLxWXrEUv+KAGIjKI1dm1tdenUhV/aKQGIjKkwDGk2m+rSKT0pAYiMmUajgbsvmfdfpBslAJEx0armKZVK6tETRetqI8kb9QISGSOpX/xHcS0FTQHeNyUAkTHRmr8/tWmbR/VCqinA+6YEIDJGJiYmCMOQer2+7OFr/RbfeSH9nVk4MZi4U6UpwPumNgCRMdNtYXd3p9FoAPHi7+6+pFdQe3JolfuWLXD55XD0KOy5HP5sC3ZuA3+PZ7tX0QbGSeTNqgnAzA4CbwOedffXJmU3AfuBVwGvd/eZpPz1wIHWrsB+d/9yl2O+CfgE8R3IaeC97v7Uhv8aEenKzBYXf1+Thx+OL6T1afg/BtcA6zjMWacpwPvSTxXQ3cB1HWXHgRuAw13Ka+7+umSfz5hZtyTzaeBfJ9v9L+A/rSVoETlLWhfS3QY3A7uGHZCkadU7AHc/bGZ7OsqeAJbdArr7S20vq0CvSkcHppLnW4Af9BWtiIikJvU2ADO7DDgIXAy8292DLpu9D7jfzOaBF4DLVzjercCtALt37047XBGR3Eq9F5C7P+rurwH+GfARM+s2FPGDwFvdfSdwF/DfVzjeAXevuXtt+/btaYcrIpJbA+sGmlQTnQFe215uZtuBn3P3R5OizwNXDCoOERHpLtUEYGaXtBp9zexi4FLgmY7NfgxsMbOfSV5fAzyRZhwiIrK6frqB3gtcCWwzs5PAx4AfAZ8EtgP3mdlj7n4t8Abgw2bWBCLgV939ueQ49wPvc/cfmNm/A75kZhFxQrg5/T9NRERWYmseHThEtVrNZ2Zmhh2GiMhIMbNj7l7rLNdUECIiOTVSdwBmNgt8t61oG/DckMJZD8U7OKMUKyjeQVO8S13s7su6UY5UAuhkZjPdbmuySvEOzijFCop30BRvf1QFJCKSU0oAIiI5NeoJ4MDqm2SK4h2cUYoVFO+gKd4+jHQbgIiIrN+o3wGIiMg6KQGIiOSVuw/lQby0xCHieYAeB/5DUv4J4G+AbwFfBrb22P8Z4NvAY8BMW/krgK8B30l+/kRSbsD/AJ5Kjv1PMxJv1/2BPcB8sv1jwO9lJN79wPfb4npr23sfST7fJ4FrMxLv59tifQZ4LCOf71bgi8m2TwB7B3X+DjDWrJ67veLN6rnbK96BnLtLfvd6d9zoA7igdRIDm4G/BV4NvBkoJeUfBz7eY/9ngG1dyu8APpw8/3Brf+CtwAPJf6TLgUczEm/X/ZN/5OMZ/Hz3Ax/qUv5q4JvECwZeAvw/oDjseDu2+W/Ab2Tk872HeG4sgAovXzxTP38HGGtWz91e8Wb13O0a76DO3fbH0KqA3P2H7v5XyfMXiTPfRe7+VX95EZm/AHau8dDvIP5ASX5e31b+Bx77C2CrmV0w7HhT+HvParwreAfwR+5ed/e/I/429fqsxGvx8nX/Erh3PfunGa+ZTQFvBD6b7N9w9+eTt1M/fwcVaxbP3VU+216Gdu72E2/a5267TLQBJEtO/hPg0Y63bib+1tONA181s2PJqmEtO9z9hxD/wwDTSflFwIm27U4mZcOOd6X9LzGzvzazh81s33piHVC8HzCzb5nZQTP7iaQs65/vPuCUu3+nrWxYn+9PArPAXcnv/30zOzd5b6Dnb8qxrrR/Fj9byN6528/nO7Bzd8O3EBt9AJuAY8ANHeUfJa43sx77XZj8nCa+fXtj8vr5ju1+nPy8D3hDW/nXgZ8fdry99ie+HT0vef7zxCfo1LDjBXYAReIvD78JHEzKfxf4N237fxb4pWHH2/b+p4H/2PZ6aJ8vUAMC4LLk9e8A/2XQ52/asWbx3F3ls83cudvn5zuQc9d9iG0ASfBl4EHg1zrK3wMcBc7p8zj7Ser2iBtxLkieXwA8mTz/DPDLbfssbjfMePvdH3gIqGUh3rbyPSR1kcSNaB9pe+9BksasYcdLvO7FKWBnFj5f4HzgmbbX+4D7Bnn+DiLWLJ67q8WbtXO3j893IOfu4r7r2SmNB3Fj1h8Av91Rfh3wf4HtK+x7LrC57fkR4Lrk9SdY2oh2R/L8X7C0Ee0vMxJv1/2JF9spJs9/krj3wisyEO8Fbdt9kLjuFOA1LG1Ie5q1NaQNJN62Yzyclc832e7PgUuT5/uBTwzq/B1grJk7d1eJN3Pn7krxDurcXXKs9eyUxoN49TAn7iK12C2LuAHmBB1dnIALgfvb/uhvJo/HgY+2Hfc84tvj7yQ/X9H2j/S7xC3832bt30gGFW+v/X8p2fabwF8Bb89IvJ9LPr9vAX/a8Z/qo8nn+yTwlizEm7x/N/ArHWVD+3yT168DZpL9/5iXu3umfv4OMNbMnburxJu5c3eleAd17rY/NBWEiEhOZaIXkIiInH1KACIiOaUEICKSU0oAIiI5pQQgIpJTSgAiIjmlBCAiklP/H/0+Bj3LTEOvAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Graph of paths, pickups, dropoffs, and charging locations\n",
"\n",
"an_id = list(IDs)[123]\n",
"a_gps_df = GPS_ddf[an_id]\n",
"an_od_df = OD_ddf[an_id]\n",
"\n",
"plt.plot(a_gps_df[\"lat\"], a_gps_df[\"lon\"], linewidth=.025, alpha=1, color=\"black\")\n",
"plt.scatter(an_od_df[\"plat\"], an_od_df[\"plon\"], s=2, color=\"magenta\", alpha=.5)\n",
"plt.scatter(an_od_df[\"dlat\"], an_od_df[\"dlon\"], s=2, color=\"cyan\", alpha=.5)\n",
"plt.scatter(charging_locations[\"lat\"], charging_locations[\"lon\"], s=5, color=\"red\", alpha=1)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"# Let's check out the traffic charging event extraction code ...\n",
"\n",
"from datacleaning import e_taxi"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"taxi = e_taxi()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}