Permalink
Cannot retrieve contributors at this time
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?
traffic_dataproc/nb_013p2_charging-event-extraction.ipynb
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
507 lines (507 sloc)
25.2 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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": "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\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 | |
} |