diff --git a/rt_segment_speeds/22a_investigate_post_interpolation.ipynb b/rt_segment_speeds/22a_investigate_post_interpolation.ipynb
new file mode 100644
index 000000000..98f19b8e0
--- /dev/null
+++ b/rt_segment_speeds/22a_investigate_post_interpolation.ipynb
@@ -0,0 +1,2014 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "bd13ebd1-69b0-4fc2-8202-cc34eacb6e9e",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import geopandas as gpd\n",
+ "import pandas as pd\n",
+ "from siuba import *\n",
+ "\n",
+ "from shared_utils import rt_dates, rt_utils, geography_utils\n",
+ "from segment_speed_utils import helpers\n",
+ "from segment_speed_utils.project_vars import SEGMENT_GCS, PROJECT_CRS\n",
+ "\n",
+ "from prep_comparison import map_one_trip, remove_interpolated_segments\n",
+ "\n",
+ "analysis_date = rt_dates.DATES[\"sep2023\"]\n",
+ "\n",
+ "import folium\n",
+ "import numpy as np"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "28bed394-670c-4f25-81c2-1db9e8f451b0",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from calitp_data_analysis.calitp_color_palette import CALITP_CATEGORY_BOLD_COLORS"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "369c795d-5a7a-4471-9432-c0338f430b27",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_eric = gpd.read_parquet(f\"{SEGMENT_GCS}speeds_eric_{analysis_date}.parquet\")\n",
+ "df_eric = remove_interpolated_segments(df_eric)\n",
+ "df_tiff = gpd.read_parquet(f\"{SEGMENT_GCS}speeds_tiff_{analysis_date}.parquet\")\n",
+ "df_tiff_interp = pd.read_parquet(f\"{SEGMENT_GCS}speeds_tiff_interp_{analysis_date}.parquet\")\n",
+ "speed_df = pd.read_parquet(\n",
+ " f\"{SEGMENT_GCS}speeds_comparison_{analysis_date}.parquet\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "65dadf9f-17e5-4774-9789-0c6ebe3fc211",
+ "metadata": {},
+ "source": [
+ "# Dataset-level comparison\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "e964fbdc-4426-42d8-bb36-10ad3e122ebe",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " _merge | \n",
+ " n | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " left_only | \n",
+ " 8067 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " right_only | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " both | \n",
+ " 130920 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " _merge n\n",
+ "0 left_only 8067\n",
+ "1 right_only 0\n",
+ "2 both 130920"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "speed_df >> count(_._merge)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "424279aa-fcf3-46ec-b706-bdae0f8b4b0d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# some infinite speeds present\n",
+ "speed_df = speed_df >> filter(_._merge == 'both', _.tiff_interp_speed_mph < np.inf)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "79d957c1-672a-4e62-9f9d-87a3f8d80be0",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/tmp/ipykernel_319/1626851892.py:1: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " speed_df['interp_difference'] = speed_df.tiff_interp_speed_mph - speed_df.eric_speed_mph\n"
+ ]
+ }
+ ],
+ "source": [
+ "speed_df['interp_difference'] = speed_df.tiff_interp_speed_mph - speed_df.eric_speed_mph"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "2365831f-53b0-4124-b6e6-20a741a8fc32",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " trip_id | \n",
+ " shape_id | \n",
+ " stop_id | \n",
+ " stop_sequence | \n",
+ " route_id | \n",
+ " direction_id | \n",
+ " eric_speed_mph | \n",
+ " tiff_speed_mph | \n",
+ " _merge | \n",
+ " tiff_interp_speed_mph | \n",
+ " interp_difference | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 891 | \n",
+ " 10040009470701-JUNE23 | \n",
+ " 400947_JUNE23 | \n",
+ " 683 | \n",
+ " 3.0 | \n",
+ " 40-13168 | \n",
+ " 1.0 | \n",
+ " 7.236980 | \n",
+ " 7.286552 | \n",
+ " both | \n",
+ " 99.146632 | \n",
+ " 91.909652 | \n",
+ "
\n",
+ " \n",
+ " 893 | \n",
+ " 10040009470808-JUNE23 | \n",
+ " 400947_JUNE23 | \n",
+ " 683 | \n",
+ " 3.0 | \n",
+ " 40-13168 | \n",
+ " 1.0 | \n",
+ " 3.888103 | \n",
+ " 8.222882 | \n",
+ " both | \n",
+ " 90.133302 | \n",
+ " 86.245199 | \n",
+ "
\n",
+ " \n",
+ " 895 | \n",
+ " 10040009470535-JUNE23 | \n",
+ " 400947_JUNE23 | \n",
+ " 683 | \n",
+ " 3.0 | \n",
+ " 40-13168 | \n",
+ " 1.0 | \n",
+ " 1.436908 | \n",
+ " 4.609504 | \n",
+ " both | \n",
+ " 82.622193 | \n",
+ " 81.185286 | \n",
+ "
\n",
+ " \n",
+ " 898 | \n",
+ " 10040009470758-JUNE23 | \n",
+ " 400947_JUNE23 | \n",
+ " 683 | \n",
+ " 3.0 | \n",
+ " 40-13168 | \n",
+ " 1.0 | \n",
+ " 7.931731 | \n",
+ " 8.454223 | \n",
+ " both | \n",
+ " 123.933290 | \n",
+ " 116.001560 | \n",
+ "
\n",
+ " \n",
+ " 1502 | \n",
+ " 10222000790716-JUNE23 | \n",
+ " 2220079_JUNE23 | \n",
+ " 13038 | \n",
+ " 3.0 | \n",
+ " 222-13168 | \n",
+ " 1.0 | \n",
+ " 52.233934 | \n",
+ " 28.658222 | \n",
+ " both | \n",
+ " 348.226230 | \n",
+ " 295.992295 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 124525 | \n",
+ " 10460002000705-JUNE23 | \n",
+ " 4600200_JUNE23 | \n",
+ " 16926 | \n",
+ " 69.0 | \n",
+ " 460-13168 | \n",
+ " 0.0 | \n",
+ " 23.951370 | \n",
+ " 25.758521 | \n",
+ " both | \n",
+ " 191.610963 | \n",
+ " 167.659593 | \n",
+ "
\n",
+ " \n",
+ " 124531 | \n",
+ " 10106000690704-JUNE23 | \n",
+ " 1060069_JUNE23 | \n",
+ " 4427 | \n",
+ " 69.0 | \n",
+ " 106-13168 | \n",
+ " 0.0 | \n",
+ " 12.680597 | \n",
+ " 3.190622 | \n",
+ " both | \n",
+ " 97.217912 | \n",
+ " 84.537315 | \n",
+ "
\n",
+ " \n",
+ " 124534 | \n",
+ " 10106000690744-JUNE23 | \n",
+ " 1060069_JUNE23 | \n",
+ " 4427 | \n",
+ " 69.0 | \n",
+ " 106-13168 | \n",
+ " 0.0 | \n",
+ " 14.582687 | \n",
+ " 5.579753 | \n",
+ " both | \n",
+ " 124.994459 | \n",
+ " 110.411772 | \n",
+ "
\n",
+ " \n",
+ " 125477 | \n",
+ " 10070003020649-JUNE23 | \n",
+ " 700302_JUNE23 | \n",
+ " 2176 | \n",
+ " 70.0 | \n",
+ " 70-13168 | \n",
+ " 0.0 | \n",
+ " 9.890274 | \n",
+ " 17.969755 | \n",
+ " both | \n",
+ " 890.124693 | \n",
+ " 880.234419 | \n",
+ "
\n",
+ " \n",
+ " 133086 | \n",
+ " 10070003000833-JUNE23 | \n",
+ " 700300_JUNE23 | \n",
+ " 13549 | \n",
+ " 80.0 | \n",
+ " 70-13168 | \n",
+ " 1.0 | \n",
+ " 26.591245 | \n",
+ " 2442.099225 | \n",
+ " both | \n",
+ " 132.956224 | \n",
+ " 106.364979 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
89 rows × 11 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " trip_id shape_id stop_id stop_sequence \\\n",
+ "891 10040009470701-JUNE23 400947_JUNE23 683 3.0 \n",
+ "893 10040009470808-JUNE23 400947_JUNE23 683 3.0 \n",
+ "895 10040009470535-JUNE23 400947_JUNE23 683 3.0 \n",
+ "898 10040009470758-JUNE23 400947_JUNE23 683 3.0 \n",
+ "1502 10222000790716-JUNE23 2220079_JUNE23 13038 3.0 \n",
+ "... ... ... ... ... \n",
+ "124525 10460002000705-JUNE23 4600200_JUNE23 16926 69.0 \n",
+ "124531 10106000690704-JUNE23 1060069_JUNE23 4427 69.0 \n",
+ "124534 10106000690744-JUNE23 1060069_JUNE23 4427 69.0 \n",
+ "125477 10070003020649-JUNE23 700302_JUNE23 2176 70.0 \n",
+ "133086 10070003000833-JUNE23 700300_JUNE23 13549 80.0 \n",
+ "\n",
+ " route_id direction_id eric_speed_mph tiff_speed_mph _merge \\\n",
+ "891 40-13168 1.0 7.236980 7.286552 both \n",
+ "893 40-13168 1.0 3.888103 8.222882 both \n",
+ "895 40-13168 1.0 1.436908 4.609504 both \n",
+ "898 40-13168 1.0 7.931731 8.454223 both \n",
+ "1502 222-13168 1.0 52.233934 28.658222 both \n",
+ "... ... ... ... ... ... \n",
+ "124525 460-13168 0.0 23.951370 25.758521 both \n",
+ "124531 106-13168 0.0 12.680597 3.190622 both \n",
+ "124534 106-13168 0.0 14.582687 5.579753 both \n",
+ "125477 70-13168 0.0 9.890274 17.969755 both \n",
+ "133086 70-13168 1.0 26.591245 2442.099225 both \n",
+ "\n",
+ " tiff_interp_speed_mph interp_difference \n",
+ "891 99.146632 91.909652 \n",
+ "893 90.133302 86.245199 \n",
+ "895 82.622193 81.185286 \n",
+ "898 123.933290 116.001560 \n",
+ "1502 348.226230 295.992295 \n",
+ "... ... ... \n",
+ "124525 191.610963 167.659593 \n",
+ "124531 97.217912 84.537315 \n",
+ "124534 124.994459 110.411772 \n",
+ "125477 890.124693 880.234419 \n",
+ "133086 132.956224 106.364979 \n",
+ "\n",
+ "[89 rows x 11 columns]"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "speed_df >> filter(_.tiff_interp_speed_mph > 80)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "d3cbad40-f49e-47c8-843d-8b0d71f4ce20",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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EKBp06Zp2rRpx61p3769Fi5ceMLn6du373G/j6fBHXfcoTvuuOPECwYAAOckfrsKAAAYiZADAACMRMgBAABGIuQAAAAjEXIAAICRCDkAAMBIhBwAAGAkv78nB+bqPmHFKdU5gizNGiD1nlIkd/2Jf+a+uX09M6NFnx8AcPbiTA4AADASIQcAABiJkAMAAIxEyAEAAEYi5AAAACMRcgAAgJEIOQAAwEiEHAAAYCRCDgAAMBIhBwAAGImQAwAAjETIAQAARiLkAAAAIxFyAACAkQg5AADASIQcAABgJEIOAAAwEiEHAAAYiZADAACMRMgBAABGIuQAAAAjEXIAAICRCDkAAMBIhBwAAGAkQg4AADASIQcAABiJkAMAAIxEyAEAAEYi5AAAACMRcgAAgJEIOQAAwEiEHAAAYCRCDgAAMBIhBwAAGImQAwAAjETIAQAARiLkAAAAIxFyAACAkQg5AADASIQcAABgJEIOAAAwEiEHAAAYya+QM2XKFAUEBPjcevbsaY8fPnxYWVlZ6tChg9q2bathw4apsrLSZ449e/YoIyND4eHh6tSpkx599FEdOXLEp2b16tW6/PLL5XA41KNHDxUWFjZaS35+vrp3767Q0FClpKRo48aN/rQCAAAM5/eZnMsuu0zffvutffvwww/tsXHjxumdd97RkiVLtGbNGn3zzTe67bbb7PH6+nplZGSorq5O69at0+uvv67CwkJNmjTJrtm9e7cyMjJ07bXXqqKiQjk5OXrggQdUVFRk1yxatEi5ubmaPHmytmzZon79+ik9PV1VVVWnux8AAIBh/A45bdq0UUxMjH3r2LGjJKmmpkavvfaaZs+ereuuu05JSUlasGCB1q1bp/Xr10uSiouL9emnn+qNN95QYmKihg4dqunTpys/P191dXWSpIKCAsXHx+u5555Tr169lJ2drdtvv11z5syx1zB79myNHj1aI0eOVEJCggoKChQeHq758+c3xT4BAAAGaOPvA7744gvFxsYqNDRUTqdTM2bMUFxcnMrLy+XxeJSammrX9uzZU3FxcSorK9PAgQNVVlamPn36KDo62q5JT0/XmDFjtGPHDvXv319lZWU+czTU5OTkSJLq6upUXl6uvLw8ezwwMFCpqakqKys74drdbrfcbrd9v7a2VpLk8Xjk8Xj83RXH1TBXU875c3AEWadWF2j5/G9L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WFiYUlNT9cUXX/jU7Nu3TyNGjFBERISioqI0atQo/fDDDz41n3zyia655hqFhoaqa9eumjVrVqO1LFmyRD179lRoaKj69Omjd9991992AACAofwOOQcOHFC/fv2Un59/zPFZs2bphRdeUEFBgTZs2KDzzjtP6enpOnz4sF0zYsQI7dixQyUlJVq+fLnWrl2rBx980B6vra1VWlqaunXrpvLycj377LOaMmWKXn75Zbtm3bp1uuuuuzRq1Cht3bpVt9xyi2655RZt377d35YAAICB/P7tqqFDh2ro0KHHHLMsS88//7wmTpyom2++WZL0P//zP4qOjtayZct055136rPPPtPKlSu1adMmJScnS5L+8Ic/6IYbbtB///d/KzY2Vm+++abq6uo0f/58hYSE6LLLLlNFRYVmz55th6G5c+fq+uuv16OPPipJmj59ukpKSvTiiy+qoKDgmOtzu91yu932/draWkmSx+ORx+Pxd1ccV8NcjkCryeY8mzT0ZWp/Ej0eS1P+O/JzaFhva1u3P+ix9TO9P6l5ejzVuQIsyzrtv+IBAQFaunSpbrnlFknSV199pYsuukhbt25VYmKiXferX/1KiYmJmjt3rubPn69HHnlE33//vT1+5MgRhYaGasmSJbr11lt17733qra21uetsPfff1/XXXed9u3bp3bt2ikuLk65ubnKycmxayZPnqxly5bp448/PuZ6p0yZoqlTpzbavnDhQoWHh5/ubgAAAD+jgwcP6u6771ZNTY0iIiKOW9ekv0LucrkkSdHR0T7bo6Oj7TGXy6VOnTr5LqJNG7Vv396nJj4+vtEcDWPt2rWTy+U64fMcS15ennJzc+37tbW16tq1q9LS0k64k/zl8XhUUlKiJzcHyu09+a87tzaOQEvTk73G9ifR47Fsn5L+M6yq6TT8ezhkyBAFBwe39HKaBT22fqb3JzVPjw3vxJxMk4acs53D4ZDD4Wi0PTg4uFleXG5vgNz1Zv4HUjK/P4kej9Za/wA317/fZxN6bP1M709q2h5PdZ4mvYQ8JiZGklRZWemzvbKy0h6LiYlRVVWVz/iRI0e0b98+n5pjzXH0cxyvpmEcAACc25o05MTHxysmJkalpaX2ttraWm3YsEFOp1OS5HQ6VV1drfLycrtm1apV8nq9SklJsWvWrl3r88GikpISXXrppWrXrp1dc/TzNNQ0PA8AADi3+R1yfvjhB1VUVKiiokKStHv3blVUVGjPnj0KCAhQTk6OnnrqKb399tvatm2b7r33XsXGxtofTu7Vq5euv/56jR49Whs3btRHH32k7Oxs3XnnnYqNjZUk3X333QoJCdGoUaO0Y8cOLVq0SHPnzvX5PM3YsWO1cuVKPffcc9q5c6emTJmizZs3Kzs7+8z3CgAAaPX8/kzO5s2bde2119r3G4JHZmamCgsLNX78eB04cEAPPvigqqurdfXVV2vlypUKDQ21H/Pmm28qOztbgwcPVmBgoIYNG6YXXnjBHo+MjFRxcbGysrKUlJSkjh07atKkST7fpXPllVdq4cKFmjhxoh5//HFdfPHFWrZsmXr37n1aOwIAAJjF75AzaNAgneiq84CAAE2bNk3Tpk07bk379u21cOHCEz5P37599cEHH5yw5o477tAdd9xx4gUDAIBzEr9dBQAAjETIAQAARiLkAAAAIxFyAACAkQg5AADASIQcAABgJEIOAAAwEiEHAAAYiZADAACMRMgBAABGIuQAAAAjEXIAAICRCDkAAMBIhBwAAGAkQg4AADASIQcAABiJkAMAAIxEyAEAAEYi5AAAACMRcgAAgJEIOQAAwEiEHAAAYCRCDgAAMBIhBwAAGImQAwAAjETIAQAARiLkAAAAIxFyAACAkQg5AADASIQcAABgJEIOAAAwUpuWXgCA1qH7hBUtvQS/OIIszRrQ0qsA0JI4kwMAAIxEyAEAAEYi5AAAACMRcgAAgJEIOQAAwEiEHAAAYCRCDgAAMBIhBwAAGImQAwAAjETIAQAARiLkAAAAIxFyAACAkQg5AADASIQcAABgJEIOAAAwEiEHAAAYiZADAACM1KalFwAAzan3lCK56wNaehmn7OuZGS29BMAYrf5MTn5+vrp3767Q0FClpKRo48aNLb0kAABwFmjVIWfRokXKzc3V5MmTtWXLFvXr10/p6emqqqpq6aUBAIAW1qrfrpo9e7ZGjx6tkSNHSpIKCgq0YsUKzZ8/XxMmTGhU73a75Xa77fs1NTWSpH379snj8TTZujwejw4ePKg2nkDVe1vPafJT1cZr6eBBr7H9SfRogtbaX4/fLT7lWkegpYn9vUp84i9yt2CPG/IGN9vcDX9P//Of/yg4OLjZnqelmN6f1Dw97t+/X5JkWdaJC61Wyu12W0FBQdbSpUt9tt97773WTTfddMzHTJ482ZLEjRs3bty4cTPgtnfv3hNmhVZ7Juff//636uvrFR0d7bM9OjpaO3fuPOZj8vLylJuba9/3er3at2+fOnTooICApvt/QbW1teratav27t2riIiIJpv3bGF6fxI9msD0/iR6NIHp/UnN06NlWdq/f79iY2NPWNdqQ87pcDgccjgcPtuioqKa7fkiIiKMfdFK5vcn0aMJTO9PokcTmN6f1PQ9RkZGnrSm1X7wuGPHjgoKClJlZaXP9srKSsXExLTQqgAAwNmi1YackJAQJSUlqbS01N7m9XpVWloqp9PZgisDAABng1b9dlVubq4yMzOVnJysAQMG6Pnnn9eBAwfsq61aisPh0OTJkxu9NWYK0/uT6NEEpvcn0aMJTO9PatkeAyzrZNdfnd1efPFFPfvss3K5XEpMTNQLL7yglJSUll4WAABoYa0+5AAAABxLq/1MDgAAwIkQcgAAgJEIOQAAwEiEHAAAYCRCThPLz89X9+7dFRoaqpSUFG3cuLGll3Ta1q5dqxtvvFGxsbEKCAjQsmXLfMYty9KkSZPUuXNnhYWFKTU1VV988UXLLPY0zJgxQ1dccYXOP/98derUSbfccot27drlU3P48GFlZWWpQ4cOatu2rYYNG9boCyjPZvPmzVPfvn3tbxp1Op1677337PHW3t9PzZw5UwEBAcrJybG3tfYep0yZooCAAJ9bz5497fHW3l+Df/3rX/qv//ovdejQQWFhYerTp482b95sj7f2vzfdu3dvdBwDAgKUlZUlqfUfx/r6ej355JOKj49XWFiYLrroIk2fPt3nBzRb5Bie4e9k4ihvvfWWFRISYs2fP9/asWOHNXr0aCsqKsqqrKxs6aWdlnfffdd64oknrL/85S+WpEY/hjpz5kwrMjLSWrZsmfXxxx9bN910kxUfH28dOnSoZRbsp/T0dGvBggXW9u3brYqKCuuGG26w4uLirB9++MGueeihh6yuXbtapaWl1ubNm62BAwdaV155ZQuu2j9vv/22tWLFCuvzzz+3du3aZT3++ONWcHCwtX37dsuyWn9/R9u4caPVvXt3q2/fvtbYsWPt7a29x8mTJ1uXXXaZ9e2339q37777zh5v7f1ZlmXt27fP6tatm3XfffdZGzZssL766iurqKjI+vLLL+2a1v73pqqqyucYlpSUWJKs999/37Ks1n8cn376aatDhw7W8uXLrd27d1tLliyx2rZta82dO9euaYljSMhpQgMGDLCysrLs+/X19VZsbKw1Y8aMFlxV0/hpyPF6vVZMTIz17LPP2tuqq6sth8Nh/elPf2qBFZ65qqoqS5K1Zs0ay7J+7Cc4ONhasmSJXfPZZ59ZkqyysrKWWuYZa9eunfXqq68a1d/+/futiy++2CopKbF+9atf2SHHhB4nT55s9evX75hjJvRnWZb12GOPWVdfffVxx038ezN27FjroosusrxerxHHMSMjw7r//vt9tt12223WiBEjLMtquWPI21VNpK6uTuXl5UpNTbW3BQYGKjU1VWVlZS24suaxe/duuVwun34jIyOVkpLSavutqamRJLVv316SVF5eLo/H49Njz549FRcX1yp7rK+v11tvvaUDBw7I6XQa1V9WVpYyMjJ8epHMOYZffPGFYmNj9Ytf/EIjRozQnj17JJnT39tvv63k5GTdcccd6tSpk/r3769XXnnFHjft701dXZ3eeOMN3X///QoICDDiOF555ZUqLS3V559/Lkn6+OOP9eGHH2ro0KGSWu4YtuqfdTib/Pvf/1Z9fb2io6N9tkdHR2vnzp0ttKrm43K5JOmY/TaMtSZer1c5OTm66qqr1Lt3b0k/9hgSEtLol+pbW4/btm2T0+nU4cOH1bZtWy1dulQJCQmqqKgwor+33npLW7Zs0aZNmxqNmXAMU1JSVFhYqEsvvVTffvutpk6dqmuuuUbbt283oj9J+uqrrzRv3jzl5ubq8ccf16ZNm/Tb3/5WISEhyszMNO7vzbJly1RdXa377rtPkhmv0wkTJqi2tlY9e/ZUUFCQ6uvr9fTTT2vEiBGSWu6/GYQcQD+eCdi+fbs+/PDDll5Kk7v00ktVUVGhmpoa/fnPf1ZmZqbWrFnT0stqEnv37tXYsWNVUlKi0NDQll5Os2j4f8KS1LdvX6WkpKhbt25avHixwsLCWnBlTcfr9So5OVnPPPOMJKl///7avn27CgoKlJmZ2cKra3qvvfaahg4dqtjY2JZeSpNZvHix3nzzTS1cuFCXXXaZKioqlJOTo9jY2BY9hrxd1UQ6duyooKCgRp+Gr6ysVExMTAutqvk09GRCv9nZ2Vq+fLnef/99denSxd4eExOjuro6VVdX+9S3th5DQkLUo0cPJSUlacaMGerXr5/mzp1rRH/l5eWqqqrS5ZdfrjZt2qhNmzZas2aNXnjhBbVp00bR0dGtvsefioqK0iWXXKIvv/zSiGMoSZ07d1ZCQoLPtl69etlvy5n09+Yf//iH/va3v+mBBx6wt5lwHB999FFNmDBBd955p/r06aN77rlH48aN04wZMyS13DEk5DSRkJAQJSUlqbS01N7m9XpVWloqp9PZgitrHvHx8YqJifHpt7a2Vhs2bGg1/VqWpezsbC1dulSrVq1SfHy8z3hSUpKCg4N9ety1a5f27NnTano8Fq/XK7fbbUR/gwcP1rZt21RRUWHfkpOTNWLECPufW3uPP/XDDz/o73//uzp37mzEMZSkq666qtHXN3z++efq1q2bJDP+3jRYsGCBOnXqpIyMDHubCcfx4MGDCgz0jRRBQUHyer2SWvAYNttHms9Bb731luVwOKzCwkLr008/tR588EErKirKcrlcLb2007J//35r69at1tatWy1J1uzZs62tW7da//jHPyzL+vFywKioKOuvf/2r9cknn1g333xzq7qkc8yYMVZkZKS1evVqn0s7Dx48aNc89NBDVlxcnLVq1Spr8+bNltPptJxOZwuu2j8TJkyw1qxZY+3evdv65JNPrAkTJlgBAQFWcXGxZVmtv79jOfrqKstq/T0+8sgj1urVq63du3dbH330kZWammp17NjRqqqqsiyr9fdnWT9e/t+mTRvr6aeftr744gvrzTfftMLDw6033njDrmntf28s68crbuPi4qzHHnus0VhrP46ZmZnWhRdeaF9C/pe//MXq2LGjNX78eLumJY4hIaeJ/eEPf7Di4uKskJAQa8CAAdb69etbekmn7f3337ckNbplZmZalvXjJYFPPvmkFR0dbTkcDmvw4MHWrl27WnbRfjhWb5KsBQsW2DWHDh2yfvOb31jt2rWzwsPDrVtvvdX69ttvW27Rfrr//vutbt26WSEhIdYFF1xgDR482A44ltX6+zuWn4ac1t7j8OHDrc6dO1shISHWhRdeaA0fPtzn+2Nae38N3nnnHat3796Ww+Gwevbsab388ss+4639741lWVZRUZEl6Zjrbu3Hsba21ho7dqwVFxdnhYaGWr/4xS+sJ554wnK73XZNSxzDAMs66usIAQAADMFncgAAgJEIOQAAwEiEHAAAYCRCDgAAMBIhBwAAGImQAwAAjETIAQAARiLkAAAAIxFyAACAkQg5AADASIQcAABgpP8DCOTt7zEBC08AAAAASUVORK5CYII=",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "speed_df.eric_speed_mph.hist()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "id": "b43d17dc-75ad-4357-8f36-57a7c6b93b08",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# (speed_df >> filter(_.tiff_speed_mph < 80)).tiff_speed_mph.hist()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "169a74a9-c4fc-4c44-ba7b-46e2fc8ba3a8",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "(speed_df >> filter(_.tiff_interp_speed_mph < 80)).tiff_interp_speed_mph.hist()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "9a50b916-a7d1-412e-9c98-6991ed9f7c33",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " stop_sequence | \n",
+ " direction_id | \n",
+ " eric_speed_mph | \n",
+ " tiff_speed_mph | \n",
+ " tiff_interp_speed_mph | \n",
+ " interp_difference | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " count | \n",
+ " 121737.000000 | \n",
+ " 121737.000000 | \n",
+ " 121737.000000 | \n",
+ " 121737.000000 | \n",
+ " 121737.000000 | \n",
+ " 121737.000000 | \n",
+ "
\n",
+ " \n",
+ " mean | \n",
+ " 36.838644 | \n",
+ " 0.513016 | \n",
+ " 14.809543 | \n",
+ " 12.060441 | \n",
+ " 14.905457 | \n",
+ " 0.095914 | \n",
+ "
\n",
+ " \n",
+ " std | \n",
+ " 23.039439 | \n",
+ " 0.499833 | \n",
+ " 7.888698 | \n",
+ " 12.575817 | \n",
+ " 13.582043 | \n",
+ " 11.456724 | \n",
+ "
\n",
+ " \n",
+ " min | \n",
+ " 3.000000 | \n",
+ " 0.000000 | \n",
+ " 0.056044 | \n",
+ " 0.000000 | \n",
+ " 0.119131 | \n",
+ " -77.173946 | \n",
+ "
\n",
+ " \n",
+ " 25% | \n",
+ " 18.000000 | \n",
+ " 0.000000 | \n",
+ " 8.956067 | \n",
+ " 6.351169 | \n",
+ " 8.917777 | \n",
+ " -0.301087 | \n",
+ "
\n",
+ " \n",
+ " 50% | \n",
+ " 34.000000 | \n",
+ " 1.000000 | \n",
+ " 13.242002 | \n",
+ " 9.825973 | \n",
+ " 13.205725 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " 75% | \n",
+ " 53.000000 | \n",
+ " 1.000000 | \n",
+ " 19.108548 | \n",
+ " 15.253100 | \n",
+ " 19.027581 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " max | \n",
+ " 133.000000 | \n",
+ " 1.000000 | \n",
+ " 79.688768 | \n",
+ " 2442.099225 | \n",
+ " 1559.351151 | \n",
+ " 1544.777775 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " stop_sequence direction_id eric_speed_mph tiff_speed_mph \\\n",
+ "count 121737.000000 121737.000000 121737.000000 121737.000000 \n",
+ "mean 36.838644 0.513016 14.809543 12.060441 \n",
+ "std 23.039439 0.499833 7.888698 12.575817 \n",
+ "min 3.000000 0.000000 0.056044 0.000000 \n",
+ "25% 18.000000 0.000000 8.956067 6.351169 \n",
+ "50% 34.000000 1.000000 13.242002 9.825973 \n",
+ "75% 53.000000 1.000000 19.108548 15.253100 \n",
+ "max 133.000000 1.000000 79.688768 2442.099225 \n",
+ "\n",
+ " tiff_interp_speed_mph interp_difference \n",
+ "count 121737.000000 121737.000000 \n",
+ "mean 14.905457 0.095914 \n",
+ "std 13.582043 11.456724 \n",
+ "min 0.119131 -77.173946 \n",
+ "25% 8.917777 -0.301087 \n",
+ "50% 13.205725 0.000000 \n",
+ "75% 19.027581 0.000000 \n",
+ "max 1559.351151 1544.777775 "
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "speed_df.describe()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "081f348a-91f2-4727-a2cc-a64c182b55d3",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1.8884715484353258"
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "speed_df.interp_difference.quantile(.95)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "43f16144-f52c-4b1a-85ba-559a74c8c5a7",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "-1.8717697511490712"
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "speed_df.interp_difference.quantile(.05)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3c362785-d64b-489b-ab5d-071525dd488d",
+ "metadata": {},
+ "source": [
+ "## Differences by route at 80th, 90th percentiles\n",
+ "\n",
+ "* limited opportunity for further investigation, but again generally very good!"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "id": "73bc311e-2606-4a70-a64a-153b4ce4cad1",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "p80_diffs = speed_df >> group_by(_.route_id, _.shape_id) >> summarize(p80_difference = _.interp_difference.quantile(.8))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "id": "a436bf70-b4e9-46b3-ae43-431195a1f55a",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " route_id | \n",
+ " shape_id | \n",
+ " p80_difference | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 280 | \n",
+ " 51-13168 | \n",
+ " 510344_JUNE23 | \n",
+ " 14.594673 | \n",
+ "
\n",
+ " \n",
+ " 348 | \n",
+ " 805 | \n",
+ " 805WB_190513 | \n",
+ " 9.230499 | \n",
+ "
\n",
+ " \n",
+ " 341 | \n",
+ " 802 | \n",
+ " 802EB_190513 | \n",
+ " 6.481253 | \n",
+ "
\n",
+ " \n",
+ " 344 | \n",
+ " 803 | \n",
+ " 803WB_120215 | \n",
+ " 6.030507 | \n",
+ "
\n",
+ " \n",
+ " 342 | \n",
+ " 802 | \n",
+ " 802WB_190513 | \n",
+ " 5.432001 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 367 | \n",
+ " 92-13168 | \n",
+ " 920299_JUNE23 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " 368 | \n",
+ " 94-13168 | \n",
+ " 940256_JUNE23 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " 369 | \n",
+ " 94-13168 | \n",
+ " 940258_JUNE23 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " 370 | \n",
+ " 96-13168 | \n",
+ " 960250_JUNE23 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " 371 | \n",
+ " 96-13168 | \n",
+ " 960251_JUNE23 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
372 rows × 3 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " route_id shape_id p80_difference\n",
+ "280 51-13168 510344_JUNE23 14.594673\n",
+ "348 805 805WB_190513 9.230499\n",
+ "341 802 802EB_190513 6.481253\n",
+ "344 803 803WB_120215 6.030507\n",
+ "342 802 802WB_190513 5.432001\n",
+ ".. ... ... ...\n",
+ "367 92-13168 920299_JUNE23 0.000000\n",
+ "368 94-13168 940256_JUNE23 0.000000\n",
+ "369 94-13168 940258_JUNE23 0.000000\n",
+ "370 96-13168 960250_JUNE23 0.000000\n",
+ "371 96-13168 960251_JUNE23 0.000000\n",
+ "\n",
+ "[372 rows x 3 columns]"
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "p80_diffs >> arrange(-_.p80_difference)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "id": "93045b44-a5b8-4f29-b827-03ef304b980c",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " p80_difference | \n",
+ " n | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 355 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 0.119273 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 0.244066 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 0.361835 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 0.417922 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 0.451117 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 0.719416 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 0.780447 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " 0.821906 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " 1.050404 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.310236 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " 2.872882 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " 3.106103 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " 5.432001 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " 6.030507 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 6.481253 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " 9.230499 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " 14.594673 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " p80_difference n\n",
+ "0 0.000000 355\n",
+ "1 0.119273 1\n",
+ "2 0.244066 1\n",
+ "3 0.361835 1\n",
+ "4 0.417922 1\n",
+ "5 0.451117 1\n",
+ "6 0.719416 1\n",
+ "7 0.780447 1\n",
+ "8 0.821906 1\n",
+ "9 1.050404 1\n",
+ "10 1.310236 1\n",
+ "11 2.872882 1\n",
+ "12 3.106103 1\n",
+ "13 5.432001 1\n",
+ "14 6.030507 1\n",
+ "15 6.481253 1\n",
+ "16 9.230499 1\n",
+ "17 14.594673 1"
+ ]
+ },
+ "execution_count": 39,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "p80_diffs >> count(_.p80_difference)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "id": "219f9a43-b061-4380-b9da-b0f71b57dd2c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "p90_diffs = speed_df >> group_by(_.route_id, _.shape_id) >> summarize(p90_difference = _.interp_difference.quantile(.9))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "id": "ed7b0281-a0d9-4a97-b749-f80a184c60eb",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " route_id | \n",
+ " shape_id | \n",
+ " p90_difference | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 280 | \n",
+ " 51-13168 | \n",
+ " 510344_JUNE23 | \n",
+ " 17.608822 | \n",
+ "
\n",
+ " \n",
+ " 348 | \n",
+ " 805 | \n",
+ " 805WB_190513 | \n",
+ " 11.145241 | \n",
+ "
\n",
+ " \n",
+ " 342 | \n",
+ " 802 | \n",
+ " 802WB_190513 | \n",
+ " 11.103630 | \n",
+ "
\n",
+ " \n",
+ " 341 | \n",
+ " 802 | \n",
+ " 802EB_190513 | \n",
+ " 10.504373 | \n",
+ "
\n",
+ " \n",
+ " 291 | \n",
+ " 577-13168 | \n",
+ " 5770040_JUNE23 | \n",
+ " 9.318308 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 367 | \n",
+ " 92-13168 | \n",
+ " 920299_JUNE23 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " 368 | \n",
+ " 94-13168 | \n",
+ " 940256_JUNE23 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " 369 | \n",
+ " 94-13168 | \n",
+ " 940258_JUNE23 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " 370 | \n",
+ " 96-13168 | \n",
+ " 960250_JUNE23 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " 371 | \n",
+ " 96-13168 | \n",
+ " 960251_JUNE23 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
372 rows × 3 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " route_id shape_id p90_difference\n",
+ "280 51-13168 510344_JUNE23 17.608822\n",
+ "348 805 805WB_190513 11.145241\n",
+ "342 802 802WB_190513 11.103630\n",
+ "341 802 802EB_190513 10.504373\n",
+ "291 577-13168 5770040_JUNE23 9.318308\n",
+ ".. ... ... ...\n",
+ "367 92-13168 920299_JUNE23 0.000000\n",
+ "368 94-13168 940256_JUNE23 0.000000\n",
+ "369 94-13168 940258_JUNE23 0.000000\n",
+ "370 96-13168 960250_JUNE23 0.000000\n",
+ "371 96-13168 960251_JUNE23 0.000000\n",
+ "\n",
+ "[372 rows x 3 columns]"
+ ]
+ },
+ "execution_count": 35,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "(p90_diffs >> arrange(-_.p90_difference))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "id": "c5539467-797d-4be5-9ce7-6c276bf37de9",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " route_id | \n",
+ " shape_id | \n",
+ " p90_difference | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 280 | \n",
+ " 51-13168 | \n",
+ " 510344_JUNE23 | \n",
+ " 17.608822 | \n",
+ "
\n",
+ " \n",
+ " 348 | \n",
+ " 805 | \n",
+ " 805WB_190513 | \n",
+ " 11.145241 | \n",
+ "
\n",
+ " \n",
+ " 342 | \n",
+ " 802 | \n",
+ " 802WB_190513 | \n",
+ " 11.103630 | \n",
+ "
\n",
+ " \n",
+ " 341 | \n",
+ " 802 | \n",
+ " 802EB_190513 | \n",
+ " 10.504373 | \n",
+ "
\n",
+ " \n",
+ " 291 | \n",
+ " 577-13168 | \n",
+ " 5770040_JUNE23 | \n",
+ " 9.318308 | \n",
+ "
\n",
+ " \n",
+ " 284 | \n",
+ " 53-13168 | \n",
+ " 530240_JUNE23 | \n",
+ " 7.956904 | \n",
+ "
\n",
+ " \n",
+ " 344 | \n",
+ " 803 | \n",
+ " 803WB_120215 | \n",
+ " 7.737499 | \n",
+ "
\n",
+ " \n",
+ " 273 | \n",
+ " 51-13168 | \n",
+ " 510324_JUNE23 | \n",
+ " 7.678630 | \n",
+ "
\n",
+ " \n",
+ " 339 | \n",
+ " 801 | \n",
+ " 801NB_RC_221121 | \n",
+ " 5.241358 | \n",
+ "
\n",
+ " \n",
+ " 346 | \n",
+ " 804 | \n",
+ " 804WB_RC_221121 | \n",
+ " 3.389427 | \n",
+ "
\n",
+ " \n",
+ " 345 | \n",
+ " 804 | \n",
+ " 804EB_RC_221121 | \n",
+ " 3.275685 | \n",
+ "
\n",
+ " \n",
+ " 139 | \n",
+ " 212-13168 | \n",
+ " 2120230_JUNE23 | \n",
+ " 2.930842 | \n",
+ "
\n",
+ " \n",
+ " 311 | \n",
+ " 66-13168 | \n",
+ " 660421_JUNE23 | \n",
+ " 2.892077 | \n",
+ "
\n",
+ " \n",
+ " 285 | \n",
+ " 53-13168 | \n",
+ " 530241_JUNE23 | \n",
+ " 2.717356 | \n",
+ "
\n",
+ " \n",
+ " 323 | \n",
+ " 720-13168 | \n",
+ " 7201278_JUNE23 | \n",
+ " 2.249340 | \n",
+ "
\n",
+ " \n",
+ " 37 | \n",
+ " 111-13168 | \n",
+ " 1110401_JUNE23 | \n",
+ " 2.161038 | \n",
+ "
\n",
+ " \n",
+ " 340 | \n",
+ " 801 | \n",
+ " 801SB_RC_221121 | \n",
+ " 2.125345 | \n",
+ "
\n",
+ " \n",
+ " 90 | \n",
+ " 165-13168 | \n",
+ " 1650208_JUNE23 | \n",
+ " 1.970811 | \n",
+ "
\n",
+ " \n",
+ " 343 | \n",
+ " 803 | \n",
+ " 803EB_120215 | \n",
+ " 1.897613 | \n",
+ "
\n",
+ " \n",
+ " 265 | \n",
+ " 460-13168 | \n",
+ " 4600200_JUNE23 | \n",
+ " 1.869998 | \n",
+ "
\n",
+ " \n",
+ " 349 | \n",
+ " 807 | \n",
+ " 807NB_220810 | \n",
+ " 1.857321 | \n",
+ "
\n",
+ " \n",
+ " 40 | \n",
+ " 111-13168 | \n",
+ " 1110423_JUNE23 | \n",
+ " 1.712616 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " 105-13168 | \n",
+ " 1050261_JUNE23 | \n",
+ " 1.625885 | \n",
+ "
\n",
+ " \n",
+ " 80 | \n",
+ " 16-13168 | \n",
+ " 160435_JUNE23 | \n",
+ " 1.515765 | \n",
+ "
\n",
+ " \n",
+ " 42 | \n",
+ " 111-13168 | \n",
+ " 1110427_JUNE23 | \n",
+ " 1.489256 | \n",
+ "
\n",
+ " \n",
+ " 297 | \n",
+ " 601-13168 | \n",
+ " 6010002_JUNE23 | \n",
+ " 1.470744 | \n",
+ "
\n",
+ " \n",
+ " 350 | \n",
+ " 807 | \n",
+ " 807SB_220810 | \n",
+ " 1.395148 | \n",
+ "
\n",
+ " \n",
+ " 357 | \n",
+ " 901-13168 | \n",
+ " 9010054_JUNE23 | \n",
+ " 1.358461 | \n",
+ "
\n",
+ " \n",
+ " 334 | \n",
+ " 761-13168 | \n",
+ " 7610074_JUNE23 | \n",
+ " 1.345373 | \n",
+ "
\n",
+ " \n",
+ " 123 | \n",
+ " 206-13168 | \n",
+ " 2060180_JUNE23 | \n",
+ " 1.308359 | \n",
+ "
\n",
+ " \n",
+ " 221 | \n",
+ " 35-13168 | \n",
+ " 350273_JUNE23 | \n",
+ " 1.298307 | \n",
+ "
\n",
+ " \n",
+ " 269 | \n",
+ " 487-13168 | \n",
+ " 4870124_JUNE23 | \n",
+ " 1.237686 | \n",
+ "
\n",
+ " \n",
+ " 330 | \n",
+ " 754-13168 | \n",
+ " 7540103_JUNE23 | \n",
+ " 1.221909 | \n",
+ "
\n",
+ " \n",
+ " 248 | \n",
+ " 3650 | \n",
+ " 26512 | \n",
+ " 1.185546 | \n",
+ "
\n",
+ " \n",
+ " 322 | \n",
+ " 720-13168 | \n",
+ " 7201275_JUNE23 | \n",
+ " 1.123097 | \n",
+ "
\n",
+ " \n",
+ " 114 | \n",
+ " 2-13168 | \n",
+ " 21124_JUNE23 | \n",
+ " 1.065693 | \n",
+ "
\n",
+ " \n",
+ " 329 | \n",
+ " 754-13168 | \n",
+ " 7540100_JUNE23 | \n",
+ " 1.021511 | \n",
+ "
\n",
+ " \n",
+ " 351 | \n",
+ " 81-13168 | \n",
+ " 810319_JUNE23 | \n",
+ " 0.983131 | \n",
+ "
\n",
+ " \n",
+ " 110 | \n",
+ " 18-13168 | \n",
+ " 180339_JUNE23 | \n",
+ " 0.966541 | \n",
+ "
\n",
+ " \n",
+ " 213 | \n",
+ " 30-13168 | \n",
+ " 300816_JUNE23 | \n",
+ " 0.928976 | \n",
+ "
\n",
+ " \n",
+ " 328 | \n",
+ " 720-13168 | \n",
+ " 7201299_JUNE23 | \n",
+ " 0.927439 | \n",
+ "
\n",
+ " \n",
+ " 325 | \n",
+ " 720-13168 | \n",
+ " 7201296_JUNE23 | \n",
+ " 0.887781 | \n",
+ "
\n",
+ " \n",
+ " 117 | \n",
+ " 20-13168 | \n",
+ " 200801_JUNE23 | \n",
+ " 0.831867 | \n",
+ "
\n",
+ " \n",
+ " 39 | \n",
+ " 111-13168 | \n",
+ " 1110417_JUNE23 | \n",
+ " 0.816518 | \n",
+ "
\n",
+ " \n",
+ " 283 | \n",
+ " 51-13168 | \n",
+ " 510347_JUNE23 | \n",
+ " 0.776240 | \n",
+ "
\n",
+ " \n",
+ " 43 | \n",
+ " 111-13168 | \n",
+ " 1110428_JUNE23 | \n",
+ " 0.763027 | \n",
+ "
\n",
+ " \n",
+ " 326 | \n",
+ " 720-13168 | \n",
+ " 7201297_JUNE23 | \n",
+ " 0.746771 | \n",
+ "
\n",
+ " \n",
+ " 38 | \n",
+ " 111-13168 | \n",
+ " 1110414_JUNE23 | \n",
+ " 0.740132 | \n",
+ "
\n",
+ " \n",
+ " 307 | \n",
+ " 66-13168 | \n",
+ " 660417_JUNE23 | \n",
+ " 0.737124 | \n",
+ "
\n",
+ " \n",
+ " 235 | \n",
+ " 3637 | \n",
+ " 26463 | \n",
+ " 0.724721 | \n",
+ "
\n",
+ " \n",
+ " 51 | \n",
+ " 115-13168 | \n",
+ " 1150537_JUNE23 | \n",
+ " 0.699571 | \n",
+ "
\n",
+ " \n",
+ " 158 | \n",
+ " 233-13168 | \n",
+ " 2330157_JUNE23 | \n",
+ " 0.689547 | \n",
+ "
\n",
+ " \n",
+ " 79 | \n",
+ " 16-13168 | \n",
+ " 160434_JUNE23 | \n",
+ " 0.626378 | \n",
+ "
\n",
+ " \n",
+ " 126 | \n",
+ " 207-13168 | \n",
+ " 2070299_JUNE23 | \n",
+ " 0.623644 | \n",
+ "
\n",
+ " \n",
+ " 264 | \n",
+ " 460-13168 | \n",
+ " 4600199_JUNE23 | \n",
+ " 0.561841 | \n",
+ "
\n",
+ " \n",
+ " 140 | \n",
+ " 212-13168 | \n",
+ " 2120231_JUNE23 | \n",
+ " 0.543471 | \n",
+ "
\n",
+ " \n",
+ " 24 | \n",
+ " 108-13168 | \n",
+ " 1080360_JUNE23 | \n",
+ " 0.542826 | \n",
+ "
\n",
+ " \n",
+ " 48 | \n",
+ " 115-13168 | \n",
+ " 1150530_JUNE23 | \n",
+ " 0.433483 | \n",
+ "
\n",
+ " \n",
+ " 165 | \n",
+ " 236-13168 | \n",
+ " 2360123_JUNE23 | \n",
+ " 0.416887 | \n",
+ "
\n",
+ " \n",
+ " 313 | \n",
+ " 660-13168 | \n",
+ " 6600011_JUNE23 | \n",
+ " 0.409033 | \n",
+ "
\n",
+ " \n",
+ " 204 | \n",
+ " 28-13168 | \n",
+ " 280646_JUNE23 | \n",
+ " 0.408705 | \n",
+ "
\n",
+ " \n",
+ " 275 | \n",
+ " 51-13168 | \n",
+ " 510326_JUNE23 | \n",
+ " 0.408559 | \n",
+ "
\n",
+ " \n",
+ " 364 | \n",
+ " 910-13168 | \n",
+ " 9100212_JUNE23 | \n",
+ " 0.381431 | \n",
+ "
\n",
+ " \n",
+ " 281 | \n",
+ " 51-13168 | \n",
+ " 510345_JUNE23 | \n",
+ " 0.379124 | \n",
+ "
\n",
+ " \n",
+ " 122 | \n",
+ " 206-13168 | \n",
+ " 2060178_JUNE23 | \n",
+ " 0.374014 | \n",
+ "
\n",
+ " \n",
+ " 173 | \n",
+ " 242-13168 | \n",
+ " 2420003_JUNE23 | \n",
+ " 0.342196 | \n",
+ "
\n",
+ " \n",
+ " 274 | \n",
+ " 51-13168 | \n",
+ " 510325_JUNE23 | \n",
+ " 0.321498 | \n",
+ "
\n",
+ " \n",
+ " 27 | \n",
+ " 108-13168 | \n",
+ " 1080417_JUNE23 | \n",
+ " 0.312257 | \n",
+ "
\n",
+ " \n",
+ " 203 | \n",
+ " 28-13168 | \n",
+ " 280634_JUNE23 | \n",
+ " 0.301458 | \n",
+ "
\n",
+ " \n",
+ " 321 | \n",
+ " 70-13168 | \n",
+ " 700302_JUNE23 | \n",
+ " 0.291651 | \n",
+ "
\n",
+ " \n",
+ " 324 | \n",
+ " 720-13168 | \n",
+ " 7201293_JUNE23 | \n",
+ " 0.252039 | \n",
+ "
\n",
+ " \n",
+ " 147 | \n",
+ " 222-13168 | \n",
+ " 2220081_JUNE23 | \n",
+ " 0.249317 | \n",
+ "
\n",
+ " \n",
+ " 56 | \n",
+ " 125-13168 | \n",
+ " 1250150_JUNE23 | \n",
+ " 0.240534 | \n",
+ "
\n",
+ " \n",
+ " 109 | \n",
+ " 18-13168 | \n",
+ " 180337_JUNE23 | \n",
+ " 0.232762 | \n",
+ "
\n",
+ " \n",
+ " 254 | \n",
+ " 4-13168 | \n",
+ " 40330_JUNE23 | \n",
+ " 0.216359 | \n",
+ "
\n",
+ " \n",
+ " 266 | \n",
+ " 460-13168 | \n",
+ " 4600205_JUNE23 | \n",
+ " 0.202816 | \n",
+ "
\n",
+ " \n",
+ " 46 | \n",
+ " 115-13168 | \n",
+ " 1150442_JUNE23 | \n",
+ " 0.196068 | \n",
+ "
\n",
+ " \n",
+ " 100 | \n",
+ " 177-13168 | \n",
+ " 1770041_JUNE23 | \n",
+ " 0.188112 | \n",
+ "
\n",
+ " \n",
+ " 260 | \n",
+ " 40-13168 | \n",
+ " 400947_JUNE23 | \n",
+ " 0.156627 | \n",
+ "
\n",
+ " \n",
+ " 306 | \n",
+ " 62-13168 | \n",
+ " 620347_JUNE23 | \n",
+ " 0.141522 | \n",
+ "
\n",
+ " \n",
+ " 32 | \n",
+ " 110-13168 | \n",
+ " 1100284_JUNE23 | \n",
+ " 0.141359 | \n",
+ "
\n",
+ " \n",
+ " 70 | \n",
+ " 152-13168 | \n",
+ " 1520163_JUNE23 | \n",
+ " 0.137985 | \n",
+ "
\n",
+ " \n",
+ " 288 | \n",
+ " 55-13168 | \n",
+ " 550290_JUNE23 | \n",
+ " 0.131606 | \n",
+ "
\n",
+ " \n",
+ " 302 | \n",
+ " 605-13168 | \n",
+ " 6050045_JUNE23 | \n",
+ " 0.123064 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 10-13168 | \n",
+ " 100751_JUNE23 | \n",
+ " 0.121139 | \n",
+ "
\n",
+ " \n",
+ " 278 | \n",
+ " 51-13168 | \n",
+ " 510342_JUNE23 | \n",
+ " 0.098545 | \n",
+ "
\n",
+ " \n",
+ " 300 | \n",
+ " 603-13168 | \n",
+ " 6030026_JUNE23 | \n",
+ " 0.090212 | \n",
+ "
\n",
+ " \n",
+ " 47 | \n",
+ " 115-13168 | \n",
+ " 1150445_JUNE23 | \n",
+ " 0.079408 | \n",
+ "
\n",
+ " \n",
+ " 347 | \n",
+ " 805 | \n",
+ " 805EB_190513 | \n",
+ " 0.073547 | \n",
+ "
\n",
+ " \n",
+ " 89 | \n",
+ " 165-13168 | \n",
+ " 1650207_JUNE23 | \n",
+ " 0.069372 | \n",
+ "
\n",
+ " \n",
+ " 157 | \n",
+ " 233-13168 | \n",
+ " 2330156_JUNE23 | \n",
+ " 0.061581 | \n",
+ "
\n",
+ " \n",
+ " 72 | \n",
+ " 154-13168 | \n",
+ " 1540042_JUNE23 | \n",
+ " 0.039409 | \n",
+ "
\n",
+ " \n",
+ " 271 | \n",
+ " 501-13168 | \n",
+ " 5010013_JUNE23 | \n",
+ " 0.037952 | \n",
+ "
\n",
+ " \n",
+ " 262 | \n",
+ " 40-13168 | \n",
+ " 400949_JUNE23 | \n",
+ " 0.037253 | \n",
+ "
\n",
+ " \n",
+ " 150 | \n",
+ " 224-13168 | \n",
+ " 2240271_JUNE23 | \n",
+ " 0.028583 | \n",
+ "
\n",
+ " \n",
+ " 310 | \n",
+ " 66-13168 | \n",
+ " 660420_JUNE23 | \n",
+ " 0.028280 | \n",
+ "
\n",
+ " \n",
+ " 215 | \n",
+ " 33-13168 | \n",
+ " 330654_JUNE23 | \n",
+ " 0.010921 | \n",
+ "
\n",
+ " \n",
+ " 256 | \n",
+ " 4-13168 | \n",
+ " 40345_JUNE23 | \n",
+ " 0.002339 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " route_id shape_id p90_difference\n",
+ "280 51-13168 510344_JUNE23 17.608822\n",
+ "348 805 805WB_190513 11.145241\n",
+ "342 802 802WB_190513 11.103630\n",
+ "341 802 802EB_190513 10.504373\n",
+ "291 577-13168 5770040_JUNE23 9.318308\n",
+ "284 53-13168 530240_JUNE23 7.956904\n",
+ "344 803 803WB_120215 7.737499\n",
+ "273 51-13168 510324_JUNE23 7.678630\n",
+ "339 801 801NB_RC_221121 5.241358\n",
+ "346 804 804WB_RC_221121 3.389427\n",
+ "345 804 804EB_RC_221121 3.275685\n",
+ "139 212-13168 2120230_JUNE23 2.930842\n",
+ "311 66-13168 660421_JUNE23 2.892077\n",
+ "285 53-13168 530241_JUNE23 2.717356\n",
+ "323 720-13168 7201278_JUNE23 2.249340\n",
+ "37 111-13168 1110401_JUNE23 2.161038\n",
+ "340 801 801SB_RC_221121 2.125345\n",
+ "90 165-13168 1650208_JUNE23 1.970811\n",
+ "343 803 803EB_120215 1.897613\n",
+ "265 460-13168 4600200_JUNE23 1.869998\n",
+ "349 807 807NB_220810 1.857321\n",
+ "40 111-13168 1110423_JUNE23 1.712616\n",
+ "13 105-13168 1050261_JUNE23 1.625885\n",
+ "80 16-13168 160435_JUNE23 1.515765\n",
+ "42 111-13168 1110427_JUNE23 1.489256\n",
+ "297 601-13168 6010002_JUNE23 1.470744\n",
+ "350 807 807SB_220810 1.395148\n",
+ "357 901-13168 9010054_JUNE23 1.358461\n",
+ "334 761-13168 7610074_JUNE23 1.345373\n",
+ "123 206-13168 2060180_JUNE23 1.308359\n",
+ "221 35-13168 350273_JUNE23 1.298307\n",
+ "269 487-13168 4870124_JUNE23 1.237686\n",
+ "330 754-13168 7540103_JUNE23 1.221909\n",
+ "248 3650 26512 1.185546\n",
+ "322 720-13168 7201275_JUNE23 1.123097\n",
+ "114 2-13168 21124_JUNE23 1.065693\n",
+ "329 754-13168 7540100_JUNE23 1.021511\n",
+ "351 81-13168 810319_JUNE23 0.983131\n",
+ "110 18-13168 180339_JUNE23 0.966541\n",
+ "213 30-13168 300816_JUNE23 0.928976\n",
+ "328 720-13168 7201299_JUNE23 0.927439\n",
+ "325 720-13168 7201296_JUNE23 0.887781\n",
+ "117 20-13168 200801_JUNE23 0.831867\n",
+ "39 111-13168 1110417_JUNE23 0.816518\n",
+ "283 51-13168 510347_JUNE23 0.776240\n",
+ "43 111-13168 1110428_JUNE23 0.763027\n",
+ "326 720-13168 7201297_JUNE23 0.746771\n",
+ "38 111-13168 1110414_JUNE23 0.740132\n",
+ "307 66-13168 660417_JUNE23 0.737124\n",
+ "235 3637 26463 0.724721\n",
+ "51 115-13168 1150537_JUNE23 0.699571\n",
+ "158 233-13168 2330157_JUNE23 0.689547\n",
+ "79 16-13168 160434_JUNE23 0.626378\n",
+ "126 207-13168 2070299_JUNE23 0.623644\n",
+ "264 460-13168 4600199_JUNE23 0.561841\n",
+ "140 212-13168 2120231_JUNE23 0.543471\n",
+ "24 108-13168 1080360_JUNE23 0.542826\n",
+ "48 115-13168 1150530_JUNE23 0.433483\n",
+ "165 236-13168 2360123_JUNE23 0.416887\n",
+ "313 660-13168 6600011_JUNE23 0.409033\n",
+ "204 28-13168 280646_JUNE23 0.408705\n",
+ "275 51-13168 510326_JUNE23 0.408559\n",
+ "364 910-13168 9100212_JUNE23 0.381431\n",
+ "281 51-13168 510345_JUNE23 0.379124\n",
+ "122 206-13168 2060178_JUNE23 0.374014\n",
+ "173 242-13168 2420003_JUNE23 0.342196\n",
+ "274 51-13168 510325_JUNE23 0.321498\n",
+ "27 108-13168 1080417_JUNE23 0.312257\n",
+ "203 28-13168 280634_JUNE23 0.301458\n",
+ "321 70-13168 700302_JUNE23 0.291651\n",
+ "324 720-13168 7201293_JUNE23 0.252039\n",
+ "147 222-13168 2220081_JUNE23 0.249317\n",
+ "56 125-13168 1250150_JUNE23 0.240534\n",
+ "109 18-13168 180337_JUNE23 0.232762\n",
+ "254 4-13168 40330_JUNE23 0.216359\n",
+ "266 460-13168 4600205_JUNE23 0.202816\n",
+ "46 115-13168 1150442_JUNE23 0.196068\n",
+ "100 177-13168 1770041_JUNE23 0.188112\n",
+ "260 40-13168 400947_JUNE23 0.156627\n",
+ "306 62-13168 620347_JUNE23 0.141522\n",
+ "32 110-13168 1100284_JUNE23 0.141359\n",
+ "70 152-13168 1520163_JUNE23 0.137985\n",
+ "288 55-13168 550290_JUNE23 0.131606\n",
+ "302 605-13168 6050045_JUNE23 0.123064\n",
+ "1 10-13168 100751_JUNE23 0.121139\n",
+ "278 51-13168 510342_JUNE23 0.098545\n",
+ "300 603-13168 6030026_JUNE23 0.090212\n",
+ "47 115-13168 1150445_JUNE23 0.079408\n",
+ "347 805 805EB_190513 0.073547\n",
+ "89 165-13168 1650207_JUNE23 0.069372\n",
+ "157 233-13168 2330156_JUNE23 0.061581\n",
+ "72 154-13168 1540042_JUNE23 0.039409\n",
+ "271 501-13168 5010013_JUNE23 0.037952\n",
+ "262 40-13168 400949_JUNE23 0.037253\n",
+ "150 224-13168 2240271_JUNE23 0.028583\n",
+ "310 66-13168 660420_JUNE23 0.028280\n",
+ "215 33-13168 330654_JUNE23 0.010921\n",
+ "256 4-13168 40345_JUNE23 0.002339"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "rt_utils.show_full_df((p90_diffs >> arrange(-_.p90_difference)) >> filter(_.p90_difference > 0))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "id": "e55b76e3-10f3-4afb-bfd8-5de1e95a3743",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " p90_difference | \n",
+ " n | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 0.000000 | \n",
+ " 274 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 0.002339 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 0.010921 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 0.028280 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 0.028583 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 94 | \n",
+ " 9.318308 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 95 | \n",
+ " 10.504373 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 96 | \n",
+ " 11.103630 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 97 | \n",
+ " 11.145241 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 98 | \n",
+ " 17.608822 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
99 rows × 2 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " p90_difference n\n",
+ "0 0.000000 274\n",
+ "1 0.002339 1\n",
+ "2 0.010921 1\n",
+ "3 0.028280 1\n",
+ "4 0.028583 1\n",
+ ".. ... ...\n",
+ "94 9.318308 1\n",
+ "95 10.504373 1\n",
+ "96 11.103630 1\n",
+ "97 11.145241 1\n",
+ "98 17.608822 1\n",
+ "\n",
+ "[99 rows x 2 columns]"
+ ]
+ },
+ "execution_count": 37,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "p90_diffs >> count(_.p90_difference)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "cfbb866a-797b-4f68-bd34-9f124d545f9e",
+ "metadata": {},
+ "source": [
+ "# Conclusion\n",
+ "\n",
+ "* `rt_delay` and post-interpolation `rt_segment_speeds` results are now substantially in alignment\n",
+ "* Accuracy is no longer a blocker to publishing/promoting this data\n",
+ "* Speedmaps could be transitioned with a few more steps, for example by\n",
+ " * porting the \"virtual segments\" approach for long stop spacings into a version of `rt_segment_speeds`\n",
+ " * deprecating `rt_analysis.rt_parser`\n",
+ " * reworking `rt_analysis.rt_filter_map_plot` and associated `RtFilterMapper` class to provide an interface to `rt_segment speeds`\n",
+ "* Routes highlighted above could be investigated further to understand remaining discrepancies "
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "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.9.13"
+ },
+ "widgets": {
+ "application/vnd.jupyter.widget-state+json": {
+ "state": {},
+ "version_major": 2,
+ "version_minor": 0
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}