DAT_Projekt/notebooks/hourly_bikes.ipynb

168 lines
48 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "d6fa6fc8",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import holidays"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "a2f9a292",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\nikol\\AppData\\Local\\Temp\\ipykernel_21716\\1257658190.py:2: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n",
" df = df.replace([\"na\", \"NA\", \"Na\"], np.nan)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"operator_name 0\n",
"domain_name 0\n",
"domain_id 0\n",
"counter_site 0\n",
"counter_site_id 0\n",
"counter_serial 0\n",
"longitude 0\n",
"latitude 0\n",
"timezone 0\n",
"iso_timestamp 0\n",
"channels_in 0\n",
"channels_out 0\n",
"channels_unknown 698715\n",
"channels_all 0\n",
"site_temperature 8846\n",
"site_rain_accumulation 8846\n",
"site_snow_accumulation 698715\n",
"year 0\n",
"dtype: int64\n"
]
}
],
"source": [
"df = pd.read_csv(\"../data/processed/hourly_bikes_mannheim.csv\", low_memory=False)\n",
"df = df.replace([\"na\", \"NA\", \"Na\"], np.nan)\n",
"\n",
"print(df.isna().sum())\n",
"df[\"site_temperature\"] = df[\"site_temperature\"].astype(float)\n",
"df[\"site_rain_accumulation\"] = df[\"site_rain_accumulation\"].astype(float)\n",
"df[\"site_snow_accumulation\"] = df[\"site_snow_accumulation\"].astype(float)\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "623979f9",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\nikol\\AppData\\Local\\Temp\\ipykernel_21716\\2870159595.py:15: FutureWarning: The default of observed=False is deprecated and will be changed to True in a future version of pandas. Pass observed=False to retain current behavior or observed=True to adopt the future default and silence this warning.\n",
" agg_df = df.groupby('time_of_day')['channels_all'].sum().reset_index()\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1MAAAJiCAYAAAAi6ZggAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAfWRJREFUeJzt3QmcTWX8x/HHlqWyZd8pa/Zd9qyJtFiikEqplIiKLKEoIoqSCqlEq2RJEUmRvSgq69iXyprd+b++z/9/7v/OuMPMmXvnztz5vF+vm+65986cOefcc57feZ7n90vlOI5jAAAAAADxkjp+bwcAAAAAEEwBAAAAgEf0TAEAAACABwRTAAAAAOABwRQAAAAAeEAwBQAAAAAeEEwBAAAAgAcEUwAAAADgAcEUAAAAAHhAMAWkYKlSpYr3o0GDBiapKFKkiF2nHTt2xPkzzz//fMC/K3369KZQoUKmffv25qeffgr42SVLlgTcBvr9Wq71SY527dplBgwYYGrWrGly5sxp0qVLZ7JmzWoqV65sevbsaVatWhXuVUx2dIzomNAxE1f33Xef/czUqVNNOLjHd3wf+k6J+zwl0jmjadOmJnv27CZ16tRx3o/uceL/uPrqq03evHlN7dq1zeOPP26+++474zhOovwdAOIvrYfPAIgQXbp0uWTZ/v37zYIFC2J9vVSpUvFuoDVs2NDUr18/Xg3LUMudO7dp3ry57/mRI0fM+vXrzccff2w++eQTM2HCBPPII4+YSDdy5EgzcOBAc/bsWXPNNdeYGjVqmFy5cpnjx4+bDRs2mNdee80++vbta9+bnCjILVq0qClcuHC8Au6UKk+ePAG/8/pe/PLLL5d8Z1wVK1Y0KdnevXvNrbfeao4ePWrq1Kljb6oooLrhhhvi/DMqVKjg2476Lv799992mytIGz9+vClfvrwNzipVqhTCvwSAFwRTQAoW6M6pAh43mArXHfLEoKAw5t934cIFGzS8+uqrpnfv3qZt27YmR44cvterV69uNm3aZDJlymQiwbPPPmtefvll2xP1yiuvmB49etgeOn8rVqwwzz33nPnzzz/Dtp4I33dC1POkhn1sr7v03UiJvvnmG3szpmPHjubDDz/09DNuv/12Xw+fvx9++MH06dPHrFy50gZq33//valatWoQ1hpAsDDMDwD+T5o0aczw4cPtv6dPnzY//vhjtG2jIEoNSg0HTO4WLVpkAymZOXOmeeqppy4JpERD/xYuXGhfBy5H34349lxHgqioKPtv8eLFg/6z69atawMqBVL//fefDdh00wdA0kEwBSBedu/ebcfxq+GQIUMGkyVLFju2/6233rrkIq/5ABriJ7qj6j8vwH9+0aFDh+xQshYtWthhWRkzZjSZM2e2d2DV4Fdgk1j0N2m+kJw/fz5Oc6YuRw2g1q1b289pW+gOtuvUqVNm9OjRNmDR79TvLlmypHn66aftMJ9ANASxcePG5rrrrrM9Svq3TJkyplu3bubXX3+N83q98MIL9t/bbrvN3HHHHZd9r9ZdjbqYNm/ebLp27WqH0SkQ03yRRo0a2aGSXuYEable1/tiW37y5EnTr18/O4RKv9MdmrZnz55LfpeOJdm5c+cl81JiWrNmjbnnnntsoOz+Lc2aNTPz5s277Fyz+++/385v0b7Td0K9eNqvCaWeoDvvvNPOYdP3QcO8xo0bd8l3TH+7/p4RI0bE+rO0P/Qe9ayGUmzb1n9u4/z58+33R+eNbNmymZYtW9rhpK7p06ebWrVqmWuvvdZ+J7QNtm7detkhdupFLl26tL3Zoc9Vq1bNDo2L+f2NqxkzZtjjWMeAjgUd39rPMXtn3eNy8ODB9vmQIUMCnt8S6qqrrjITJ060///XX3+ZWbNmRXtdx7fOkzfffLPv+NW2UwCm8/LFixejvX/x4sV2HRX4xjYXS+dcnVv0vt9//z1ofwsQkRwA8LN48WJdXe0jppUrVzrZs2e3rxUqVMhp376907x5cydDhgx2WbNmzZwzZ8743j9ixAi7TK/lzp3b6dKli+/x1FNP+d73/vvv2/fkz5/fqV+/vnP33Xc7jRo1cq655hq7vFatWs7p06cvWZ/ChQvb17dv3x7nfTh48GD7Gf2eQLZu3er7+zdt2hRw28T8rH6/lmt9/O3fv9+pWrWqfe3ee++Ntm327NnjlCtXzr6mbdq4cWPnjjvu8P1NRYoUcXbs2BHt5w0ZMsS+ljZtWqdevXpOhw4dnBYtWjhly5Z1UqVK5bz66qtx2gb//vuvkzp1avuzPvvsM8eLOXPm+PZ7yZIl7T67+eabnTRp0thl999//yWf0X7Xa1OmTAn4M7Vcr+t9gZbffvvtTvny5Z2sWbM6rVq1clq3bu3kypXLt+2PHDni+8zbb7/t3HXXXfa1q6++OtqxF/Pnjx071rc9Klas6LRp08apU6eOc9VVV9ll2u4x6dhwf3fevHmdtm3b2n2RMWNGe7zqodd0zMSVu30eeeQRu211DOg71rRpU9+6aN0uXrzo+8yaNWt838fz588H/Lk6VvSe9957z/HiSt8ZV2znDfeYfvbZZ+1xWrt2baddu3ZOiRIl7HLtzy1btjh9+/a1x7aOI/2dBQsWtK/ny5fP+eeffy75ud9//72TLVs23/fltttus+cbd5m229mzZ+P8d2q7du7c2fcd03rouHbXM1OmTM78+fN97//hhx/sPqtQoYJ9Xf8GOr9djrapPqttfCWVKlWy73344YejLR82bJhdXrRoUXve1Drr57rHzJ133hntmBH33PPNN98E/F2TJ0+2rzds2DBOfweQkhFMAYhTMKVgxm0Ude/ePVojRQGIGjN6rX///gF/3uUaYr///ruzfPnyS5arAaUGkT4/cuTIkAZTaogvWrTINqb1uhqxMcUnmPrtt9986zdgwIBo71fDRg1KvfbAAw84x44d87127tw52xCL2ZDR9ldDXQHm5s2bL1k3BV4xg7/Y6O9093FUVJQTXwoSs2TJYj//wgsvRGuorVq1yteYnTRpUlCDKTdgP3r0aLRjxN1nw4cPj1OQ6+/rr7+2DfwcOXLYxrm/X3/91SlQoID9GUuWLIn2WrVq1exyBQWnTp3yLd+5c6dz/fXX+9bXSzClx6OPPmqPBdfGjRudnDlz2tcmTpwY7XPusfT5559f8jM3bNhgX9NnA92QSMxgKn369M7ChQt9yxX8KQjVa7ohcN111znr16/3vX7y5Ennpptu8h1n/vbt22ffr333xhtvOBcuXPC9dvjwYRsIxRYIx+bNN9+0n9GxsG7dOt9yHd/uNlDgd/DgwYDbJy4BUUKCqQcffNC+V4F+zJtc2s8x6YaNG+h9/PHH0V7TzQYtVwAaSJUqVRJ0swVISQimAMQpmHJ7j3SXOFCj7NNPP7WvX3vttdEal3EJpi7njz/+sJ9X4zWYwVRsj8yZM9senkB3+eMaTClYUaMrXbp09g5vTLq77faC+DeYXWoYqnGp97iNJDXg9Fw9Mwk1Y8YM39/rpYHt3glXgyuQV155xb5evHjxoAZT6mHau3dvrH+PGtDxDaZq1Khh36PjNxA1QvW6erlcy5Yt862PGu4xffHFFwkKptTT5f8dcr3++usBt6u7juqViEm9GHqtX79+jlfBCqbU8xTT2rVrfZ+bMGHCJa+rMR+oh+SZZ56xy3v06BFwXXbv3m2/fwoiY/bKxMYNgl977bVLXtPP0HdPr7/44othCabUs6f3li5dOs4/f8GCBfYzClr9/ffffzYYVY9szB5w3djSZ9QzGFtvJ4D/RzY/AHHipjW/++67AyYq0NwGzYH4999/7fwTzaOKD80F0e9QKuB9+/bZeSf/d8PHvv7HH38EdU/FTPOs37d9+3ZbU2nYsGF2zpbmScTXe++9Z+cvaZ7L3LlzTZMmTS55j5bLXXfdZdKmvfQ0rLTK9erVMxs3brTbo2zZsnbujOZhaF6UkkE88MADdq5UOI+FQGm0ReumDGSa36E5Lfny5QvK79UcOs1PiknzZSTmvKkrOXz4sM2Spn3VqlWrgO9x58f51x5z/34dP5pXEpPmyGlOkFJle9GuXTs7BysmbW/NV4y5XTXnrWDBgjapiOaxuUkg9Ps/+OADm1AlKaT515zImPyTNlzudf29gb5DqgsXSP78+e1nNd9H26tEiRJXnAvqzs0KdFxr7pDmB/bq1cvOOerfv79JbO7cp0Dz0s6cOWOzCur8dfDgQftc506VOAh0/tQx/9BDD9m5dm+++aZ56aWXfK+pLIR0797dHjsALo9gCkCcuA1Vd1J/TLrA6zUFU/Ft1Kqxowbhb7/9Fut7jh07FtQ9FVuaZzWuNZFbAYECqjZt2sT5Z6pB5iZPUKFNTQAPZNu2bfZf1XfS43KUnMM1bdo0uz5jxoyxD02QV10oBWydOnWKlsb9chSYudTwUkM8mMeCJr9r3f755x+7TYIVTMWWRVH7SeKbqETBsxqcCqQD3SCIbT/ob7rSd0GBr5JIeBHbz1VyBQVvSk7iv10VkD/66KM2MYcSL+jhBvZK2OEGW+EWaP+pttnlXtffHGjfut+hQIlRAu27KwVT7jGt7eseTzFdf/310d6b2BT8i75bMcsXKKh0swrG9fypY2bUqFHm3XfftWnZFcBrWynJjb4PuikE4MoIpmJYunSpPbnozrrujn/xxRe2/kNc6YSkjD4xKcuQLmoALqUAQYGUMnspk516XNSgUbY6FbC8UkM3mJTx7OGHH7bBijJkxSeYUrFbFd5UxrInn3zS1usK1HPh3mFWsOU20GJz4403+v5fDUdlRNNdeWVHVG+Jfod+nzKK6XylLGRXosKf6v3SeuhOdlJoaEvMrGMxaZ1D8fvUoFcvYXISMwubGr5Dhw61Abd6G/Q3vfHGG/Y11Q9LCq60/+Kzf919p+/n1Vdffdn3BvoOJkdr1661/5YrVy5atlC1UQ4cOGB7ztQDqUyXOn+qV0kZCJUhNFDWvgIFCtgRBcr2qPII6pF75513bK+Wbs7433QBEDuCqRgU8KgSuYb36CQTXxraoq5xf2rcKFUrkJxp2Iz/HeHY7vT7vzcuNCxJQ9cUiCgYiDnsTb1Wia1YsWKeipAqhfGXX35pa8F8+umnpn79+rZGk9J3+3ODFw0H0zkjPjQ8Rw1IN8jTneQBAwaYSZMm2fOW0iRfiYZjKjBTQKbei/ie67R/td9iOxY0vEy9Uu57/bePuEOPYorLugeTux/UkzR58uQ4N+bdv0mBbWwS8re436OYtN3clPlqCMcMGJTaXY1hBVTqidHQLt2YUE9rpNG+07nhmWeeCUoRW3efavuqFydQ75R7vMfn/BYsutm0fv16+/9NmzaNdgNYgVTlypXtMRzTlc6fTzzxhA2mNLTv3nvv9aVgTyoBOJAcUGcqhltuucXWX4mt7oru2Kjxo5Op7oZpiI07fl50N1ANJ/ehk5zGbGvIEJCcuXNHdAcz0HAqBUIa4qdhOVWqVLmkAR1bzRe30a0hS4HmD2nOR2Jz5074D0GKK/WmqU6NhvupAaSgJWbDWucZ0XCa2Oq8xJXuHo8cOdL+v4b5aB/EheohyezZs+2+uxyt47Jlyy45FhSIBeI26jRnxb/h6f5/oCBVv0M9bMF0pWNPx5zqNylI+frrr+P8cxUkiz7jHr/+tE3964nFl44LXWtiev/99+2/6nkI1KBXw1jUMHaH+j322GMmErnfodhqmsWXglO3lzjQ8F8dn+5yt3ZeYlHvvHuTVsOTVRvO5R5/sQ2BvdL5U3Nbdb5WD7Vuyugcopu/oa5JBkQUv2QUiEGbR1mZYqYmVarWpUuX2roYo0aNsule//zzz4DbT5mGVKMCiITU6Kpl49bB8c9Ct23bNlvjJFBqdKWK1nLV5AlU8+XQoUO2NpEeMTOfzZ49236/rpQlLJh1pn7++WebpU3veeihhzynRlf2L33/3axYykron63PTa2tDG4xUy27Kb+Vqtndzsq4pXTG/mnBY2ZaVEry+GTfclOwqx7N6NGjA2b2W716tdOkSRNb08k/NbqyHrqZzfyzpSk7m1uLLGZqdDcLntK7K3W8S8eFMr25+zm2bH4xl18pa59+rv42HVt///13wM/qGHOPT/1/TPrbVqxYYbOi+atcubL9nGr6+G83pZpXtr2EpkbXseO/L1U+QLXaYst653JTgruZKY8fP+4kVLCy+cX2PY3tc5fbt7t27bIZM7VvlT3Sv4ab/3lJ3w0vqdH9U7TrGBg6dGhYUqPrO1O9enXf90Z1xQJlQ1QWVf/vlLz11ls2dfyVMlpOmzYtWkZTr/XIgJSKYCoewZQahTpxq3aDP6WjDZR2Vqlt1bh5+eWXg7nPgCRRtFcXZ9ViUqHS2Ir2utzCtSrues8999jaSkpt7OrZs6d9XWl61bhQMVq3saoaTaEIpmIWEVa9ILfRoofqs8RMex3for2ic4P7+1S3yKXziFsfScGbbtKoYa4Cm1ruFr91U2Sr7o2eK92zAjGtrx5uIU81mt555x0nvhQM6We6DTIVD+7YsaOtP+PWDtPDf3/JV1995dvvpUqVsvtM50IVO9Wyrl27Bvx9Csr0umpmKUjT71EtJzX83eMgWMGUqPirG9BqHXXs6eFv3LhxvvW+4YYbnFtvvdVuA62fW5g35t+vhqtb90nlArQvWrZsaQu71qxZM0FFe1XHTdtWNyh0TOh75RZgVWHny6X6njVrlm+fPf74404wJMVgSlQXTIGPGwwrkNT5RfvBTXOu1Pdxpe3aqVMn+zkdDzqedczovOUes/Pmzbvkc8EIpvwL/urYUzH0PHnyRDsf+de+CvSd0jGiunw6ZvSd1Dnhueeeu2IwpXO2G6gnpB4ZkFIRTMUjmJozZ46v4eP/0ElXF9KYpk+fbl/TXVwgEoIp9877Y4895hQrVsxevNUAV8PRvxclJt2IUANB9XPcRmvMXpx3333X1i3S3VcVhFVhStUPklAEUzEfCl4UKNatW9c2rgM1KLwEUzJixAhfz5F6vlz6HSrAqho6qvmibaNGoYIpbWP/3hAV9h07dqxtTKvnQ9tJ5x/1fHfu3Nn2IHmlXi8FfQrS3PXQPlCgpgBHd78DUW+JGn8KhhSQ6a69/hZ3vwWiv1kBso4ffUZ/rxqs6um/Up0pL8GUeqRUa0m9qm7QGOhYUj0v9URq2yqQUVCkdVQgo7pDMW+iucf1fffdZxui+i7o/Qq6VGzWbSR7Cab092qbt2rVyu4P9c7eeOONzpgxY2L9jrnUE6VjWQ3pQMWdIymYkgMHDjgDBw60N190LtJ+0PGomxNab/8bGHGla3eDBg18teIUiGs/x7Y9gxFM+T8UtCmQ0nlVPZSqW3e5AFo9sBolU65cOXvc6jymoOqbb76JU6010Y2xhNYjA1KqVPpPuIcaJlWalOyfzU9zRTTBV/MgYtZecOdKxUw8oUmsV5qPAABAMCgBhTL7KUmBMj0CV6L5fZozprmwSn6SVLJ7AskF2fziQemEVVhUdVmuVNtCJyQV9tNEZAAAEiMbrdKiiwo7A3GhY0bHTocOHQikAA8IpmI4ceKE2bJlS7SgSOlIVSRPqWbVM9W5c2czevRoG1wpLbGqzisj1K233hotm1XevHl9GYcAAAgF1UbcuHGjzbio9N3NmzePlj4biEk16tROURtHBcZVC1OZjAHEH8P8YlCa80BpT1XMTmlRz507Z084quOhKug5cuQwNWvWtIV63UJ6KiZYuHBhG3S9+OKLHnYLAABxo1T1qhmm65EKX6vgtGqJAbFRe0ZFflW3TrU1VaC8Xr16bDDAA4IpAAAAAPCAor0AAAAA4AHBFAAAAAB4QAKK/5vjtHfvXnPttdfadOgAAAAAUibHcczx48dNvnz5TOrUl+97IpgyxgZS1FUAAAAA4Nq1a5etw3Y5BFPG2B4pd4OpyC4AAACAlOnYsWO2o8WNES6HYEopDf9vaJ8CKYIpAAAAAKniMP2HBBQAAAAA4AHBFAAAAAB4QDAFAAAAAB4QTAEAAACABwRTAAAAAOABwRQAAAAAeEAwBQAAAAAeEEwBAAAAgAcEUwAAAADgAcEUAAAAAHhAMAUAAAAAHhBMAQAAAIAHBFMAAAAA4AHBFAAAAAB4QDAFAAAAAB4QTAEAAACABwRTAAAAAOABwRQAAAAAeEAwBQAAAAAepPXyIQAAgHCq0ncaO8CDNaM6s92AIKJnCgAAAAA8IJgCAAAAAA8IpgAAAADAA4IpAAAAAPCAYAoAAAAAPCCYAgAAAAAPCKYAAAAAIBKCqaVLl5pWrVqZfPnymVSpUplZs2Zd9v2ff/65adKkicmZM6fJnDmzqVWrllmwYEGirS8AAACAlCnJBVMnT540FSpUMBMmTIhz8KVgat68eWbNmjWmYcOGNhhbt25dyNcVAAAAQMqV1iQxt9xyi33E1dixY6M9Hz58uPnyyy/NV199ZSpVqhSCNQQAAACAJBhMJdTFixfN8ePHTfbs2WN9z5kzZ+zDdezYsURaOwAAAACRIskN80uoV155xZw4ccK0a9cu1veMGDHCZMmSxfcoWLBgoq4jAAAAgOQvooKp6dOnmyFDhpiPP/7Y5MqVK9b39evXzxw9etT32LVrV6KuJwAAAIDkL2KG+c2YMcM8+OCD5pNPPjGNGze+7HvTp09vHwAAAACQonumPvroI9O1a1f776233hru1QEAAACQAiS5ninNd9qyZYvv+fbt28369ettQolChQrZIXp79uwx06ZN8w3t69Klixk3bpypUaOG2b9/v12eMWNGOx8KAAAAAFJEz9Tq1attSnM3rXnv3r3t/w8aNMg+37dvn4mKivK9f9KkSeb8+fPmscceM3nz5vU9evbsGba/AQAAAEDkS3I9Uw0aNDCO48T6+tSpU6M9X7JkSSKsFQAAAAAk8Z4pAAAAAEgOCKYAAAAAgGAKAAAAABIHPVMAAAAAEAkJKAAASOqq9P3f8hyInzWjOrPJAEQUeqYAAAAAwAOCKQAAAADwgGAKAAAAADwgmAIAAAAADwimAAAAAMADgikAAAAA8IBgCgAAAAA8IJgCAAAAAA8IpgAAAADAA4IpAAAAAPCAYAoAAAAAPCCYAgAAAAAPCKYAAAAAwAOCKQAAAADwgGAKAAAAADwgmAIAAAAADwimAAAAAMADgikAAAAA8IBgCgAAAAA8IJgCAAAAAA8IpgAAAADAA4IpAAAAAPCAYAoAAAAAPCCYAgAAAAAPCKYAAAAAwAOCKQAAAADwgGAKAAAAADwgmAIAAAAADwimAAAAAMADgikAAAAA8IBgCgAAAAA8IJgCAAAAAA8IpgAAAADAA4IpAAAAAPCAYAoAAAAAPCCYAgAAAAAPCKYAAAAAwAOCKQAAAADwgGAKAAAAADwgmAIAAAAADwimAAAAAMADgikAAAAA8IBgCgAAAAA8IJgCAAAAAA8IpgAAAADAA4IpAAAAAPCAYAoAAAAAPCCYAgAAAAAPCKYAAAAAwAOCKQAAAADwgGAKAAAAADwgmAIAAAAADwimAAAAAMADgikAAAAA8IBgCgAAAAA8IJgCAAAAgEgIppYuXWpatWpl8uXLZ1KlSmVmzZp1xc8sWbLEVK5c2aRPn97ccMMNZurUqYmyrgAAAABSriQXTJ08edJUqFDBTJgwIU7v3759u7n11ltNw4YNzfr1682TTz5pHnzwQbNgwYKQrysAAACAlCutSWJuueUW+4iriRMnmqJFi5rRo0fb56VLlzbLli0zr776qmnWrFkI1xQAAABASpbkeqbia/ny5aZx48bRlimI0vLYnDlzxhw7dizaAwAAAABSVDC1f/9+kzt37mjL9FwB0qlTpwJ+ZsSIESZLliy+R8GCBRNpbQEAAABEimQfTHnRr18/c/ToUd9j165d4V4lAAAAAMlMkpszFV958uQxBw4ciLZMzzNnzmwyZswY8DPK+qcHAAAAAKTYnqlatWqZRYsWRVv27bff2uUAAAAAkGKCqRMnTtgU53q4qc/1/1FRUb4hep07d/a9v3v37mbbtm3m6aefNps3bzZvvPGG+fjjj02vXr3C9jcAAAAAiHxJLphavXq1qVSpkn1I79697f8PGjTIPt+3b58vsBKlRZ87d67tjVJ9KqVIf+edd0iLDgAAACBlzZlq0KCBcRwn1tenTp0a8DPr1q0L8ZoBAAAAQBLumQIAAACA5IBgCgAAAAA8IJgCAAAAAA8IpgAAAADAA4IpAAAAAPCAYAoAAAAAPCCYAgAAAAAPCKYAAAAAwAOCKQAAAADwgGAKAAAAADwgmAIAAAAADwimAAAAAMADgikAAAAA8IBgCgAAAAA8IJgCAAAAAA8IpgAAAADAA4IpAAAAAPCAYAoAAAAAPCCYAgAAAAAPCKYAAAAAwAOCKQAAAADwIK2XDwFI2ar0nRbuVUh21ozqHO5VAAAAQUbPFAAAAAB4QDAFAAAAAB4QTAEAAABAqOZMpU6d2qRKlSreP1yfOX/+vJf1AgAAAIDkH0zVq1fvkmDq33//Nb/++qtJkyaNKViwoMmdO7c5cOCA2bVrl7lw4YIpX768yZYtW6jWGwAAAACSfjC1ZMmSaM93795tateubTp27GiGDx9uChUq5HstKirK9OvXz/z4449mzpw5wV9jAAAAAEiuc6b69Olj8ubNaz744INogZTo+Ycffmjy5Mlj+vbtG6z1BAAAAIDkH0wtXLjQNGrU6LLvufnmm+37AAAAACASeQqmTp8+bfbt23fZ9+zdu9ecOnXK63oBAAAAQOQFU1WqVDEzZswwy5cvD/j6Tz/9ZGbOnGmqVauW0PUDAAAAgOSbgCKmF1980Q7zq1u3rmnVqpWpU6eOyZUrlzl48KD54YcfbOKJtGnTmhdeeCH4awwAAAAAyTWYUvA0b94889BDD5kvv/zSPpQ63XEc+3rRokXNpEmTbMY/AAAAAIhEnoIpUc/Uli1bzLJly8wvv/xijh49arJkyWIqVKhggy0vRX4BAAAAIOKDKVHApKF+egAAAABASpKgYEp+//13s3nzZnPy5EnTqVOn4KwVAAAAAERiNj9ZtWqVqVixoilXrpxp27atue+++3yvLV261GTKlMnMnj07WOsJAAAAAMk/mPrtt99sUd7t27ebXr16mVtuuSXa6xr2lyNHDvPJJ58Eaz0BAAAAIPkHU4MHD7b/rlmzxrzyyiuX1JPSXKpatWrZ3isAAAAAiESegqnvv//e3HXXXeaGG26I9T2FChUy+/btS8i6AQAAAEBkBVPHjx+3RXov59SpU+bChQte1wsAAAAAIi+YKliwoNmwYcNl37N27Vpz/fXXe10vAAAAAIi81OgtW7Y0r732mlm4cKFp3LjxJa9//PHHZsWKFWbgwIHBWEcAQAxV+k5jm8TTmlGd2WYAgPAHU/379zeffvqpadGihenSpYvZv3+/Xf7GG2+Y5cuXm48++sgUKVLE9O7dO7hrCwAAAADJOZjKmTOnTUKhIr3vvvuub3mPHj3svzVq1LABVZYsWYK3pgAAAACQ3IMpKVasmPnxxx/N+vXr7ZC+f/75x2TOnNkGUjFTpQMAAABApPEcTLkqVqxoHwAAAACQkqT22iulBBSXM2HCBPs+AAAAAIhEnoKpHTt2mCNHjlz2PXp9586dXtcLAAAAACIvmIqLo0ePmvTp04fqxwMAAABA8pgztXTp0kt6p2IukwsXLphdu3aZDz/80JQoUSI4awkAAAAAyTWYatCggUmVKpX9f/373nvv2UcgjuPY97z00kvBW1MAAAAASI7B1KBBg2yApEBp6NChpn79+jbAiilNmjQme/bspmHDhqZ06dLBXl8AAAAASF7B1PPPP+/7fxXs7dq1q+ncuXOo1gsAAAAAIq/O1OLFi4O/JgAAAACQkor2njx50qZBV+KJQAoVKpTQXwEAAAAAkRNMvfvuu2b06NHmjz/+iPU9mmN1/vx5r78CAAAAACIrmHrzzTfNY489ZtKmTWvq1atnChQoYP8fAAAAAFIKTxHQ2LFjTY4cOcyyZcuoJQUAAAAgRUrt5UM7d+407dq1C1kgNWHCBFOkSBGTIUMGU6NGDbNy5corBnclS5Y0GTNmNAULFjS9evUyp0+fDsm6AQAAAIDnYCpv3ryxJpxIqJkzZ5revXubwYMHm7Vr15oKFSqYZs2amYMHDwZ8//Tp082zzz5r379p0yY7l0s/o3///iFZPwAAAADwHEx16dLFzJ8/32byC7YxY8aYbt262TpWZcqUMRMnTjSZMmUykydPDvj+n376ydSuXdt07NjR9mY1bdrUdOjQ4Yq9WQAAAACQ6MHUgAEDTLVq1UyTJk3M0qVLzYkTJ0wwnD171qxZs8Y0btz4/1cwdWr7fPny5QE/c9NNN9nPuMHTtm3bzLx580yLFi1i/T1nzpwxx44di/YAAAAAgJAnoEifPr3913Ec07Bhw6ClRj98+LAdPpg7d+5oy/V88+bNAT+jHil9rk6dOnZ99Pu6d+9+2WF+I0aMMEOGDInzegEAAABAUIKpunXr2kApKViyZIkZPny4eeONN2yyii1btpiePXuaYcOGmYEDBwb8TL9+/ey8LJd6ppS4AgAAAABCGkwpgAkFpVtPkyaNOXDgQLTlep4nT56An1HA1KlTJ/Pggw/a5+XKlbNzuR566CHz3HPP2WGCgXrW3N41AAAAAEi0OVOhctVVV5kqVaqYRYsW+ZZdvHjRPq9Vq1bAz/z333+XBEwKyETD/gAAAAAgyfRMhZKG3ylbYNWqVU316tVtDSn1NCm7n3Tu3Nnkz5/fznuSVq1a2QyAlSpV8g3zU2+VlrtBFQAAAAAkiWDq5ptvjtP7NK/Kv5cpLtq3b28OHTpkBg0aZPbv328qVqxovv76a19SiqioqGg9UcosqN+jf/fs2WNy5sxpA6kXX3wxnn8VAAAAAIR5zpSCGw2x85qkokePHvYRl9+dNm1aW7BXDwAAAABI0nOmNI8p0OPIkSPmu+++s8Pt2rRpY+tGAQAAAEAkCmoCisyZM5sGDRqYBQsW2CK6DLUDAAAAEKlCks3v2muvNbfccouZMmVKKH48AAAAAERuanQlidi3b1+ofjwAAAAARF4wtW3bNvPJJ5+YIkWKhOLHAwAAAEDyzOZ3//33B1x+/vx5m5582bJl5ty5c2bo0KEJXT8AAAAAiJxgaurUqZd9vWTJkuapp54yDz74oNf1AgAAAIDIC6a2b98e6zyprFmz2gQUAAAAABDJPAVThQsXDv6aAAAAAEBKS0Bx8uRJm7lP/wIAAABASuA5mDp79qwtylu8eHFbrLdAgQL2Xz0fPny4fR0AAAAAIpWnYX6nTp0yjRo1Mj///LNJkyaNDaDy5s1r9u/fb7Zu3WoGDhxo5syZYxYtWmQyZswY/LUGAAAAgOTYM/Xyyy+bFStWmHbt2tngafPmzWbx4sVm06ZNtsZU+/bt7esjR44M/hoDAAAAQHINpmbOnGkqV65sPvroI1OwYMFor2m43/Tp002VKlXMjBkzgrWeAAAAAJD8g6kdO3aYpk2bXvY9jRs3tu8DAAAAgEjkKZjKlCmTOXTo0GXfo9f1PgAAAACIRJ6CqZo1a9ohfL/99lvA13///Xc7FLBWrVoJXT8AAAAAiJxsfv379zfffPONqVatmnnggQdM/fr1Te7cuc2BAwfMkiVLzJQpU8y5c+dMv379gr/GAAAAAJBcg6natWvbJBPdunUzEyZMMG+88YbvNcdxTJYsWcx7771n3wcAAAAAkchTMCVt27Y1zZs3N19++aVZt26dOXbsmC3aW6lSJdO6dWtz7bXXBndNAQAAACASgilRwHTvvffaBwAAAACkJPFKQKGCvL/++qs5f/58rO/RXCm9R+8FAAAAAJPSg6moqChTtmxZM2jQIJM2bewdWunSpTODBw825cqVM3v27AnWegIAAABA8gym3n77bdsjNWbMmCu+V+9RD9Vbb72V0PUDAAAAgOQdTC1YsMDWjSpWrNgV31u0aFGbyW/+/PkJXT8AAAAASN7B1J9//mkqV64c5x+srH5//fWX1/UCAAAAgMgIpk6dOmWuvvrqOP/gTJkymdOnT3tdLwAAAACIjGAqe/bsZteuXXH+wbt377afAQAAAIAUHUxpiN+3335rE0tcydmzZ80333xjh/oBAAAAQIoOptq0aWP2799vU6NfyZAhQ8yBAwdMu3btErp+AAAAAJC8g6nOnTub8uXLm5EjR5r77rvPbN269ZL3aFnXrl3NSy+9ZCpUqGDuvffeYK8vAAAAACQJsVffjSFNmjRm9uzZpmnTpmbatGnm/fffNwUKFLAPUYFezalyHMeULFnSfPnll/YzAAAAAJCigykpVKiQWb16tRk1apSZMmWKDZ78k1Lkz5/fPPDAA6ZPnz7mmmuuCcX6AgAAAEDyC6ZEQZLmROkRFRVl51FJnjx5bLAFAAAAAClBvIMpfwqeCKAAAAAApERxTkABAAAAAPh/BFMAAAAA4AHBFAAAAAB4QDAFAAAAAB4QTAEAAACABwRTAAAAAJDYqdFj2rFjh/n2229NhgwZzB133EHhXgAAAAARy1PP1PDhw03RokXNv//+61u2ZMkSU7ZsWdO9e3dz3333mcqVK5t//vknmOsKAAAAAMk7mJo1a5YpUqSIyZYtm2/ZM888Yy5evGiGDBliHnnkEbNlyxYzduzYYK4rAAAAACTvYErD+cqUKeN7vnfvXrNq1Srz2GOPmQEDBpjx48ebRo0amS+++CKY6woAAAAAyTuYOnbsmMmaNavv+dKlS02qVKlMq1atfMs0zC8qKio4awkAAAAAkRBM5c6d2+zcudP3XEkn0qdPb2rUqOFbdvr0aRtgAQAAAEAk8pTNr1q1aubLL780c+bMsZn7Zs6caRo2bGgDKtf27dtNvnz5grmuAAAAAJC8e6b69+9vzp8/b1q3bm2aNWtme6G0zHXmzBk79M+/pwoAAAAATErvmdJ8qBUrVpj333/fPm/Xrp2pXr267/V169bZnqqOHTsGb00BAAAAIBKK9laoUME+AqlZsyaZ/AAAAABENM/BlOvEiRPmzz//NCdPnjR169YNzloBAAAAQCTOmXJrTWnOlAr3KiGFhvW5fvzxR1uHasmSJcFaTwAAAABI/sGU6kdpKN+8efNsQFWrVi3jOI7vdSWeOHz4sPnoo4+Cua4AAAAAkLyDqcGDB5t///3XfP/99+bTTz81TZo0ifZ62rRp7ZA/9VABAAAAQCTyFEwtWLDA3HHHHeamm26K9T2FCxc2e/bsSci6AQAAAEBkBVP//POPKVKkyGXfo2F/qjcFAAAAAJHIUzCVO3du89dff132PRs2bDCFChXyul4AAAAAEHnBlOZIzZkzx/z6668BX//hhx/Md999Z1q0aJHQ9QMAAACAyAmmBgwYYDJmzGjq1atnXnzxRbNlyxa7fP78+WbgwIGmefPmJkeOHKZv377BXl8AAAAASL7BlOZLKQmFakwpeJo+fbqdI9WyZUsbXOXMmdOmTc+bN6+nlZowYYL9HRkyZLBp1leuXHnZ9x85csQ89thj9velT5/elChRwv5+AAAAAAiVtF4/qCBH86a++uor8/PPP9ukFJkzZ7bLVXvqqquu8vRzZ86caXr37m0mTpxof9bYsWNNs2bNzB9//GFy5cp1yfvPnj1rhx3qNaVpz58/v9m5c6fJmjWr1z8NAAAAAEITTP300082LbrqSSlFuh6BvPrqq6ZXr17x+tljxowx3bp1M127drXPFVTNnTvXTJ482Tz77LOXvF/LFchpndKlS2eXXSnTIAAAAACEZZhfq1atzKZNmy77HvUo9enTJ14/V71Ma9asMY0bN/7/FUyd2j5fvnx5wM/Mnj3b1KpVyw7zU5bBsmXLmuHDh5sLFy7E+nuUsv3YsWPRHgAAAAAQ8mBKySeUZCK2oryvvfaaHaqnICc+Dh8+bIMgBUX+9Hz//v0BP7Nt2zY7vE+f0zwpzeEaPXq0eeGFF2L9PSNGjDBZsmTxPQoWLBiv9QQAAAAAT8HU119/bXtzmjZtaofY+Xv99dfNk08+aWrWrGnfF2oXL16086UmTZpkqlSpYtq3b2+ee+45OzwwNv369TNHjx71PXbt2hXy9QQAAAAQWTwFUxpKp8QTO3bssBn8Tp06ZZePHz/e9OzZ01SvXt1m+7vmmmvi9XOVTj1NmjTmwIED0ZbreZ48eQJ+Rhn8lL1Pn3OVLl3a9mRp2GAgyvinZBn+DwAAAAAIeTAlderUMR999JFZtWqVadOmjRk3bpx54oknTNWqVW0gde2118b7ZyoDoHqXFi1aFK3nSc9jGzJYu3ZtW+dK73P9+eefNsjymlEQAAAAAEIWTMltt91mh9OpWK/mSCkQWrhwoZ2H5JV+zttvv23ee+89m+TikUceMSdPnvRl9+vcubMdpufS6xpqqB4xBVHK/KcEFEpIAQAAAABhTY2+dOnSWF8rXry4DaqWLVtmBgwYYNavXx/t9Xr16sVrhTTn6dChQ2bQoEF2qF7FihXt3Cs3KUVUVJTN8OdS8gj1hCkFe/ny5W2dKQVWzzzzTLx+LwAAAAAEPZhq0KCBSZUq1WXf4ziOufPOOy9ZfrkU5bHp0aOHfQSyZMmSS5ZpCOCKFSvi/XsAAAAAIKTBlHqJrhRMAQAAAEBKEqdg6vnnnw/9mgAAAABASklAAQAAAAApFcEUAAAAAIRqmF+xYsXsnCmlPS9atKh9Hhf6zNatW72sFwAAAAAk/2BKBXH9E1DEfH65DH8AAAAAkGKDqR07dlz2OQAAAACkNMyZAgAAAAAPCKYAAAAAIDGCKQ3xW716tTl+/Hi0ZQ8//LCpXLmyqVixounZs6c5ePCgl/UBAAAAgMiZMyXnz58399xzj/n000/t86uvvtq8/fbbpnr16qZGjRrm8OHDvvf++uuv5quvvjJr1qwx2bJlC82aAwAAIGyq9J3G1vdgzajObLeU2DM1fvx488knn5h8+fKZO+64w2TNmtV0797dDBkyxGbtU2ClIOr777+3r6u3auTIkaFdewAAAABI6j1TH330kcmTJ4/ZuHGjyZIlizly5Ii58cYbzQcffGCmTZtmOnbs6Htv7dq17WvqnRoxYkSo1h0AAAAAkn7P1KZNm0yrVq1sICXqmWrZsqXtlWrSpEn0H5o6tbn55pvN9u3bg7/GAAAAAJCcgqkTJ07Ynil/7vOcOXNe8v5cuXKZ06dPB2MdAQAAACB5Z/NLkyZN9A+nJrM6AAAAgJSJaAgAAAAAQpmAQubMmWP279/ve656U/Loo49e8t5Vq1Z5WR8AAAAAiLxgSsGTG0D5mzhxYsD3p0qVyvuaAQAAAEAkBFOLFy8O7ZoAAAAAQCQGU/Xr1w/tmgAAAABAMkICCgAAAADwgGAKAAAAADwgmAIAAAAADwimAAAAAMADgikAAAAA8IBgCgAAAAA8IJgCAAAAAA8IpgAAAAAgVEV7b775Zi8/26RKlcosWrTI02cBAAAAINkHU0uWLPEcTAEAAABAig2mLl68GPo1AQAAAIBkhDlTAAAAAOABwRQAAAAAhGqYX2xOnz5tVq1aZfbu3WvOnDkT8D2dO3dOyK8AAAAAgMgKpiZMmGAGDhxojh49GvB1x3FsAgqCKQAAAACRyNMwv88//9w8/vjjpmDBguaVV16xgVPr1q3N8OHDTfPmze3zu+66y0yePDn4awwAAAAAyTWYGjt2rMmVK5dZvny56dWrl11WsWJF88wzz5i5c+eaDz74wMyaNcsULlw42OsLAAAAAMk3mPr111/NbbfdZjJlyuRbduHCBd//d+zY0Rb6HTp0aHDWEgAAAAAiYc7UuXPnTM6cOX3PM2bMaI4cORLtPRUqVDCTJk1K+BoCMVTpO41tEk9rRpEIBgAAIEn0TOXLl8/s27fP91zD+datWxftPTt37jRp0yYoWSAAAAAARFYwVa1aNbN27VrfcyWd+PHHH82IESPMb7/9Zt566y2bpELvAwAAAIBI5CmYatu2ra0rtWPHDvu8X79+pkCBAmbAgAGmfPny5pFHHjHXXHONGTlyZLDXFwAAAACSBE/j8O644w77cGn+1Pr1680777xjtm3bZof9derUyeTPnz+Y6woAAAAASUbQJjVly5bN9O3bN1g/DgAAAAAib5if0p5Pm3b5jGqqNaX3AQAAAEAk8hRMLVmyxDdfKjbK5vf99997XS8AAAAAiLxgKi5Onjxp0qVLF6ofDwAAAADJY85UVFRUtOcq0htzmVy4cMHs2rXLfPbZZ6ZIkSLBWUsAAAAASK7BlAKjVKlS2f/Xv+PGjbOP2DiOY0aNGhWctQQAAACA5BpMde7c2QZRCpKUfKJChQqmYsWKl7wvTZo0Jnv27Db5hIr5AgAAAECKDqamTp3q+38llujatat54oknQrVeAAAAABB5daa2b98e/DUBAAAAgJRUtPfHH38069evN8eOHTOZM2e2Q/9q164dnLUDAAAAgEgLpn766Sc71G/Lli32ueZSuQkqihcvbqZMmWJq1aoVvDUFAAAAgOQeTP3222+madOm5r///jNNmjQxDRs2NHnz5jX79+83ixcvNt98841p1qyZWbFihSlTpkzw1xoAAAAAkmMwNXToUHP27Fkzb968SzL2PfPMM+brr782t912m33fjBkzgrWuAAAAAJBkpPbyoSVLlpg2bdrEmvpcy/W6eqkAAAAAIBJ5CqaOHj1qihYtetn36HW9DwAAAAAikadgKl++fHY+1OX8/PPP9n0AAAAAEIk8BVOaD6WhfgMHDjSnT5+O9pqeDx482A7xa926tecVmzBhgilSpIjJkCGDqVGjhlm5cmWcPqc5WsoqePvtt3v+3QAAAAAQtGAqTZo0ZtiwYfb/FURpGN/w4cNNoUKFTMuWLc0DDzxg/y1cuLB9n17X+7yYOXOm6d27tw3K1q5daypUqGCzAx48ePCyn9uxY4fp06ePqVu3rqffCwAAAABBD6ZUR0oPue666+wwvy5dupgTJ07YrH6qK6V/jx8/butP6fXs2bMbL8aMGWO6detmf45Sq0+cONFkypTJTJ48OdbPXLhwwdxzzz1myJAhplixYp5+LwAAAACEdJif5MiRwwY3SjLxyy+/mB9++MH+q+fvvvuufd0LpVxfs2aNady48f+vZOrU9vny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eVynTh2zaNEis379+mjL1VulUQzfffddWNcx0nBNjhuy+SWhQErFRps0aWK7qDVHRNmXNJxPGYD+/PNPO6RJ3dzK4qcASuPkVaBXheeKFi0a7j8h2WMfhJeO8Ro1atiLou5AqgivAieNj1cmptOnT9vMQX/88Yf9Xtxwww12n02ZMsVmuCxevHiY/4Lkj32QNGgon0YlnDp1ygZHKuyqO++aEzV79mx7LdD3QqMTVABW9J3Qe5VBLiKzZYUpoNUwep2P1AOioFWFdtWg102fl19+2Q43c2kfadix5vMwdy3h1AOr4Xva9hrSpyyWOuernaRir7q5UKJECd/7x48fb959911bDFa9iEgYrgfxECApBRKZstD07NnT6dChgy8DjfLwP//88851113nDB061C5TYbTOnTs7lSpVcooWLepUr17dWbt2LfuLfRARhgwZ4rRo0cKXlenQoUPOu+++62TIkMHp3r27733PPvusc8sttzglS5a09dfWrVsXxrWOLOyD8Nu9e7eTJ08ep1evXs7KlSud8ePH2+M9c+bMztKlS+17Fi5c6OTIkcOpXbu2raeja8c111xDZssgZ+0rV66cc8MNN9g6OsoSp2yJ8uWXX9rCr/fdd5+zefNm32fuvfde5+67745WqBfet3/x4sWd66+/3mZPVLtnyZIl9jXtB9WLUkbXb775xvcZZfXTNYSsicHB9SDuCKaSiFtvvdVp27ZttGUqdKmUqwUKFHDefPNN33IVRNNr//77bxjWNHKxD8JLDZOGDRtGW3bmzBln+vTpTqZMmZyBAwf6lp86dcoe/6rADvZBJFm8eLFTpUoV5/Dhw75lW7dude655x57Y0EFe90bbuPGjbPfm2eeecZXMBMJR0AbXiq2W6hQIefpp592/vrrLxu86vhPkyaNM2XKFF+KdH1PFGSVKVPGadWqlb3h4Aa8SDiuyXFHMJVEjBw50tbS+eOPP6It37Vrl62Z0Lx582gXV7APIo2CJt2F/PHHH6MtP378uPPCCy/YeiIxvx9gH0SaL774wkmdOrWzd+/eaMv1vH379nZUwpYtW6K9FqimEbwjoA0vBUQ33nijvYngfwNNoxLSpk3rfPrpp3aZaq3Nnj3b9uKOHj06Wi8hEo5rctwRTCUR3333nb1IDh482BZn9KchHbojw5A+9kGkD+vQsCUVvIx5UVyz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",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Ensure the 'iso_timestamp' is properly parsed with utc=True\n",
"df['timestamp'] = pd.to_datetime(df['iso_timestamp'], utc=True) # Convert to datetime with UTC handling\n",
"\n",
"# Extract the hour from the timestamp\n",
"df['hour'] = df['timestamp'].dt.hour\n",
"\n",
"bins = [0, 3, 6, 9, 12, 15, 18, 21, 24] # These are the edges of your 3-hour bins\n",
"labels = ['00:00-03:00', '03:00-06:00', '06:00-09:00', '09:00-12:00', \n",
" '12:00-15:00', '15:00-18:00', '18:00-21:00', '21:00-24:00'] # 3-hour intervals\n",
"\n",
"# Add a new column with the time bin for each row\n",
"df['time_of_day'] = pd.cut(df['hour'], bins=bins, labels=labels, right=False)\n",
"\n",
"# Aggregate the data by time_of_day\n",
"agg_df = df.groupby('time_of_day')['channels_all'].sum().reset_index()\n",
"\n",
"# Create a Seaborn bar plot to visualize the aggregated data\n",
"plt.figure(figsize=(10, 6))\n",
"sns.barplot(x='time_of_day', y='channels_all', data=agg_df)\n",
"\n",
"# Add some labels and title to the plot\n",
"plt.title('Total Bikes Counted by Time of Day', fontsize=16)\n",
"plt.xlabel('Time of Day', fontsize=14)\n",
"plt.ylabel('Total Bikes Counted', fontsize=14)\n",
"\n",
"# Optionally, rotate the x-axis labels for better readability\n",
"plt.xticks(rotation=45)\n",
"\n",
"# Show the plot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "0364d24a",
"metadata": {
"vscode": {
"languageId": "ruby"
}
},
"outputs": [],
"source": [
"df['hour'] = df['timestamp'].dt.hour\n",
"df['day_of_week'] = df['timestamp'].dt.dayofweek # 0=Monday, 6=Sunday\n",
"df['month'] = df['timestamp'].dt.month\n",
"df['is_weekend'] = df['day_of_week'].isin([5, 6]).astype(int) # 1 if weekend, 0 if weekday\n",
"# You can manually add holidays or use a library like `holidays` to check if the day is a public holiday.\n",
"de_holidays = holidays.Germany(years=2023) # For Germany, for example\n",
"df['is_holiday'] = df['timestamp'].dt.date.isin(de_holidays.keys()).astype(int)\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "dat",
"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.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}