DAT_Projekt/notebooks/hourly_bikes.ipynb

181 lines
56 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": 3,
"id": "a2f9a292",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_47774/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": 4,
"id": "623979f9",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_47774/833663349.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",
"/tmp/ipykernel_47774/833663349.py:19: FutureWarning: \n",
"\n",
"Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.\n",
"\n",
" sns.barplot(x='time_of_day', y='channels_all', data=agg_df, palette='Blues_d')\n"
]
},
{
"data": {
"image/png": "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7969ia6bO5c9evSokWTy588fb3poaKipXLmykWSeffbZeOvm5MmTpkyZMkaS8fX1NY0aNTJt27a1nlNAQIAJDg6Od39jxowxkoybm5upU6eO6dy5s2nRooUpXbq0cTgc5v3330/SOrh48aJxcXExksx3332XpGXu9Msvv1j9XqxYMdOpUyfToEED4+rqaiSZXr16JVime/fuRpKZM2dOovc5Z84cI8l079490elPPvmkKVu2rMmcObNp1aqVadOmjcmRI4e17i9dumQt88knn5innnrKSDIZM2aM99q78/6nTp1qrY/y5cub9u3bm1q1apl06dIZSWbMmDEJat27d6/12Lly5TJPP/20adGihUmfPr2pXr26qV69upFkVq5cmeR1Grd+XnjhBePp6WkCAgJMx44dTZMmTaxa2rdvb2JjY61ltm7dar0fo6OjE73fOnXqGElm7ty5Sa7ldv/2nolzt8+NuNf00KFDjcPhMDVr1jQdOnQwRYsWNZJM5syZzaFDh8xrr71m3NzcTIMGDUz79u2Nv7+/kWRy585tLly4kOB+V69ebbJkyWK9X1q3bm2aNm1qTWvSpImJiopK8vOMjY013bp1s95jDRo0MJ06dbLqzJAhg1m6dKnVfu3ataZ79+6mXLlyRpIpV65cop9v91K3bl0jyYwePfpf21aoUMFIMn379o03fezYsUaSKVCggGnYsKHp1KmTqVu3rvWaadeuXbzXjDHG+uz57bffEn2s2bNnG0mmfv36SXoewOOMMAUgnruFqYiICGujqF+/fvE2Ug4fPmwCAgKMJDN8+PBE7+9eG2J79uwxGzZsSDD9woULpkmTJkaSmThxYoL5yRmmLl26ZFasWGHKly9vJJmOHTsmWPZ+wtTu3but+kaMGBGvfWxsrKlZs6aRZHr37m2uXLlizbt586YZNGhQgg2ZiIgIkz59euPl5WX27duXoLbg4OAE4e9uVqxYYfVxSEhIkpa5XWhoqPHx8TGSzNtvvx1vQ23z5s3WxuzHH38cb7kHDVNxgf3y5cvWvAsXLlh9Nm7cuHjL3S3k3m7ZsmXG4XCYbNmymdWrV8ebFxQUZPLmzWskmVWrVsWbV6VKFSPJdOjQwYSHh1vTjx07ZgoVKmTVaydMSTL/+c9/zM2bN615u3btMtmzZzeSzKxZs+ItF/da+v777xPc586dO40k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pu5w/fp1lStXTr169VK7du3ue/nBgwerX79+8aY1bNhQVapUSa4SAafIkyePpP/9IpyYo0ePxmubFPv27VNQUJBy5MihH374IcFhbwcPHrRR7YMpWLCgpPu/CGm6dOn0008/qUuXLvr2229Vt25d/fHHH8qZM2e8dnHhpU2bNho8ePB9PUb69OnVvn17K+SdPXtWI0aM0Mcff6xevXrp2LFj/3ofWbJkUe3atbV69WrNnTv3vj/r8uTJo3379t31tXD58mVduHDBahsnXbp0kmQdenSnpNSenOL6weFwaPbs2UnemI97TsHBwXdt8yDPJe59dKerV69aQ+bnzZs33rysWbPqmWee0aeffqp58+apaNGi2r9/v0qWLKkGDRrYriW18vf318GDBzVkyJBkuYhtXJ+eP39eV65cSXTvVNzr/X4+35LL7t27tX37dklSkyZNrOlr1qxRWFiYKlasqNmzZydY7t8+P19++WUtWrRIM2fO1LPPPmsNwZ5aAjjwKOA6U3do3ry53n777btedyUyMlKDBw9Wnjx5lDFjRgUGBlrHz0u3fuHMmTOn9RcWFqY9e/aod+/eD+kZACkj7tyRhQsXJno41Q8//KCLFy8qU6ZMqlSpkjU9bgP6btd8idvozp07d6LnD82fP/9BS79vcedO3H4IUlK5u7vr66+/Vo8ePbR7927Vrl07wYZ18+bNJd26ZlRivxjfj+zZs2vixImSbl089OLFi0la7o033pAkLV68WD/88MM92xpjtG7dOut23Gth7ty5ibaP26grUqRIvA3PuP8nFlKNMVq6dGmSak+qf3vt5c6dW2XLltXVq1e1bNmyJN9v3bp1JUnLli2zXr+3W7x4cbzrid2vb775RpGRkQmmf/HFF5KkwoULJ7pB//LLL0u6dc5L3KF+L774ou06UrO499Ddrml2v/LmzWvtJU7s8F9jjDU97tp5D0tUVJT1I23x4sXVunVra17c6+9uh8D+2+dnzZo1ValSJW3evFkjRoxQSEiIqlSpkuLXJAPSFGeNfPEokGR++OGHeNOee+45U6NGDbNmzRpz6NAh89577xkPDw9z4MCBRO+jf//+pmjRog+hWiB53Gto9Hz58hnp1nVwbh+F7siRI6ZAgQKJDo1+7NgxI8nkyJEj0Wu+nD171ri6uhpXV9cEI58tXrzYeHh4/OsoYcl5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y5Yt07x583Tu3DlFRkbqiSeeUN++fTV27Fh98cUXkm4deiZJGTNmlIeHh7y8vFj/yYQ+SJ2ef/55Va1aVe3bt9eZM2fk7u6uiIgISbcCVbZs2eJ9dyD55c2bVwcOHNC+ffvk4uKiqKgoSbe+I15//XVNnjxZu3bt4n2QQlj/D98js01kAGPMjh07TNGiRU2BAgWMn5+fqVSpktmwYYMxxphffvnFVKlSxTz55JNm6dKlxhhjoqOjzYABA0yrVq3MjRs3nFl6mrFjxw6TL18+U7RoUZM5c2ZTuHBh8+WXX5qIiAizbds207p1a1O5cmUzb948Y4wxkZGR5vXXXze1a9c2V65ccXL1j74dO3aYnDlzmjJlypjMmTObPHnymLfeesucOXPGnD592jz//PPGz8/PTJ482dy4ccNcuXLFDB8+3FSoUMGcP3/e2eWnCfRB6rBv3z4zaNAg061bNzNp0iSzb98+Y4wxq1atMtWqVTP16tUzZ86csdpfunTJlChRwvz444/OKjlNio2NNTExMfGmtWvXzuTOnducPHnSGGNMRESENa9o0aJm6tSpD7XGtIz171yP0jYRYQrm9OnTpkCBAmb48OHmn3/+MX///bepX7++yZkzp5kzZ44xxpjffvvNtG3b1vj4+JgaNWqYhg0bmsyZM5vt27c7t/g04uzZs6ZEiRJm2LBh5ujRoyY0NNQ888wzpmjRombUqFHmxo0bZufOnebFF1807u7upnTp0iYwMND4+vqaf/75x9nlP/IuXrxoKlWqZF5//XVz9uxZY4wxQ4YMMVWqVDFdu3Y1p0+fNufPnzfjxo0znp6epmDBgqZs2bIme/bsZtu2bU6uPm2gD1KH3bt3G29vb9O8eXPToUMHkzlzZlOvXj3ru2DJkiWmWrVqJl++fObXX381v//+u3njjTeMn5+fOXbsmHOLT0P27NljevfubZo3b26GDBlifvvtN2OMMceOHTM1atQw+fLlM0ePHrXah4eHm4oVK5rPP//cSRWnLax/53rUtokIUzCbNm0yhQsXNgcOHIg3vVu3bsbf398sXLjQGGPM0aNHza+//mpefvllM3HiROvXSjy4vXv3moCAALNp06Z404cPH25KlixpJkyYYGJjY83169fNpk2bzLhx48zHH39sDh486KSK05aQkBATEBBgli9fHm/6Bx98YKpVq2b6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TggMDLzhMd7e3qiqqjL9r1arodFo4OPjg2HDhmHy5MkYOXJkR4dORERWxHWmiIioTVqttkXbihUr8M033+CVV15pdf+TJ0+irq6uzSTjTjRy5EgcPHgQFy9ehFqtbtcx3t7eOHXqFBISEgAAer0ely9fxuHDh7Fnzx4YDAaEh4cjKysLPXv27MjwiYjISphMERGRRZqutNyNHyO+vr4wGo04ceJEu4/x9vbG2bNn8d1337XYVlVVhdjYWOzYsQOjRo3CJ598ApWKM/GJiG53fKcmIqIO0do9U5mZmVAUBZmZmdi8eTNCQkLg6uqK/v374+WXX4bRaAQAZGVlYdCgQXBxccF9992Hv/zlL60+hoggPT0doaGh0Gg0cHV1xUMPPYT09PSbjjcjIwMhISHo2rUrunbtipCQEGRmZprto9VqoSgKKisrUVVVBUVRoCgKvL29b/rxmvPy8sLmzZsxYMAA5Ofn44MPPjDbnp6ejgkTJsDb2xvOzs5wd3fHuHHj8Omnn5rtt337diiKgt/85jetPk5FRQVUKhXGjRt3S/ESEVEj3jNFRESd7l//+he2bduGp59+GqGhocjLy0NSUhJEBN27d0dSUhImTJiA0aNHY/369ViwYAHuuecePPfcc6ZziAimTJmCtWvXwt/fH1FRUVCr1fj4448RGxuLsrIypKSktCue+Ph4vPXWW+jfvz9iY2MBAOvXr0dMTAwOHDiAN998E0Bjggg0TnEEgNmzZwMAevTocct94uLignnz5iE2Nha5ubmIjIw0bfvtb3+LQYMGYezYsejTpw9Onz6NjRs3YuzYsdiwYQMmTJgAAHj00Ufh5+eHNWvWICUlBa6urmaPkZaWBhHBjBkzbjleIiICIERERBbw8vKSG32MjBo1qsX2jIwMASBOTk5SVFRkatfpdOLh4SGurq7yox/9SCoqKkzbTp48KWq1WgYOHGh2rtWrVwsAiYmJkWvXrpnar169KuHh4QJAiouL23we+fn5AkAGDBggV65cMbVfunRJAgICBIDs2rWrxXP38vJq89w/PKZLly433KeiokIAiKenp1n78ePHW+xbXV0t/fr1E39/f7P2pUuXCgDJzMw0a29oaJC+ffuKh4eHWX8REZHlOM2PiIg63bPPPothw4aZ/u/WrRt+/vOfo66uDrNmzYKvr69pm6enJ0aOHImysjLo9XpT+9tvvw03NzekpqbCycnJ1K5Wq7FkyRIAwNq1a9uMJSsrC0DjFL7u3bub2nv27GkqrvHD6X4dpV+/fgCACxcumLX7+Pi02Ldv376IiIjAV199ZVYlMCYmBmq1GmlpaWb75+Xl4cyZM4iOjjbrLyIishyn+RERUacbPHhwi7a+ffvecJvBYMDXX3+N/v37o66uDocPH0a/fv2wdOnSFvs3NDQAAMrLy9uM5cCBAwC+n8LX3JgxYwAAJSUlbZ6nIx0/fhzJycn45JNPcPr0aVy9etVse3V1Nby8vAAAffr0wcSJE5GTk4Py8nJTNcWm5Gr69OmdGzwRkR1jMkVERJ1Oo9G0aHN0dGxzW1OSdPnyZYgITp8+jcTExOs+Tm1tbZux6HQ6qFQq9OnTp8W2e+65B4qiQKfTtXkea6iurgYAs1iOHTuG4OBg6HQ6jBkzBuHh4dBoNFCpVNi5cyfy8/NbJFdxcXHIyclBWloaUlJSUF1djS1btmDUqFEICAjolOdCRHQ3YDJFRER3nKaEa+jQoSguLr7lcxmNRpw/fx4eHh5m286dOwcRaTXB6wg7d+4EALMpkG+88QYuX76M7OxsPPvss2b7z5w5E/n5+S3OM3r0aAQGBuK9997Dn//8Z2RkZMBgMLDwBBGRlfGeKSIiuuN069YNAwYMwJEjR3DlypVbOteQIUMAfJ/INNfU1trUQ2urr6/H8uXLAQCTJ082tVdUVACAqWJfExFBQUHBdc/361//GufPn8fGjRuRnp6Onj17IiIiogMiJyK6ezGZIiKiO1J8fDzq6uowY8aMVqfzVVZWtmtR3ejoaABAYmKi2XS+b775xjSFsGmfjnLy5EmEh4ejrKwMY8aMwcSJE03bmu6F2r17t9kxr732GkpLS697zujoaDg7O2POnDk4fvw4pk6dCmdn5455AkREdylO8yMiojtSXFwcCgsLkZWVhYKCAowdOxb9+vXD119/jfLycuzduxdr1qxpc0HdsLAw/O53v8Nbb72FBx54ABERERARrF+/HqdOnUJ8fDzCwsKsErNer4dWqwUAGAwGXLlyBYcOHUJBQQEMBgMmTJhgWti4ycyZM5GRkYGIiAhERkaiV69eKCwsxP79+/Gzn/0MeXl5rT6Wu7s7Jk2ahOzsbADgFD8iog7AZIqIiO5IiqIgMzMT48ePx9/+9jf85z//QU1NDTw8PODv74+UlBSMHTu2XedauXIlhgwZglWrVmH16tUAgPvvvx+LFy9GTEyM1WI2GAymq11qtRoajQY+Pj6Ii4tDVFQUQkNDWxwzZMgQbNu2DQkJCdiwYQMcHBwwYsQIFBQUYNOmTddNpoDGq1PZ2dn46U9/igceeMBqz4OIiBopIiK2DoKIiIisLyUlBfPnz8ff//53TJs2zdbhEBHZHSZTREREdui7775DYGAgdDodTp06BVdXV1uHRERkdzjNj4iIyI7s3r0b+fn52Lp1K6qqqpCcnMxEioiogzCZIiIisiPbt29HYmIievfujTlz5mDevHm2DomIyG5xmh8REREREZEFuM4UERERERGRBZhMERERERERWYDJFBERERERkQWYTBEREREREVmAyRQREREREZEFmEwRERERERFZgMkUERERERGRBZhMERERERERWYDJFBERERERkQX+DwBJ2FnsQUWiAAAAAElFTkSuQmCC",
"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, palette='Blues_d')\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": 7,
"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"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0eb01368",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "dat (3.12.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.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}