{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "c51ca48d",
   "metadata": {},
   "source": [
    "# Kerbside parking through a day\n",
    "\n",
    "The City of Melbourne's in-ground parking sensors recorded 42.7 million arrivals and departures in 2019. The events\n",
    "name a street and its cross streets but carry no outline. In Python each sensor's state was read at half past every\n",
    "hour of 2019 and summarised by street segment; in [Plotlay](https://www.getplotlay.com) the council's road corridor\n",
    "outlines that held a sensor were taken from its file and keyed by `seg_id`, and the summaries linked to them.\n",
    "\n",
    "This notebook reads only `../data` and recomputes the numbers on the page."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "1f8acb0b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "257 streets, 5492 bays\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd, geopandas as gpd\n",
    "import matplotlib.pyplot as plt\n",
    "DATA = '../data'\n",
    "plt.rcParams.update({'figure.dpi': 110, 'axes.spines.top': False, 'axes.spines.right': False, 'font.size': 10})\n",
    "k = pd.read_csv(f'{DATA}/kerb/kerb_segments.csv')\n",
    "h = pd.read_csv(f'{DATA}/kerb/kerb_hours.csv')\n",
    "print(len(k), 'streets,', int(k.bays.sum()), 'bays')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8ab4625c",
   "metadata": {},
   "source": [
    "## Sources and licence\n",
    "\n",
    "On-street Car Parking Sensor Data 2019 and road corridors: City of Melbourne Open Data, CC BY 4.0. Only summaries per\n",
    "street are here, never the event records. Full credits in `NOTICE`."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "17a3c3f2",
   "metadata": {},
   "source": [
    "## How full, and how long"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "6ad61854",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "occupied 8 am to 8 pm, weekdays: 56.3 %; weekends: 59.2 %\n",
      "average stay: 58.8 minutes; cars a bay a day: 10.8\n",
      "stays over the limit: 9.4 %\n"
     ]
    }
   ],
   "source": [
    "w = k.bays\n",
    "print('occupied 8 am to 8 pm, weekdays:', round((k.occ_wd_8_20 * w).sum() / w.sum(), 1), '%; weekends:', round((k.occ_we_8_20 * w).sum() / w.sum(), 1), '%')\n",
    "print('average stay:', round((k.avg_stay_min * k.stays).sum() / k.stays.sum(), 1), 'minutes; cars a bay a day:', round(k.stays.sum() / k.covered_bay_days.sum(), 1))\n",
    "print('stays over the limit:', round((k.overstay_pct * k.stays).sum() / k.stays.sum(), 1), '%')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a9c1ed80",
   "metadata": {},
   "source": [
    "## The kerb through a day (the average of the streets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "9365ff0c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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7NkTDRo00G/PmDEj2388bdq0QceOHfXbixcvRmBg4COPr1WrFvr166ff3rhxI86ePfvI4729vfHSSy/pt+X13L17d7b/CN9//3399rlz57B69Wpk5/XXX9f/87xz5476u8zO0KFDUbFiRf0/zse9pt27d0fjxo3127Nmzco24GnZsiWefvpp/fbSpUsREBDwyOOrV6+OAQMG6Lc3b96MU6dOPfL4UqVKYdy4cfrtgwcPYufOndkGCx999JF+W/4GVq5ciey89tpr+kBYfh9mz56d7fGDBw9G5cqV9cHF417Trl27olmzZvptefzsApjmzZujS5cu+u3ly5fD39//kcdXrVoVgwYN0m9v2bIFJ06cyDY4euWVV/Tbhw4dwvbt27P9Hj755BP955cvX8ayZcuyPX7ChAn6f8TBwcGYOXNmtscPHDgQ1apVU5/L3/DjXtPOnTujRYsW+m35O8guyGvSpAmeeeYZ/faKFStw48aNRx7v5+eHF198Ub+9bds2HDt27JHHy//GiRMn6rePHj2qfg7Z+fDDD/WDo6tXr2LJkiXZHv/yyy/Dy8tLfS7/X6dPn57t8f3790eNGjXU5/K/5nGvaadOndC6dWv9trxfZze4aNiwIXr06KHflvcu+T4epUKFChg2bJh+e8eOHTh8+HC2A5dJkybpt+V3etOmTdl+D++9955+sHP9+nUsWrQo2+PHjh0LHx8ffQD5uNeob9++qF27tn77ccczNoootNgo7XvU4zDVh4iIiIjIAlg9zO46NuHWrVtqxl1mzWWWOCu8nMVUn6ww1YepPhkx1YepPllhqg9TfTJiqg/ToAsq1YeBfw4Df7nU7Ovrm+MXloiIiIioKGGqDxERERGRBWDgT0RERERkARj4ExERERFZAAb+REREREQWgIE/EREREZEFYOBPRERERGQBTC7wl7KaI0eOVB0wpcymdM3MquuidNuUrqDS1VE6zErHuey66hERERERmTOTCvxjY2NVW+2zZ8+q9t579uxBnTp1VPC/f//+dMeOGjVKtatesGCBOk7X6ji7FtxERERERObKpAL/Q4cO4eLFi/j222/RoEEDlC9fHt9//z08PDywePFi/XHnz59XAf+UKVPQvHlzVKxYEb///jvu37+PmTNnGvV7ICIiIiIyBpMK/JOTk9VHBwcH/T4rKyvY29vr7xObN29W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fsnh11XSkbx7SeHx9vbO0TFpderUCVu2bMGsWbNUMy9JPxIyGJErDV9++SWio6PVPqm+k7HpmMzu6wYAaav4HDlyBBlJKpBcGZA1CDLokO+zMDHwJyIiIiKjkMBaGmHJbLsEwjqSriPbkg+fsX7/okWLVO6/LMaVwULLli1Vqo7k9efmmLRatGihUo6kGs+LL76oSnsKGQzcvn0blStXVo8jM/ryWGmVKVMG7733HoYMGaKuTMhA5aOPPkKjRo2QkQw6pMqQLCh++eWXUdisHsqrQo9069YtlCtXTpVakl8eIiIiImOR/HSRNvXElMnsupTelFlzmZFP6/z582qGXgJpicUykpnzc+fOqQW5UjVHtz4gp8fs3btX7U876y7x3okTJ9CwYUOULVtWvzZA0nhkAa+ciwxUDh06pPL6JQ1JR4J5SQuSqxOSTiTrE+Rr06b/iE8++URV95HnkkpDhfnzZuD/GAz8iYiIqKgwt8Df0kRERKh1By+99JIaABT2z5upPkREREREBax///7qSoB0LJ40aRKMgYE/EREREVEBGzFiBObMmaP6DKTtF1CYWM6TiIiIiKiASaUhY+OMPxERERGRBWDgT0RERERkARj4ExERERFZAAb+REREREQWgIE/EREREZEFYOBPRERERGQBGPgTEREREVkABv5EREREVKgmT56Mvn37Zto/btw4tGjRAvfu3Uu3/48//kCbNm0QHx9vsHMYO3Ysvv32WxhTv379MHfu3EJ7Pgb+RERERFSoSpYsieXLlyMoKEi/LzExEX/++afqbPvff/+lO37ZsmVISEiAvb29wc7hzJkzuHr1KoxJvtdbt24V2vMx8CciIiKiQvXEE0+oj2kD/CNHjiA5ORn9+/fHzp079fuTkpKwe/du/ddQ3jHwJyIiIqJCVatWLZQqVQo7duzQ75Ngv2XLlujYsWO6/TIrHh4eni7wP3ToEEaOHIn27dvjueeew9q1azM9R06OSSsmJgYjRozAiy++iKioKLUvMjIS33zzDbp27YoOHTrggw8+QFhYmP5rZOAiqUnnzp3Dq6++iqeeegoDBgzAnj17kNH169cxZswYdT7PP/+8GswUNttCf0YiIiIiMpzEeCDM3/ivaIlygG3OUnGsrKzQrl27dDP78rnsk9vw4cMREhICT09Ptd/Gxkbl+IvFixdj8ODBGDZsGN577z1cuHBBBdKzZ8/GoEGDcnxMWoGBgejRowfs7OywevVqFCtWTA025Dkl+Jc1Ce7u7mpNwObNm3HgwAFYW1sjNDRUfd6tWze8++676NWrl0pLkkHCqVOnUL16dfX4cpwMaurVq4e3335bfW8DBw7MtJahoDHwJyIiIjJlEvT/0sjYZwG8chTwrJzjw2UGf8WKFSoIdnNzUzPgb731FipVqgRfX181m967d28V+Ddu3BguLi6Ii4vDhAkT1Ay+BPGiS5cuKh1IAm9ZLCvpQo87xs7OTn8eZ8+eVYG7BOay0NbBwUHtnzJlihowyFqAKlWqqH0yKKlQoQIWLlyoBhY6U6dOVY+h+75k8LBmzRr1/Yjvv/9eDRRkn+7xK1asqGb/CxNTfYiIiIio0EnQ+/DhQ+zatQvHjx9HbGysSpsRbdu2VQG/BPFyvy7N5+jRo2qgMGTIkHSP9eyzz8Lf3x+XLl3K0TE6hw8fRqtWrdRVAAnmdUG5+Pfff9VgQBf0C1dXVxX8b9u2DWnJcToS4MvAJSAgQL9v//796NSpU7rHl8eRwUxh4ow/ERERkSmTFBuZbS8K55ELderUUdV9JJ9fZtGbNWsGR0dHfVA8ffp0nDhxAg8ePNAH/pJ2IyTX/osvvtA/lszmixs3bsDW1vaxx9SqVSvdfqkYJOlHaclzSfCuG4zoSCWgunXrptuX9gqCkMeSQY2OrAvQpf2kVbx4cRQmBv5EREREpkzy6nORYlNUpM3zl8BfPteRz6Wm/8qVK9Pl91erVk19fOWVV9TAISMJriU3/3HH6DRp0gTTpk1Ti3dlgDFz5kw1Y697Lg8PD3z99dfISGb+c6Nq1aoqpSit4OBg3L17F4WJqT5EREREZLR0n5MnT2L79u3pAv+aNWuqhb2//PKLPr9fyABBGn8tXbpUpeDIbLzcJEiXqj2yADcnx6QlVxpkPcG6detUyo/M/ouJEyeqVCBJG9I9htwkYJcKPbltFiYDHBnI6K4yvPnmm+muChQGBv5EREREZBSSwiN5/NHR0WjdunW6+yTPP22aj44swJWFsbIIuHbt2mo2XVJ30s7C5+SYtOQYWVx88OBBVZlHSnvK+Ujev1w5KFu2LBo0aKAWIf/222/6Kw85Jd+DpB1JqU85l9KlS6vvuUyZMihMVg8Le6hhYqSbWrly5dRiEFmoQURERGQsuplmCWrNgYShUg5TFr02bNgw3X0Se92+fRuVK1dWNf8zklr7ly9fVlcDJMDPmKP/uGPOnj0LJycntV9HZvdl8a+fnx+8vLzS5fVHRESoc0mbl3///n1V+UeuGuhShIRUApLj5OpDWnL8tWvX4O3trQYTsqhZvjf5vDB+3gz8H4OBPxERERUV5hb4U+H+vJnqQ0RERERkARj4ExERERFZAAb+REREREQWgIE/EREREZEFYOBPRERERGQBGPgTERERmQjpYivNn8gyJCUlqZ+5oTDwJyIiIjIRjo6OiI+PV/XmybyFhISon7X8zA3F1mCPREREREQFqmTJkoiLi8O9e/dUV1tDzgZT0Zrpl6BfGo/Jz9xQGPgTERERmQjpPCtdXoODgxEbG8u0HzNlb28PV1dXFfRn1ZE4rxj4ExEREZkQCQRLlSpl7NMgE2TWgf+ZM2ewatUqREdHo2XLlujevbuxT4mIiIiIyCjMdnHvokWL0LhxY9y6dQt2dnYYNWoUBg8ebOzTIiIiIiIyCquHDx8+hJkJCwtDhQoV8Nprr2Hy5Mlq39GjR9VAYPXq1ejRo0eOH0sGDuXKlYO/vz98fX0L8KyJiIiIiAqOWc74b9iwQQX/Msuv06hRIzRs2FBdCSAiIiIisjRmGfgfP34cJUqUUDP1adWtWxcnTpww2nkRERERERmLWS7uDQ0Nhbu7e6b9sk/KX2UnPDxc3XQkxUfcuXOnAM6UiIiIiCh/fHx8YGtra5mBv8hq6YLss7bO/iLHlClT9OsC0mrWrJlBz4+IiIiIyBByuhbVLAN/Ly+vLGf2ZZ/cl51JkyalWxsgzTHkxaxUqVKORlKGJFcZZMBx8OBBlC5dulCfm4o2/m4QfzeI7xnE/yeUdsY/J8wy8G/SpAmioqJw8eJFVKtWTb9fKvu0aNEi26+VLmlyS6tKlSowJgn6WVGI+LtBfN8g/j8hxhqUH2a5uLdz585q5PPzzz/r9/377784f/48hg0bZtRzIyIiIiIyBrOc8XdycsKCBQvQu3dvXLlyBd7e3li2bBnee+89tG/f3tinR0RERERU6Mwy8BcdO3ZUQf/GjRsRExODN954Q5XzNCWScvTJJ59kSj0i4u8G8X2D+P+EGGtQbpll514iIiIiIrKAHH8iIiIiIkqPgT8RERERkQVg4E9EREREZAHMdnGvOYiPj1dNwx7XbZgsgzSTk1tGxYsXL/TmcmR8ycnJCA8Ph7OzM+zt7bM9Vn5vHB0dC+3cyPj/O6Kjo+Hi4gIbG5tM94eFhWXqbi/HyfFk/r8bj3u/EAkJCbCysuL/FjPEiLIIOnTokGpCJm/CxYoVw6BBg3D//n1jnxYZ2RdffAFPT09UrFgx3W3nzp3GPjUqRFKt7IMPPlA/e3d3d/z+++9ZHieB3eTJk9XvjJubG8qVK/fIY8k8HDhwAGPGjFEd6uV349SpU1keV6FCBZQpUybd+whLXZuvmzdvYtKkSeo9QOKKUqVKYcKECVnGFfL+0qlTJzWhJPFHly5dcOPGDaOcNxUMBv5FzJ07d/D000+jVatWiIiIwNWrV3Hu3DkMHDjQ2KdGRUDNmjXx4MGDdDcpXUuW45dfflGz/OvXr8/2uO+//x7fffcd1q5dq2b8ZXv06NFqm8zT559/riaNZs2a9dhjp0yZku59RDrbk3n67LPPsHXrVixfvhxxcXHYtm2bKnUuvY7SkvcJaYAqQX9ISAiCgoJUxkHXrl3VFQAyDwz8i5hp06apP7T/+7//U5fjSpcujW+//RabNm3iGzMR4ccff1Qz/r6+vo98NZKSkvDNN99g3LhxaNmypdr3/PPPo3v37vjqq6/4KpopGdTJjD97v1BarVu3xt69e9GsWTO1LT2NPvzwQ3W1+Pr16/rjlixZgmvXrmHq1Kkq+Jffo19//VVNPq5cuZIvqplg4F/EbN++Xf2ROjg46Pe1a9dO5V/KfUSJiYmcfaFsSYpHcHBwpqtBTz75pEoHkaaGRPw9sAzDhw9XaTtp6dYOSh6/jsQY1atXR9myZfX7/Pz8VCoY4w/zwcC/iJHRt+ThpSWDAMnZTDsyJ8t04cIFfe6lvEHPnDkz0yI9It17Rcb3EtmWRcGS80uWbeLEiShRooS6PfPMMzhz5oyxT4kKiVwRlFl9CeplvUd28YeQfYw/zAcD/yI4A5NV9Q3Zx9kZyyZv0nK5VRZkSVWO119/HePHj8fHH39s7FOjIkb3XpHxvUS3zfcSyzZ06FCcPHlS5XsfO3ZMBYKSEnb58mVjnxoVgnfeeQeHDx/G9OnT0+1n/GEZGPgXMTKTK2XYMoqKilIzvWS5RowYoXK0nZyc1O2ll15S+3766Sf1j5tIR3dZP+N7ibyPCL6XWDZ5z6hWrZpK85AJBcntlsWbv/32m7FPjQqYLPKXm8z4SyGRtBh/WAYG/kVMlSpV1OKajP+sZXV95cqVjXZeVDTVqlVLVX+Seu5Ead9HRMb3ErlcLz0fypcvzxeL9CTdR/K6b926xVfFjMnA7q233lLVvmTiKCfxh+59g/GH+WDgX8TICHzPnj0qmNORij6Sx51xdE60f/9+Vadd/nETpS37Knm5GzZsSPeiyHaHDh1y1MCHLKuMtNRqZ3BnvhYvXqyCfSn5+sYbb2R5jMQYUsf/4sWL+n2SEhYQEKDKfJJ5YOBfxLz88suq2Y6kcMgoWypwyB/piy++qBZzkuVq06aNyvGX34vz58/j3XffVZfoP/nkE3Z3tiCSly1112Wdhy4vV7bTThZICof8g589ezYWLVqEu3fvqrLAu3btUr8vZJ7k6rD8LuhSuuR3QrbTrumYO3euWh8k/1sk4Jea7pJCKBMI8v+HzM+6detUDCFrwuSWtn+DVInTkbr+jRs3VvGH/I85e/YsRo0apfoKSS1/Mg9WD1kSpMiRpl1yOW7fvn0ql1vqb8s/66wW/ZLlOH78uAreZJZfSrHJQFD+gUuXRbIccpleujhnJLW5JbBPa968earuv8zYVa1aVS0E55VD8zVgwADVmCkjCeSkYZeQXH7p4LxgwQI1u+vj46O69spEgre3txHOmgraCy+8oIL/rKxevTpd12YpAyyLfzdv3qwmECTg//rrr+Hh4cEflJlg4E9EREREZAGY6kNEREREZAEY+BMRERERWQAG/kREREREFoCBPxERERGRBWDgT0RERERkARj4ExERERFZAAb+REREREQWgIE/EREREZEFYOBPRERERGQBGPgTEVGORUdHo2/fvjhy5AhfNSIiE8PAn4iIciw+Ph7Lly/HnTt3+KoREZkYBv5ERERERBaAgT8REeVaUlISfv/9d7z00ksYN24c/v3330zHPHz4EH///TdGjx6NwYMH49tvv0VoaKj+/rt376q0oatXr6b7uqlTp+LLL7/MlF504MABTJs2DUOHDsWnn37KnxoRUS4x8CciolwbM2YMdu/ejZYtW6JYsWLo0qULVq1ale6YUaNGqVvFihXRtm1bLFmyBA0bNkRISIi6PzIyUqUNpR0MiEOHDmHXrl2Z0ou6d++Offv2oVOnTujQoQN/akREuWSb2y8gIiJ67rnnMH36dP0LcenSJfzxxx/o1auX2t67d6+6IrBx40Z07txZ7ZNZfz8/P3z22Wf46aefcv0iyuPMnz+fLz4RUR5xxp+IiHKtY8eO6barVasGf39//fbOnTvh7u6uD/qFXBno0aOHui8vunbtyp8UEVE+MPAnIqJcc3R0TP/PxNoaycnJ+u3g4GB4eHhk+jrZFxQUlKdXvESJEvxJERHlAwN/IiIyOEnpuXXrFmJiYtLtl5QguU84OTmpj7GxsemOkUEDEREZHgN/IiIqkDUA9vb26arzyKLdf/75B8OGDVPbZcqUgZubGzZt2qQ/5tixY9iyZQt/IkREBYCLe4mIyOBKly6tFveOHDlSBfuenp6qIo+U4hwxYoQ6xsrKCj/88APGjh2L7du3w87ODoGBgahbty5/IkREBcDqoRRaJiIiyoGEhASsXr0abdq0gY+Pj37/6dOnVV1+KbWZVkREBA4ePKhq8UtAL6U9MwoICMCpU6fU4ECOkc8l/UeeI7vnJCKi3GHgT0RERERkAZjjT0RERERkARj4ExERERFZAAb+REREREQWgIE/EREREZEFYOBPRERERGQBGPgTEREREVkABv5ERERERBaAgT8RERERkQVg4E9EREREZAEY+BMRERERWQAG/kREREREFoCBPxERERGRBWDgT0REREQE8/f//VYXcbSbF1QAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 880x374 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "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>hour</th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>...</th>\n",
       "      <th>14</th>\n",
       "      <th>15</th>\n",
       "      <th>16</th>\n",
       "      <th>17</th>\n",
       "      <th>18</th>\n",
       "      <th>19</th>\n",
       "      <th>20</th>\n",
       "      <th>21</th>\n",
       "      <th>22</th>\n",
       "      <th>23</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>day_type</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Weekday</th>\n",
       "      <td>33.3</td>\n",
       "      <td>29.6</td>\n",
       "      <td>27.3</td>\n",
       "      <td>26.1</td>\n",
       "      <td>25.5</td>\n",
       "      <td>27.0</td>\n",
       "      <td>34.8</td>\n",
       "      <td>40.1</td>\n",
       "      <td>42.5</td>\n",
       "      <td>51.8</td>\n",
       "      <td>...</td>\n",
       "      <td>62.2</td>\n",
       "      <td>55.1</td>\n",
       "      <td>47.6</td>\n",
       "      <td>46.0</td>\n",
       "      <td>53.9</td>\n",
       "      <td>61.6</td>\n",
       "      <td>61.9</td>\n",
       "      <td>56.3</td>\n",
       "      <td>47.0</td>\n",
       "      <td>40.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Weekend</th>\n",
       "      <td>48.1</td>\n",
       "      <td>43.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>33.8</td>\n",
       "      <td>30.9</td>\n",
       "      <td>29.3</td>\n",
       "      <td>31.2</td>\n",
       "      <td>34.7</td>\n",
       "      <td>39.4</td>\n",
       "      <td>48.5</td>\n",
       "      <td>...</td>\n",
       "      <td>65.2</td>\n",
       "      <td>62.6</td>\n",
       "      <td>58.3</td>\n",
       "      <td>55.9</td>\n",
       "      <td>60.8</td>\n",
       "      <td>65.0</td>\n",
       "      <td>65.0</td>\n",
       "      <td>60.8</td>\n",
       "      <td>52.8</td>\n",
       "      <td>47.1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2 rows \u00d7 24 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "hour        0     1     2     3     4     5     6     7     8     9   ...  \\\n",
       "day_type                                                              ...   \n",
       "Weekday   33.3  29.6  27.3  26.1  25.5  27.0  34.8  40.1  42.5  51.8  ...   \n",
       "Weekend   48.1  43.0  38.0  33.8  30.9  29.3  31.2  34.7  39.4  48.5  ...   \n",
       "\n",
       "hour        14    15    16    17    18    19    20    21    22    23  \n",
       "day_type                                                              \n",
       "Weekday   62.2  55.1  47.6  46.0  53.9  61.6  61.9  56.3  47.0  40.3  \n",
       "Weekend   65.2  62.6  58.3  55.9  60.8  65.0  65.0  60.8  52.8  47.1  \n",
       "\n",
       "[2 rows x 24 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "day = h.groupby(['hour', 'day_type']).occupied.mean().unstack()\n",
    "ax = day.plot(figsize=(8, 3.4)); ax.axhline(85, ls='--', c='grey'); ax.set_ylabel('% of bays occupied'); ax.set_ylim(0, 100)\n",
    "plt.show()\n",
    "day.round(1).T"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "315b2f1f",
   "metadata": {},
   "source": [
    "## The streets (10 bays or more)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "98b22227",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "fullest\n"
     ]
    },
    {
     "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>name</th>\n",
       "      <th>bays</th>\n",
       "      <th>sign</th>\n",
       "      <th>occ_wd_8_20</th>\n",
       "      <th>avg_stay_min</th>\n",
       "      <th>stays_per_bay_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>175</th>\n",
       "      <td>Clarendon St, Albert St to Grey St</td>\n",
       "      <td>12</td>\n",
       "      <td>2P MTR M-F 7:30-18:30</td>\n",
       "      <td>87.1</td>\n",
       "      <td>101.0</td>\n",
       "      <td>9.29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>71</th>\n",
       "      <td>Queen St, Little Collins St to Collins St</td>\n",
       "      <td>13</td>\n",
       "      <td>1P MTR M-SAT 7:30-18:30</td>\n",
       "      <td>80.7</td>\n",
       "      <td>60.4</td>\n",
       "      <td>15.36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>157</th>\n",
       "      <td>Mackenzie St, Russell St to Victoria St</td>\n",
       "      <td>13</td>\n",
       "      <td>4P TKT A M-SAT 7:30-20:30</td>\n",
       "      <td>80.5</td>\n",
       "      <td>96.8</td>\n",
       "      <td>10.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>73</th>\n",
       "      <td>Queen St, Little Bourke St to Bourke St</td>\n",
       "      <td>32</td>\n",
       "      <td>1P MTR M-SAT 7:30-18:30</td>\n",
       "      <td>80.3</td>\n",
       "      <td>49.6</td>\n",
       "      <td>16.69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>Exhibition St, Flinders Lane to Flinders St</td>\n",
       "      <td>32</td>\n",
       "      <td>2P MTR M-SAT 7:30-20:30</td>\n",
       "      <td>79.8</td>\n",
       "      <td>50.3</td>\n",
       "      <td>17.21</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                            name  bays  \\\n",
       "175           Clarendon St, Albert St to Grey St    12   \n",
       "71     Queen St, Little Collins St to Collins St    13   \n",
       "157      Mackenzie St, Russell St to Victoria St    13   \n",
       "73       Queen St, Little Bourke St to Bourke St    32   \n",
       "50   Exhibition St, Flinders Lane to Flinders St    32   \n",
       "\n",
       "                          sign  occ_wd_8_20  avg_stay_min  stays_per_bay_day  \n",
       "175      2P MTR M-F 7:30-18:30         87.1         101.0               9.29  \n",
       "71     1P MTR M-SAT 7:30-18:30         80.7          60.4              15.36  \n",
       "157  4P TKT A M-SAT 7:30-20:30         80.5          96.8              10.75  \n",
       "73     1P MTR M-SAT 7:30-18:30         80.3          49.6              16.69  \n",
       "50     2P MTR M-SAT 7:30-20:30         79.8          50.3              17.21  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "longest stays\n"
     ]
    },
    {
     "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>name</th>\n",
       "      <th>bays</th>\n",
       "      <th>sign</th>\n",
       "      <th>occ_wd_8_20</th>\n",
       "      <th>avg_stay_min</th>\n",
       "      <th>stays_per_bay_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>216</th>\n",
       "      <td>Airlie St, Clowes St to The Righi</td>\n",
       "      <td>55</td>\n",
       "      <td>1P RPA 7:30am-10pm M-SUN</td>\n",
       "      <td>43.0</td>\n",
       "      <td>216.7</td>\n",
       "      <td>2.87</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>230</th>\n",
       "      <td>Palmer St, Agnes St to Charles St</td>\n",
       "      <td>11</td>\n",
       "      <td>1P M-SUN 7:30-23:00</td>\n",
       "      <td>65.0</td>\n",
       "      <td>208.8</td>\n",
       "      <td>4.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>203</th>\n",
       "      <td>Dodds St, Miles St to Coventry St</td>\n",
       "      <td>10</td>\n",
       "      <td>2P MTR M-F 7:30-18:30</td>\n",
       "      <td>73.4</td>\n",
       "      <td>195.5</td>\n",
       "      <td>4.62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>215</th>\n",
       "      <td>Walsh St, Domain Rd to Acland St</td>\n",
       "      <td>19</td>\n",
       "      <td>2P RPA 7:30AM-11PM M-SUN</td>\n",
       "      <td>56.4</td>\n",
       "      <td>184.4</td>\n",
       "      <td>4.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>153</th>\n",
       "      <td>Simpson St, Albert St to Victoria Pde</td>\n",
       "      <td>23</td>\n",
       "      <td>1P M-SUN 7:30AM-10PM</td>\n",
       "      <td>67.8</td>\n",
       "      <td>184.0</td>\n",
       "      <td>4.82</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                      name  bays                      sign  \\\n",
       "216      Airlie St, Clowes St to The Righi    55  1P RPA 7:30am-10pm M-SUN   \n",
       "230      Palmer St, Agnes St to Charles St    11       1P M-SUN 7:30-23:00   \n",
       "203      Dodds St, Miles St to Coventry St    10     2P MTR M-F 7:30-18:30   \n",
       "215       Walsh St, Domain Rd to Acland St    19  2P RPA 7:30AM-11PM M-SUN   \n",
       "153  Simpson St, Albert St to Victoria Pde    23      1P M-SUN 7:30AM-10PM   \n",
       "\n",
       "     occ_wd_8_20  avg_stay_min  stays_per_bay_day  \n",
       "216         43.0         216.7               2.87  \n",
       "230         65.0         208.8               4.25  \n",
       "203         73.4         195.5               4.62  \n",
       "215         56.4         184.4               4.58  \n",
       "153         67.8         184.0               4.82  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "most cars a bay a day\n"
     ]
    },
    {
     "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>name</th>\n",
       "      <th>bays</th>\n",
       "      <th>sign</th>\n",
       "      <th>occ_wd_8_20</th>\n",
       "      <th>avg_stay_min</th>\n",
       "      <th>stays_per_bay_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>Collins St, Queen St to Elizabeth St</td>\n",
       "      <td>22</td>\n",
       "      <td>1/2P MTR M-SAT 7.30 TO 18.30</td>\n",
       "      <td>58.6</td>\n",
       "      <td>13.0</td>\n",
       "      <td>44.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>69</th>\n",
       "      <td>Queen St, Flinders St to Flinders Lane</td>\n",
       "      <td>13</td>\n",
       "      <td>1P MTR M-SAT 7:30-18:30</td>\n",
       "      <td>50.6</td>\n",
       "      <td>14.4</td>\n",
       "      <td>38.06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>Collins St, Russell St to Exhibition St</td>\n",
       "      <td>15</td>\n",
       "      <td>2P DIS 7.30AM TO 8.30PM</td>\n",
       "      <td>74.2</td>\n",
       "      <td>26.5</td>\n",
       "      <td>31.55</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>62</th>\n",
       "      <td>Russell St, Little Bourke St to Bourke St</td>\n",
       "      <td>16</td>\n",
       "      <td>LZ 15M M-F 7:30-19:30</td>\n",
       "      <td>64.1</td>\n",
       "      <td>29.0</td>\n",
       "      <td>31.04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>Elizabeth St, Collins St to Flinders Lane</td>\n",
       "      <td>13</td>\n",
       "      <td>1/2P MTR M-SAT 7.30 TO 18.30</td>\n",
       "      <td>63.0</td>\n",
       "      <td>32.8</td>\n",
       "      <td>28.90</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                         name  bays  \\\n",
       "45       Collins St, Queen St to Elizabeth St    22   \n",
       "69     Queen St, Flinders St to Flinders Lane    13   \n",
       "44    Collins St, Russell St to Exhibition St    15   \n",
       "62  Russell St, Little Bourke St to Bourke St    16   \n",
       "65  Elizabeth St, Collins St to Flinders Lane    13   \n",
       "\n",
       "                            sign  occ_wd_8_20  avg_stay_min  stays_per_bay_day  \n",
       "45  1/2P MTR M-SAT 7.30 TO 18.30         58.6          13.0              44.92  \n",
       "69       1P MTR M-SAT 7:30-18:30         50.6          14.4              38.06  \n",
       "44       2P DIS 7.30AM TO 8.30PM         74.2          26.5              31.55  \n",
       "62         LZ 15M M-F 7:30-19:30         64.1          29.0              31.04  \n",
       "65  1/2P MTR M-SAT 7.30 TO 18.30         63.0          32.8              28.90  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "big = k[k.bays >= 10]\n",
    "cols = ['name', 'bays', 'sign', 'occ_wd_8_20', 'avg_stay_min', 'stays_per_bay_day']\n",
    "print('fullest'); display(big.sort_values('occ_wd_8_20', ascending=False)[cols].head(5))\n",
    "print('longest stays'); display(big.sort_values('avg_stay_min', ascending=False)[cols].head(5))\n",
    "print('most cars a bay a day'); display(big.sort_values('stays_per_bay_day', ascending=False)[cols].head(5))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb5c4be5",
   "metadata": {},
   "source": [
    "## Plotlay's layer\n",
    "\n",
    "`kerb.geojson` is Plotlay's export of the Kerb layer, keyed by `seg_id`, with the formula columns `full_hours_wd`\n",
    "(`count(occupied_wd >= 85)`: weekday hours at 85% or fuller), `full_hours_we` and `weekend_vs_weekday`. The first is\n",
    "worked out again here from the hour table."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "9449a97b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "257 streets in the layer; largest difference in full weekday hours: 0.0\n"
     ]
    }
   ],
   "source": [
    "g = gpd.read_file(f'{DATA}/geometry/kerb.geojson')\n",
    "again = h[(h.day_type == 'Weekday') & (h.occupied >= 85)].groupby('seg_id').size()\n",
    "m = g.assign(seg=g.key.astype(int)).set_index('seg').full_hours_wd.astype(float)\n",
    "diff = (m - again.reindex(m.index).fillna(0)).abs().max()\n",
    "print(len(g), 'streets in the layer; largest difference in full weekday hours:', diff)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "133fa07d",
   "metadata": {},
   "source": [
    "## Read it carefully\n",
    "\n",
    "- 2019, before the pandemic; the sensors have since been replaced.\n",
    "- How full is read at half past each hour; a bay closed to parking reads as empty.\n",
    "- A stay is 2 minutes to 24 hours; residents with permits are exempt from limits in their streets."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3",
   "language": "python"
  },
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}