Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
CS437 Lab4
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
suazo2
CS437 Lab4
Commits
72929ee8
Commit
72929ee8
authored
2 years ago
by
suazo2
Browse files
Options
Downloads
Patches
Plain Diff
Upload New File
parent
d0b99554
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
Notebook.ipynb
+377
-0
377 additions, 0 deletions
Notebook.ipynb
with
377 additions
and
0 deletions
Notebook.ipynb
0 → 100644
+
377
−
0
View file @
72929ee8
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "9ef9c1b3",
"metadata": {},
"outputs": [],
"source": [
"import boto3\n",
"from botocore.config import Config\n",
"import pandas as pd\n",
"import matplotlib as mp\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "d7385261",
"metadata": {},
"outputs": [],
"source": [
"ACCESS_KEY = 'AKIA5II7XXI23QL6ICS5'\n",
"SECRET_KEY = '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'\n",
"\n",
"my_config = Config(\n",
" region_name = 'us-east-1',\n",
" retries = {\n",
" 'max_attempts': 10,\n",
" 'mode': 'standard'\n",
" }\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "f1ab6dae",
"metadata": {},
"outputs": [],
"source": [
"# create IoT Analytics client\n",
"client = boto3.client('iotanalytics',\n",
" aws_access_key_id=ACCESS_KEY,\n",
" aws_secret_access_key=SECRET_KEY,\n",
" config=my_config\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "f2bcc76c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[{'datasetName': 'emission_ds', 'status': 'ACTIVE', 'creationTime': datetime.datetime(2023, 4, 2, 23, 11, 0, 5000, tzinfo=tzlocal()), 'lastUpdateTime': datetime.datetime(2023, 4, 3, 2, 38, 32, 191000, tzinfo=tzlocal()), 'triggers': [{'schedule': {'expression': 'cron(10/5 * * * ? *)'}}], 'actions': [{'actionName': 'action_11', 'actionType': 'QUERY'}]}]\n",
"[{'channelName': 'emissionchannel', 'channelStorage': {'serviceManagedS3': {}}, 'status': 'ACTIVE', 'creationTime': datetime.datetime(2023, 4, 2, 22, 59, 6, 629000, tzinfo=tzlocal()), 'lastUpdateTime': datetime.datetime(2023, 4, 2, 22, 59, 6, 629000, tzinfo=tzlocal()), 'lastMessageArrivalTime': datetime.datetime(2023, 4, 3, 2, 56, 23, 350000, tzinfo=tzlocal())}]\n"
]
}
],
"source": [
"print(client.list_datasets()['datasetSummaries'])\n",
"print(client.list_channels()['channelSummaries'])"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "e31db523",
"metadata": {},
"outputs": [],
"source": [
"# Load dataset\n",
"dataset_name = \"emission_ds\"\n",
"dataset = client.get_dataset_content(datasetName=dataset_name)\n",
"\n",
"# get pandas data frame\n",
"df = pd.read_csv(dataset['entries'][0]['dataURI'])"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "e1c4a0a3",
"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>device_id</th>\n",
" <th>max_co2</th>\n",
" <th>timestep_time</th>\n",
" <th>__dt</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>device_0</td>\n",
" <td>12353.41</td>\n",
" <td>118.0</td>\n",
" <td>2023-04-03 00:00:00.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>device_3</td>\n",
" <td>9638.66</td>\n",
" <td>120.0</td>\n",
" <td>2023-04-03 00:00:00.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>device_2</td>\n",
" <td>11307.68</td>\n",
" <td>119.0</td>\n",
" <td>2023-04-03 00:00:00.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>device_1</td>\n",
" <td>18960.98</td>\n",
" <td>119.0</td>\n",
" <td>2023-04-03 00:00:00.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>device_4</td>\n",
" <td>19466.87</td>\n",
" <td>120.0</td>\n",
" <td>2023-04-03 00:00:00.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>793</th>\n",
" <td>device_4</td>\n",
" <td>15216.78</td>\n",
" <td>19.0</td>\n",
" <td>2023-04-03 00:00:00.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>794</th>\n",
" <td>device_1</td>\n",
" <td>9460.68</td>\n",
" <td>18.0</td>\n",
" <td>2023-04-03 00:00:00.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>795</th>\n",
" <td>device_0</td>\n",
" <td>9818.41</td>\n",
" <td>17.0</td>\n",
" <td>2023-04-03 00:00:00.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>796</th>\n",
" <td>device_2</td>\n",
" <td>11307.68</td>\n",
" <td>18.0</td>\n",
" <td>2023-04-03 00:00:00.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>797</th>\n",
" <td>device_0</td>\n",
" <td>9818.41</td>\n",
" <td>18.0</td>\n",
" <td>2023-04-03 00:00:00.000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>798 rows × 4 columns</p>\n",
"</div>"
],
"text/plain": [
" device_id max_co2 timestep_time __dt\n",
"0 device_0 12353.41 118.0 2023-04-03 00:00:00.000\n",
"1 device_3 9638.66 120.0 2023-04-03 00:00:00.000\n",
"2 device_2 11307.68 119.0 2023-04-03 00:00:00.000\n",
"3 device_1 18960.98 119.0 2023-04-03 00:00:00.000\n",
"4 device_4 19466.87 120.0 2023-04-03 00:00:00.000\n",
".. ... ... ... ...\n",
"793 device_4 15216.78 19.0 2023-04-03 00:00:00.000\n",
"794 device_1 9460.68 18.0 2023-04-03 00:00:00.000\n",
"795 device_0 9818.41 17.0 2023-04-03 00:00:00.000\n",
"796 device_2 11307.68 18.0 2023-04-03 00:00:00.000\n",
"797 device_0 9818.41 18.0 2023-04-03 00:00:00.000\n",
"\n",
"[798 rows x 4 columns]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "756b529a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot: xlabel='device_id'>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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UJMnT9a8efMUHh7e3EsDAACWaZX36GzevFlRUVHq16+fcnNzdfr0aWddeXm5Ll++rLS0NGdZbGysEhMTtW3bNknS9u3b5Xa7nciRpJSUFLndbp8xiYmJTuRI0siRI+X1elVeXt4alwUAADqZZt/RuZVRo0bpscceU+/evXXkyBH94he/0A9+8AOVl5crKChINTU1CgwMVLdu3Xy2i46OVk1NjSSppqZGUVFRjfYdFRXlMyY6Otpnfbdu3RQYGOiMuZHX65XX63V+rquru6trBQAAHVuLh8748eOd/52YmKj7779fvXv31rp16zR27Niv3c4YI5fL5fz81f99N2O+av78+Zo7d+5tXQcAAOj8Wv3j5T169FDv3r118OBBSVJMTIwaGhpUW1vrM+706dPOHZqYmBidOnWq0b7OnDnjM+bGOze1tbW6fPlyozs91+Xn58vj8TiPqqqqu74+AADQcbV66Jw9e1ZVVVXq0aOHJCkpKUkBAQHasGGDM6a6ulr79u3ToEGDJEmpqanyeDzauXOnM2bHjh3yeDw+Y/bt26fq6mpnTGlpqYKCgpSUlNTkuQQFBSk8PNznAQAA7NXsl64uXLigQ4cOOT8fOXJEFRUVioiIUEREhObMmaNHHnlEPXr00NGjR/Xzn/9ckZGR+uEPfyhJcrvdysnJ0YwZM9S9e3dFRERo5syZGjhwoPMprP79+ys9PV25ublaunSpJOmpp55SRkaGEhISJElpaWkaMGCAsrOztWDBAp07d04zZ85Ubm4uAQMAACTdQeh89NFHGjZsmPPz9OnTJUlPPPGE3njjDe3du1dvv/22zp8/rx49emjYsGF69913FRYW5myzePFi+fv7a9y4cbp06ZKGDx+u5cuXy8/PzxmzatUqTZs2zfl0VmZmps/v7vHz89O6des0ZcoUPfDAAwoODlZWVpZeeeWV5j8LAADASi5jjGnvk2gvdXV1crvd8ng8rXoXqM8L61pt323l6Euj2/sUWoQNcyHZMx8AGrPh76nW/juqOf9+811XAADAWoQOAACwFqEDAACsRegAAABrEToAAMBahA4AALAWoQMAAKxF6AAAAGsROgAAwFqEDgAAsBahAwAArEXoAAAAaxE6AADAWoQOAACwFqEDAACsRegAAABrEToAAMBahA4AALAWoQMAAKxF6AAAAGsROgAAwFqEDgAA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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Bar graph max emission per vehicle\n",
"\n",
"max_emission = df.groupby('device_id')['max_co2'].max()\n",
"max_emission.plot.bar(x='device_id', y='max_co2', rot=0)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "2b50f3d0",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot: xlabel='timestep_time'>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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5557xGOPPdZuMTfVPt3OUuchk6J69OvXT0yfPt1s21133SVefPFFmSKyroULFzbYsNTU1AitViuWLl0qbSsvLxcajUasXr26nSK0rttPuOYcc2FhoVAqlSIxMVEqc+nSJeHk5CSSkpLaLXZLaSgpevTRRxt8TUerA5OWnv/z588Xd911l9m2adOmif79+1stxvpYot26++67xWuvvWbp0BrU2pjHjh0r/vKXvzTadllLS2PeuXOn0Gg0db5QtKeWxrx8+XJxxx13mG179913Rbdu3awWY2OakxRZ6jzk5bPbVFRUID09HTExMWbbY2JikJKSIlNU1nf69Gno9XoEBwfjj3/8I3755RcAQFZWFnJzc83qQ61WIzo6usPWR3OOOT09HZWVlWZl9Ho9QkNDO1S97N27F/7+/ujduzemTJmCvLw8aV9HrIPWnP+pqal1ysfGxuL7779HZWWl1WL9NUu0WzU1NSguLrb4vaQa0tqY161bh7Nnz2LhwoXWDrGO1sT81Vdf4YEHHsCyZcvQtWtX9O7dG/PmzUNZWVl7hNyqmKOionDx4kXs2LEDQghcuXIF//nPf/DII4+0R8itYqnzkIs33ubatWuorq6uczPJgICAOjeR7CgiIiKwceNG9O7dG1euXMHrr7+OqKgonDhxQjrm+urj/PnzcoRrdc055tzcXKhUKnh7e9cp01H+TkaMGIEnnngCQUFByMrKwiuvvILBgwcjPT0darW6Q9ZBa87/3NzcestXVVXh2rVr0Ol0VovXxBLt1ltvvYWSkhKMGTPGGiHW0ZqYT58+jRdffBH79++Hi0v7//tqTcy//PILDhw4AFdXV2zduhXXrl3DjBkzcP369XYZV9SamKOiorB582aMHTsW5eXlqKqqwqhRo7By5Uqrx9taljoPmRQ1QKFQmD0XQtTZ1lGMGDFC+jksLAyRkZG48847sWHDBmlgrSPVh0lrjrkj1cvYsWOln0NDQ/HAAw8gKCgI27dvx+jRoxt8XUeog5b+7usrX992a2vtefrxxx9j0aJF+PLLL+Hv72+t8OrV3Jirq6sxfvx4vPbaa+jdu3d7hVevltRzTU0NFAoFNm/eLN34eMWKFfjDH/6A9957D25ublaPF2hZzJmZmZg9ezZeffVVxMbGIicnB88//zymT5+OtWvXtke4rWKJ85CXz27j5+cHZ2fnOhl0Xl5enSy0o/Lw8EBYWBhOnz4tzUJzpPpozjFrtVpUVFSgoKCgwTIdjU6nQ1BQEE6fPg2gY9ZBa85/rVZbb3kXFxf4+vpaLdZfa0u79cknn2Dy5Mn49NNPMXToUGuGaaalMRcXF+P777/HzJkz4eLiAhcXF/z1r3/FDz/8ABcXF/z3v/+1uZiB2vOma9euUkIEAH369IEQol1marYm5iVLluDBBx/E888/j3vvvRexsbF4//338e9//xs5OTlWj7k1LHUeMim6jUqlQnh4OJKTk822JycnIyoqSqao2pfRaMTJkyeh0+kQHBwMrVZrVh8VFRXYt29fh62P5hxzeHg4lEqlWZmcnBwcP368w9ZLfn4+srOzpW7ojlgHrTn/IyMj65TftWsXHnjgASiVSqvF+mutbbc+/vhjTJo0CR999FG7jxdpacxeXl7IyMjAsWPHpMf06dMREhKCY8eOISIiwuZiBoAHH3wQly9fxo0bN6RtP//8M5ycnNCtWzerxgu0LubS0lI4OZmnB87OzgBu9b7YGoudhy0alu0gTNMX165dKzIzM0VCQoLw8PAQ586dkzs0q5g7d67Yu3ev+OWXX0RaWpqIi4sTnp6e0vEuXbpUaDQa8fnnn4uMjAwxbtw4u5+SX1xcLI4ePSqOHj0qAIgVK1aIo0ePSlNUm3PM06dPF926dRO7d+8WR44cEYMHD7ar6eiN1UFxcbGYO3euSElJEVlZWWLPnj0iMjJSdO3atUPVQX2aOv9ffPFFER8fL5U3TQV+7rnnRGZmpli7dq2sU/KbG/dHH30kXFxcxHvvvWe27EJhYaHNxnw7OWaftTTm4uJi0a1bN/GHP/xBnDhxQuzbt0/06tVL/OlPf7LZmNetWydcXFzE+++/L86ePSsOHDggHnjgAdGvX792i7mpNtpa5yGToga89957IigoSKhUKnH//feLffv2yR2S1ZjW4FEqlUKv14vRo0eLEydOSPtramrEwoULhVarFWq1Wjz88MMiIyNDxojbbs+ePQJAncfEiROFEM075rKyMjFz5kzh4+Mj3NzcRFxcnLhw4YIMR9M6jdVBaWmpiImJEV26dBFKpVJ0795dTJw4sc7x2XsdNKSx83/ixIkiOjrarPzevXvFfffdJ1QqlejRo4f4xz/+0c4R12pJ3NHR0Y2eA7YY8+3kSIqEaHnMJ0+eFEOHDhVubm6iW7duYs6cOaK0tNSmY3733XfF3XffLdzc3IROpxMTJkwQFy9ebLd4m2qjrXUeKoSw0b4wIiIionbEMUVEREREYFJEREREBIBJEREREREAJkVEREREAJgUEREREQFgUkREREQEgEkREREREQAmRUREREQAmBTRbfbu3QuFQoHCwkK5Q7EZPXr0wDvvvCN3GEREZGVMihzcwIEDkZCQID2PiopCTk6O2R2d25tcidn69evRuXPnOtsPHz6MqVOntmssRETU/lzkDoBsi0qlglarlTsMm9KlSxe5QyAionbAniIHNmnSJOzbtw9///vfoVAooFAosH79erNeGlPvyddff42QkBC4u7vjD3/4A0pKSrBhwwb06NED3t7emDVrFqqrq6X3rqiowPz589G1a1d4eHggIiICe/fulfafP38eI0eOhLe3Nzw8PHDPPfdgx44dOHfuHAYNGgQA8Pb2hkKhwKRJkwAAQggsW7YMd9xxB9zc3NC3b1/85z//kd7T1MO0fft29O3bF66uroiIiEBGRkaTdbF371489dRTMBgMUl0sWrQIQN3LZwqFAh988AHi4uLg7u6OPn36IDU1FWfOnMHAgQPh4eGByMhInD171uwztm3bhvDwcLi6uuKOO+7Aa6+9hqqqqhb8xoiIyKraeidbsl+FhYUiMjJSTJkyReTk5IicnByxe/duAUAUFBQIIYRYt26dUCqVYtiwYeLIkSNi3759wtfXV8TExIgxY8aIEydOiG3btgmVSiUSExOl9x4/fryIiooS3333nThz5oxYvny5UKvV4ueffxZCCPHII4+IYcOGiR9//FGcPXtWbNu2Tezbt09UVVWJLVu2CADi1KlTIicnRxQWFgohhHjppZfEXXfdJZKSksTZs2fFunXrhFqtFnv37hVC3Lqrcp8+fcSuXbvEjz/+KOLi4kSPHj1ERUVFo3VhNBrFO++8I7y8vKS6KC4uFkIIERQUJN5++22pLADRtWtX8cknn4hTp06Jxx57TPTo0UMMHjxYJCUliczMTNG/f38xfPhw6TVJSUnCy8tLrF+/Xpw9e1bs2rVL9OjRQyxatKjNv0ciIrIMJkUOLjo6Wvz5z3+WnpsSi18nRQDEmTNnpDLTpk0T7u7uUtIghBCxsbFi2rRpQgghzpw5IxQKhbh06ZLZZw0ZMkQsWLBACCFEWFhYgwnB7TEIIcSNGzeEq6urSElJMSs7efJkMW7cOLPX/To5y8/PF25ubuKTTz5psi7WrVsnNBpNne31JUV/+ctfpOepqakCgFi7dq207eOPPxaurq7S8wEDBojFixebve+HH34odDpdk3EREVH74JgiapK7uzvuvPNO6XlAQAB69OiBTp06mW3Ly8sDABw5cgRCCPTu3dvsfYxGI3x9fQEAs2fPxjPPPINdu3Zh6NChePzxx3Hvvfc2GENmZibKy8sxbNgws+0VFRW47777zLZFRkZKP/v4+CAkJAQnT55s4VE37texBgQEAADCwsLMtpWXl6OoqAheXl5IT0/H4cOH8cYbb0hlqqurUV5ejtLSUri7u1s0PiIiajkmRdQkpVJp9lyhUNS7raamBgBQU1MDZ2dnpKenw9nZ2aycKZH605/+hNjYWGzfvh27du3CkiVL8NZbb2HWrFn1xmB67+3bt6Nr165m+9RqdZPHoFAomizTEr8+ftN717ft13Xy2muvYfTo0XXey9XV1aKxERFR6zApcnAqlcpsgLQl3HfffaiurkZeXh4GDBjQYLnAwEBMnz4d06dPx4IFC7BmzRrMmjULKpUKAMziuvvuu6FWq3HhwgVER0c3+vlpaWno3r07AKCgoAA///wz7rrrribjtkZdmNx///04deoUevbsaZX3JyKitmNS5OB69OiBgwcP4ty5c+jUqZPUs9EWvXv3xoQJE/B///d/eOutt3Dffffh2rVr+O9//4uwsDD87ne/Q0JCAkaMGIHevXujoKAA//3vf9GnTx8AQFBQEBQKBb7++mv87ne/g5ubGzw9PTFv3jw899xzqKmpwUMPPYSioiKkpKSgU6dOmDhxovT5f/3rX+Hr64uAgAC8/PLL8PPzw2OPPdasurhx4wa+/fZb9O3bF+7u7ha7rPXqq68iLi4OgYGBeOKJJ+Dk5IQff/wRGRkZeP311y3yGURE1Dacku/g5s2bB2dnZ9x9993o0qULLly4YJH3XbduHf7v//4Pc+fORUhICEaNGoWDBw8iMDAQQG0v0LPPPos+ffpg+PDhCAkJwfvvvw8A6Nq1K1577TW8+OKLCAgIwMyZMwEA/+///T+8+uqrWLJkCfr06YPY2Fhs27YNwcHBZp+9dOlS/PnPf0Z4eDhycnLw1VdfSb1PjYmKisL06dMxduxYdOnSBcuWLbNIXQBAbGwsvv76ayQnJ+O3v/0t+vfvjxUrViAoKMhin0FERG2jEEIIuYMgsoS9e/di0KBBKCgoqHdlaiIiosawp4iIiIgITIrIgYwYMQKdOnWq97F48WK5wyMiIpnx8hk5jEuXLqGsrKzefT4+PvDx8WnniIiIyJYwKSIiIiICL58RERERAWBSRERERASASRERERERACZFRERERACYFBEREREBYFJEREREBIBJEREREREAJkVEREREAID/D35f9axV1iDRAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 640x480 with 6 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"vehicle_0 = df[df['device_id'] == \"device_0\"]\n",
"vehicle_0 = vehicle_0.sort_values(by=['timestep_time'])\n",
"vehicle_1 = df[df['device_id'] == \"device_1\"]\n",
"vehicle_1 = vehicle_1.sort_values(by=['timestep_time'])\n",
"vehicle_2 = df[df['device_id'] == \"device_2\"]\n",
"vehicle_2 = vehicle_2.sort_values(by=['timestep_time'])\n",
"vehicle_3 = df[df['device_id'] == \"device_3\"]\n",
"vehicle_3 = vehicle_3.sort_values(by=['timestep_time'])\n",
"vehicle_4 = df[df['device_id'] == \"device_4\"]\n",
"vehicle_4 = vehicle_4.sort_values(by=['timestep_time'])\n",
"\n",
"\n",
"fig, axes = plt.subplots(nrows=3, ncols=2)\n",
"vehicle_0.plot(x=\"timestep_time\", y=[\"max_co2\"], ax=axes[0,0])\n",
"vehicle_1.plot(x=\"timestep_time\", y=[\"max_co2\"], ax=axes[0,1])\n",
"vehicle_2.plot(x=\"timestep_time\", y=[\"max_co2\"], ax=axes[1,0])\n",
"vehicle_3.plot(x=\"timestep_time\", y=[\"max_co2\"], ax=axes[1,1])\n",
"vehicle_4.plot(x=\"timestep_time\", y=[\"max_co2\"], ax=axes[2,0])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "c5e15ebc",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot: xlabel='timestep_time'>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Average emission over time (All 5 vehicles)\n",
"df_mean = df.groupby('timestep_time')['max_co2'].mean()\n",
"df_mean.plot(x=\"timestep_time\", y=[\"max_co2\"])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fe3e0b2b",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "conda_python3",
"language": "python",
"name": "conda_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.10.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
%% Cell type:code id:9ef9c1b3 tags:
```
python
import
boto3
from
botocore.config
import
Config
import
pandas
as
pd
import
matplotlib
as
mp
import
matplotlib.pyplot
as
plt
```
%% Cell type:code id:d7385261 tags:
```
python
ACCESS_KEY
=
'
AKIA5II7XXI23QL6ICS5
'
SECRET_KEY
=
'
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
'
my_config
=
Config
(
region_name
=
'
us-east-1
'
,
retries
=
{
'
max_attempts
'
:
10
,
'
mode
'
:
'
standard
'
}
)
```
%% Cell type:code id:f1ab6dae tags:
```
python
# create IoT Analytics client
client
=
boto3
.
client
(
'
iotanalytics
'
,
aws_access_key_id
=
ACCESS_KEY
,
aws_secret_access_key
=
SECRET_KEY
,
config
=
my_config
)
```
%% Cell type:code id:f2bcc76c tags:
```
python
print
(
client
.
list_datasets
()[
'
datasetSummaries
'
])
print
(
client
.
list_channels
()[
'
channelSummaries
'
])
```
%% Output
[{'datasetName': 'emission_ds', 'status': 'ACTIVE', 'creationTime': datetime.datetime(2023, 4, 2, 23, 11, 0, 5000, tzinfo=tzlocal()), 'lastUpdateTime': datetime.datetime(2023, 4, 3, 2, 38, 32, 191000, tzinfo=tzlocal()), 'triggers': [{'schedule': {'expression': 'cron(10/5 * * * ? *)'}}], 'actions': [{'actionName': 'action_11', 'actionType': 'QUERY'}]}]
[{'channelName': 'emissionchannel', 'channelStorage': {'serviceManagedS3': {}}, 'status': 'ACTIVE', 'creationTime': datetime.datetime(2023, 4, 2, 22, 59, 6, 629000, tzinfo=tzlocal()), 'lastUpdateTime': datetime.datetime(2023, 4, 2, 22, 59, 6, 629000, tzinfo=tzlocal()), 'lastMessageArrivalTime': datetime.datetime(2023, 4, 3, 2, 56, 23, 350000, tzinfo=tzlocal())}]
%% Cell type:code id:e31db523 tags:
```
python
# Load dataset
dataset_name
=
"
emission_ds
"
dataset
=
client
.
get_dataset_content
(
datasetName
=
dataset_name
)
# get pandas data frame
df
=
pd
.
read_csv
(
dataset
[
'
entries
'
][
0
][
'
dataURI
'
])
```
%% Cell type:code id:e1c4a0a3 tags:
```
python
df
```
%% Output
device_id max_co2 timestep_time __dt
0 device_0 12353.41 118.0 2023-04-03 00:00:00.000
1 device_3 9638.66 120.0 2023-04-03 00:00:00.000
2 device_2 11307.68 119.0 2023-04-03 00:00:00.000
3 device_1 18960.98 119.0 2023-04-03 00:00:00.000
4 device_4 19466.87 120.0 2023-04-03 00:00:00.000
.. ... ... ... ...
793 device_4 15216.78 19.0 2023-04-03 00:00:00.000
794 device_1 9460.68 18.0 2023-04-03 00:00:00.000
795 device_0 9818.41 17.0 2023-04-03 00:00:00.000
796 device_2 11307.68 18.0 2023-04-03 00:00:00.000
797 device_0 9818.41 18.0 2023-04-03 00:00:00.000
[798 rows x 4 columns]
%% Cell type:code id:756b529a tags:
```
python
# Bar graph max emission per vehicle
max_emission
=
df
.
groupby
(
'
device_id
'
)[
'
max_co2
'
].
max
()
max_emission
.
plot
.
bar
(
x
=
'
device_id
'
,
y
=
'
max_co2
'
,
rot
=
0
)
```
%% Output
<AxesSubplot: xlabel='device_id'>
%% Cell type:code id:2b50f3d0 tags:
```
python
vehicle_0
=
df
[
df
[
'
device_id
'
]
==
"
device_0
"
]
vehicle_0
=
vehicle_0
.
sort_values
(
by
=
[
'
timestep_time
'
])
vehicle_1
=
df
[
df
[
'
device_id
'
]
==
"
device_1
"
]
vehicle_1
=
vehicle_1
.
sort_values
(
by
=
[
'
timestep_time
'
])
vehicle_2
=
df
[
df
[
'
device_id
'
]
==
"
device_2
"
]
vehicle_2
=
vehicle_2
.
sort_values
(
by
=
[
'
timestep_time
'
])
vehicle_3
=
df
[
df
[
'
device_id
'
]
==
"
device_3
"
]
vehicle_3
=
vehicle_3
.
sort_values
(
by
=
[
'
timestep_time
'
])
vehicle_4
=
df
[
df
[
'
device_id
'
]
==
"
device_4
"
]
vehicle_4
=
vehicle_4
.
sort_values
(
by
=
[
'
timestep_time
'
])
fig
,
axes
=
plt
.
subplots
(
nrows
=
3
,
ncols
=
2
)
vehicle_0
.
plot
(
x
=
"
timestep_time
"
,
y
=
[
"
max_co2
"
],
ax
=
axes
[
0
,
0
])
vehicle_1
.
plot
(
x
=
"
timestep_time
"
,
y
=
[
"
max_co2
"
],
ax
=
axes
[
0
,
1
])
vehicle_2
.
plot
(
x
=
"
timestep_time
"
,
y
=
[
"
max_co2
"
],
ax
=
axes
[
1
,
0
])
vehicle_3
.
plot
(
x
=
"
timestep_time
"
,
y
=
[
"
max_co2
"
],
ax
=
axes
[
1
,
1
])
vehicle_4
.
plot
(
x
=
"
timestep_time
"
,
y
=
[
"
max_co2
"
],
ax
=
axes
[
2
,
0
])
```
%% Output
<AxesSubplot: xlabel='timestep_time'>
%% Cell type:code id:c5e15ebc tags:
```
python
# Average emission over time (All 5 vehicles)
df_mean
=
df
.
groupby
(
'
timestep_time
'
)[
'
max_co2
'
].
mean
()
df_mean
.
plot
(
x
=
"
timestep_time
"
,
y
=
[
"
max_co2
"
])
```
%% Output
<AxesSubplot: xlabel='timestep_time'>
%% Cell type:code id:fe3e0b2b tags:
```
python
```
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment