From d5437d69c734d0ce0bfd614efa8495028a3cd874 Mon Sep 17 00:00:00 2001 From: csuyat-dot Date: Mon, 18 Nov 2024 19:55:44 +0000 Subject: [PATCH 01/13] start explore notebook --- ntd/proposed_changes_25-26.ipynb | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 ntd/proposed_changes_25-26.ipynb diff --git a/ntd/proposed_changes_25-26.ipynb b/ntd/proposed_changes_25-26.ipynb new file mode 100644 index 000000000..04608e70d --- /dev/null +++ b/ntd/proposed_changes_25-26.ipynb @@ -0,0 +1,41 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a5010c8b-6fe2-49cd-8dfe-681e8de340d3", + "metadata": {}, + "source": [ + "# NTD Proposed Changes 2025-2026 Analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8c8956ce-24a5-4d6b-8101-1ef5a547d3ca", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From b342290a8301a06061e183fa0d9630a547ae3476 Mon Sep 17 00:00:00 2001 From: csuyat-dot Date: Mon, 18 Nov 2024 21:55:53 +0000 Subject: [PATCH 02/13] starting to add task details --- ntd/proposed_changes_25-26.ipynb | 58 +++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/ntd/proposed_changes_25-26.ipynb b/ntd/proposed_changes_25-26.ipynb index 04608e70d..1373f8990 100644 --- a/ntd/proposed_changes_25-26.ipynb +++ b/ntd/proposed_changes_25-26.ipynb @@ -8,10 +8,66 @@ "# NTD Proposed Changes 2025-2026 Analysis" ] }, + { + "cell_type": "markdown", + "id": "8e1248e8-1f49-462c-ba0c-424a2240f5ee", + "metadata": {}, + "source": [ + "Proposed Change Text:\n", + "\n", + "https://www.federalregister.gov/documents/2024/10/31/2024-25341/national-transit-database-proposed-reporting-changes-and-clarifications-for-report-years-2025-and\n" + ] + }, + { + "cell_type": "markdown", + "id": "923637b0-7d95-4614-a425-10a6238a3f1d", + "metadata": {}, + "source": [ + "Task:\n", + " - As Caltrans DDS prepare to submit comments of these proposed changes to NTD, the Data Science branch is tasked to address 3 areas the proposed changes may affect the branch.\n", + " - Analysis of the following areas to be submitted to the Transit Quality Branch by 11/27/2024" + ] + }, + { + "cell_type": "markdown", + "id": "afdfd59c-d9c1-4d48-b6e4-55e9af08be29", + "metadata": {}, + "source": [ + "## Area 1 - NTD Reporting Streamlining\n", + ">E: The first is on the topic of NTD reporting streamlining. There are a few items being proposed that may add additional reporting burden and some that propose to streamline things. Is this an area that you all have an opinion on?\n", + "\n", + ">K: will take a look based on our understanding of common past reporting errors identified in the NTD Modernization project and provide some comments. " + ] + }, + { + "cell_type": "markdown", + "id": "97f07bb1-4fd2-4ad0-bb65-2419928d5326", + "metadata": {}, + "source": [ + "## Area 2 - Rural, Full Reporters to Reduced Reporters\n", + "> E: The second area is on the topic of NTD data coming through as a result of a potential reduction in some full reporters in rural areas. I’m not sure which ones these would be because the rulemaking wouldn’t affect all reporters. I’m also not sure what data wouldn’t be reported as a result. Is this something the analyst team can look into further… ie see if the proposed change in Section G would affect any California agencies and what data we may not receive from NTD as a result.\n", + "\n", + "> K: identify which CA agencies are full reporters in rural areas that meet the criteria in section G, although I think we’d do it based on 2023 NTD data and FTA would do it on 2024 data. I am not sure if there would be data loss based on FTA’s assessment that these agencies were historically Rural reporters." + ] + }, + { + "cell_type": "markdown", + "id": "65592033-b6e9-4bf7-a24a-6b1d6f7a087b", + "metadata": {}, + "source": [ + "## Area 3 - Volunteer Reporters\n", + ">E: The third area is that I noticed that it was mentioned in Section H that voluntary reports may help a state receive more money. Given this helpful piece of information, I had 3 follow-up ideas. \n", + ">1. Can we figure out how it helps increase funding by being a voluntary reporter \n", + ">2. Can we do an audit to see which agencies aren’t reporters that maybe could be and \n", + ">3. What monetary benefit could be gained if we helped these agencies become voluntary reporters.\n", + "\n", + ">K: would auditing this entail simply looking at organizations that don’t have an NTD ID? Or something else?" + ] + }, { "cell_type": "code", "execution_count": null, - "id": "8c8956ce-24a5-4d6b-8101-1ef5a547d3ca", + "id": "b9f386ff-59fa-4eec-add5-b8c16a820cb3", "metadata": {}, "outputs": [], "source": [] From 3604212c7c655ada6df68e00b60230b6fc1641bd Mon Sep 17 00:00:00 2001 From: csuyat-dot Date: Tue, 19 Nov 2024 00:17:39 +0000 Subject: [PATCH 03/13] more content to area 1 --- ntd/proposed_changes_25-26.ipynb | 104 +++++++++++++++++++++++++++++-- 1 file changed, 100 insertions(+), 4 deletions(-) diff --git a/ntd/proposed_changes_25-26.ipynb b/ntd/proposed_changes_25-26.ipynb index 1373f8990..03f5f225d 100644 --- a/ntd/proposed_changes_25-26.ipynb +++ b/ntd/proposed_changes_25-26.ipynb @@ -28,15 +28,107 @@ " - Analysis of the following areas to be submitted to the Transit Quality Branch by 11/27/2024" ] }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b5679a16-211e-400a-bf08-4c377b4b27ed", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "from calitp_data_analysis.tables import tbls\n", + "from siuba import _, collect, count, filter, show_query\n", + "\n", + "pd.set_option(\"display.max_columns\", None)\n", + "pd.set_option(\"display.max_rows\", None)" + ] + }, { "cell_type": "markdown", "id": "afdfd59c-d9c1-4d48-b6e4-55e9af08be29", "metadata": {}, "source": [ "## Area 1 - NTD Reporting Streamlining\n", - ">E: The first is on the topic of NTD reporting streamlining. There are a few items being proposed that may add additional reporting burden and some that propose to streamline things. Is this an area that you all have an opinion on?\n", + ">E: The first is on the topic of NTD reporting streamlining. There are `a few items being proposed that may add additional reporting burden` and `some that propose to streamline things`. Is this an area that you all have an opinion on?\n", "\n", - ">K: will take a look based on our understanding of common past reporting errors identified in the NTD Modernization project and provide some comments. " + ">K: will take a look based on our understanding of `common past reporting errors identified in the NTD Modernization project` and provide some comments. \n", + "\n", + ">E: That sounds great" + ] + }, + { + "attachments": { + "ba55d0e0-457e-411f-8851-c0eda48ae5ab.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "id": "d81a5cc6-0f45-4980-9f16-a9bac97483e1", + "metadata": {}, + "source": [ + "### Revisit the NTD Modernization - Issues Analysis\n", + "Slalom completed an analysis of the most common erorrs in NTD reporting for 2020, 2021 and 2022 by frequency, type and agency. \n", + "\n", + "As reported, 3 issues account for ~25% of all errors:\n", + ">1. RR20F-005: The cost per hour changed by 30% or more. \n", + ">2. A10-033: The number of General Purpose Maintenance Facilities differs from previous year. \n", + ">3. RR20F-146: The miles per vehicle changed by 20% or more.\n", + "\n", + "Slalom identified a list of the top 23 errors by frequency and most comments to determine which errors should be prioritized first.\n", + "\n", + "sorted by issue ID:\n", + "\n", + "![image.png](attachment:ba55d0e0-457e-411f-8851-c0eda48ae5ab.png)\n", + "- 2x A10 errors\n", + "- 2x A30 errors\n", + "- 18x RR20F errors\n", + "- 1x RR20U errors" + ] + }, + { + "cell_type": "markdown", + "id": "70b0e807-80d6-49d7-bad3-eb2df8b7663b", + "metadata": {}, + "source": [ + "### Notes from Proposed Changes document\n", + "\n", + "- **Sec B: increases reporting burden for all**\n", + " - requires agencies to submit shapes.txt\n", + " - align agency_id to NTD ID\n", + " \n", + "- **Sec C: decreases reporting burden for all**\n", + " - FTA acknowledges that the a15 and a10 is causing discrepanices\n", + " - removes A-10 form\n", + " - moves ADA data and other data from A-10 form to new extended A-15 form\n", + " - clarifies what a \"station\" or \"facility\" is and how to count them for reporting\n", + " - establish a standardize reporting method for passenger stations and facilities\n", + " - **`Sec C directly relates to the issues analysis, A10 error was the 2nd more common error in reporting`**\n", + "\n", + "- **Sec D: slight increase reporting burden for all**\n", + " - proposes to add new categories to A-20 form:\n", + " \t1. “Track—Turntable,” \n", + "\t\t2. “Power and Signal—Pump Rooms”\n", + " 3. “Power and Signal—Fan Plants” \n", + " - Adds a \"decade of construction\" field to these category. this way FTA can more accurately capture an asset was reconstructed or renovated.\n", + "\n", + "- **Sec E: may slightly increase reporting burden for some**\n", + " - clarifies what counts as a cyber security event and adds more choices to better describe what type of event has happened\n", + " - also expands what is IT infrastures and an heiarchy of events\n", + " - I believe this reporting only applies IF the agency experiences a security event. So an agency who has not had any security events, will not have an increased reporting burden\n", + "\n", + "- **Sec F: may slightly increase reporting burden for some**\n", + " - revise the NTD major event reporting requirements to capture the new “disabling damage” event category\n", + " - similar to Sec e, only applies if a safety event occurs\n", + "\n", + "- **Sec G: decreases reporting burden for some**\n", + " - there are some unique rural operators that operate in multiple, small areas, but have the full reporter status\n", + " - proposes that these unique operators get a waiver to turn them into reduced reporters\n", + " - FTA estimates this affects 10-15 agencies.\n", + "\n", + "- **Sec H: may significantly increase reporting burden for some**\n", + " - propose to have a new category in NTD reporting field to allow transit agencies to declare if they are a voluntary reporter or not\n", + " - if a transit agency decides to become a voluntary reporter, they must report everything that would be applicalbe to their agency(?)" ] }, { @@ -47,7 +139,9 @@ "## Area 2 - Rural, Full Reporters to Reduced Reporters\n", "> E: The second area is on the topic of NTD data coming through as a result of a potential reduction in some full reporters in rural areas. I’m not sure which ones these would be because the rulemaking wouldn’t affect all reporters. I’m also not sure what data wouldn’t be reported as a result. Is this something the analyst team can look into further… ie see if the proposed change in Section G would affect any California agencies and what data we may not receive from NTD as a result.\n", "\n", - "> K: identify which CA agencies are full reporters in rural areas that meet the criteria in section G, although I think we’d do it based on 2023 NTD data and FTA would do it on 2024 data. I am not sure if there would be data loss based on FTA’s assessment that these agencies were historically Rural reporters." + "> K: identify which CA agencies are full reporters in rural areas that meet the criteria in section G, although I think we’d do it based on 2023 NTD data and FTA would do it on 2024 data. I am not sure if there would be data loss based on FTA’s assessment that these agencies were historically Rural reporters.\n", + "\n", + "> E: 2.\tYeah, I’m not expecting there would be much impact here, but perhaps it could affect something like Fresno County or something that provides a lot of rural service, but is large enough to be a full reporter. It’s worth flagging and understanding if it could be an impact or not. " ] }, { @@ -61,7 +155,9 @@ ">2. Can we do an audit to see which agencies aren’t reporters that maybe could be and \n", ">3. What monetary benefit could be gained if we helped these agencies become voluntary reporters.\n", "\n", - ">K: would auditing this entail simply looking at organizations that don’t have an NTD ID? Or something else?" + ">K: would auditing this entail simply looking at organizations that don’t have an NTD ID? Or something else?\n", + "\n", + ">E: Yes, I think we would look at all transit agencies in the transit database that operate fixed route service that don’t appear to have an NTD ID and are not present in NTD data." ] }, { From 15f5da77da23a75238c3194ee069365f954f2c60 Mon Sep 17 00:00:00 2001 From: csuyat-dot Date: Tue, 19 Nov 2024 18:33:10 +0000 Subject: [PATCH 04/13] comments to area 1 --- ntd/proposed_changes_25-26.ipynb | 39 +++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/ntd/proposed_changes_25-26.ipynb b/ntd/proposed_changes_25-26.ipynb index 03f5f225d..c5e6c2794 100644 --- a/ntd/proposed_changes_25-26.ipynb +++ b/ntd/proposed_changes_25-26.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "id": "a5010c8b-6fe2-49cd-8dfe-681e8de340d3", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ "# NTD Proposed Changes 2025-2026 Analysis" ] @@ -47,7 +49,10 @@ { "cell_type": "markdown", "id": "afdfd59c-d9c1-4d48-b6e4-55e9af08be29", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, "source": [ "## Area 1 - NTD Reporting Streamlining\n", ">E: The first is on the topic of NTD reporting streamlining. There are `a few items being proposed that may add additional reporting burden` and `some that propose to streamline things`. Is this an area that you all have an opinion on?\n", @@ -65,9 +70,11 @@ }, "cell_type": "markdown", "id": "d81a5cc6-0f45-4980-9f16-a9bac97483e1", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ - "### Revisit the NTD Modernization - Issues Analysis\n", + "### Revisit the NTD Modernization - Issues Analysis\n", "Slalom completed an analysis of the most common erorrs in NTD reporting for 2020, 2021 and 2022 by frequency, type and agency. \n", "\n", "As reported, 3 issues account for ~25% of all errors:\n", @@ -91,7 +98,7 @@ "id": "70b0e807-80d6-49d7-bad3-eb2df8b7663b", "metadata": {}, "source": [ - "### Notes from Proposed Changes document\n", + "### Notes from Proposed Changes document\n", "\n", "- **Sec B: increases reporting burden for all**\n", " - requires agencies to submit shapes.txt\n", @@ -128,7 +135,27 @@ "\n", "- **Sec H: may significantly increase reporting burden for some**\n", " - propose to have a new category in NTD reporting field to allow transit agencies to declare if they are a voluntary reporter or not\n", - " - if a transit agency decides to become a voluntary reporter, they must report everything that would be applicalbe to their agency(?)" + " - if a transit agency decides to become a voluntary reporter, they must complete the NTD report in its entirety. \n", + " - These reporters voluntarily comply with all NTD reporting requirements under the NTD rule (49 CFR Part 630) and the USOA." + ] + }, + { + "cell_type": "markdown", + "id": "e701c5eb-db38-428d-a810-76d186f3cffc", + "metadata": { + "tags": [] + }, + "source": [ + "## Comments for Area 1\n", + "Regarding the possible affects on the Data Science Branch, we have the biggest interest in Sections C and G as it affects metrics we typically use in analyses.\n", + "\n", + "Slalom conducted an analysis that looked into the types of reporting errors Caltrans received from NTD for 3 reporting years. The analysis found that Form A-10 errors were quite common. Section C of the proposed changes state that FTA is also awear of the issues in the A-10 and A-15 form. The proposed change eliminates the A-10 entirely and moves some of the initial A-10 metrics over to a new, extended A-15 form. This change aims to reduce the reporting burden for transit agencies.\n", + "\n", + "Sections G concerns changing rural operators with full reporter responsibilities to be reduced reporters. FTA aims to decrease the reporting burden, but this change affects an estimated 10-15 operators.\n", + "\n", + "Section H proposes a change to the NTD reporting platform to include a field that identify Voluntary reporters. This slightly increases the reporting burden for all NTD reporters. Sections E and F may conditionally increase the reporting burden for some operators, if the operator experiences cyber security or safetly events. Section D slightly incresses the reporting burden by proposing new categories in to A-20 form.\n", + "\n", + "\n" ] }, { From 6fa7473d759b87f10a6bfda745719af549448e77 Mon Sep 17 00:00:00 2001 From: csuyat-dot Date: Wed, 20 Nov 2024 00:28:08 +0000 Subject: [PATCH 05/13] added notes to area 2 --- ntd/proposed_changes_25-26.ipynb | 67 ++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 7 deletions(-) diff --git a/ntd/proposed_changes_25-26.ipynb b/ntd/proposed_changes_25-26.ipynb index c5e6c2794..2fff16752 100644 --- a/ntd/proposed_changes_25-26.ipynb +++ b/ntd/proposed_changes_25-26.ipynb @@ -147,13 +147,17 @@ }, "source": [ "## Comments for Area 1\n", - "Regarding the possible affects on the Data Science Branch, we have the biggest interest in Sections C and G as it affects metrics we typically use in analyses.\n", + "Regarding the possible affects on the Data Science Branch, we have the biggest interest in Sections C and G as it affects NTD metrics we typically use in analyses.\n", "\n", - "Slalom conducted an analysis that looked into the types of reporting errors Caltrans received from NTD for 3 reporting years. The analysis found that Form A-10 errors were quite common. Section C of the proposed changes state that FTA is also awear of the issues in the A-10 and A-15 form. The proposed change eliminates the A-10 entirely and moves some of the initial A-10 metrics over to a new, extended A-15 form. This change aims to reduce the reporting burden for transit agencies.\n", + "Slalom conducted an analysis that looked into the types of reporting errors Caltrans received from NTD for 3 reporting years. The analysis found that Form A-10 errors were quite common. Section C of the proposed changes state that FTA is also awear of the issues in the A-10 and A-15 form. The proposed changes eliminates the A-10 entirely and moves some of the initial A-10 metrics over to a new, extended A-15 form. This change aims to reduce the reporting burden for transit agencies.\n", "\n", - "Sections G concerns changing rural operators with full reporter responsibilities to be reduced reporters. FTA aims to decrease the reporting burden, but this change affects an estimated 10-15 operators.\n", + "Sections G concerns changing rural operators with full reporter responsibilities to be reduced reporters. FTA aims to decrease the reporting burden, but this change affects an estimated 10-15 operators. going from full reporter to reduced reporters would mean the operator does not need to report data related to passenger miles or monthly service or safety stats\n", "\n", - "Section H proposes a change to the NTD reporting platform to include a field that identify Voluntary reporters. This slightly increases the reporting burden for all NTD reporters. Sections E and F may conditionally increase the reporting burden for some operators, if the operator experiences cyber security or safetly events. Section D slightly incresses the reporting burden by proposing new categories in to A-20 form.\n", + "\n", + "\n", + "---\n", + "\n", + "Section H proposes a change to the NTD reporting platform to include a field that identify Voluntary reporters. This slightly increases the reporting burden for all NTD reporters. Sections E and F may conditionally increase the reporting burden for some operators, if the operator experiences cyber security or safety events. Finally, Section D slightly incresses the reporting burden by proposing new categories in to A-20 form.\n", "\n", "\n" ] @@ -164,11 +168,60 @@ "metadata": {}, "source": [ "## Area 2 - Rural, Full Reporters to Reduced Reporters\n", - "> E: The second area is on the topic of NTD data coming through as a result of a potential reduction in some full reporters in rural areas. I’m not sure which ones these would be because the rulemaking wouldn’t affect all reporters. I’m also not sure what data wouldn’t be reported as a result. Is this something the analyst team can look into further… ie see if the proposed change in Section G would affect any California agencies and what data we may not receive from NTD as a result.\n", + "> E: The second area is on the topic of NTD data coming through as a result of a `potential reduction in some full reporters in rural areas`. I’m not sure which ones these would be because the rulemaking wouldn’t affect all reporters. I’m also `not sure what data wouldn’t be reported as a result`. Is this something the analyst team can look into further… ie see if the proposed change in Section G would affect any California agencies and what data we may not receive from NTD as a result.\n", + "\n", + "> K: `identify which CA agencies are full reporters in rural areas that meet the criteria in section G`, although I think we’d do it based on `2023 NTD data` and FTA would do it on 2024 data. I am not sure if there would be data loss based on FTA’s assessment that these agencies were historically Rural reporters.\n", + "\n", + "> E: 2.\tYeah, I’m not expecting there would be much impact here, but perhaps it `could affect something like Fresno County` or something that provides a lot of rural service, but is large enough to be a full reporter. It’s worth flagging and understanding if it could be an impact or not. " + ] + }, + { + "cell_type": "markdown", + "id": "d96201a0-75f0-4d6e-b9fb-26d6849e428d", + "metadata": {}, + "source": [ + "### Understanding the difference between urban Full Reporters and urban Reduced Reporters\n", + "Per NTD reporting manual\n", + ">Full Reporters must provide the Annual Report, as well as Monthly Ridership (MR) and monthly Safety and Security reports. All other reporter types file their reports on an annual basis.\n", + "\n", + ">Full Reporters must report data for total revenues earned during the fiscal year. Reduced Reporters only report operating and capital expenditures incurred in the fiscal year, by source of revenue.\n", + "\n", + "**List of form used by both Urban Full and Reduced Reporters:**\n", + "1. Basic Information (Form P-10)\n", + "2. Modes and Types of Service (Form P-20)\n", + "3. Reporter Users (Form P-30)\n", + "4. General Transit Feed Specification Data for Fixed Route Modes (Form P-50)\n", + "5. Identification (Form B-10)\n", + "6. Geospatial Data for Demand Response Modes (Form B-15)\n", + "7. Contractual Relationship Data Requirements (Form B-30)\n", + "8. Transit Asset Management Performance Measure Targets (Form A-90)\n", + "9. Stations and Maintenance Facilities (Form A-10)\n", + "10. Transit Asset Management Facilities Inventory (Form A-15)\n", + "11. Revenue Vehicle Inventory (Form A-30)\n", + "12. Service Vehicle Inventory (Form A-35)\n", + "13. Reporting Federal Funding Allocation Data (Form FFA-10)\n", + "14. CEO Certification (Form D-10)\n", + "\n", + "\n", + "**List of unique forms for Urban Full Reporters:**\n", + "1. Reportable Segments (Form P-40)\n", + "2. Funding Sources (Form F-10)\n", + "3. Capital Expenses (Form F-20)\n", + "4. Operating Expenses: Uniform System of Accounts Functions and Object Classes (Form F-30)\n", + "5. Operating Expenses: Uniform System of Accounts Object Classes — Reconciling Items (Form F-40)\n", + "6. Uniform System of Accounts Object Classes: Financial Statement (Form F-60)\n", + "7. Monthly Ridership Reporting (Form MR-20)\n", + "8. Weekly Reference Reporting (Form WE-20)\n", + "9. Transit Way Mileage (Form A-20)\n", + "10. Employees (Form R-10)\n", + "11. Maintenance Performance (Form R-20)\n", "\n", - "> K: identify which CA agencies are full reporters in rural areas that meet the criteria in section G, although I think we’d do it based on 2023 NTD data and FTA would do it on 2024 data. I am not sure if there would be data loss based on FTA’s assessment that these agencies were historically Rural reporters.\n", "\n", - "> E: 2.\tYeah, I’m not expecting there would be much impact here, but perhaps it could affect something like Fresno County or something that provides a lot of rural service, but is large enough to be a full reporter. It’s worth flagging and understanding if it could be an impact or not. " + "**List of unique forms for Urban Reduced Reporters:**\n", + "1. S&S-60 Safety Data Form\n", + "2. Reduced Reporting Form (Form RR-20)\n", + "3. Transit Asset Management Performance Measure Targets (Form A-90)\n", + " \n" ] }, { From ca16af9b36be5ea7eff7de43e2ad865bb2f2e397 Mon Sep 17 00:00:00 2001 From: csuyat-dot Date: Wed, 20 Nov 2024 23:34:53 +0000 Subject: [PATCH 06/13] more content to area 1. started area 2 --- ntd/proposed_changes_25-26.ipynb | 36 ++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/ntd/proposed_changes_25-26.ipynb b/ntd/proposed_changes_25-26.ipynb index 2fff16752..31b1bc123 100644 --- a/ntd/proposed_changes_25-26.ipynb +++ b/ntd/proposed_changes_25-26.ipynb @@ -26,8 +26,8 @@ "metadata": {}, "source": [ "Task:\n", - " - As Caltrans DDS prepare to submit comments of these proposed changes to NTD, the Data Science branch is tasked to address 3 areas the proposed changes may affect the branch.\n", - " - Analysis of the following areas to be submitted to the Transit Quality Branch by 11/27/2024" + "- As Caltrans DDS prepare to submit comments of these proposed changes to NTD, the Data Science branch is tasked to address 3 areas the proposed changes may affect the branch.\n", + "- Analysis of the following areas to be submitted to the Transit Quality Branch by 11/27/2024" ] }, { @@ -165,7 +165,9 @@ { "cell_type": "markdown", "id": "97f07bb1-4fd2-4ad0-bb65-2419928d5326", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ "## Area 2 - Rural, Full Reporters to Reduced Reporters\n", "> E: The second area is on the topic of NTD data coming through as a result of a `potential reduction in some full reporters in rural areas`. I’m not sure which ones these would be because the rulemaking wouldn’t affect all reporters. I’m also `not sure what data wouldn’t be reported as a result`. Is this something the analyst team can look into further… ie see if the proposed change in Section G would affect any California agencies and what data we may not receive from NTD as a result.\n", @@ -221,9 +223,35 @@ "1. S&S-60 Safety Data Form\n", "2. Reduced Reporting Form (Form RR-20)\n", "3. Transit Asset Management Performance Measure Targets (Form A-90)\n", - " \n" + "---\n", + "So if an operator, under this proposed change, goes from Full to Reduced reporter, we can expect to miss data from 11 forms. However, those unique forms dont look familar in the ntd validation report pipeline so im unsure what kind of impact the data science branch would see.\n", + "\n", + "Will need to see if theres equivilant forms between Full and Reduced reporters that report similar data but in different forms." ] }, + { + "cell_type": "markdown", + "id": "8cf55bc0-8bfc-451f-a663-5dbe44a14c81", + "metadata": {}, + "source": [ + "### Query the warehouse to get find all the reporters that meet Sec G criteria\n", + "\n", + "Sec G criteria:\n", + "- Receives funding under 49 U.S.C. `5311`,\n", + "- Reports `one or more` primary or secondary `UZA`s on their Federal Funding Allocation form (`FFA-10`),\n", + "- Operates `more than 30` Vehicles Operated in Maximum Service (`VOMS`),\n", + "- Operates `fewer total VOMS in urbanized areas (UZAs)` than `rural (non-UZA) areas`, and\n", + "- Allocates `more total Vehicle Revenue Miles (VRM) to non-UZAs` than `UZAs`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20505f79-5721-4789-b10a-61bbdbb57b9e", + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "id": "65592033-b6e9-4bf7-a24a-6b1d6f7a087b", From 33d79122a3235deeb92f50b4479f65e59c2813d0 Mon Sep 17 00:00:00 2001 From: csuyat-dot Date: Thu, 21 Nov 2024 19:53:18 +0000 Subject: [PATCH 07/13] queried all the NTD tables to try and find agencies with multiple UZA --- ntd/proposed_changes_25-26.ipynb | 534 ++++++++++++++++++++++++++++++- 1 file changed, 531 insertions(+), 3 deletions(-) diff --git a/ntd/proposed_changes_25-26.ipynb b/ntd/proposed_changes_25-26.ipynb index 31b1bc123..b983588e5 100644 --- a/ntd/proposed_changes_25-26.ipynb +++ b/ntd/proposed_changes_25-26.ipynb @@ -32,7 +32,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "b5679a16-211e-400a-bf08-4c377b4b27ed", "metadata": {}, "outputs": [], @@ -244,13 +244,541 @@ "- Allocates `more total Vehicle Revenue Miles (VRM) to non-UZAs` than `UZAs`.\n" ] }, + { + "cell_type": "markdown", + "id": "80ff21e9-de8b-4dc4-b431-0a57f3919308", + "metadata": {}, + "source": [ + "#### dim_annual_ntd_agency_information" + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "id": "20505f79-5721-4789-b10a-61bbdbb57b9e", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "ntd_agency_info = (tbls.mart_ntd.dim_annual_ntd_agency_information()\n", + " >> filter(_._is_current == True,\n", + " _.year == 2022\n", + " )\n", + " >> collect()\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "1fac9f3a-3bd9-4c4c-9f83-86002a1e56f8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 2969 entries, 0 to 2968\n", + "Data columns (total 46 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 key 2969 non-null object \n", + " 1 year 2969 non-null int64 \n", + " 2 ntd_id 2969 non-null object \n", + " 3 number_of_state_counties 54 non-null float64 \n", + " 4 tam_tier 2969 non-null object \n", + " 5 personal_vehicles 1151 non-null float64 \n", + " 6 density 1125 non-null float64 \n", + " 7 uza_name 1125 non-null object \n", + " 8 tribal_area_name 138 non-null object \n", + " 9 service_area_sq_miles 1044 non-null float64 \n", + " 10 total_voms 2969 non-null float64 \n", + " 11 city 2944 non-null object \n", + " 12 fta_recipient_id 2242 non-null float64 \n", + " 13 region 2969 non-null float64 \n", + " 14 state_admin_funds_expended 54 non-null float64 \n", + " 15 zip_code_ext 2463 non-null float64 \n", + " 16 zip_code 2944 non-null float64 \n", + " 17 ueid 2575 non-null object \n", + " 18 address_line_2 323 non-null object \n", + " 19 number_of_counties_with_service 54 non-null float64 \n", + " 20 reporter_acronym 1499 non-null object \n", + " 21 original_due_date 2959 non-null float64 \n", + " 22 sq_miles 1124 non-null float64 \n", + " 23 address_line_1 2914 non-null object \n", + " 24 p_o__box 833 non-null object \n", + " 25 fy_end_date 2969 non-null int64 \n", + " 26 reported_by_ntd_id 1775 non-null object \n", + " 27 population 1125 non-null float64 \n", + " 28 reporting_module 2969 non-null object \n", + " 29 service_area_pop 1045 non-null float64 \n", + " 30 subrecipient_type 1770 non-null object \n", + " 31 state 2969 non-null object \n", + " 32 volunteer_drivers 1151 non-null float64 \n", + " 33 primary_uza 0 non-null object \n", + " 34 doing_business_as 584 non-null object \n", + " 35 reporter_type 2969 non-null object \n", + " 36 legacy_ntd_id 2093 non-null object \n", + " 37 voms_do 1747 non-null float64 \n", + " 38 url 2876 non-null object \n", + " 39 reported_by_name 1775 non-null object \n", + " 40 voms_pt 671 non-null float64 \n", + " 41 organization_type 2915 non-null object \n", + " 42 agency_name 2969 non-null object \n", + " 43 _valid_from 2969 non-null datetime64[ns, UTC]\n", + " 44 _valid_to 2969 non-null datetime64[ns, UTC]\n", + " 45 _is_current 2969 non-null bool \n", + "dtypes: bool(1), datetime64[ns, UTC](2), float64(18), int64(2), object(23)\n", + "memory usage: 1.0+ MB\n" + ] + } + ], + "source": [ + "ntd_agency_info.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "31591169-cdb1-45db-880a-6cdbcc013fb2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "ntd_id\n", + "80285 1\n", + "40225 1\n", + "40223 1\n", + "40222 1\n", + "40221 1\n", + "Name: uza_name, dtype: int64" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ntd_agency_info.groupby(\"ntd_id\")[\"uza_name\"].nunique().sort_values(ascending=False).head()" + ] + }, + { + "cell_type": "markdown", + "id": "b6a189aa-2820-4efc-9d4f-5638c6d11379", + "metadata": {}, + "source": [ + "#### dim_annual_funding_sources" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "fc8f9407-af22-4805-bb0e-571cb7acd495", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6771 entries, 0 to 6770\n", + "Data columns (total 28 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 funding_source 6771 non-null object \n", + " 1 agency 6771 non-null object \n", + " 2 agency_voms 6771 non-null float64\n", + " 3 city 6689 non-null object \n", + " 4 fuel_tax 2257 non-null float64\n", + " 5 fta_capital_program_5309 2257 non-null float64\n", + " 6 fta_rural_progam_5311 2257 non-null float64\n", + " 7 fta_urbanized_area_formula 2257 non-null float64\n", + " 8 general_funds 4514 non-null float64\n", + " 9 income_tax 2257 non-null float64\n", + " 10 ntd_id 6771 non-null object \n", + " 11 organization_type 6771 non-null object \n", + " 12 other_dot_funds 2257 non-null float64\n", + " 13 other_federal_funds 2257 non-null float64\n", + " 14 other_fta_funds 2257 non-null float64\n", + " 15 other_funds 2257 non-null float64\n", + " 16 other_taxes 2257 non-null float64\n", + " 17 primary_uza_population 3405 non-null float64\n", + " 18 property_tax 2257 non-null float64\n", + " 19 reduced_reporter_funds 4514 non-null float64\n", + " 20 report_year 6771 non-null object \n", + " 21 reporter_type 6771 non-null object \n", + " 22 sales_tax 2257 non-null float64\n", + " 23 state 6771 non-null object \n", + " 24 tolls 2257 non-null float64\n", + " 25 transportation_funds 2257 non-null float64\n", + " 26 primary_uza_code 3405 non-null object \n", + " 27 primary_uza_name 3405 non-null object \n", + "dtypes: float64(18), object(10)\n", + "memory usage: 1.4+ MB\n" + ] + } + ], + "source": [ + "ntd_funding_sources = (tbls.mart_ntd.dim_annual_funding_sources()\n", + " >> filter(_.report_year == \"2023\",\n", + " # _.year == 2022\n", + " )\n", + " >> collect()\n", + " )\n", + "ntd_funding_sources.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "f18b8c63-6052-4849-b1be-721a5cf54ecf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "ntd_id\n", + "1 1\n", + "416 1\n", + "414 1\n", + "41199 1\n", + "41182 1\n", + "Name: primary_uza_name, dtype: int64" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ntd_funding_sources.groupby(\"ntd_id\")[\"primary_uza_name\"].nunique().sort_values(ascending=False).head()" + ] + }, + { + "cell_type": "markdown", + "id": "28e56afc-2d63-43a6-871b-b6554035ed7e", + "metadata": {}, + "source": [ + "#### dim_annual_service_agencies" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "cf4cc544-785a-4476-bdda-9019e6a5e6de", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 2201 entries, 0 to 2200\n", + "Data columns (total 36 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 key 2201 non-null object \n", + " 1 report_year 2201 non-null object \n", + " 2 ntd_id 2201 non-null object \n", + " 3 agency 2201 non-null object \n", + " 4 reporter_type 2201 non-null object \n", + " 5 organization_type 2201 non-null object \n", + " 6 city 2173 non-null object \n", + " 7 state 2201 non-null object \n", + " 8 agency_voms 2201 non-null float64\n", + " 9 primary_uza_code 1089 non-null float64\n", + " 10 primary_uza_name 1089 non-null object \n", + " 11 primary_uza_area_sq_miles 2201 non-null object \n", + " 12 primary_uza_population 1089 non-null float64\n", + " 13 service_area_sq_miles 1059 non-null float64\n", + " 14 service_area_population 1060 non-null float64\n", + " 15 actual_vehicles_passenger_car_deadhead_hours 2201 non-null float64\n", + " 16 actual_vehicles_passenger_car_hours 2201 non-null float64\n", + " 17 actual_vehicles_passenger_car_miles 2201 non-null float64\n", + " 18 actual_vehicles_passenger_car_revenue_hours 2201 non-null float64\n", + " 19 actual_vehicles_passenger_car_revenue_miles 2201 non-null float64\n", + " 20 actual_vehicles_passenger_deadhead_miles 2201 non-null float64\n", + " 21 scheduled_vehicles_passenger_car_revenue_miles 2201 non-null float64\n", + " 22 charter_service_hours 380 non-null float64\n", + " 23 school_bus_hours 357 non-null float64\n", + " 24 trains_in_operation 2201 non-null float64\n", + " 25 directional_route_miles 2201 non-null float64\n", + " 26 passenger_miles 2201 non-null float64\n", + " 27 train_miles 2201 non-null float64\n", + " 28 train_revenue_miles 2201 non-null float64\n", + " 29 train_deadhead_miles 79 non-null float64\n", + " 30 train_hours 2201 non-null float64\n", + " 31 train_revenue_hours 2201 non-null float64\n", + " 32 train_deadhead_hours 79 non-null float64\n", + " 33 ada_upt 382 non-null float64\n", + " 34 sponsored_service_upt 1741 non-null float64\n", + " 35 unlinked_passenger_trips_upt 2201 non-null float64\n", + "dtypes: float64(26), object(10)\n", + "memory usage: 619.2+ KB\n" + ] + } + ], + "source": [ + "ntd_service_agencies = (tbls.mart_ntd.dim_annual_service_agencies ()\n", + " >> filter(_.report_year == \"2023\",\n", + " # _.year == 2022\n", + " )\n", + " >> collect()\n", + " )\n", + "ntd_service_agencies.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "2901be3a-5c7f-4eaa-a45c-509d32bef198", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "ntd_id\n", + "1 1\n", + "44907 1\n", + "80302 1\n", + "80303 1\n", + "85 1\n", + "Name: primary_uza_name, dtype: int64" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ntd_service_agencies.groupby(\"ntd_id\")[\"primary_uza_name\"].nunique().sort_values(ascending=False).head()" + ] + }, + { + "cell_type": "markdown", + "id": "623ce1ce-bb7a-450a-b139-6f2cf6ac375b", + "metadata": {}, + "source": [ + "#### dim_annual_service_mode_time_periods" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "ae899649-d9fa-4652-884b-f8912a768ff1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 9114 entries, 0 to 9113\n", + "Data columns (total 70 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 key 9114 non-null object \n", + " 1 report_year 9114 non-null object \n", + " 2 type_of_service 9114 non-null object \n", + " 3 ntd_id 9114 non-null object \n", + " 4 agency 9114 non-null object \n", + " 5 mode 9114 non-null object \n", + " 6 mode_name 9114 non-null object \n", + " 7 time_period 9114 non-null object \n", + " 8 time_service_begins 4821 non-null object \n", + " 9 time_service_ends 4808 non-null object \n", + " 10 reporter_type 9114 non-null object \n", + " 11 city 9093 non-null object \n", + " 12 state 9114 non-null object \n", + " 13 actual_vehicles_passenger_car_deadhead_hours 9114 non-null float64\n", + " 14 actual_vehicles_passenger_car_hours 9114 non-null float64\n", + " 15 actual_vehicles_passenger_car_miles 9114 non-null float64\n", + " 16 actual_vehicles_passenger_car_revenue_hours 9114 non-null float64\n", + " 17 actual_vehicles_passenger_car_revenue_miles 9114 non-null float64\n", + " 18 actual_vehicles_passenger_deadhead_miles 9114 non-null float64\n", + " 19 ada_upt 0 non-null object \n", + " 20 agency_voms 9114 non-null float64\n", + " 21 aptl_questionable 833 non-null object \n", + " 22 average_passenger_trip_length_aptl_ 3133 non-null float64\n", + " 23 average_speed 3133 non-null float64\n", + " 24 average_speed_questionable 336 non-null object \n", + " 25 brt_non_statutory_mixed_traffic 0 non-null object \n", + " 26 charter_service_hours 0 non-null object \n", + " 27 days_of_service_operated 1908 non-null float64\n", + " 28 days_not_operated_strikes 1850 non-null float64\n", + " 29 days_not_operated_emergencies 1850 non-null float64\n", + " 30 deadhead_hours_questionable 77 non-null object \n", + " 31 deadhead_miles_questionable 98 non-null object \n", + " 32 directional_route_miles 9114 non-null float64\n", + " 33 directional_route_miles_questionable 42 non-null object \n", + " 34 mixed_traffic_right_of_way 0 non-null object \n", + " 35 mode_voms 0 non-null object \n", + " 36 mode_voms_questionable 56 non-null object \n", + " 37 organization_type 9114 non-null object \n", + " 38 passenger_miles 9114 non-null float64\n", + " 39 passenger_miles_questionable 784 non-null object \n", + " 40 passengers_per_hour 9114 non-null float64\n", + " 41 passengers_per_hour_questionable 476 non-null object \n", + " 42 primary_uza_area_sq_miles 9114 non-null float64\n", + " 43 primary_uza_code 9114 non-null float64\n", + " 44 primary_uza_name 9114 non-null object \n", + " 45 primary_uza_population 9114 non-null float64\n", + " 46 scheduled_revenue_miles_questionable 7 non-null object \n", + " 47 scheduled_vehicles_passenger_car_revenue_miles 9114 non-null float64\n", + " 48 school_bus_hours 0 non-null object \n", + " 49 service_area_population 9114 non-null float64\n", + " 50 service_area_sq_miles 9114 non-null float64\n", + " 51 sponsored_service_upt 0 non-null object \n", + " 52 train_deadhead_hours 770 non-null float64\n", + " 53 train_deadhead_miles 770 non-null float64\n", + " 54 train_hours 9114 non-null float64\n", + " 55 train_hours_questionable 0 non-null object \n", + " 56 trains_in_operation 9114 non-null float64\n", + " 57 trains_in_operation_questionable 0 non-null object \n", + " 58 train_miles 9114 non-null float64\n", + " 59 train_miles_questionable 0 non-null object \n", + " 60 train_revenue_hours 9114 non-null float64\n", + " 61 train_revenue_hours_questionable 0 non-null object \n", + " 62 train_revenue_miles 9114 non-null float64\n", + " 63 train_revenue_miles_questionable 0 non-null object \n", + " 64 unlinked_passenger_trips_upt 9114 non-null float64\n", + " 65 unlinked_passenger_trips_questionable 385 non-null object \n", + " 66 vehicle_hours_questionable 84 non-null object \n", + " 67 vehicle_miles_questionable 98 non-null object \n", + " 68 vehicle_revenue_hours_questionable 252 non-null object \n", + " 69 vehicle_revenue_miles_questionable 301 non-null object \n", + "dtypes: float64(29), object(41)\n", + "memory usage: 4.9+ MB\n" + ] + } + ], + "source": [ + "ntd_service_mode = (tbls.mart_ntd.dim_annual_service_mode_time_periods()\n", + " >> filter(_.report_year == \"2023\",\n", + " # _.year == 2022\n", + " )\n", + " >> collect()\n", + " )\n", + "ntd_service_mode.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "9373a629-6506-4dcd-af77-c068947bd017", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "ntd_id\n", + "1 1\n", + "60032 1\n", + "60024 1\n", + "60022 1\n", + "60019 1\n", + "Name: primary_uza_code, dtype: int64" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ntd_service_mode.groupby(\"ntd_id\")[\"primary_uza_code\"].nunique().sort_values(ascending=True).head()" + ] + }, + { + "cell_type": "markdown", + "id": "424fa017-17db-4bf9-8456-db7036fb656e", + "metadata": {}, + "source": [ + "#### dim_monthly_ridership_with_adjustments" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "b76deddb-d6f6-4305-8a92-66c2092b88ed", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 27600 entries, 0 to 27599\n", + "Data columns (total 22 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 key 27600 non-null object \n", + " 1 ntd_id 27600 non-null object \n", + " 2 legacy_ntd_id 26568 non-null object \n", + " 3 agency 27600 non-null object \n", + " 4 reporter_type 27600 non-null object \n", + " 5 period_year_month 27600 non-null object \n", + " 6 period_year 27600 non-null object \n", + " 7 period_month 27600 non-null object \n", + " 8 primary_uza_name 27528 non-null object \n", + " 9 primary_uza_code 27528 non-null object \n", + " 10 _3_mode 27600 non-null object \n", + " 11 mode 27600 non-null object \n", + " 12 mode_name 27576 non-null object \n", + " 13 service_type 27600 non-null object \n", + " 14 mode_type_of_service_status 27600 non-null object \n", + " 15 tos 27600 non-null object \n", + " 16 upt 15650 non-null float64 \n", + " 17 vrm 15614 non-null float64 \n", + " 18 vrh 15556 non-null float64 \n", + " 19 voms 15556 non-null float64 \n", + " 20 _dt 27600 non-null object \n", + " 21 execution_ts 27600 non-null datetime64[ns, UTC]\n", + "dtypes: datetime64[ns, UTC](1), float64(4), object(17)\n", + "memory usage: 4.6+ MB\n" + ] + } + ], + "source": [ + "ntd_monthly_ridership = (tbls.mart_ntd.dim_monthly_ridership_with_adjustments ()\n", + " >> filter(_.period_year == \"2023\",\n", + " # _.year == 2022\n", + " )\n", + " >> collect()\n", + " )\n", + "ntd_monthly_ridership.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "31f8ce6d-a7a9-4fb9-b33f-605cd38ee183", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "ntd_id\n", + "00001 1\n", + "60012 1\n", + "50522 1\n", + "55311 1\n", + "55312 1\n", + "Name: primary_uza_code, dtype: int64" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ntd_monthly_ridership.groupby(\"ntd_id\")[\"primary_uza_code\"].nunique().sort_values(ascending=False).head()" + ] }, { "cell_type": "markdown", From 7062f13489c699d16212c3000a0459b327d7e55d Mon Sep 17 00:00:00 2001 From: csuyat-dot Date: Thu, 21 Nov 2024 22:41:58 +0000 Subject: [PATCH 08/13] quired dim_orgs for area 3 --- ntd/proposed_changes_25-26.ipynb | 327 ++++++++++++++++++++++++++++++- 1 file changed, 324 insertions(+), 3 deletions(-) diff --git a/ntd/proposed_changes_25-26.ipynb b/ntd/proposed_changes_25-26.ipynb index b983588e5..1c7f03877 100644 --- a/ntd/proposed_changes_25-26.ipynb +++ b/ntd/proposed_changes_25-26.ipynb @@ -755,7 +755,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 55, "id": "31f8ce6d-a7a9-4fb9-b33f-605cd38ee183", "metadata": {}, "outputs": [ @@ -771,7 +771,7 @@ "Name: primary_uza_code, dtype: int64" ] }, - "execution_count": 53, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -798,9 +798,330 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 60, "id": "b9f386ff-59fa-4eec-add5-b8c16a820cb3", "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 1186 entries, 0 to 1185\n", + "Data columns (total 24 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 key 1186 non-null object \n", + " 1 source_record_id 1186 non-null object \n", + " 2 name 1186 non-null object \n", + " 3 organization_type 1186 non-null object \n", + " 4 roles 1186 non-null object \n", + " 5 itp_id 167 non-null float64 \n", + " 6 details 186 non-null object \n", + " 7 caltrans_district 508 non-null object \n", + " 8 website 1151 non-null object \n", + " 9 reporting_category 184 non-null object \n", + " 10 hubspot_company_record_id 279 non-null object \n", + " 11 gtfs_static_status 1186 non-null object \n", + " 12 gtfs_realtime_status 1186 non-null object \n", + " 13 _deprecated__assessment_status 1186 non-null bool \n", + " 14 manual_check__contact_on_website 665 non-null object \n", + " 15 alias 1186 non-null object \n", + " 16 is_public_entity 1186 non-null bool \n", + " 17 ntd_id 0 non-null object \n", + " 18 ntd_id_2022 0 non-null object \n", + " 19 public_currently_operating 1186 non-null bool \n", + " 20 public_currently_operating_fixed_route 1186 non-null bool \n", + " 21 _is_current 1186 non-null bool \n", + " 22 _valid_from 1186 non-null datetime64[ns, UTC]\n", + " 23 _valid_to 1186 non-null datetime64[ns, UTC]\n", + "dtypes: bool(5), datetime64[ns, UTC](2), float64(1), object(16)\n", + "memory usage: 182.0+ KB\n" + ] + } + ], + "source": [ + "dim_orgs = (tbls.mart_transit_database.dim_organizations()\n", + " >> filter(_._is_current == True,\n", + " _.ntd_id.isna()\n", + " )\n", + " >> collect()\n", + " )\n", + "dim_orgs.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "d34f841d-110d-4294-886f-61f9e836836f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
keysource_record_idnameorganization_typerolesitp_iddetailscaltrans_districtwebsitereporting_categoryhubspot_company_record_idgtfs_static_statusgtfs_realtime_status_deprecated__assessment_statusmanual_check__contact_on_websitealiasis_public_entityntd_idntd_id_2022public_currently_operatingpublic_currently_operating_fixed_route_is_current_valid_from_valid_to
0eea7326fc87a575ce26e24cf56b8ff37recsupkiKC6Y6fFfVDAVNon-Profit Organization[]NaNDAV operates a fleet of vehicles around the co...11 - San Diegohttps://www.dav.org/veterans/i-need-a-ride/NoneNoneStatic OKRT IncompleteFalseUnknown[Disabled Veterans of America]FalseNoneNoneFalseFalseTrue2023-05-25 00:00:00+00:002098-12-31 23:59:59.999999+00:00
145227f9806ad4ffd1e8d4309e07f707erecmCZYY7aXn5MS9bIBICompany[]NaNNoneNonehttps://www.ibigroup.com/NoneNoneStatic OKRT IncompleteFalseUnknown[]FalseNoneNoneFalseFalseTrue2024-05-04 00:00:00+00:002098-12-31 23:59:59.999999+00:00
28a644e497439d25c01619c8ec6c85c44recEN9M5vpVOk2JRISAPCompany[]NaNNoneNonecrystalreports.comNoneNoneStatic OKRT IncompleteFalseUnknown[]FalseNoneNoneFalseFalseTrue2023-04-29 00:00:00+00:002098-12-31 23:59:59.999999+00:00
3fa22729bf0698cc6d2ac4f4a41e861b0recIAaOHjseoeNpTxUTACompany[]NaNNoneNonehttp://www.utatransit.net/NoneNoneStatic OKRT IncompleteFalseUnknown[]FalseNoneNoneFalseFalseTrue2023-04-29 00:00:00+00:002098-12-31 23:59:59.999999+00:00
43fd4d81306c49cb718c37b48fcbe585crecveQ8PTsiKdT7RUAinaCompany[]NaNOffices in Boston and Finland; no CA officesNonehttps://www.ainaptt.com/NoneNoneStatic OKRT IncompleteFalseUnknown[]FalseNoneNoneFalseFalseTrue2023-05-25 00:00:00+00:002098-12-31 23:59:59.999999+00:00
\n", + "
" + ], + "text/plain": [ + " key source_record_id name \\\n", + "0 eea7326fc87a575ce26e24cf56b8ff37 recsupkiKC6Y6fFfV DAV \n", + "1 45227f9806ad4ffd1e8d4309e07f707e recmCZYY7aXn5MS9b IBI \n", + "2 8a644e497439d25c01619c8ec6c85c44 recEN9M5vpVOk2JRI SAP \n", + "3 fa22729bf0698cc6d2ac4f4a41e861b0 recIAaOHjseoeNpTx UTA \n", + "4 3fd4d81306c49cb718c37b48fcbe585c recveQ8PTsiKdT7RU Aina \n", + "\n", + " organization_type roles itp_id \\\n", + "0 Non-Profit Organization [] NaN \n", + "1 Company [] NaN \n", + "2 Company [] NaN \n", + "3 Company [] NaN \n", + "4 Company [] NaN \n", + "\n", + " details caltrans_district \\\n", + "0 DAV operates a fleet of vehicles around the co... 11 - San Diego \n", + "1 None None \n", + "2 None None \n", + "3 None None \n", + "4 Offices in Boston and Finland; no CA offices None \n", + "\n", + " website reporting_category \\\n", + "0 https://www.dav.org/veterans/i-need-a-ride/ None \n", + "1 https://www.ibigroup.com/ None \n", + "2 crystalreports.com None \n", + "3 http://www.utatransit.net/ None \n", + "4 https://www.ainaptt.com/ None \n", + "\n", + " hubspot_company_record_id gtfs_static_status gtfs_realtime_status \\\n", + "0 None Static OK RT Incomplete \n", + "1 None Static OK RT Incomplete \n", + "2 None Static OK RT Incomplete \n", + "3 None Static OK RT Incomplete \n", + "4 None Static OK RT Incomplete \n", + "\n", + " _deprecated__assessment_status manual_check__contact_on_website \\\n", + "0 False Unknown \n", + "1 False Unknown \n", + "2 False Unknown \n", + "3 False Unknown \n", + "4 False Unknown \n", + "\n", + " alias is_public_entity ntd_id ntd_id_2022 \\\n", + "0 [Disabled Veterans of America] False None None \n", + "1 [] False None None \n", + "2 [] False None None \n", + "3 [] False None None \n", + "4 [] False None None \n", + "\n", + " public_currently_operating public_currently_operating_fixed_route \\\n", + "0 False False \n", + "1 False False \n", + "2 False False \n", + "3 False False \n", + "4 False False \n", + "\n", + " _is_current _valid_from _valid_to \n", + "0 True 2023-05-25 00:00:00+00:00 2098-12-31 23:59:59.999999+00:00 \n", + "1 True 2024-05-04 00:00:00+00:00 2098-12-31 23:59:59.999999+00:00 \n", + "2 True 2023-04-29 00:00:00+00:00 2098-12-31 23:59:59.999999+00:00 \n", + "3 True 2023-04-29 00:00:00+00:00 2098-12-31 23:59:59.999999+00:00 \n", + "4 True 2023-05-25 00:00:00+00:00 2098-12-31 23:59:59.999999+00:00 " + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dim_orgs.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "86359867-8b8a-41a9-8579-b38b7eb89bb3", + "metadata": {}, "outputs": [], "source": [] } From 8e10c74c5b3d48440eb398ebe3f476047e3a877e Mon Sep 17 00:00:00 2001 From: csuyat-dot Date: Fri, 22 Nov 2024 00:15:59 +0000 Subject: [PATCH 09/13] more content --- ntd/proposed_changes_25-26.ipynb | 37 ++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/ntd/proposed_changes_25-26.ipynb b/ntd/proposed_changes_25-26.ipynb index 1c7f03877..860cf6e6f 100644 --- a/ntd/proposed_changes_25-26.ipynb +++ b/ntd/proposed_changes_25-26.ipynb @@ -533,7 +533,40 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 65, + "id": "702e1dba-17a5-4364-a5c5-0c04955f9fab", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "City, County or Local Government Unit or Department of Transportation 1103\n", + "Independent Public Agency or Authority of Transit Service 422\n", + "Private-Non-Profit Corporation 358\n", + "Tribe 113\n", + "MPO, COG or Other Planning Agency 63\n", + "Area Agency on Aging 43\n", + "State Government Unit or Department of Transportation 27\n", + "Private-For-Profit Corporation 23\n", + "University 20\n", + "Other Publicly-Owned or Privately Chartered Corporation 15\n", + "Private Provider Reporting on Behalf of a Public Entity 7\n", + "Subsidiary Unit of a Transit Agency, Reporting Separately 7\n", + "Name: organization_type, dtype: int64" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ntd_service_agencies.organization_type.value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 63, "id": "2901be3a-5c7f-4eaa-a45c-509d32bef198", "metadata": {}, "outputs": [ @@ -549,7 +582,7 @@ "Name: primary_uza_name, dtype: int64" ] }, - "execution_count": 44, + "execution_count": 63, "metadata": {}, "output_type": "execute_result" } From fdd0b6b8d27e4fe9e3a5aaf6eaaddfbe3209cb08 Mon Sep 17 00:00:00 2001 From: csuyat-dot Date: Sat, 23 Nov 2024 00:31:13 +0000 Subject: [PATCH 10/13] decided on 2 tables --- ntd/proposed_changes_25-26.ipynb | 406 ++++++++++++++++--------------- 1 file changed, 213 insertions(+), 193 deletions(-) diff --git a/ntd/proposed_changes_25-26.ipynb b/ntd/proposed_changes_25-26.ipynb index 860cf6e6f..e040d285e 100644 --- a/ntd/proposed_changes_25-26.ipynb +++ b/ntd/proposed_changes_25-26.ipynb @@ -32,7 +32,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "b5679a16-211e-400a-bf08-4c377b4b27ed", "metadata": {}, "outputs": [], @@ -246,135 +246,27 @@ }, { "cell_type": "markdown", - "id": "80ff21e9-de8b-4dc4-b431-0a57f3919308", - "metadata": {}, - "source": [ - "#### dim_annual_ntd_agency_information" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "20505f79-5721-4789-b10a-61bbdbb57b9e", - "metadata": {}, - "outputs": [], - "source": [ - "ntd_agency_info = (tbls.mart_ntd.dim_annual_ntd_agency_information()\n", - " >> filter(_._is_current == True,\n", - " _.year == 2022\n", - " )\n", - " >> collect()\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "1fac9f3a-3bd9-4c4c-9f83-86002a1e56f8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "RangeIndex: 2969 entries, 0 to 2968\n", - "Data columns (total 46 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 key 2969 non-null object \n", - " 1 year 2969 non-null int64 \n", - " 2 ntd_id 2969 non-null object \n", - " 3 number_of_state_counties 54 non-null float64 \n", - " 4 tam_tier 2969 non-null object \n", - " 5 personal_vehicles 1151 non-null float64 \n", - " 6 density 1125 non-null float64 \n", - " 7 uza_name 1125 non-null object \n", - " 8 tribal_area_name 138 non-null object \n", - " 9 service_area_sq_miles 1044 non-null float64 \n", - " 10 total_voms 2969 non-null float64 \n", - " 11 city 2944 non-null object \n", - " 12 fta_recipient_id 2242 non-null float64 \n", - " 13 region 2969 non-null float64 \n", - " 14 state_admin_funds_expended 54 non-null float64 \n", - " 15 zip_code_ext 2463 non-null float64 \n", - " 16 zip_code 2944 non-null float64 \n", - " 17 ueid 2575 non-null object \n", - " 18 address_line_2 323 non-null object \n", - " 19 number_of_counties_with_service 54 non-null float64 \n", - " 20 reporter_acronym 1499 non-null object \n", - " 21 original_due_date 2959 non-null float64 \n", - " 22 sq_miles 1124 non-null float64 \n", - " 23 address_line_1 2914 non-null object \n", - " 24 p_o__box 833 non-null object \n", - " 25 fy_end_date 2969 non-null int64 \n", - " 26 reported_by_ntd_id 1775 non-null object \n", - " 27 population 1125 non-null float64 \n", - " 28 reporting_module 2969 non-null object \n", - " 29 service_area_pop 1045 non-null float64 \n", - " 30 subrecipient_type 1770 non-null object \n", - " 31 state 2969 non-null object \n", - " 32 volunteer_drivers 1151 non-null float64 \n", - " 33 primary_uza 0 non-null object \n", - " 34 doing_business_as 584 non-null object \n", - " 35 reporter_type 2969 non-null object \n", - " 36 legacy_ntd_id 2093 non-null object \n", - " 37 voms_do 1747 non-null float64 \n", - " 38 url 2876 non-null object \n", - " 39 reported_by_name 1775 non-null object \n", - " 40 voms_pt 671 non-null float64 \n", - " 41 organization_type 2915 non-null object \n", - " 42 agency_name 2969 non-null object \n", - " 43 _valid_from 2969 non-null datetime64[ns, UTC]\n", - " 44 _valid_to 2969 non-null datetime64[ns, UTC]\n", - " 45 _is_current 2969 non-null bool \n", - "dtypes: bool(1), datetime64[ns, UTC](2), float64(18), int64(2), object(23)\n", - "memory usage: 1.0+ MB\n" - ] - } - ], - "source": [ - "ntd_agency_info.info()" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "31591169-cdb1-45db-880a-6cdbcc013fb2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ntd_id\n", - "80285 1\n", - "40225 1\n", - "40223 1\n", - "40222 1\n", - "40221 1\n", - "Name: uza_name, dtype: int64" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], + "id": "35ebc22e-ea54-452d-b6eb-c9b0e2c1fbdb", + "metadata": { + "tags": [] + }, "source": [ - "ntd_agency_info.groupby(\"ntd_id\")[\"uza_name\"].nunique().sort_values(ascending=False).head()" + "### Any operators that operate in more than 1 UZA?" ] }, { "cell_type": "markdown", "id": "b6a189aa-2820-4efc-9d4f-5638c6d11379", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ "#### dim_annual_funding_sources" ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 19, "id": "fc8f9407-af22-4805-bb0e-571cb7acd495", "metadata": {}, "outputs": [ @@ -383,47 +275,49 @@ "output_type": "stream", "text": [ "\n", - "RangeIndex: 6771 entries, 0 to 6770\n", + "RangeIndex: 134 entries, 0 to 133\n", "Data columns (total 28 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", - " 0 funding_source 6771 non-null object \n", - " 1 agency 6771 non-null object \n", - " 2 agency_voms 6771 non-null float64\n", - " 3 city 6689 non-null object \n", - " 4 fuel_tax 2257 non-null float64\n", - " 5 fta_capital_program_5309 2257 non-null float64\n", - " 6 fta_rural_progam_5311 2257 non-null float64\n", - " 7 fta_urbanized_area_formula 2257 non-null float64\n", - " 8 general_funds 4514 non-null float64\n", - " 9 income_tax 2257 non-null float64\n", - " 10 ntd_id 6771 non-null object \n", - " 11 organization_type 6771 non-null object \n", - " 12 other_dot_funds 2257 non-null float64\n", - " 13 other_federal_funds 2257 non-null float64\n", - " 14 other_fta_funds 2257 non-null float64\n", - " 15 other_funds 2257 non-null float64\n", - " 16 other_taxes 2257 non-null float64\n", - " 17 primary_uza_population 3405 non-null float64\n", - " 18 property_tax 2257 non-null float64\n", - " 19 reduced_reporter_funds 4514 non-null float64\n", - " 20 report_year 6771 non-null object \n", - " 21 reporter_type 6771 non-null object \n", - " 22 sales_tax 2257 non-null float64\n", - " 23 state 6771 non-null object \n", - " 24 tolls 2257 non-null float64\n", - " 25 transportation_funds 2257 non-null float64\n", - " 26 primary_uza_code 3405 non-null object \n", - " 27 primary_uza_name 3405 non-null object \n", - "dtypes: float64(18), object(10)\n", - "memory usage: 1.4+ MB\n" + " 0 funding_source 134 non-null object \n", + " 1 agency 134 non-null object \n", + " 2 agency_voms 134 non-null float64\n", + " 3 city 134 non-null object \n", + " 4 fuel_tax 0 non-null object \n", + " 5 fta_capital_program_5309 134 non-null float64\n", + " 6 fta_rural_progam_5311 134 non-null float64\n", + " 7 fta_urbanized_area_formula 134 non-null float64\n", + " 8 general_funds 0 non-null object \n", + " 9 income_tax 0 non-null object \n", + " 10 ntd_id 134 non-null object \n", + " 11 organization_type 134 non-null object \n", + " 12 other_dot_funds 134 non-null float64\n", + " 13 other_federal_funds 134 non-null float64\n", + " 14 other_fta_funds 134 non-null float64\n", + " 15 other_funds 0 non-null object \n", + " 16 other_taxes 0 non-null object \n", + " 17 primary_uza_population 134 non-null float64\n", + " 18 property_tax 0 non-null object \n", + " 19 reduced_reporter_funds 0 non-null object \n", + " 20 report_year 134 non-null object \n", + " 21 reporter_type 134 non-null object \n", + " 22 sales_tax 0 non-null object \n", + " 23 state 134 non-null object \n", + " 24 tolls 0 non-null object \n", + " 25 transportation_funds 0 non-null object \n", + " 26 primary_uza_code 134 non-null object \n", + " 27 primary_uza_name 134 non-null object \n", + "dtypes: float64(8), object(20)\n", + "memory usage: 29.4+ KB\n" ] } ], "source": [ + "# Has 5311 data for operators, and UZA, VOMS, \n", "ntd_funding_sources = (tbls.mart_ntd.dim_annual_funding_sources()\n", " >> filter(_.report_year == \"2023\",\n", - " # _.year == 2022\n", + " _.fta_rural_progam_5311 > 0,\n", + " _.reporter_type == \"Full Reporter\"\n", " )\n", " >> collect()\n", " )\n", @@ -432,42 +326,39 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 20, "id": "f18b8c63-6052-4849-b1be-721a5cf54ecf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "ntd_id\n", - "1 1\n", - "416 1\n", - "414 1\n", - "41199 1\n", - "41182 1\n", - "Name: primary_uza_name, dtype: int64" + "Full Reporter 134\n", + "Name: reporter_type, dtype: int64" ] }, - "execution_count": 38, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "ntd_funding_sources.groupby(\"ntd_id\")[\"primary_uza_name\"].nunique().sort_values(ascending=False).head()" + "ntd_funding_sources[\"reporter_type\"].value_counts()" ] }, { "cell_type": "markdown", "id": "28e56afc-2d63-43a6-871b-b6554035ed7e", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ "#### dim_annual_service_agencies" ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 7, "id": "cf4cc544-785a-4476-bdda-9019e6a5e6de", "metadata": {}, "outputs": [ @@ -522,18 +413,143 @@ } ], "source": [ + "# Has UZA, VRM and VOMS. No 5311 funds\n", "ntd_service_agencies = (tbls.mart_ntd.dim_annual_service_agencies ()\n", " >> filter(_.report_year == \"2023\",\n", - " # _.year == 2022\n", + " _.agency_voms > 30\n", " )\n", " >> collect()\n", " )\n", "ntd_service_agencies.info()" ] }, + { + "cell_type": "markdown", + "id": "80ff21e9-de8b-4dc4-b431-0a57f3919308", + "metadata": { + "tags": [] + }, + "source": [ + "#### dim_annual_ntd_agency_information" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "20505f79-5721-4789-b10a-61bbdbb57b9e", + "metadata": {}, + "outputs": [], + "source": [ + "# has UZA data for operator\n", + "\n", + "#ntd_agency_info = (tbls.mart_ntd.dim_annual_ntd_agency_information()\n", + "# >> filter(_._is_current == True,\n", + "# _.year == 2022\n", + "# )\n", + "# >> collect()\n", + "# )" + ] + }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 3, + "id": "1fac9f3a-3bd9-4c4c-9f83-86002a1e56f8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 2969 entries, 0 to 2968\n", + "Data columns (total 46 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 key 2969 non-null object \n", + " 1 year 2969 non-null int64 \n", + " 2 ntd_id 2969 non-null object \n", + " 3 number_of_state_counties 54 non-null float64 \n", + " 4 tam_tier 2969 non-null object \n", + " 5 personal_vehicles 1151 non-null float64 \n", + " 6 density 1125 non-null float64 \n", + " 7 uza_name 1125 non-null object \n", + " 8 tribal_area_name 138 non-null object \n", + " 9 service_area_sq_miles 1044 non-null float64 \n", + " 10 total_voms 2969 non-null float64 \n", + " 11 city 2944 non-null object \n", + " 12 fta_recipient_id 2242 non-null float64 \n", + " 13 region 2969 non-null float64 \n", + " 14 state_admin_funds_expended 54 non-null float64 \n", + " 15 zip_code_ext 2463 non-null float64 \n", + " 16 zip_code 2944 non-null float64 \n", + " 17 ueid 2575 non-null object \n", + " 18 address_line_2 323 non-null object \n", + " 19 number_of_counties_with_service 54 non-null float64 \n", + " 20 reporter_acronym 1499 non-null object \n", + " 21 original_due_date 2959 non-null float64 \n", + " 22 sq_miles 1124 non-null float64 \n", + " 23 address_line_1 2914 non-null object \n", + " 24 p_o__box 833 non-null object \n", + " 25 fy_end_date 2969 non-null int64 \n", + " 26 reported_by_ntd_id 1775 non-null object \n", + " 27 population 1125 non-null float64 \n", + " 28 reporting_module 2969 non-null object \n", + " 29 service_area_pop 1045 non-null float64 \n", + " 30 subrecipient_type 1770 non-null object \n", + " 31 state 2969 non-null object \n", + " 32 volunteer_drivers 1151 non-null float64 \n", + " 33 primary_uza 0 non-null object \n", + " 34 doing_business_as 584 non-null object \n", + " 35 reporter_type 2969 non-null object \n", + " 36 legacy_ntd_id 2093 non-null object \n", + " 37 voms_do 1747 non-null float64 \n", + " 38 url 2876 non-null object \n", + " 39 reported_by_name 1775 non-null object \n", + " 40 voms_pt 671 non-null float64 \n", + " 41 organization_type 2915 non-null object \n", + " 42 agency_name 2969 non-null object \n", + " 43 _valid_from 2969 non-null datetime64[ns, UTC]\n", + " 44 _valid_to 2969 non-null datetime64[ns, UTC]\n", + " 45 _is_current 2969 non-null bool \n", + "dtypes: bool(1), datetime64[ns, UTC](2), float64(18), int64(2), object(23)\n", + "memory usage: 1.0+ MB\n" + ] + } + ], + "source": [ + "#ntd_agency_info.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "31591169-cdb1-45db-880a-6cdbcc013fb2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "ntd_id\n", + "80285 1\n", + "40225 1\n", + "40223 1\n", + "40222 1\n", + "40221 1\n", + "Name: uza_name, dtype: int64" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ntd_agency_info.groupby(\"ntd_id\")[\"uza_name\"].nunique().sort_values(ascending=False).head()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, "id": "702e1dba-17a5-4364-a5c5-0c04955f9fab", "metadata": {}, "outputs": [ @@ -555,7 +571,7 @@ "Name: organization_type, dtype: int64" ] }, - "execution_count": 65, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -566,7 +582,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 9, "id": "2901be3a-5c7f-4eaa-a45c-509d32bef198", "metadata": {}, "outputs": [ @@ -582,7 +598,7 @@ "Name: primary_uza_name, dtype: int64" ] }, - "execution_count": 63, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -594,14 +610,16 @@ { "cell_type": "markdown", "id": "623ce1ce-bb7a-450a-b139-6f2cf6ac375b", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ "#### dim_annual_service_mode_time_periods" ] }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 10, "id": "ae899649-d9fa-4652-884b-f8912a768ff1", "metadata": {}, "outputs": [ @@ -690,18 +708,18 @@ } ], "source": [ - "ntd_service_mode = (tbls.mart_ntd.dim_annual_service_mode_time_periods()\n", - " >> filter(_.report_year == \"2023\",\n", - " # _.year == 2022\n", - " )\n", - " >> collect()\n", - " )\n", - "ntd_service_mode.info()" + "#ntd_service_mode = (tbls.mart_ntd.dim_annual_service_mode_time_periods()\n", + "# >> filter(_.report_year == \"2023\",\n", + "# # _.year == 2022\n", + "# )\n", + "# >> collect()\n", + "# )\n", + "#ntd_service_mode.info()" ] }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 11, "id": "9373a629-6506-4dcd-af77-c068947bd017", "metadata": {}, "outputs": [ @@ -717,7 +735,7 @@ "Name: primary_uza_code, dtype: int64" ] }, - "execution_count": 50, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -729,14 +747,16 @@ { "cell_type": "markdown", "id": "424fa017-17db-4bf9-8456-db7036fb656e", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ "#### dim_monthly_ridership_with_adjustments" ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 12, "id": "b76deddb-d6f6-4305-8a92-66c2092b88ed", "metadata": {}, "outputs": [ @@ -777,18 +797,18 @@ } ], "source": [ - "ntd_monthly_ridership = (tbls.mart_ntd.dim_monthly_ridership_with_adjustments ()\n", - " >> filter(_.period_year == \"2023\",\n", - " # _.year == 2022\n", - " )\n", - " >> collect()\n", - " )\n", - "ntd_monthly_ridership.info()" + "#ntd_monthly_ridership = (tbls.mart_ntd.dim_monthly_ridership_with_adjustments ()\n", + "# >> filter(_.period_year == \"2023\",\n", + "# # _.year == 2022\n", + "# )\n", + "# >> collect()\n", + "# )\n", + "#ntd_monthly_ridership.info()" ] }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 13, "id": "31f8ce6d-a7a9-4fb9-b33f-605cd38ee183", "metadata": {}, "outputs": [ @@ -804,13 +824,13 @@ "Name: primary_uza_code, dtype: int64" ] }, - "execution_count": 55, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "ntd_monthly_ridership.groupby(\"ntd_id\")[\"primary_uza_code\"].nunique().sort_values(ascending=False).head()" + "#ntd_monthly_ridership.groupby(\"ntd_id\")[\"primary_uza_code\"].nunique().sort_values(ascending=False).head()" ] }, { @@ -831,7 +851,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 14, "id": "b9f386ff-59fa-4eec-add5-b8c16a820cb3", "metadata": {}, "outputs": [ @@ -885,7 +905,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 15, "id": "d34f841d-110d-4294-886f-61f9e836836f", "metadata": {}, "outputs": [ @@ -1141,7 +1161,7 @@ "4 True 2023-05-25 00:00:00+00:00 2098-12-31 23:59:59.999999+00:00 " ] }, - "execution_count": 62, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } From 6a63cf5cf4bf7ee19a39a4c6ec38c26bcf22bb66 Mon Sep 17 00:00:00 2001 From: csuyat-dot Date: Mon, 25 Nov 2024 18:44:02 +0000 Subject: [PATCH 11/13] reading in UZA data from feature server --- ntd/proposed_changes_25-26.ipynb | 543 +++++++++++++++---------------- 1 file changed, 264 insertions(+), 279 deletions(-) diff --git a/ntd/proposed_changes_25-26.ipynb b/ntd/proposed_changes_25-26.ipynb index e040d285e..2b60e7807 100644 --- a/ntd/proposed_changes_25-26.ipynb +++ b/ntd/proposed_changes_25-26.ipynb @@ -32,7 +32,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "b5679a16-211e-400a-bf08-4c377b4b27ed", "metadata": {}, "outputs": [], @@ -40,6 +40,7 @@ "import pandas as pd\n", "\n", "from calitp_data_analysis.tables import tbls\n", + "import geopandas as gpd\n", "from siuba import _, collect, count, filter, show_query\n", "\n", "pd.set_option(\"display.max_columns\", None)\n", @@ -423,130 +424,6 @@ "ntd_service_agencies.info()" ] }, - { - "cell_type": "markdown", - "id": "80ff21e9-de8b-4dc4-b431-0a57f3919308", - "metadata": { - "tags": [] - }, - "source": [ - "#### dim_annual_ntd_agency_information" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "20505f79-5721-4789-b10a-61bbdbb57b9e", - "metadata": {}, - "outputs": [], - "source": [ - "# has UZA data for operator\n", - "\n", - "#ntd_agency_info = (tbls.mart_ntd.dim_annual_ntd_agency_information()\n", - "# >> filter(_._is_current == True,\n", - "# _.year == 2022\n", - "# )\n", - "# >> collect()\n", - "# )" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "1fac9f3a-3bd9-4c4c-9f83-86002a1e56f8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "RangeIndex: 2969 entries, 0 to 2968\n", - "Data columns (total 46 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 key 2969 non-null object \n", - " 1 year 2969 non-null int64 \n", - " 2 ntd_id 2969 non-null object \n", - " 3 number_of_state_counties 54 non-null float64 \n", - " 4 tam_tier 2969 non-null object \n", - " 5 personal_vehicles 1151 non-null float64 \n", - " 6 density 1125 non-null float64 \n", - " 7 uza_name 1125 non-null object \n", - " 8 tribal_area_name 138 non-null object \n", - " 9 service_area_sq_miles 1044 non-null float64 \n", - " 10 total_voms 2969 non-null float64 \n", - " 11 city 2944 non-null object \n", - " 12 fta_recipient_id 2242 non-null float64 \n", - " 13 region 2969 non-null float64 \n", - " 14 state_admin_funds_expended 54 non-null float64 \n", - " 15 zip_code_ext 2463 non-null float64 \n", - " 16 zip_code 2944 non-null float64 \n", - " 17 ueid 2575 non-null object \n", - " 18 address_line_2 323 non-null object \n", - " 19 number_of_counties_with_service 54 non-null float64 \n", - " 20 reporter_acronym 1499 non-null object \n", - " 21 original_due_date 2959 non-null float64 \n", - " 22 sq_miles 1124 non-null float64 \n", - " 23 address_line_1 2914 non-null object \n", - " 24 p_o__box 833 non-null object \n", - " 25 fy_end_date 2969 non-null int64 \n", - " 26 reported_by_ntd_id 1775 non-null object \n", - " 27 population 1125 non-null float64 \n", - " 28 reporting_module 2969 non-null object \n", - " 29 service_area_pop 1045 non-null float64 \n", - " 30 subrecipient_type 1770 non-null object \n", - " 31 state 2969 non-null object \n", - " 32 volunteer_drivers 1151 non-null float64 \n", - " 33 primary_uza 0 non-null object \n", - " 34 doing_business_as 584 non-null object \n", - " 35 reporter_type 2969 non-null object \n", - " 36 legacy_ntd_id 2093 non-null object \n", - " 37 voms_do 1747 non-null float64 \n", - " 38 url 2876 non-null object \n", - " 39 reported_by_name 1775 non-null object \n", - " 40 voms_pt 671 non-null float64 \n", - " 41 organization_type 2915 non-null object \n", - " 42 agency_name 2969 non-null object \n", - " 43 _valid_from 2969 non-null datetime64[ns, UTC]\n", - " 44 _valid_to 2969 non-null datetime64[ns, UTC]\n", - " 45 _is_current 2969 non-null bool \n", - "dtypes: bool(1), datetime64[ns, UTC](2), float64(18), int64(2), object(23)\n", - "memory usage: 1.0+ MB\n" - ] - } - ], - "source": [ - "#ntd_agency_info.info()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "31591169-cdb1-45db-880a-6cdbcc013fb2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ntd_id\n", - "80285 1\n", - "40225 1\n", - "40223 1\n", - "40222 1\n", - "40221 1\n", - "Name: uza_name, dtype: int64" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ntd_agency_info.groupby(\"ntd_id\")[\"uza_name\"].nunique().sort_values(ascending=False).head()" - ] - }, { "cell_type": "code", "execution_count": 8, @@ -607,6 +484,53 @@ "ntd_service_agencies.groupby(\"ntd_id\")[\"primary_uza_name\"].nunique().sort_values(ascending=False).head()" ] }, + { + "cell_type": "markdown", + "id": "80ff21e9-de8b-4dc4-b431-0a57f3919308", + "metadata": { + "tags": [] + }, + "source": [ + "#### dim_annual_ntd_agency_information" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "20505f79-5721-4789-b10a-61bbdbb57b9e", + "metadata": {}, + "outputs": [], + "source": [ + "# has UZA data for operator\n", + "\n", + "#ntd_agency_info = (tbls.mart_ntd.dim_annual_ntd_agency_information()\n", + "# >> filter(_._is_current == True,\n", + "# _.year == 2022\n", + "# )\n", + "# >> collect()\n", + "# )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1fac9f3a-3bd9-4c4c-9f83-86002a1e56f8", + "metadata": {}, + "outputs": [], + "source": [ + "#ntd_agency_info.info()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31591169-cdb1-45db-880a-6cdbcc013fb2", + "metadata": {}, + "outputs": [], + "source": [ + "#ntd_agency_info.groupby(\"ntd_id\")[\"uza_name\"].nunique().sort_values(ascending=False).head()" + ] + }, { "cell_type": "markdown", "id": "623ce1ce-bb7a-450a-b139-6f2cf6ac375b", @@ -619,94 +543,10 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "ae899649-d9fa-4652-884b-f8912a768ff1", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "RangeIndex: 9114 entries, 0 to 9113\n", - "Data columns (total 70 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 key 9114 non-null object \n", - " 1 report_year 9114 non-null object \n", - " 2 type_of_service 9114 non-null object \n", - " 3 ntd_id 9114 non-null object \n", - " 4 agency 9114 non-null object \n", - " 5 mode 9114 non-null object \n", - " 6 mode_name 9114 non-null object \n", - " 7 time_period 9114 non-null object \n", - " 8 time_service_begins 4821 non-null object \n", - " 9 time_service_ends 4808 non-null object \n", - " 10 reporter_type 9114 non-null object \n", - " 11 city 9093 non-null object \n", - " 12 state 9114 non-null object \n", - " 13 actual_vehicles_passenger_car_deadhead_hours 9114 non-null float64\n", - " 14 actual_vehicles_passenger_car_hours 9114 non-null float64\n", - " 15 actual_vehicles_passenger_car_miles 9114 non-null float64\n", - " 16 actual_vehicles_passenger_car_revenue_hours 9114 non-null float64\n", - " 17 actual_vehicles_passenger_car_revenue_miles 9114 non-null float64\n", - " 18 actual_vehicles_passenger_deadhead_miles 9114 non-null float64\n", - " 19 ada_upt 0 non-null object \n", - " 20 agency_voms 9114 non-null float64\n", - " 21 aptl_questionable 833 non-null object \n", - " 22 average_passenger_trip_length_aptl_ 3133 non-null float64\n", - " 23 average_speed 3133 non-null float64\n", - " 24 average_speed_questionable 336 non-null object \n", - " 25 brt_non_statutory_mixed_traffic 0 non-null object \n", - " 26 charter_service_hours 0 non-null object \n", - " 27 days_of_service_operated 1908 non-null float64\n", - " 28 days_not_operated_strikes 1850 non-null float64\n", - " 29 days_not_operated_emergencies 1850 non-null float64\n", - " 30 deadhead_hours_questionable 77 non-null object \n", - " 31 deadhead_miles_questionable 98 non-null object \n", - " 32 directional_route_miles 9114 non-null float64\n", - " 33 directional_route_miles_questionable 42 non-null object \n", - " 34 mixed_traffic_right_of_way 0 non-null object \n", - " 35 mode_voms 0 non-null object \n", - " 36 mode_voms_questionable 56 non-null object \n", - " 37 organization_type 9114 non-null object \n", - " 38 passenger_miles 9114 non-null float64\n", - " 39 passenger_miles_questionable 784 non-null object \n", - " 40 passengers_per_hour 9114 non-null float64\n", - " 41 passengers_per_hour_questionable 476 non-null object \n", - " 42 primary_uza_area_sq_miles 9114 non-null float64\n", - " 43 primary_uza_code 9114 non-null float64\n", - " 44 primary_uza_name 9114 non-null object \n", - " 45 primary_uza_population 9114 non-null float64\n", - " 46 scheduled_revenue_miles_questionable 7 non-null object \n", - " 47 scheduled_vehicles_passenger_car_revenue_miles 9114 non-null float64\n", - " 48 school_bus_hours 0 non-null object \n", - " 49 service_area_population 9114 non-null float64\n", - " 50 service_area_sq_miles 9114 non-null float64\n", - " 51 sponsored_service_upt 0 non-null object \n", - " 52 train_deadhead_hours 770 non-null float64\n", - " 53 train_deadhead_miles 770 non-null float64\n", - " 54 train_hours 9114 non-null float64\n", - " 55 train_hours_questionable 0 non-null object \n", - " 56 trains_in_operation 9114 non-null float64\n", - " 57 trains_in_operation_questionable 0 non-null object \n", - " 58 train_miles 9114 non-null float64\n", - " 59 train_miles_questionable 0 non-null object \n", - " 60 train_revenue_hours 9114 non-null float64\n", - " 61 train_revenue_hours_questionable 0 non-null object \n", - " 62 train_revenue_miles 9114 non-null float64\n", - " 63 train_revenue_miles_questionable 0 non-null object \n", - " 64 unlinked_passenger_trips_upt 9114 non-null float64\n", - " 65 unlinked_passenger_trips_questionable 385 non-null object \n", - " 66 vehicle_hours_questionable 84 non-null object \n", - " 67 vehicle_miles_questionable 98 non-null object \n", - " 68 vehicle_revenue_hours_questionable 252 non-null object \n", - " 69 vehicle_revenue_miles_questionable 301 non-null object \n", - "dtypes: float64(29), object(41)\n", - "memory usage: 4.9+ MB\n" - ] - } - ], + "outputs": [], "source": [ "#ntd_service_mode = (tbls.mart_ntd.dim_annual_service_mode_time_periods()\n", "# >> filter(_.report_year == \"2023\",\n", @@ -719,29 +559,12 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "9373a629-6506-4dcd-af77-c068947bd017", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ntd_id\n", - "1 1\n", - "60032 1\n", - "60024 1\n", - "60022 1\n", - "60019 1\n", - "Name: primary_uza_code, dtype: int64" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "ntd_service_mode.groupby(\"ntd_id\")[\"primary_uza_code\"].nunique().sort_values(ascending=True).head()" + "#ntd_service_mode.groupby(\"ntd_id\")[\"primary_uza_code\"].nunique().sort_values(ascending=True).head()" ] }, { @@ -756,46 +579,10 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "b76deddb-d6f6-4305-8a92-66c2092b88ed", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "RangeIndex: 27600 entries, 0 to 27599\n", - "Data columns (total 22 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 key 27600 non-null object \n", - " 1 ntd_id 27600 non-null object \n", - " 2 legacy_ntd_id 26568 non-null object \n", - " 3 agency 27600 non-null object \n", - " 4 reporter_type 27600 non-null object \n", - " 5 period_year_month 27600 non-null object \n", - " 6 period_year 27600 non-null object \n", - " 7 period_month 27600 non-null object \n", - " 8 primary_uza_name 27528 non-null object \n", - " 9 primary_uza_code 27528 non-null object \n", - " 10 _3_mode 27600 non-null object \n", - " 11 mode 27600 non-null object \n", - " 12 mode_name 27576 non-null object \n", - " 13 service_type 27600 non-null object \n", - " 14 mode_type_of_service_status 27600 non-null object \n", - " 15 tos 27600 non-null object \n", - " 16 upt 15650 non-null float64 \n", - " 17 vrm 15614 non-null float64 \n", - " 18 vrh 15556 non-null float64 \n", - " 19 voms 15556 non-null float64 \n", - " 20 _dt 27600 non-null object \n", - " 21 execution_ts 27600 non-null datetime64[ns, UTC]\n", - "dtypes: datetime64[ns, UTC](1), float64(4), object(17)\n", - "memory usage: 4.6+ MB\n" - ] - } - ], + "outputs": [], "source": [ "#ntd_monthly_ridership = (tbls.mart_ntd.dim_monthly_ridership_with_adjustments ()\n", "# >> filter(_.period_year == \"2023\",\n", @@ -808,29 +595,227 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "31f8ce6d-a7a9-4fb9-b33f-605cd38ee183", "metadata": {}, + "outputs": [], + "source": [ + "#ntd_monthly_ridership.groupby(\"ntd_id\")[\"primary_uza_code\"].nunique().sort_values(ascending=False).head()" + ] + }, + { + "cell_type": "markdown", + "id": "ac729467-8a82-4b52-836f-453eaa140355", + "metadata": {}, + "source": [ + "## get UZA geojson data from rest server" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8c636d17-5819-45e1-94ec-9a4e20549441", + "metadata": {}, + "outputs": [], + "source": [ + "rest_server_link = \"https://services.arcgis.com/xOi1kZaI0eWDREZv/ArcGIS/rest/services/FTA_Administrative_Boundaries/FeatureServer/5/query?where=1%3D1&objectIds=&geometry=&geometryType=esriGeometryEnvelope&inSR=&spatialRel=esriSpatialRelIntersects&resultType=none&distance=0.0&units=esriSRUnit_Meter&relationParam=&returnGeodetic=false&outFields=*&returnGeometry=true&returnCentroid=false&returnEnvelope=false&featureEncoding=esriDefault&multipatchOption=xyFootprint&maxAllowableOffset=&geometryPrecision=&outSR=&defaultSR=&datumTransformation=&applyVCSProjection=false&returnIdsOnly=false&returnUniqueIdsOnly=false&returnCountOnly=false&returnExtentOnly=false&returnQueryGeometry=false&returnDistinctValues=false&cacheHint=false&collation=&orderByFields=&groupByFieldsForStatistics=&outStatistics=&having=&resultOffset=&resultRecordCount=&returnZ=false&returnM=false&returnTrueCurves=false&returnExceededLimitFeatures=true&quantizationParameters=&sqlFormat=none&f=pgeojson&token=\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "bc95b052-812d-49aa-8d4f-bf50e5f5f3b5", + "metadata": {}, + "outputs": [], + "source": [ + "uza_data = gpd.read_file(rest_server_link)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5ba7b042-a925-4c86-ae81-ca85c7226a97", + "metadata": {}, + "outputs": [], + "source": [ + "display(\n", + " uza_data.info(),\n", + " uza_data.crs\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "677a3de4-307d-4522-8f6e-c47d45cb2feb", + "metadata": { + "tags": [] + }, + "source": [ + "#### get CA UZAs" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "10504da7-54db-48f9-9128-cb07d96cd0ef", + "metadata": {}, + "outputs": [], + "source": [ + "ca_uza = uza_data[uza_data['NAMELSAD'].str.contains(\", CA\")].reset_index(drop=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "317ccaca-1b4b-4f48-8b2f-0ce66100ab2d", + "metadata": {}, + "outputs": [], + "source": [ + "display(\n", + " ca_uza.info(),\n", + " ca_uza.crs\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "674a7714-4c74-4f94-b777-970396b49e59", + "metadata": {}, "outputs": [ { "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OBJECTIDUACENAMELSADPOPAREALANDSQMIAREAWATERSQMIPOPDENShape__AreaShape__Lengthgeometry
0266279417Santa Maria, CA Urban Area14360927.060.085306.841.047746e+089.341327e+04MULTIPOLYGON (((-120.43534 34.98668, -120.4352...
1266338215Hemet, CA Urban Area17319437.060.124673.611.396604e+081.241736e+05MULTIPOLYGON (((-116.86277 33.74268, -116.8627...
2266451445Los Angeles--Long Beach--Anaheim, CA Urban Area122373761636.8318.647476.286.251949e+091.263335e+06MULTIPOLYGON (((-117.99338 34.16800, -117.9929...
3266578661San Diego, CA Urban Area3070300674.7214.614550.452.540300e+099.807105e+05MULTIPOLYGON (((-117.03839 32.80671, -117.0382...
4266675340Riverside--San Bernardino, CA Urban Area2276703608.562.583741.102.308176e+091.118771e+06MULTIPOLYGON (((-117.15890 33.92832, -117.1584...
\n", + "
" + ], "text/plain": [ - "ntd_id\n", - "00001 1\n", - "60012 1\n", - "50522 1\n", - "55311 1\n", - "55312 1\n", - "Name: primary_uza_code, dtype: int64" + " OBJECTID UACE NAMELSAD POP \\\n", + "0 2662 79417 Santa Maria, CA Urban Area 143609 \n", + "1 2663 38215 Hemet, CA Urban Area 173194 \n", + "2 2664 51445 Los Angeles--Long Beach--Anaheim, CA Urban Area 12237376 \n", + "3 2665 78661 San Diego, CA Urban Area 3070300 \n", + "4 2666 75340 Riverside--San Bernardino, CA Urban Area 2276703 \n", + "\n", + " AREALANDSQMI AREAWATERSQMI POPDEN Shape__Area Shape__Length \\\n", + "0 27.06 0.08 5306.84 1.047746e+08 9.341327e+04 \n", + "1 37.06 0.12 4673.61 1.396604e+08 1.241736e+05 \n", + "2 1636.83 18.64 7476.28 6.251949e+09 1.263335e+06 \n", + "3 674.72 14.61 4550.45 2.540300e+09 9.807105e+05 \n", + "4 608.56 2.58 3741.10 2.308176e+09 1.118771e+06 \n", + "\n", + " geometry \n", + "0 MULTIPOLYGON (((-120.43534 34.98668, -120.4352... \n", + "1 MULTIPOLYGON (((-116.86277 33.74268, -116.8627... \n", + "2 MULTIPOLYGON (((-117.99338 34.16800, -117.9929... \n", + "3 MULTIPOLYGON (((-117.03839 32.80671, -117.0382... \n", + "4 MULTIPOLYGON (((-117.15890 33.92832, -117.1584... " ] }, - "execution_count": 13, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "#ntd_monthly_ridership.groupby(\"ntd_id\")[\"primary_uza_code\"].nunique().sort_values(ascending=False).head()" + "ca_uza.head()" ] }, { From a13ebf6ff37c3d86c41e6618a06affa7b9756dff Mon Sep 17 00:00:00 2001 From: csuyat-dot Date: Mon, 25 Nov 2024 23:59:47 +0000 Subject: [PATCH 12/13] merged 2 tables to find agencies that meet section G criteria. cleaned up notebook cells and formatting --- ntd/proposed_changes_25-26.ipynb | 1268 ++++++++++++++++++++++++------ 1 file changed, 1014 insertions(+), 254 deletions(-) diff --git a/ntd/proposed_changes_25-26.ipynb b/ntd/proposed_changes_25-26.ipynb index 2b60e7807..742e19f11 100644 --- a/ntd/proposed_changes_25-26.ipynb +++ b/ntd/proposed_changes_25-26.ipynb @@ -51,7 +51,6 @@ "cell_type": "markdown", "id": "afdfd59c-d9c1-4d48-b6e4-55e9af08be29", "metadata": { - "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ @@ -97,7 +96,10 @@ { "cell_type": "markdown", "id": "70b0e807-80d6-49d7-bad3-eb2df8b7663b", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, "source": [ "### Notes from Proposed Changes document\n", "\n", @@ -155,14 +157,19 @@ "Sections G concerns changing rural operators with full reporter responsibilities to be reduced reporters. FTA aims to decrease the reporting burden, but this change affects an estimated 10-15 operators. going from full reporter to reduced reporters would mean the operator does not need to report data related to passenger miles or monthly service or safety stats\n", "\n", "\n", - "\n", - "---\n", - "\n", "Section H proposes a change to the NTD reporting platform to include a field that identify Voluntary reporters. This slightly increases the reporting burden for all NTD reporters. Sections E and F may conditionally increase the reporting burden for some operators, if the operator experiences cyber security or safety events. Finally, Section D slightly incresses the reporting burden by proposing new categories in to A-20 form.\n", "\n", "\n" ] }, + { + "cell_type": "markdown", + "id": "fb1166dc-1a56-40dd-98d5-708484c9b009", + "metadata": {}, + "source": [ + "---" + ] + }, { "cell_type": "markdown", "id": "97f07bb1-4fd2-4ad0-bb65-2419928d5326", @@ -183,7 +190,8 @@ "id": "d96201a0-75f0-4d6e-b9fb-26d6849e428d", "metadata": {}, "source": [ - "### Understanding the difference between urban Full Reporters and urban Reduced Reporters\n", + "### Understanding the difference between urban Full Reporters and urban Reduced Reporters\n", + "\n", "Per NTD reporting manual\n", ">Full Reporters must provide the Annual Report, as well as Monthly Ridership (MR) and monthly Safety and Security reports. All other reporter types file their reports on an annual basis.\n", "\n", @@ -224,18 +232,46 @@ "1. S&S-60 Safety Data Form\n", "2. Reduced Reporting Form (Form RR-20)\n", "3. Transit Asset Management Performance Measure Targets (Form A-90)\n", - "---\n", - "So if an operator, under this proposed change, goes from Full to Reduced reporter, we can expect to miss data from 11 forms. However, those unique forms dont look familar in the ntd validation report pipeline so im unsure what kind of impact the data science branch would see.\n", + "---\n" + ] + }, + { + "cell_type": "markdown", + "id": "15a76a53-1c43-4feb-994e-978bf7223578", + "metadata": {}, + "source": [ + "### FTAs proposed solution for these rural operator, full reporters\n", "\n", - "Will need to see if theres equivilant forms between Full and Reduced reporters that report similar data but in different forms." + ">FTA proposes a waiver process in which reporters that predominantly serve rural areas may request an exemption from filing as a Full Reporter. Effectively, this would mean that operators receiving the waiver would report as Reduced Reporters instead.\n", + ">\n", + ">FTA proposes to use data from the most recent year's validated and accepted data to evaluate eligibility for this waiver, and FTA would grant the waiver if each of the above criteria are met. Based on current available data, **FTA estimates that approximately 10-15 agencies would be eligible for this waiver.**\n", + ">\n", + ">FTA would automatically identify agencies that qualify for this waiver ... All eligible reporters then would be presented with the option to request the waiver annually during the Report Year Kick-Off (RYKO) process\n", + "\n" ] }, { "cell_type": "markdown", - "id": "8cf55bc0-8bfc-451f-a663-5dbe44a14c81", + "id": "9cac279c-0075-4c2f-83e8-7acf9e289fd4", "metadata": {}, "source": [ - "### Query the warehouse to get find all the reporters that meet Sec G criteria\n", + "## Comments for Area 2\n", + "\n", + "If an operator, under this proposed change, goes from Full to Reduced reporter, we can expect to miss data from 11 forms. However, those unique forms dont look familar in the ntd validation report pipeline so im unsure what kind of impact the data science branch would see.\n", + "\n", + "Will need to see if theres equivilant forms between Full and Reduced reporters that report similar data but in different forms.\n", + "\n", + "FTA's method for presenting elibible reporters of the waiver process seem a little unclear. I assume FTA will notify only the reporters that meet all the criteria in section G, and NOT all reporters. " + ] + }, + { + "cell_type": "markdown", + "id": "8cf55bc0-8bfc-451f-a663-5dbe44a14c81", + "metadata": { + "tags": [] + }, + "source": [ + "### Query the warehouse to get find all the reporters that meet Sec G criteria\n", "\n", "Sec G criteria:\n", "- Receives funding under 49 U.S.C. `5311`,\n", @@ -252,7 +288,7 @@ "tags": [] }, "source": [ - "### Any operators that operate in more than 1 UZA?" + "#### Identify Agencies that meet Section G criteria" ] }, { @@ -262,12 +298,14 @@ "tags": [] }, "source": [ - "#### dim_annual_funding_sources" + "##### dim_annual_funding_sources\n", + "- for 5311 agencies (rural operators)\n", + "- Also has UZA and VOMS" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 62, "id": "fc8f9407-af22-4805-bb0e-571cb7acd495", "metadata": {}, "outputs": [ @@ -277,39 +315,22 @@ "text": [ "\n", "RangeIndex: 134 entries, 0 to 133\n", - "Data columns (total 28 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 funding_source 134 non-null object \n", - " 1 agency 134 non-null object \n", - " 2 agency_voms 134 non-null float64\n", - " 3 city 134 non-null object \n", - " 4 fuel_tax 0 non-null object \n", - " 5 fta_capital_program_5309 134 non-null float64\n", - " 6 fta_rural_progam_5311 134 non-null float64\n", - " 7 fta_urbanized_area_formula 134 non-null float64\n", - " 8 general_funds 0 non-null object \n", - " 9 income_tax 0 non-null object \n", - " 10 ntd_id 134 non-null object \n", - " 11 organization_type 134 non-null object \n", - " 12 other_dot_funds 134 non-null float64\n", - " 13 other_federal_funds 134 non-null float64\n", - " 14 other_fta_funds 134 non-null float64\n", - " 15 other_funds 0 non-null object \n", - " 16 other_taxes 0 non-null object \n", - " 17 primary_uza_population 134 non-null float64\n", - " 18 property_tax 0 non-null object \n", - " 19 reduced_reporter_funds 0 non-null object \n", - " 20 report_year 134 non-null object \n", - " 21 reporter_type 134 non-null object \n", - " 22 sales_tax 0 non-null object \n", - " 23 state 134 non-null object \n", - " 24 tolls 0 non-null object \n", - " 25 transportation_funds 0 non-null object \n", - " 26 primary_uza_code 134 non-null object \n", - " 27 primary_uza_name 134 non-null object \n", - "dtypes: float64(8), object(20)\n", - "memory usage: 29.4+ KB\n" + "Data columns (total 11 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 funding_source 134 non-null object \n", + " 1 agency 134 non-null object \n", + " 2 agency_voms 134 non-null float64\n", + " 3 fta_rural_progam_5311 134 non-null float64\n", + " 4 ntd_id 134 non-null object \n", + " 5 organization_type 134 non-null object \n", + " 6 primary_uza_population 134 non-null float64\n", + " 7 report_year 134 non-null object \n", + " 8 reporter_type 134 non-null object \n", + " 9 primary_uza_code 134 non-null object \n", + " 10 primary_uza_name 134 non-null object \n", + "dtypes: float64(3), object(8)\n", + "memory usage: 11.6+ KB\n" ] } ], @@ -318,35 +339,30 @@ "ntd_funding_sources = (tbls.mart_ntd.dim_annual_funding_sources()\n", " >> filter(_.report_year == \"2023\",\n", " _.fta_rural_progam_5311 > 0,\n", - " _.reporter_type == \"Full Reporter\"\n", + " _.reporter_type == \"Full Reporter\",\n", + " _.primary_uza_code is not None\n", " )\n", " >> collect()\n", " )\n", + "\n", + "keep_cols_0=[\n", + " \"funding_source\",\n", + " \"agency\",\n", + " \"agency_voms\",\n", + " \"fta_rural_progam_5311\",\n", + " \"ntd_id\",\n", + " \"organization_type\",\n", + " \"primary_uza_population\",\n", + " \"report_year\",\n", + " \"reporter_type\",\n", + " \"primary_uza_code\",\n", + " \"primary_uza_name\"\n", + "]\n", + "\n", + "ntd_funding_sources = ntd_funding_sources[keep_cols_1]\n", "ntd_funding_sources.info()" ] }, - { - "cell_type": "code", - "execution_count": 20, - "id": "f18b8c63-6052-4849-b1be-721a5cf54ecf", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Full Reporter 134\n", - "Name: reporter_type, dtype: int64" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ntd_funding_sources[\"reporter_type\"].value_counts()" - ] - }, { "cell_type": "markdown", "id": "28e56afc-2d63-43a6-871b-b6554035ed7e", @@ -354,12 +370,13 @@ "tags": [] }, "source": [ - "#### dim_annual_service_agencies" + "##### dim_annual_service_agencies\n", + "- for UZA, VOMS and VRM" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 63, "id": "cf4cc544-785a-4476-bdda-9019e6a5e6de", "metadata": {}, "outputs": [ @@ -368,239 +385,951 @@ "output_type": "stream", "text": [ "\n", - "RangeIndex: 2201 entries, 0 to 2200\n", - "Data columns (total 36 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 key 2201 non-null object \n", - " 1 report_year 2201 non-null object \n", - " 2 ntd_id 2201 non-null object \n", - " 3 agency 2201 non-null object \n", - " 4 reporter_type 2201 non-null object \n", - " 5 organization_type 2201 non-null object \n", - " 6 city 2173 non-null object \n", - " 7 state 2201 non-null object \n", - " 8 agency_voms 2201 non-null float64\n", - " 9 primary_uza_code 1089 non-null float64\n", - " 10 primary_uza_name 1089 non-null object \n", - " 11 primary_uza_area_sq_miles 2201 non-null object \n", - " 12 primary_uza_population 1089 non-null float64\n", - " 13 service_area_sq_miles 1059 non-null float64\n", - " 14 service_area_population 1060 non-null float64\n", - " 15 actual_vehicles_passenger_car_deadhead_hours 2201 non-null float64\n", - " 16 actual_vehicles_passenger_car_hours 2201 non-null float64\n", - " 17 actual_vehicles_passenger_car_miles 2201 non-null float64\n", - " 18 actual_vehicles_passenger_car_revenue_hours 2201 non-null float64\n", - " 19 actual_vehicles_passenger_car_revenue_miles 2201 non-null float64\n", - " 20 actual_vehicles_passenger_deadhead_miles 2201 non-null float64\n", - " 21 scheduled_vehicles_passenger_car_revenue_miles 2201 non-null float64\n", - " 22 charter_service_hours 380 non-null float64\n", - " 23 school_bus_hours 357 non-null float64\n", - " 24 trains_in_operation 2201 non-null float64\n", - " 25 directional_route_miles 2201 non-null float64\n", - " 26 passenger_miles 2201 non-null float64\n", - " 27 train_miles 2201 non-null float64\n", - " 28 train_revenue_miles 2201 non-null float64\n", - " 29 train_deadhead_miles 79 non-null float64\n", - " 30 train_hours 2201 non-null float64\n", - " 31 train_revenue_hours 2201 non-null float64\n", - " 32 train_deadhead_hours 79 non-null float64\n", - " 33 ada_upt 382 non-null float64\n", - " 34 sponsored_service_upt 1741 non-null float64\n", - " 35 unlinked_passenger_trips_upt 2201 non-null float64\n", - "dtypes: float64(26), object(10)\n", - "memory usage: 619.2+ KB\n" + "RangeIndex: 65 entries, 0 to 64\n", + "Data columns (total 13 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 key 65 non-null object \n", + " 1 report_year 65 non-null object \n", + " 2 ntd_id 65 non-null object \n", + " 3 agency 65 non-null object \n", + " 4 reporter_type 65 non-null object \n", + " 5 organization_type 65 non-null object \n", + " 6 city 65 non-null object \n", + " 7 state 65 non-null object \n", + " 8 agency_voms 65 non-null float64\n", + " 9 primary_uza_code 63 non-null float64\n", + " 10 primary_uza_name 63 non-null object \n", + " 11 primary_uza_population 63 non-null float64\n", + " 12 actual_vehicles_passenger_car_revenue_miles 65 non-null float64\n", + "dtypes: float64(4), object(9)\n", + "memory usage: 6.7+ KB\n" ] } ], "source": [ - "# Has UZA, VRM and VOMS. No 5311 funds\n", + "# Has UZA, VRM and VOMS. \n", + "\n", "ntd_service_agencies = (tbls.mart_ntd.dim_annual_service_agencies ()\n", " >> filter(_.report_year == \"2023\",\n", - " _.agency_voms > 30\n", + " _.agency_voms > 30,\n", + " _.state == \"CA\",\n", + " _.primary_uza_code is not None\n", " )\n", " >> collect()\n", " )\n", + "\n", + "keep_col_1 =[\n", + " \"key\",\n", + " \"report_year\",\n", + " \"ntd_id\",\n", + " \"agency\",\n", + " \"reporter_type\",\n", + " \"organization_type\",\n", + " \"city\",\n", + " \"state\",\n", + " \"agency_voms\",\n", + " \"primary_uza_code\",\n", + " \"primary_uza_name\",\n", + " \"primary_uza_population\",\n", + " \"actual_vehicles_passenger_car_revenue_miles\"\n", + "]\n", + "\n", + "ntd_service_agencies = ntd_service_agencies[keep_col_1]\n", + "\n", "ntd_service_agencies.info()" ] }, - { - "cell_type": "code", - "execution_count": 8, - "id": "702e1dba-17a5-4364-a5c5-0c04955f9fab", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "City, County or Local Government Unit or Department of Transportation 1103\n", - "Independent Public Agency or Authority of Transit Service 422\n", - "Private-Non-Profit Corporation 358\n", - "Tribe 113\n", - "MPO, COG or Other Planning Agency 63\n", - "Area Agency on Aging 43\n", - "State Government Unit or Department of Transportation 27\n", - "Private-For-Profit Corporation 23\n", - "University 20\n", - "Other Publicly-Owned or Privately Chartered Corporation 15\n", - "Private Provider Reporting on Behalf of a Public Entity 7\n", - "Subsidiary Unit of a Transit Agency, Reporting Separately 7\n", - "Name: organization_type, dtype: int64" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ntd_service_agencies.organization_type.value_counts()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "2901be3a-5c7f-4eaa-a45c-509d32bef198", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ntd_id\n", - "1 1\n", - "44907 1\n", - "80302 1\n", - "80303 1\n", - "85 1\n", - "Name: primary_uza_name, dtype: int64" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ntd_service_agencies.groupby(\"ntd_id\")[\"primary_uza_name\"].nunique().sort_values(ascending=False).head()" - ] - }, { "cell_type": "markdown", - "id": "80ff21e9-de8b-4dc4-b431-0a57f3919308", - "metadata": { - "tags": [] - }, - "source": [ - "#### dim_annual_ntd_agency_information" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "20505f79-5721-4789-b10a-61bbdbb57b9e", + "id": "6680f16e-0074-45a1-a15e-d0c49278b59f", "metadata": {}, - "outputs": [], "source": [ - "# has UZA data for operator\n", - "\n", - "#ntd_agency_info = (tbls.mart_ntd.dim_annual_ntd_agency_information()\n", - "# >> filter(_._is_current == True,\n", - "# _.year == 2022\n", - "# )\n", - "# >> collect()\n", - "# )" + "##### Merge dataframes to get 5311 agencies in CA with >30 VOMS with UZA names" ] }, { "cell_type": "code", - "execution_count": null, - "id": "1fac9f3a-3bd9-4c4c-9f83-86002a1e56f8", + "execution_count": 74, + "id": "da7fcca3-3d8e-43ec-875e-1aefffb27f63", "metadata": {}, "outputs": [], "source": [ - "#ntd_agency_info.info()" + "on_list =[\n", + " \"report_year\",\n", + " \"agency\",\n", + " \"reporter_type\",\n", + " \"organization_type\",\n", + " \"organization_type\",\n", + " \"agency_voms\",\n", + " \"primary_uza_name\",\n", + " \"ntd_id\",\n", + " \"primary_uza_population\"\n", + "]\n", + "merge = ntd_service_agencies.merge(\n", + " ntd_funding_sources, \n", + " how=\"inner\", \n", + " on= on_list, \n", + " indicator=True )" ] }, { "cell_type": "code", - "execution_count": null, - "id": "31591169-cdb1-45db-880a-6cdbcc013fb2", + "execution_count": 75, + "id": "3b5a9740-fecb-4d59-9765-bbbe7f5566fe", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 26 entries, 0 to 25\n", + "Data columns (total 17 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 key 26 non-null object \n", + " 1 report_year 26 non-null object \n", + " 2 ntd_id 26 non-null object \n", + " 3 agency 26 non-null object \n", + " 4 reporter_type 26 non-null object \n", + " 5 organization_type 26 non-null object \n", + " 6 city 26 non-null object \n", + " 7 state 26 non-null object \n", + " 8 agency_voms 26 non-null float64 \n", + " 9 primary_uza_code_x 26 non-null float64 \n", + " 10 primary_uza_name 26 non-null object \n", + " 11 primary_uza_population 26 non-null float64 \n", + " 12 actual_vehicles_passenger_car_revenue_miles 26 non-null float64 \n", + " 13 funding_source 26 non-null object \n", + " 14 fta_rural_progam_5311 26 non-null float64 \n", + " 15 primary_uza_code_y 26 non-null object \n", + " 16 _merge 26 non-null category\n", + "dtypes: category(1), float64(5), object(11)\n", + "memory usage: 3.6+ KB\n" + ] + } + ], "source": [ - "#ntd_agency_info.groupby(\"ntd_id\")[\"uza_name\"].nunique().sort_values(ascending=False).head()" + "merge.info()" ] }, { "cell_type": "markdown", - "id": "623ce1ce-bb7a-450a-b139-6f2cf6ac375b", - "metadata": { - "tags": [] - }, - "source": [ - "#### dim_annual_service_mode_time_periods" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ae899649-d9fa-4652-884b-f8912a768ff1", + "id": "8b683dcd-ad9e-4157-a079-d74c9394a460", "metadata": {}, - "outputs": [], "source": [ - "#ntd_service_mode = (tbls.mart_ntd.dim_annual_service_mode_time_periods()\n", - "# >> filter(_.report_year == \"2023\",\n", - "# # _.year == 2022\n", - "# )\n", - "# >> collect()\n", - "# )\n", - "#ntd_service_mode.info()" + "##### Who are the agencies that match Section G Critera?" ] }, { "cell_type": "code", - "execution_count": null, - "id": "9373a629-6506-4dcd-af77-c068947bd017", + "execution_count": 76, + "id": "702e1dba-17a5-4364-a5c5-0c04955f9fab", "metadata": {}, - "outputs": [], - "source": [ - "#ntd_service_mode.groupby(\"ntd_id\")[\"primary_uza_code\"].nunique().sort_values(ascending=True).head()" - ] - }, - { - "cell_type": "markdown", - "id": "424fa017-17db-4bf9-8456-db7036fb656e", - "metadata": { - "tags": [] - }, + "outputs": [ + { + "data": { + "text/plain": [ + "The Eastern Contra Costa Transit Authority, dba: Tri Delta Transit 1\n", + "Santa Cruz Metropolitan Transit District 1\n", + "San Joaquin Regional Transit District, dba: San Joaquin RTD 1\n", + "Kings County Area Public Transit Agency 1\n", + "San Luis Obispo Regional Transit Authority 1\n", + "Butte County Association of Governments, dba: Butte Regional Transit/B-Line 1\n", + "County of Sonoma , dba: Sonoma County Transit 1\n", + "Napa Valley Transportation Authority 1\n", + "Santa Clara Valley Transportation Authority, dba: Valley Transportation Authority 1\n", + "Livermore / Amador Valley Transit Authority 1\n", + "Antelope Valley Transit Authority 1\n", + "Monterey-Salinas Transit 1\n", + "Transit Joint Powers Authority for Merced County, dba: Merced The Bus 1\n", + "Victor Valley Transit Authority 1\n", + "County of Placer, dba: Placer County Transit/TART 1\n", + "Yolo County Transportation District 1\n", + "North County Transit District 1\n", + "San Diego Metropolitan Transit System 1\n", + "SunLine Transit Agency, dba: SunLine 1\n", + "Stanislaus Regional Transit Authority 1\n", + "Marin County Transit District, dba: Marin Transit 1\n", + "San Mateo County Transit District, dba: SamTrans 1\n", + "Ventura County Transportation Commission 1\n", + "Tulare County Regional Transit Agency 1\n", + "City of Visalia , dba: Visalia Transit 1\n", + "Riverside Transit Agency 1\n", + "Name: agency, dtype: int64" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "#### dim_monthly_ridership_with_adjustments" + "merge[\"agency\"].value_counts()" ] }, { "cell_type": "code", - "execution_count": null, - "id": "b76deddb-d6f6-4305-8a92-66c2092b88ed", + "execution_count": 71, + "id": "7871860f-0ec7-4704-b577-c3279dc7ac53", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
keyreport_yearntd_idagencyreporter_typeorganization_typecitystateagency_vomsprimary_uza_code_xprimary_uza_nameprimary_uza_populationactual_vehicles_passenger_car_revenue_milesfunding_sourcefta_rural_progam_5311primary_uza_code_y_merge
07b92911062e8311df2aaefa803453213202390162The Eastern Contra Costa Transit Authority, db...Full ReporterIndependent Public Agency or Authority of Tran...AntiochCA98.02683.0Antioch, CA326205.03200288.0federal172914.02683.0both
1231d30a033adffad7c05ad22cdffc83a202390006Santa Cruz Metropolitan Transit DistrictFull ReporterIndependent Public Agency or Authority of Tran...Santa CruzCA93.079336.0Santa Cruz, CA169038.02975126.0federal263285.079336.0both
243d7e995716ec1e5bb708810a28f4ce2202390091City of Visalia , dba: Visalia TransitFull ReporterCity, County or Local Government Unit or Depar...VisaliaCA37.090946.0Visalia, CA160578.02197535.0federal491222.090946.0both
318a26ef2624bf2302b13c3da290e4a31202390310Tulare County Regional Transit AgencyFull ReporterIndependent Public Agency or Authority of Tran...VisaliaCA41.090946.0Visalia, CA160578.02105383.0federal3779135.090946.0both
40074aba1a1468f0ef01ba5bb8591f4ea202390164Ventura County Transportation CommissionFull ReporterIndependent Public Agency or Authority of Tran...CamarilloCA45.066673.0Oxnard--San Buenaventura (Ventura), CA376117.01618834.0federal390779.066673.0both
5c66136eb07990c683307924891da05a5202390009San Mateo County Transit District, dba: SamTransFull ReporterIndependent Public Agency or Authority of Tran...San CarlosCA331.078904.0San Francisco--Oakland, CA3515933.07793698.0federal783902.078904.0both
69011ecad1a04b79627d40c2e3ec4a918202390234Marin County Transit District, dba: Marin TransitFull ReporterIndependent Public Agency or Authority of Tran...San RafaelCA78.078904.0San Francisco--Oakland, CA3515933.03017303.0federal543303.078904.0both
72ee6240880777b119fcf8dd9da330af9202390306Stanislaus Regional Transit AuthorityFull ReporterIndependent Public Agency or Authority of Tran...ModestoCA102.058006.0Modesto, CA357301.04216882.0federal916161.058006.0both
8f34f1051a6c81d1a4149fb93da4ff392202390079SunLine Transit Agency, dba: SunLineFull ReporterIndependent Public Agency or Authority of Tran...Thousand PalmsCA82.041347.0Indio--Palm Desert--Palm Springs, CA361075.03938721.0federal1348953.041347.0both
99c81bfb86d1bbeaac2e00c6c0142c6cb202390026San Diego Metropolitan Transit SystemFull ReporterIndependent Public Agency or Authority of Tran...San DiegoCA774.078661.0San Diego, CA3070300.034095949.0federal878451.078661.0both
10732ac248345346f575122087bdbc3edd202390030North County Transit DistrictFull ReporterIndependent Public Agency or Authority of Tran...OceansideCA189.078661.0San Diego, CA3070300.08204114.0federal1665659.078661.0both
110129dd27f70c835fb794803cd65f48ce202390090Yolo County Transportation DistrictFull ReporterIndependent Public Agency or Authority of Tran...WoodlandCA40.077068.0Sacramento, CA1946618.01984049.0federal200210.077068.0both
12c99398cad6d9daad6b305d869ec1a780202390196County of Placer, dba: Placer County Transit/TARTFull ReporterCity, County or Local Government Unit or Depar...AuburnCA47.077068.0Sacramento, CA1946618.01920826.0federal1051362.077068.0both
132b062c505686f95e61a8714144a1758b202390148Victor Valley Transit AuthorityFull ReporterIndependent Public Agency or Authority of Tran...HesperiaCA277.090541.0Victorville--Hesperia--Apple Valley, CA355816.09070059.0federal1125644.090541.0both
1422c34fbd0b7d09bf89346cc62aad17d5202390173Transit Joint Powers Authority for Merced Coun...Full ReporterIndependent Public Agency or Authority of Tran...MercedCA45.056251.0Merced, CA150052.02027756.0federal1347802.056251.0both
15423019d2bdcac472b0cd1d81bc8380b7202390062Monterey-Salinas TransitFull ReporterIndependent Public Agency or Authority of Tran...MontereyCA165.080362.0Seaside--Monterey--Pacific Grove, CA123495.04249833.0federal2013121.080362.0both
16942e25509363518941fb783119b4d2ae202390121Antelope Valley Transit AuthorityFull ReporterIndependent Public Agency or Authority of Tran...LancasterCA86.067140.0Palmdale--Lancaster, CA359559.03530244.0federal2212409.067140.0both
1711e9e6577aa4afc22d4ed41b15e4479c202390144Livermore / Amador Valley Transit AuthorityFull ReporterIndependent Public Agency or Authority of Tran...LivermoreCA49.050533.0Livermore--Pleasanton--Dublin, CA240381.01328472.0federal106451.050533.0both
1891df0abfcbd3472d38a4224067582dc3202390013Santa Clara Valley Transportation Authority, d...Full ReporterIndependent Public Agency or Authority of Tran...San JoseCA512.079039.0San Jose, CA1837446.021779295.0federal380553.079039.0both
1906b3bf7a35f002aa4ed531265a0b63eb202390088Napa Valley Transportation AuthorityFull ReporterIndependent Public Agency or Authority of Tran...NapaCA44.061057.0Napa, CA84619.01345314.0federal1052042.061057.0both
2082dd8c5bb6b173b51e9e0b89a6bdd806202390089County of Sonoma , dba: Sonoma County TransitFull ReporterCity, County or Local Government Unit or Depar...Santa RosaCA47.079498.0Santa Rosa, CA297329.01737914.0federal550600.079498.0both
217bd3fc4c7aee7a83869619c0aa800a85202390208Butte County Association of Governments, dba: ...Full ReporterMPO, COG or Other Planning AgencyChicoCA37.016318.0Chico, CA111411.01182984.0federal1605128.016318.0both
22c4d6006dd6de8e33faf71155d16b3f68202390206San Luis Obispo Regional Transit AuthorityFull ReporterIndependent Public Agency or Authority of Tran...San Luis ObispoCA41.079147.0San Luis Obispo, CA56904.01542116.0federal762127.079147.0both
2356c88becd84cdf6874e9f3abe03eb6f0202390200Kings County Area Public Transit AgencyFull ReporterIndependent Public Agency or Authority of Tran...HanfordCA57.036703.0Hanford, CA66638.01522582.0federal586765.036703.0both
24b54cef7138d0057e9085da47db94506e202390012San Joaquin Regional Transit District, dba: Sa...Full ReporterIndependent Public Agency or Authority of Tran...StocktonCA93.085087.0Stockton, CA414847.02612286.0federal1269577.085087.0both
25e835f62b4fa6954b297ae0788141e1fe202390031Riverside Transit AgencyFull ReporterIndependent Public Agency or Authority of Tran...RiversideCA211.075340.0Riverside--San Bernardino, CA2276703.09238973.0federal682130.075340.0both
\n", + "
" + ], + "text/plain": [ + " key report_year ntd_id \\\n", + "0 7b92911062e8311df2aaefa803453213 2023 90162 \n", + "1 231d30a033adffad7c05ad22cdffc83a 2023 90006 \n", + "2 43d7e995716ec1e5bb708810a28f4ce2 2023 90091 \n", + "3 18a26ef2624bf2302b13c3da290e4a31 2023 90310 \n", + "4 0074aba1a1468f0ef01ba5bb8591f4ea 2023 90164 \n", + "5 c66136eb07990c683307924891da05a5 2023 90009 \n", + "6 9011ecad1a04b79627d40c2e3ec4a918 2023 90234 \n", + "7 2ee6240880777b119fcf8dd9da330af9 2023 90306 \n", + "8 f34f1051a6c81d1a4149fb93da4ff392 2023 90079 \n", + "9 9c81bfb86d1bbeaac2e00c6c0142c6cb 2023 90026 \n", + "10 732ac248345346f575122087bdbc3edd 2023 90030 \n", + "11 0129dd27f70c835fb794803cd65f48ce 2023 90090 \n", + "12 c99398cad6d9daad6b305d869ec1a780 2023 90196 \n", + "13 2b062c505686f95e61a8714144a1758b 2023 90148 \n", + "14 22c34fbd0b7d09bf89346cc62aad17d5 2023 90173 \n", + "15 423019d2bdcac472b0cd1d81bc8380b7 2023 90062 \n", + "16 942e25509363518941fb783119b4d2ae 2023 90121 \n", + "17 11e9e6577aa4afc22d4ed41b15e4479c 2023 90144 \n", + "18 91df0abfcbd3472d38a4224067582dc3 2023 90013 \n", + "19 06b3bf7a35f002aa4ed531265a0b63eb 2023 90088 \n", + "20 82dd8c5bb6b173b51e9e0b89a6bdd806 2023 90089 \n", + "21 7bd3fc4c7aee7a83869619c0aa800a85 2023 90208 \n", + "22 c4d6006dd6de8e33faf71155d16b3f68 2023 90206 \n", + "23 56c88becd84cdf6874e9f3abe03eb6f0 2023 90200 \n", + "24 b54cef7138d0057e9085da47db94506e 2023 90012 \n", + "25 e835f62b4fa6954b297ae0788141e1fe 2023 90031 \n", + "\n", + " agency reporter_type \\\n", + "0 The Eastern Contra Costa Transit Authority, db... Full Reporter \n", + "1 Santa Cruz Metropolitan Transit District Full Reporter \n", + "2 City of Visalia , dba: Visalia Transit Full Reporter \n", + "3 Tulare County Regional Transit Agency Full Reporter \n", + "4 Ventura County Transportation Commission Full Reporter \n", + "5 San Mateo County Transit District, dba: SamTrans Full Reporter \n", + "6 Marin County Transit District, dba: Marin Transit Full Reporter \n", + "7 Stanislaus Regional Transit Authority Full Reporter \n", + "8 SunLine Transit Agency, dba: SunLine Full Reporter \n", + "9 San Diego Metropolitan Transit System Full Reporter \n", + "10 North County Transit District Full Reporter \n", + "11 Yolo County Transportation District Full Reporter \n", + "12 County of Placer, dba: Placer County Transit/TART Full Reporter \n", + "13 Victor Valley Transit Authority Full Reporter \n", + "14 Transit Joint Powers Authority for Merced Coun... Full Reporter \n", + "15 Monterey-Salinas Transit Full Reporter \n", + "16 Antelope Valley Transit Authority Full Reporter \n", + "17 Livermore / Amador Valley Transit Authority Full Reporter \n", + "18 Santa Clara Valley Transportation Authority, d... Full Reporter \n", + "19 Napa Valley Transportation Authority Full Reporter \n", + "20 County of Sonoma , dba: Sonoma County Transit Full Reporter \n", + "21 Butte County Association of Governments, dba: ... Full Reporter \n", + "22 San Luis Obispo Regional Transit Authority Full Reporter \n", + "23 Kings County Area Public Transit Agency Full Reporter \n", + "24 San Joaquin Regional Transit District, dba: Sa... Full Reporter \n", + "25 Riverside Transit Agency Full Reporter \n", + "\n", + " organization_type city state \\\n", + "0 Independent Public Agency or Authority of Tran... Antioch CA \n", + "1 Independent Public Agency or Authority of Tran... Santa Cruz CA \n", + "2 City, County or Local Government Unit or Depar... Visalia CA \n", + "3 Independent Public Agency or Authority of Tran... Visalia CA \n", + "4 Independent Public Agency or Authority of Tran... Camarillo CA \n", + "5 Independent Public Agency or Authority of Tran... San Carlos CA \n", + "6 Independent Public Agency or Authority of Tran... San Rafael CA \n", + "7 Independent Public Agency or Authority of Tran... Modesto CA \n", + "8 Independent Public Agency or Authority of Tran... Thousand Palms CA \n", + "9 Independent Public Agency or Authority of Tran... San Diego CA \n", + "10 Independent Public Agency or Authority of Tran... Oceanside CA \n", + "11 Independent Public Agency or Authority of Tran... Woodland CA \n", + "12 City, County or Local Government Unit or Depar... Auburn CA \n", + "13 Independent Public Agency or Authority of Tran... Hesperia CA \n", + "14 Independent Public Agency or Authority of Tran... Merced CA \n", + "15 Independent Public Agency or Authority of Tran... Monterey CA \n", + "16 Independent Public Agency or Authority of Tran... Lancaster CA \n", + "17 Independent Public Agency or Authority of Tran... Livermore CA \n", + "18 Independent Public Agency or Authority of Tran... San Jose CA \n", + "19 Independent Public Agency or Authority of Tran... Napa CA \n", + "20 City, County or Local Government Unit or Depar... Santa Rosa CA \n", + "21 MPO, COG or Other Planning Agency Chico CA \n", + "22 Independent Public Agency or Authority of Tran... San Luis Obispo CA \n", + "23 Independent Public Agency or Authority of Tran... Hanford CA \n", + "24 Independent Public Agency or Authority of Tran... Stockton CA \n", + "25 Independent Public Agency or Authority of Tran... Riverside CA \n", + "\n", + " agency_voms primary_uza_code_x primary_uza_name \\\n", + "0 98.0 2683.0 Antioch, CA \n", + "1 93.0 79336.0 Santa Cruz, CA \n", + "2 37.0 90946.0 Visalia, CA \n", + "3 41.0 90946.0 Visalia, CA \n", + "4 45.0 66673.0 Oxnard--San Buenaventura (Ventura), CA \n", + "5 331.0 78904.0 San Francisco--Oakland, CA \n", + "6 78.0 78904.0 San Francisco--Oakland, CA \n", + "7 102.0 58006.0 Modesto, CA \n", + "8 82.0 41347.0 Indio--Palm Desert--Palm Springs, CA \n", + "9 774.0 78661.0 San Diego, CA \n", + "10 189.0 78661.0 San Diego, CA \n", + "11 40.0 77068.0 Sacramento, CA \n", + "12 47.0 77068.0 Sacramento, CA \n", + "13 277.0 90541.0 Victorville--Hesperia--Apple Valley, CA \n", + "14 45.0 56251.0 Merced, CA \n", + "15 165.0 80362.0 Seaside--Monterey--Pacific Grove, CA \n", + "16 86.0 67140.0 Palmdale--Lancaster, CA \n", + "17 49.0 50533.0 Livermore--Pleasanton--Dublin, CA \n", + "18 512.0 79039.0 San Jose, CA \n", + "19 44.0 61057.0 Napa, CA \n", + "20 47.0 79498.0 Santa Rosa, CA \n", + "21 37.0 16318.0 Chico, CA \n", + "22 41.0 79147.0 San Luis Obispo, CA \n", + "23 57.0 36703.0 Hanford, CA \n", + "24 93.0 85087.0 Stockton, CA \n", + "25 211.0 75340.0 Riverside--San Bernardino, CA \n", + "\n", + " primary_uza_population actual_vehicles_passenger_car_revenue_miles \\\n", + "0 326205.0 3200288.0 \n", + "1 169038.0 2975126.0 \n", + "2 160578.0 2197535.0 \n", + "3 160578.0 2105383.0 \n", + "4 376117.0 1618834.0 \n", + "5 3515933.0 7793698.0 \n", + "6 3515933.0 3017303.0 \n", + "7 357301.0 4216882.0 \n", + "8 361075.0 3938721.0 \n", + "9 3070300.0 34095949.0 \n", + "10 3070300.0 8204114.0 \n", + "11 1946618.0 1984049.0 \n", + "12 1946618.0 1920826.0 \n", + "13 355816.0 9070059.0 \n", + "14 150052.0 2027756.0 \n", + "15 123495.0 4249833.0 \n", + "16 359559.0 3530244.0 \n", + "17 240381.0 1328472.0 \n", + "18 1837446.0 21779295.0 \n", + "19 84619.0 1345314.0 \n", + "20 297329.0 1737914.0 \n", + "21 111411.0 1182984.0 \n", + "22 56904.0 1542116.0 \n", + "23 66638.0 1522582.0 \n", + "24 414847.0 2612286.0 \n", + "25 2276703.0 9238973.0 \n", + "\n", + " funding_source fta_rural_progam_5311 primary_uza_code_y _merge \n", + "0 federal 172914.0 2683.0 both \n", + "1 federal 263285.0 79336.0 both \n", + "2 federal 491222.0 90946.0 both \n", + "3 federal 3779135.0 90946.0 both \n", + "4 federal 390779.0 66673.0 both \n", + "5 federal 783902.0 78904.0 both \n", + "6 federal 543303.0 78904.0 both \n", + "7 federal 916161.0 58006.0 both \n", + "8 federal 1348953.0 41347.0 both \n", + "9 federal 878451.0 78661.0 both \n", + "10 federal 1665659.0 78661.0 both \n", + "11 federal 200210.0 77068.0 both \n", + "12 federal 1051362.0 77068.0 both \n", + "13 federal 1125644.0 90541.0 both \n", + "14 federal 1347802.0 56251.0 both \n", + "15 federal 2013121.0 80362.0 both \n", + "16 federal 2212409.0 67140.0 both \n", + "17 federal 106451.0 50533.0 both \n", + "18 federal 380553.0 79039.0 both \n", + "19 federal 1052042.0 61057.0 both \n", + "20 federal 550600.0 79498.0 both \n", + "21 federal 1605128.0 16318.0 both \n", + "22 federal 762127.0 79147.0 both \n", + "23 federal 586765.0 36703.0 both \n", + "24 federal 1269577.0 85087.0 both \n", + "25 federal 682130.0 75340.0 both " + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "#ntd_monthly_ridership = (tbls.mart_ntd.dim_monthly_ridership_with_adjustments ()\n", - "# >> filter(_.period_year == \"2023\",\n", - "# # _.year == 2022\n", - "# )\n", - "# >> collect()\n", - "# )\n", - "#ntd_monthly_ridership.info()" + "merge" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "31f8ce6d-a7a9-4fb9-b33f-605cd38ee183", + "cell_type": "markdown", + "id": "90c1d67a-50bd-49d5-a409-f69b4c983d2c", "metadata": {}, - "outputs": [], "source": [ - "#ntd_monthly_ridership.groupby(\"ntd_id\")[\"primary_uza_code\"].nunique().sort_values(ascending=False).head()" + "# TBD\n", + "- get UZA geometry data\n", + "- get list of bus stop point locations for the agencies identified above\n", + "- overlay bus stop point location on UZA geometry to find stops that are outside of the UZA for an agency to help answer\n", + ">- Operates fewer total VOMS in urbanized areas (UZAs) than rural (non-UZA) areas, and\n", + ">- Allocates more total Vehicle Revenue Miles (VRM) to non-UZAs than UZAs." ] }, { @@ -608,7 +1337,7 @@ "id": "ac729467-8a82-4b52-836f-453eaa140355", "metadata": {}, "source": [ - "## get UZA geojson data from rest server" + "### get UZA geojson data from FTA rest server" ] }, { @@ -818,6 +1547,37 @@ "ca_uza.head()" ] }, + { + "cell_type": "code", + "execution_count": 27, + "id": "bfde52af-be7c-4d89-aa93-6c5e1959914d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ca_uza.plot()" + ] + }, { "cell_type": "markdown", "id": "65592033-b6e9-4bf7-a24a-6b1d6f7a087b", From af2a0afae59ed8f7b74ff89405a3cb44aab5fbf2 Mon Sep 17 00:00:00 2001 From: csuyat-dot Date: Tue, 26 Nov 2024 00:16:34 +0000 Subject: [PATCH 13/13] more clean up --- ntd/proposed_changes_25-26.ipynb | 866 +++++++++++++++++++++++-------- 1 file changed, 648 insertions(+), 218 deletions(-) diff --git a/ntd/proposed_changes_25-26.ipynb b/ntd/proposed_changes_25-26.ipynb index 742e19f11..3ea7f9cc1 100644 --- a/ntd/proposed_changes_25-26.ipynb +++ b/ntd/proposed_changes_25-26.ipynb @@ -261,7 +261,7 @@ "\n", "Will need to see if theres equivilant forms between Full and Reduced reporters that report similar data but in different forms.\n", "\n", - "FTA's method for presenting elibible reporters of the waiver process seem a little unclear. I assume FTA will notify only the reporters that meet all the criteria in section G, and NOT all reporters. " + "FTA's method for presenting elibible reporters of the waiver process seem a little unclear. I assume FTA will notify only the reporters that meet all the criteria in section G, and NOT all reporters. Notifying all reporters of a possible waiver they might not be eligible for would cause a lot of confusion." ] }, { @@ -281,16 +281,6 @@ "- Allocates `more total Vehicle Revenue Miles (VRM) to non-UZAs` than `UZAs`.\n" ] }, - { - "cell_type": "markdown", - "id": "35ebc22e-ea54-452d-b6eb-c9b0e2c1fbdb", - "metadata": { - "tags": [] - }, - "source": [ - "#### Identify Agencies that meet Section G criteria" - ] - }, { "cell_type": "markdown", "id": "b6a189aa-2820-4efc-9d4f-5638c6d11379", @@ -298,7 +288,7 @@ "tags": [] }, "source": [ - "##### dim_annual_funding_sources\n", + "#### dim_annual_funding_sources\n", "- for 5311 agencies (rural operators)\n", "- Also has UZA and VOMS" ] @@ -370,7 +360,7 @@ "tags": [] }, "source": [ - "##### dim_annual_service_agencies\n", + "#### dim_annual_service_agencies\n", "- for UZA, VOMS and VRM" ] }, @@ -445,7 +435,7 @@ "id": "6680f16e-0074-45a1-a15e-d0c49278b59f", "metadata": {}, "source": [ - "##### Merge dataframes to get 5311 agencies in CA with >30 VOMS with UZA names" + "#### Merge dataframes to get 5311 agencies in CA with >30 VOMS with UZA names" ] }, { @@ -519,7 +509,7 @@ "id": "8b683dcd-ad9e-4157-a079-d74c9394a460", "metadata": {}, "source": [ - "##### Who are the agencies that match Section G Critera?" + "#### Who are the agencies that match Section G Critera?" ] }, { @@ -1319,6 +1309,17 @@ "merge" ] }, + { + "cell_type": "code", + "execution_count": 77, + "id": "13075ec9-4faf-4280-8930-97b6a28aac45", + "metadata": {}, + "outputs": [], + "source": [ + "# Export to GCS\n", + "merge.to_csv(\"gs://calitp-analytics-data/data-analyses/ntd/proposed_changes_agencies.csv\")" + ] + }, { "cell_type": "markdown", "id": "90c1d67a-50bd-49d5-a409-f69b4c983d2c", @@ -1596,7 +1597,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 86, "id": "b9f386ff-59fa-4eec-add5-b8c16a820cb3", "metadata": {}, "outputs": [ @@ -1605,53 +1606,111 @@ "output_type": "stream", "text": [ "\n", - "RangeIndex: 1186 entries, 0 to 1185\n", - "Data columns (total 24 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 key 1186 non-null object \n", - " 1 source_record_id 1186 non-null object \n", - " 2 name 1186 non-null object \n", - " 3 organization_type 1186 non-null object \n", - " 4 roles 1186 non-null object \n", - " 5 itp_id 167 non-null float64 \n", - " 6 details 186 non-null object \n", - " 7 caltrans_district 508 non-null object \n", - " 8 website 1151 non-null object \n", - " 9 reporting_category 184 non-null object \n", - " 10 hubspot_company_record_id 279 non-null object \n", - " 11 gtfs_static_status 1186 non-null object \n", - " 12 gtfs_realtime_status 1186 non-null object \n", - " 13 _deprecated__assessment_status 1186 non-null bool \n", - " 14 manual_check__contact_on_website 665 non-null object \n", - " 15 alias 1186 non-null object \n", - " 16 is_public_entity 1186 non-null bool \n", - " 17 ntd_id 0 non-null object \n", - " 18 ntd_id_2022 0 non-null object \n", - " 19 public_currently_operating 1186 non-null bool \n", - " 20 public_currently_operating_fixed_route 1186 non-null bool \n", - " 21 _is_current 1186 non-null bool \n", - " 22 _valid_from 1186 non-null datetime64[ns, UTC]\n", - " 23 _valid_to 1186 non-null datetime64[ns, UTC]\n", - "dtypes: bool(5), datetime64[ns, UTC](2), float64(1), object(16)\n", - "memory usage: 182.0+ KB\n" + "RangeIndex: 36 entries, 0 to 35\n", + "Data columns (total 9 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 key 36 non-null object\n", + " 1 source_record_id 36 non-null object\n", + " 2 name 36 non-null object\n", + " 3 organization_type 36 non-null object\n", + " 4 caltrans_district 34 non-null object\n", + " 5 reporting_category 27 non-null object\n", + " 6 is_public_entity 36 non-null bool \n", + " 7 ntd_id 0 non-null object\n", + " 8 public_currently_operating_fixed_route 36 non-null bool \n", + "dtypes: bool(2), object(7)\n", + "memory usage: 2.2+ KB\n" ] } ], "source": [ "dim_orgs = (tbls.mart_transit_database.dim_organizations()\n", " >> filter(_._is_current == True,\n", - " _.ntd_id.isna()\n", + " _.ntd_id.isna(),\n", + " _.public_currently_operating_fixed_route == True\n", " )\n", " >> collect()\n", " )\n", + "\n", + "keep_cols_2 =[\n", + " \"key\",\n", + " \"source_record_id\",\n", + " \"name\",\n", + " \"organization_type\",\n", + " \"caltrans_district\",\n", + " \"reporting_category\",\n", + " \"is_public_entity\",\n", + " \"ntd_id\",\n", + " \"public_currently_operating_fixed_route\", \n", + "]\n", + "\n", + "dim_orgs =dim_orgs[keep_cols_2]\n", + "\n", "dim_orgs.info()" ] }, { "cell_type": "code", - "execution_count": 15, - "id": "d34f841d-110d-4294-886f-61f9e836836f", + "execution_count": 87, + "id": "86359867-8b8a-41a9-8579-b38b7eb89bb3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "POINT 1\n", + "Amtrak 1\n", + "City of Mission Viejo 1\n", + "City of Mountain View 1\n", + "City of Newport Beach 1\n", + "City of Rancho Cordova 1\n", + "Plumas Transit Systems 1\n", + "Yosemite National Park 1\n", + "Los Angeles World Airports 1\n", + "City of San Juan Capistrano 1\n", + "City of South San Francisco 1\n", + "San Diego International Airport 1\n", + "Solano Transportation Authority 1\n", + "San Joaquin Joint Powers Authority 1\n", + "San Francisco International Airport 1\n", + "Capitol Corridor Joint Powers Authority 1\n", + "Tahoe Truckee Area Regional Transportation 1\n", + "City of Laguna Niguel 1\n", + "Curry Public Transit 1\n", + "City of San Clemente 1\n", + "City of Banning 1\n", + "Commute.org 1\n", + "City of Ripon 1\n", + "City of Clovis 1\n", + "City of Irvine 1\n", + "Presidio Trust 1\n", + "City of Alameda 1\n", + "City of Beaumont 1\n", + "Cloverdale Transit 1\n", + "City of La Puente 1\n", + "City of Morro Bay 1\n", + "Santa Cruz Harbor 1\n", + "City of Dana Point 1\n", + "City of Menlo Park 1\n", + "City of Santa Cruz 1\n", + "Dumbarton Bridge Regional Operations Consortium 1\n", + "Name: name, dtype: int64" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dim_orgs[\"name\"].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "id": "c053a7eb-c927-461a-8c3d-33281616610f", "metadata": {}, "outputs": [ { @@ -1679,246 +1738,617 @@ " source_record_id\n", " name\n", " organization_type\n", - " roles\n", - " itp_id\n", - " details\n", " caltrans_district\n", - " website\n", " reporting_category\n", - " hubspot_company_record_id\n", - " gtfs_static_status\n", - " gtfs_realtime_status\n", - " _deprecated__assessment_status\n", - " manual_check__contact_on_website\n", - " alias\n", " is_public_entity\n", " ntd_id\n", - " ntd_id_2022\n", - " public_currently_operating\n", " public_currently_operating_fixed_route\n", - " _is_current\n", - " _valid_from\n", - " _valid_to\n", " \n", " \n", " \n", " \n", " 0\n", - " eea7326fc87a575ce26e24cf56b8ff37\n", - " recsupkiKC6Y6fFfV\n", - " DAV\n", - " Non-Profit Organization\n", - " []\n", - " NaN\n", - " DAV operates a fleet of vehicles around the co...\n", - " 11 - San Diego\n", - " https://www.dav.org/veterans/i-need-a-ride/\n", + " 1d03fdbc2e4dfd044465b4437e70c9e0\n", + " recQRoE5mcCn6kdti\n", + " POINT\n", + " Independent Agency\n", + " 01 - Eureka\n", + " Other Public Transit\n", + " True\n", " None\n", + " True\n", + " \n", + " \n", + " 1\n", + " e8f13022ac8ecff976188979ac903d4a\n", + " recKsb5FnJy70up78\n", + " Amtrak\n", + " Federal Government\n", + " 03 - Marysville\n", + " Other Public Transit\n", + " True\n", " None\n", - " Static OK\n", - " RT Incomplete\n", - " False\n", - " Unknown\n", - " [Disabled Veterans of America]\n", - " False\n", + " True\n", + " \n", + " \n", + " 2\n", + " d4d53f5a85cec17582000a9e67a7d642\n", + " reczvlrgxLUDiBgAy\n", + " Commute.org\n", + " Joint Powers Agency\n", + " 04 - Oakland\n", + " Other Public Transit\n", + " True\n", " None\n", + " True\n", + " \n", + " \n", + " 3\n", + " 5c27763b1f9b74c1e0ef8a976c87da0e\n", + " reccEj7tecw0n60FO\n", + " City of Ripon\n", + " City/Town\n", + " 10 - Stockton\n", + " Other Public Transit\n", + " True\n", " None\n", - " False\n", - " False\n", " True\n", - " 2023-05-25 00:00:00+00:00\n", - " 2098-12-31 23:59:59.999999+00:00\n", " \n", " \n", - " 1\n", - " 45227f9806ad4ffd1e8d4309e07f707e\n", - " recmCZYY7aXn5MS9b\n", - " IBI\n", - " Company\n", - " []\n", - " NaN\n", + " 4\n", + " 17b1533e3db2090ee03baec634cecc2e\n", + " rec2JrGQTZZh54ieL\n", + " City of Clovis\n", + " City/Town\n", + " 06 - Fresno\n", + " Other Public Transit\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 5\n", + " de0dd501fabd3026dbda6de0946eaf35\n", + " recK4si1uIoj6HfrO\n", + " City of Irvine\n", + " City/Town\n", + " 12 - Irvine\n", " None\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 6\n", + " 4d66bee10854cee5940d2e62aebf657a\n", + " recsBfXgev9ICDCY1\n", + " Presidio Trust\n", + " Federal Government\n", + " 04 - Oakland\n", + " Other Transit\n", + " True\n", " None\n", - " https://www.ibigroup.com/\n", + " True\n", + " \n", + " \n", + " 7\n", + " 848ce6656bd68e56a1ccf915ae2eee23\n", + " reczluQLW1y5oQqF8\n", + " City of Alameda\n", + " City/Town\n", + " 04 - Oakland\n", + " Other Public Transit\n", + " True\n", " None\n", + " True\n", + " \n", + " \n", + " 8\n", + " 41f7aaa3446116fd1124b8ef1966ff14\n", + " recuGkFhN2WXGK67H\n", + " City of Banning\n", + " City/Town\n", " None\n", - " Static OK\n", - " RT Incomplete\n", - " False\n", - " Unknown\n", - " []\n", - " False\n", " None\n", + " True\n", " None\n", - " False\n", - " False\n", " True\n", - " 2024-05-04 00:00:00+00:00\n", - " 2098-12-31 23:59:59.999999+00:00\n", " \n", " \n", - " 2\n", - " 8a644e497439d25c01619c8ec6c85c44\n", - " recEN9M5vpVOk2JRI\n", - " SAP\n", - " Company\n", - " []\n", - " NaN\n", + " 9\n", + " 2452010e249a5f27fc5cc30910643214\n", + " reciWrBgYsAIm9eKK\n", + " City of Beaumont\n", + " City/Town\n", + " 08 - San Bernardino\n", + " Other Public Transit\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 10\n", + " 1c1a9850ea30294d4cdf272a80ea4f69\n", + " reczHeS54sIl4NOcF\n", + " City of La Puente\n", + " City/Town\n", + " 07 - Los Angeles\n", + " Other Public Transit\n", + " True\n", " None\n", + " True\n", + " \n", + " \n", + " 11\n", + " 48a96c9f6a0b599ea8207b39183fefc7\n", + " recH53ghrYpk4gKhe\n", + " City of Morro Bay\n", + " City/Town\n", + " 05 - San Luis Obispo\n", + " Other Public Transit\n", + " True\n", " None\n", - " crystalreports.com\n", + " True\n", + " \n", + " \n", + " 12\n", + " 79e42a2d6056cc685387ef9187daf794\n", + " recNSGNAyM91vsTU7\n", + " Santa Cruz Harbor\n", + " Independent Agency\n", + " 05 - San Luis Obispo\n", + " Other Public Transit\n", + " True\n", " None\n", + " True\n", + " \n", + " \n", + " 13\n", + " 97e128b56fff3421b4102df3c66d8f56\n", + " receSouvQI31vHz4D\n", + " City of Dana Point\n", + " City/Town\n", + " 12 - Irvine\n", + " Other Public Transit\n", + " True\n", " None\n", - " Static OK\n", - " RT Incomplete\n", - " False\n", - " Unknown\n", - " []\n", - " False\n", + " True\n", + " \n", + " \n", + " 14\n", + " 52a6eb3bb3ba5c35224f4f0e7088790e\n", + " recLHHpOMdW69jAsc\n", + " City of Menlo Park\n", + " City/Town\n", + " 04 - Oakland\n", " None\n", + " True\n", " None\n", - " False\n", - " False\n", " True\n", - " 2023-04-29 00:00:00+00:00\n", - " 2098-12-31 23:59:59.999999+00:00\n", " \n", " \n", - " 3\n", - " fa22729bf0698cc6d2ac4f4a41e861b0\n", - " recIAaOHjseoeNpTx\n", - " UTA\n", - " Company\n", - " []\n", - " NaN\n", + " 15\n", + " fa120b24b8ee045bdc28cbe0167038fd\n", + " reczbRiAs0zFytcvm\n", + " City of Santa Cruz\n", + " City/Town\n", + " 05 - San Luis Obispo\n", " None\n", + " True\n", " None\n", - " http://www.utatransit.net/\n", + " True\n", + " \n", + " \n", + " 16\n", + " 3a814fcf275575080638856737804f69\n", + " recRM3c9Zfaft4V2B\n", + " Cloverdale Transit\n", + " Independent Agency\n", + " 04 - Oakland\n", + " Other Public Transit\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 17\n", + " 313153a638c1f0f51deaa7a60e8001ba\n", + " recwtQ7m3C59jbnrc\n", + " City of San Clemente\n", + " City/Town\n", + " 12 - Irvine\n", + " Other Public Transit\n", + " True\n", " None\n", + " True\n", + " \n", + " \n", + " 18\n", + " a1e93b65b71053a93b8bad41a29a44e5\n", + " recfehHpcFaXUXhkt\n", + " Curry Public Transit\n", + " Independent Agency\n", + " 01 - Eureka\n", + " Other Public Transit\n", + " True\n", " None\n", - " Static OK\n", - " RT Incomplete\n", - " False\n", - " Unknown\n", - " []\n", - " False\n", + " True\n", + " \n", + " \n", + " 19\n", + " 2d6fbf795084dff514d88c3594f76e15\n", + " recwBSFrVmbeGqn0g\n", + " City of Laguna Niguel\n", + " City/Town\n", + " 12 - Irvine\n", " None\n", + " True\n", " None\n", - " False\n", - " False\n", " True\n", - " 2023-04-29 00:00:00+00:00\n", - " 2098-12-31 23:59:59.999999+00:00\n", " \n", " \n", - " 4\n", - " 3fd4d81306c49cb718c37b48fcbe585c\n", - " recveQ8PTsiKdT7RU\n", - " Aina\n", - " Company\n", - " []\n", - " NaN\n", - " Offices in Boston and Finland; no CA offices\n", + " 20\n", + " 25232b6a56d0264dcddb4913bf968434\n", + " reckGS8egMZryjbX7\n", + " City of Mission Viejo\n", + " City/Town\n", + " 12 - Irvine\n", + " None\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 21\n", + " 5dca73aae32d569ea5f40e417d45b72d\n", + " rec4pDiUorjWbUfvU\n", + " City of Mountain View\n", + " City/Town\n", + " 04 - Oakland\n", + " None\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 22\n", + " 0de6e548537b6a25aa8b873a2ea91519\n", + " rectXzoXm6gBuNBHK\n", + " City of Newport Beach\n", + " City/Town\n", + " 12 - Irvine\n", + " None\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 23\n", + " 26b06404aa62a3d05e9ffd0ffc1c2343\n", + " rec43oyrfhtPDdRHj\n", + " City of Rancho Cordova\n", + " City/Town\n", + " 03 - Marysville\n", + " Other Public Transit\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 24\n", + " 82701eb1de9e67b3fec7cb153d2c44c8\n", + " reccfMGlQeXIrHcad\n", + " Plumas Transit Systems\n", + " Independent Agency\n", + " 02 - Redding\n", + " Core\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 25\n", + " 4e807100eaf481d56bd883afda553331\n", + " recg58MziBRsVfavn\n", + " Yosemite National Park\n", + " Federal Government\n", + " 10 - Stockton\n", + " Other Public Transit\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 26\n", + " 227f25d23231d03b9e6d0827bedef573\n", + " recdLxGPqFmJLG21a\n", + " Los Angeles World Airports\n", + " Independent Agency\n", + " 07 - Los Angeles\n", + " Other Public Transit\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 27\n", + " 2868bbafaa4e330da76b27a34c9dec84\n", + " recEHMkhVmzSWO9nZ\n", + " City of San Juan Capistrano\n", + " City/Town\n", + " 12 - Irvine\n", + " Other Public Transit\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 28\n", + " f674be485552837860bfb987316fb170\n", + " recPtsCi89lKcXaTW\n", + " City of South San Francisco\n", + " City/Town\n", + " 04 - Oakland\n", + " Other Public Transit\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 29\n", + " 76677611969904bf1f4ad09f6dd631cf\n", + " recfbLFdDnCxgIfAB\n", + " San Diego International Airport\n", + " Independent Agency\n", + " 11 - San Diego\n", + " Other Public Transit\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 30\n", + " d14e900babddcfc79465fb18bae82826\n", + " rec7ShjfgRPLU0yjY\n", + " Solano Transportation Authority\n", + " Independent Agency\n", + " 04 - Oakland\n", + " Other Public Transit\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 31\n", + " 81b4e86d203f5f57fb689fadcb652b56\n", + " recvUlrKS1N2mvAwk\n", + " San Joaquin Joint Powers Authority\n", + " Independent Agency\n", + " 10 - Stockton\n", + " Core\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 32\n", + " 360e8fb158de1a3cc5638e3af7dcc8de\n", + " recd6X5l7vkBXk9hc\n", + " San Francisco International Airport\n", + " Independent Agency\n", + " 04 - Oakland\n", + " Other Public Transit\n", + " True\n", + " None\n", + " True\n", + " \n", + " \n", + " 33\n", + " 5df3b35b1c099c207e09fa6c81a207eb\n", + " recvEBkSBc7UxlarC\n", + " Capitol Corridor Joint Powers Authority\n", + " Independent Agency\n", + " 04 - Oakland\n", + " Other Public Transit\n", + " True\n", " None\n", - " https://www.ainaptt.com/\n", + " True\n", + " \n", + " \n", + " 34\n", + " 3d442fdd55188cad1f1e2206602bad31\n", + " reco3K1VuCBdGRhtV\n", + " Tahoe Truckee Area Regional Transportation\n", + " Independent Agency\n", + " 03 - Marysville\n", + " Core\n", + " True\n", " None\n", + " True\n", + " \n", + " \n", + " 35\n", + " 100b94a15d097469a628eb45e9b22bea\n", + " recn8zTmGbYZv1qxV\n", + " Dumbarton Bridge Regional Operations Consortium\n", + " Joint Powers Agency\n", " None\n", - " Static OK\n", - " RT Incomplete\n", - " False\n", - " Unknown\n", - " []\n", - " False\n", " None\n", + " True\n", " None\n", - " False\n", - " False\n", " True\n", - " 2023-05-25 00:00:00+00:00\n", - " 2098-12-31 23:59:59.999999+00:00\n", " \n", " \n", "\n", "" ], "text/plain": [ - " key source_record_id name \\\n", - "0 eea7326fc87a575ce26e24cf56b8ff37 recsupkiKC6Y6fFfV DAV \n", - "1 45227f9806ad4ffd1e8d4309e07f707e recmCZYY7aXn5MS9b IBI \n", - "2 8a644e497439d25c01619c8ec6c85c44 recEN9M5vpVOk2JRI SAP \n", - "3 fa22729bf0698cc6d2ac4f4a41e861b0 recIAaOHjseoeNpTx UTA \n", - "4 3fd4d81306c49cb718c37b48fcbe585c recveQ8PTsiKdT7RU Aina \n", - "\n", - " organization_type roles itp_id \\\n", - "0 Non-Profit Organization [] NaN \n", - "1 Company [] NaN \n", - "2 Company [] NaN \n", - "3 Company [] NaN \n", - "4 Company [] NaN \n", - "\n", - " details caltrans_district \\\n", - "0 DAV operates a fleet of vehicles around the co... 11 - San Diego \n", - "1 None None \n", - "2 None None \n", - "3 None None \n", - "4 Offices in Boston and Finland; no CA offices None \n", - "\n", - " website reporting_category \\\n", - "0 https://www.dav.org/veterans/i-need-a-ride/ None \n", - "1 https://www.ibigroup.com/ None \n", - "2 crystalreports.com None \n", - "3 http://www.utatransit.net/ None \n", - "4 https://www.ainaptt.com/ None \n", + " key source_record_id \\\n", + "0 1d03fdbc2e4dfd044465b4437e70c9e0 recQRoE5mcCn6kdti \n", + "1 e8f13022ac8ecff976188979ac903d4a recKsb5FnJy70up78 \n", + "2 d4d53f5a85cec17582000a9e67a7d642 reczvlrgxLUDiBgAy \n", + "3 5c27763b1f9b74c1e0ef8a976c87da0e reccEj7tecw0n60FO \n", + "4 17b1533e3db2090ee03baec634cecc2e rec2JrGQTZZh54ieL \n", + "5 de0dd501fabd3026dbda6de0946eaf35 recK4si1uIoj6HfrO \n", + "6 4d66bee10854cee5940d2e62aebf657a recsBfXgev9ICDCY1 \n", + "7 848ce6656bd68e56a1ccf915ae2eee23 reczluQLW1y5oQqF8 \n", + "8 41f7aaa3446116fd1124b8ef1966ff14 recuGkFhN2WXGK67H \n", + "9 2452010e249a5f27fc5cc30910643214 reciWrBgYsAIm9eKK \n", + "10 1c1a9850ea30294d4cdf272a80ea4f69 reczHeS54sIl4NOcF \n", + "11 48a96c9f6a0b599ea8207b39183fefc7 recH53ghrYpk4gKhe \n", + "12 79e42a2d6056cc685387ef9187daf794 recNSGNAyM91vsTU7 \n", + "13 97e128b56fff3421b4102df3c66d8f56 receSouvQI31vHz4D \n", + "14 52a6eb3bb3ba5c35224f4f0e7088790e recLHHpOMdW69jAsc \n", + "15 fa120b24b8ee045bdc28cbe0167038fd reczbRiAs0zFytcvm \n", + "16 3a814fcf275575080638856737804f69 recRM3c9Zfaft4V2B \n", + "17 313153a638c1f0f51deaa7a60e8001ba recwtQ7m3C59jbnrc \n", + "18 a1e93b65b71053a93b8bad41a29a44e5 recfehHpcFaXUXhkt \n", + "19 2d6fbf795084dff514d88c3594f76e15 recwBSFrVmbeGqn0g \n", + "20 25232b6a56d0264dcddb4913bf968434 reckGS8egMZryjbX7 \n", + "21 5dca73aae32d569ea5f40e417d45b72d rec4pDiUorjWbUfvU \n", + "22 0de6e548537b6a25aa8b873a2ea91519 rectXzoXm6gBuNBHK \n", + "23 26b06404aa62a3d05e9ffd0ffc1c2343 rec43oyrfhtPDdRHj \n", + "24 82701eb1de9e67b3fec7cb153d2c44c8 reccfMGlQeXIrHcad \n", + "25 4e807100eaf481d56bd883afda553331 recg58MziBRsVfavn \n", + "26 227f25d23231d03b9e6d0827bedef573 recdLxGPqFmJLG21a \n", + "27 2868bbafaa4e330da76b27a34c9dec84 recEHMkhVmzSWO9nZ \n", + "28 f674be485552837860bfb987316fb170 recPtsCi89lKcXaTW \n", + "29 76677611969904bf1f4ad09f6dd631cf recfbLFdDnCxgIfAB \n", + "30 d14e900babddcfc79465fb18bae82826 rec7ShjfgRPLU0yjY \n", + "31 81b4e86d203f5f57fb689fadcb652b56 recvUlrKS1N2mvAwk \n", + "32 360e8fb158de1a3cc5638e3af7dcc8de recd6X5l7vkBXk9hc \n", + "33 5df3b35b1c099c207e09fa6c81a207eb recvEBkSBc7UxlarC \n", + "34 3d442fdd55188cad1f1e2206602bad31 reco3K1VuCBdGRhtV \n", + "35 100b94a15d097469a628eb45e9b22bea recn8zTmGbYZv1qxV \n", "\n", - " hubspot_company_record_id gtfs_static_status gtfs_realtime_status \\\n", - "0 None Static OK RT Incomplete \n", - "1 None Static OK RT Incomplete \n", - "2 None Static OK RT Incomplete \n", - "3 None Static OK RT Incomplete \n", - "4 None Static OK RT Incomplete \n", + " name organization_type \\\n", + "0 POINT Independent Agency \n", + "1 Amtrak Federal Government \n", + "2 Commute.org Joint Powers Agency \n", + "3 City of Ripon City/Town \n", + "4 City of Clovis City/Town \n", + "5 City of Irvine City/Town \n", + "6 Presidio Trust Federal Government \n", + "7 City of Alameda City/Town \n", + "8 City of Banning City/Town \n", + "9 City of Beaumont City/Town \n", + "10 City of La Puente City/Town \n", + "11 City of Morro Bay City/Town \n", + "12 Santa Cruz Harbor Independent Agency \n", + "13 City of Dana Point City/Town \n", + "14 City of Menlo Park City/Town \n", + "15 City of Santa Cruz City/Town \n", + "16 Cloverdale Transit Independent Agency \n", + "17 City of San Clemente City/Town \n", + "18 Curry Public Transit Independent Agency \n", + "19 City of Laguna Niguel City/Town \n", + "20 City of Mission Viejo City/Town \n", + "21 City of Mountain View City/Town \n", + "22 City of Newport Beach City/Town \n", + "23 City of Rancho Cordova City/Town \n", + "24 Plumas Transit Systems Independent Agency \n", + "25 Yosemite National Park Federal Government \n", + "26 Los Angeles World Airports Independent Agency \n", + "27 City of San Juan Capistrano City/Town \n", + "28 City of South San Francisco City/Town \n", + "29 San Diego International Airport Independent Agency \n", + "30 Solano Transportation Authority Independent Agency \n", + "31 San Joaquin Joint Powers Authority Independent Agency \n", + "32 San Francisco International Airport Independent Agency \n", + "33 Capitol Corridor Joint Powers Authority Independent Agency \n", + "34 Tahoe Truckee Area Regional Transportation Independent Agency \n", + "35 Dumbarton Bridge Regional Operations Consortium Joint Powers Agency \n", "\n", - " _deprecated__assessment_status manual_check__contact_on_website \\\n", - "0 False Unknown \n", - "1 False Unknown \n", - "2 False Unknown \n", - "3 False Unknown \n", - "4 False Unknown \n", + " caltrans_district reporting_category is_public_entity ntd_id \\\n", + "0 01 - Eureka Other Public Transit True None \n", + "1 03 - Marysville Other Public Transit True None \n", + "2 04 - Oakland Other Public Transit True None \n", + "3 10 - Stockton Other Public Transit True None \n", + "4 06 - Fresno Other Public Transit True None \n", + "5 12 - Irvine None True None \n", + "6 04 - Oakland Other Transit True None \n", + "7 04 - Oakland Other Public Transit True None \n", + "8 None None True None \n", + "9 08 - San Bernardino Other Public Transit True None \n", + "10 07 - Los Angeles Other Public Transit True None \n", + "11 05 - San Luis Obispo Other Public Transit True None \n", + "12 05 - San Luis Obispo Other Public Transit True None \n", + "13 12 - Irvine Other Public Transit True None \n", + "14 04 - Oakland None True None \n", + "15 05 - San Luis Obispo None True None \n", + "16 04 - Oakland Other Public Transit True None \n", + "17 12 - Irvine Other Public Transit True None \n", + "18 01 - Eureka Other Public Transit True None \n", + "19 12 - Irvine None True None \n", + "20 12 - Irvine None True None \n", + "21 04 - Oakland None True None \n", + "22 12 - Irvine None True None \n", + "23 03 - Marysville Other Public Transit True None \n", + "24 02 - Redding Core True None \n", + "25 10 - Stockton Other Public Transit True None \n", + "26 07 - Los Angeles Other Public Transit True None \n", + "27 12 - Irvine Other Public Transit True None \n", + "28 04 - Oakland Other Public Transit True None \n", + "29 11 - San Diego Other Public Transit True None \n", + "30 04 - Oakland Other Public Transit True None \n", + "31 10 - Stockton Core True None \n", + "32 04 - Oakland Other Public Transit True None \n", + "33 04 - Oakland Other Public Transit True None \n", + "34 03 - Marysville Core True None \n", + "35 None None True None \n", "\n", - " alias is_public_entity ntd_id ntd_id_2022 \\\n", - "0 [Disabled Veterans of America] False None None \n", - "1 [] False None None \n", - "2 [] False None None \n", - "3 [] False None None \n", - "4 [] False None None \n", - "\n", - " public_currently_operating public_currently_operating_fixed_route \\\n", - "0 False False \n", - "1 False False \n", - "2 False False \n", - "3 False False \n", - "4 False False \n", - "\n", - " _is_current _valid_from _valid_to \n", - "0 True 2023-05-25 00:00:00+00:00 2098-12-31 23:59:59.999999+00:00 \n", - "1 True 2024-05-04 00:00:00+00:00 2098-12-31 23:59:59.999999+00:00 \n", - "2 True 2023-04-29 00:00:00+00:00 2098-12-31 23:59:59.999999+00:00 \n", - "3 True 2023-04-29 00:00:00+00:00 2098-12-31 23:59:59.999999+00:00 \n", - "4 True 2023-05-25 00:00:00+00:00 2098-12-31 23:59:59.999999+00:00 " + " public_currently_operating_fixed_route \n", + "0 True \n", + "1 True \n", + "2 True \n", + "3 True \n", + "4 True \n", + "5 True \n", + "6 True \n", + "7 True \n", + "8 True \n", + "9 True \n", + "10 True \n", + "11 True \n", + "12 True \n", + "13 True \n", + "14 True \n", + "15 True \n", + "16 True \n", + "17 True \n", + "18 True \n", + "19 True \n", + "20 True \n", + "21 True \n", + "22 True \n", + "23 True \n", + "24 True \n", + "25 True \n", + "26 True \n", + "27 True \n", + "28 True \n", + "29 True \n", + "30 True \n", + "31 True \n", + "32 True \n", + "33 True \n", + "34 True \n", + "35 True " ] }, - "execution_count": 15, + "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "dim_orgs.head()" + "dim_orgs" ] }, { "cell_type": "code", "execution_count": null, - "id": "86359867-8b8a-41a9-8579-b38b7eb89bb3", + "id": "76aed8ed-9f26-45f9-9153-9ac1d8e31a86", "metadata": {}, "outputs": [], "source": []