From e0b760bee427c4e0dd518a44942a29f04eb6048b Mon Sep 17 00:00:00 2001 From: Elizabeth Sall Date: Thu, 24 Mar 2022 13:25:16 -0700 Subject: [PATCH] Add Analysis of Transit Using HH from NHTS --- .../create_junction_table.ipynb | 2231 +++++++++++++++++ transit_riders/hh_df_3way_ct.png | Bin 0 -> 86301 bytes transit_riders/hh_df_ct.png | Bin 0 -> 53566 bytes transit_riders/hh_df_ct_r.png | Bin 0 -> 53387 bytes transit_riders/readme.md | 17 + transit_riders/results.md | 35 + .../transit_riders_with_autos.ipynb | 1173 +++++++++ 7 files changed, 3456 insertions(+) create mode 100644 gtfs_utils/airtable_junction/create_junction_table.ipynb create mode 100644 transit_riders/hh_df_3way_ct.png create mode 100644 transit_riders/hh_df_ct.png create mode 100644 transit_riders/hh_df_ct_r.png create mode 100644 transit_riders/readme.md create mode 100644 transit_riders/results.md create mode 100644 transit_riders/transit_riders_with_autos.ipynb diff --git a/gtfs_utils/airtable_junction/create_junction_table.ipynb b/gtfs_utils/airtable_junction/create_junction_table.ipynb new file mode 100644 index 000000000..39850659b --- /dev/null +++ b/gtfs_utils/airtable_junction/create_junction_table.ipynb @@ -0,0 +1,2231 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Create Junction Tables for Assessments\n", + "\n", + "The purpose of this notebook is to create junction tables between \"checks\" and the various pieces of information the checks are performed on for the purposes of transit data assessments.\n", + "\n", + "Assessment checks are performed at the following levels:\n", + "\n", + "- Transit Provider (i.e. does the provider list GTFS on its website)\n", + "- GTFS Dataset (i.e. does it list appropriate contact info in `feed_info.txt`)\n", + "- Service representation in a GTFS Dataset (i.e. are the San Francisco cable cars appropriately represented in the SFMTA GTFS Dataset?)\n", + "\n", + "### Output\n", + "In order to make sure that each relevant record is assessed with each relevant \"check\", a cartesian join is made between the records and the checks to form a \"junction table\", which allows us to add attributes about the junction of the record and the check (i.e. a \"grade\" or score).\n", + "\n", + "This notebook will create three delimited files (sep=\"|\") corresponding to each of these levels, which can be appended to the records in the following Airtable tables:\n", + "\n", + " - `data_cross.csv` --> GTFS Dataset Check Data \n", + " - `services_cross.csv` --> gtfs-dataset Check Data \n", + " - `provider_cross.csv` --> Provider Check Data\n", + "\n", + "### Requirements \n", + "\n", + "This notebook makes use of the `pyairtable` library to access the California Transit Airtable Database. You will need read access to this database with an API key stored in a .env file in the base directory of this notebook with the following format:\n", + "\n", + "```sh\n", + "AIRTABLE_API_KEY='your_api_key_info`\n", + "```\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1 - Read data from AirTable API" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": {}, + "outputs": [], + "source": [ + "from dotenv import dotenv_values\n", + "from pyairtable import Table\n", + "\n", + "API_KEY = dotenv_values(\".env\")['AIRTABLE_API_KEY']\n", + "BASE_ID = 'appjPsudTDcbLUWM5'\n", + "\n", + "GTFS_SERVICES_TABLE = 'Assessed GTFS-Services'\n", + "ASSESSED_SERVICES_TABLE = 'Assessed Services'\n", + "ASSESSED_PROVIDERS_TABLE = 'Assessed Transit Providers'\n", + "CHECKS_TABLE = 'gtfs checks'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": {}, + "outputs": [], + "source": [ + "def airtable_to_df(table_id:str,base_id:str=BASE_ID,api_key:str=API_KEY)->pd.DataFrame:\n", + " records = Table(api_key, base_id, table_id)\n", + " airtable_rows = [] \n", + " airtable_index = []\n", + " for record in records.all():\n", + " airtable_rows.append(record[\"fields\"])\n", + " airtable_index.append(record[\"id\"])\n", + " return pd.DataFrame(airtable_rows, index=airtable_index)" + ] + }, + { + "cell_type": "code", + "execution_count": 236, + "metadata": {}, + "outputs": [], + "source": [ + "gtfs_services_df = airtable_to_df(GTFS_SERVICES_TABLE)\n", + "gtfs_checks_df = airtable_to_df(CHECKS_TABLE)\n", + "services_df = airtable_to_df(ASSESSED_SERVICES_TABLE)\n", + "gtfs_providers_df = airtable_to_df(ASSESSED_PROVIDERS_TABLE)" + ] + }, + { + "cell_type": "code", + "execution_count": 237, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NameServicesGTFS DatasetDataset TypeCategoryService Type (from Services)ProviderOperatorDataset Producers (from GTFS Dataset)Dataset Publisher (from GTFS Dataset)...Flex Statusagency_idroute_idFares v2 StatusITP Activities (from GTFS Dataset)ITP Schedule TODO (from GTFS Dataset)network_idFares Notes (from GTFS Dataset)Schedule Comments (from GTFS Dataset)gtfs check data
rec05rHUgCVFqsXgNTulare Intermodal Express – Tulare AlertsTulare Intermodal ExpressTulare Alerts[GTFS Alerts]primary[fixed-route]Tulare County Regional Transit AgencyTulare County Regional Transit AgencyGMV Syncromatics IncGMV Syncromatics Inc...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
rec09fVK7ls8fl5spMonterey-Salinas Transit – Monterey Salinas Tr...Monterey-Salinas TransitMonterey Salinas TripUpdates[GTFS TripUpdates]primary[ADA paratransit]Monterey-Salinas TransitMonterey-Salinas TransitMonterey-Salinas TransitNaN...[Needed - Existing GTFS]NaNNaNNaNNaNNaNNaNNaNNaNNaN
rec0WcjVurdKkHx7SHealdsburg Shuttle – Bay Area 511 TripUpdatesHealdsburg ShuttleBay Area 511 TripUpdates[GTFS TripUpdates]primary[fixed-route]Sonoma CountySonoma CountyMetropolitan Transportation CommissionMetropolitan Transportation Commission...NaNSOSO:67NaNNaNNaNNaNNaNNaNNaN
rec0XvgWtnmoUl8LzGlenn Ride – Glenn ScheduleGlenn RideGlenn Schedule[GTFS Schedule]primary[deviated fixed-route, fixed-route, ADA paratr...Glenn CountyParatransit Services Inc.Trillium Inc.Trillium Inc....[In Progress - Trillium]NaNNaN[Vendor published][GTFS Into Google, GTFS Schedule Creation][Train transit provider to own]NaNNaNNaNNaN
rec0YWNONFHEO0pUlValley Express – VCTC AlertsValley ExpressVCTC Alerts[GTFS Alerts]primary[fixed-route]Ventura County Transportation CommissionVentura County Transportation CommissionGMV Syncromatics IncGMV Syncromatics Inc...NaN149NaNNaNNaNNaNNaNNaNNaNNaN
..................................................................
reczSG6bO6il6QMLZHealdsburg Shuttle – Bay Area 511 ScheduleHealdsburg ShuttleBay Area 511 Schedule[GTFS Schedule]primary[fixed-route]Sonoma CountySonoma CountyMetropolitan Transportation CommissionMetropolitan Transportation Commission...NaNSOSO:67[Vendor published]NaNNaNNaNMTCNaNNaN
reczZKKwKsVQuU0dFPlacer County Transit – Placer SchedulePlacer County TransitPlacer Schedule[GTFS Schedule]primary[fixed-route]Placer CountyPlacer CountyPlacer County, Trillium Inc.Trillium Inc....NaNNaNNaN[Vendor published]NaNNaNNaNPublished by TrilliumNaNNaN
reczf9FxlvLopZybbTaft Area Transit – Taft ScheduleTaft Area TransitTaft Schedule[GTFS Schedule]primary[fixed-route]City of TaftCity of TaftTrillium Inc.Trillium Inc....NaNNaNNaN[Needs GTFS Schedule][GTFS Schedule Creation][Get into google, Ask Kern to own]NaNNaNNaNNaN
recziP7dvY7apKbPBKern Transit – Kern ScheduleKern TransitKern Schedule[GTFS Schedule]primary[fixed-route]Kern CountyKern CountyKern County, Trillium Inc.Trillium Inc....NaN194NaN[Vendor published]NaNNaNNaNPublished by TrilliumNaNNaN
reczmEIm3KnSr2jF3Monterey-Salinas Transit – Monterey Salinas Ve...Monterey-Salinas TransitMonterey Salinas VehiclePositions[GTFS VehiclePositions]primary[ADA paratransit]Monterey-Salinas TransitMonterey-Salinas TransitMonterey-Salinas TransitNaN...[Needed - Existing GTFS]NaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", + "

507 rows × 28 columns

\n", + "
" + ], + "text/plain": [ + " Name \\\n", + "rec05rHUgCVFqsXgN Tulare Intermodal Express – Tulare Alerts \n", + "rec09fVK7ls8fl5sp Monterey-Salinas Transit – Monterey Salinas Tr... \n", + "rec0WcjVurdKkHx7S Healdsburg Shuttle – Bay Area 511 TripUpdates \n", + "rec0XvgWtnmoUl8Lz Glenn Ride – Glenn Schedule \n", + "rec0YWNONFHEO0pUl Valley Express – VCTC Alerts \n", + "... ... \n", + "reczSG6bO6il6QMLZ Healdsburg Shuttle – Bay Area 511 Schedule \n", + "reczZKKwKsVQuU0dF Placer County Transit – Placer Schedule \n", + "reczf9FxlvLopZybb Taft Area Transit – Taft Schedule \n", + "recziP7dvY7apKbPB Kern Transit – Kern Schedule \n", + "reczmEIm3KnSr2jF3 Monterey-Salinas Transit – Monterey Salinas Ve... \n", + "\n", + " Services \\\n", + "rec05rHUgCVFqsXgN Tulare Intermodal Express \n", + "rec09fVK7ls8fl5sp Monterey-Salinas Transit \n", + "rec0WcjVurdKkHx7S Healdsburg Shuttle \n", + "rec0XvgWtnmoUl8Lz Glenn Ride \n", + "rec0YWNONFHEO0pUl Valley Express \n", + "... ... \n", + "reczSG6bO6il6QMLZ Healdsburg Shuttle \n", + "reczZKKwKsVQuU0dF Placer County Transit \n", + "reczf9FxlvLopZybb Taft Area Transit \n", + "recziP7dvY7apKbPB Kern Transit \n", + "reczmEIm3KnSr2jF3 Monterey-Salinas Transit \n", + "\n", + " GTFS Dataset Dataset Type \\\n", + "rec05rHUgCVFqsXgN Tulare Alerts [GTFS Alerts] \n", + "rec09fVK7ls8fl5sp Monterey Salinas TripUpdates [GTFS TripUpdates] \n", + "rec0WcjVurdKkHx7S Bay Area 511 TripUpdates [GTFS TripUpdates] \n", + "rec0XvgWtnmoUl8Lz Glenn Schedule [GTFS Schedule] \n", + "rec0YWNONFHEO0pUl VCTC Alerts [GTFS Alerts] \n", + "... ... ... \n", + "reczSG6bO6il6QMLZ Bay Area 511 Schedule [GTFS Schedule] \n", + "reczZKKwKsVQuU0dF Placer Schedule [GTFS Schedule] \n", + "reczf9FxlvLopZybb Taft Schedule [GTFS Schedule] \n", + "recziP7dvY7apKbPB Kern Schedule [GTFS Schedule] \n", + "reczmEIm3KnSr2jF3 Monterey Salinas VehiclePositions [GTFS VehiclePositions] \n", + "\n", + " Category Service Type (from Services) \\\n", + "rec05rHUgCVFqsXgN primary [fixed-route] \n", + "rec09fVK7ls8fl5sp primary [ADA paratransit] \n", + "rec0WcjVurdKkHx7S primary [fixed-route] \n", + "rec0XvgWtnmoUl8Lz primary [deviated fixed-route, fixed-route, ADA paratr... \n", + "rec0YWNONFHEO0pUl primary [fixed-route] \n", + "... ... ... \n", + "reczSG6bO6il6QMLZ primary [fixed-route] \n", + "reczZKKwKsVQuU0dF primary [fixed-route] \n", + "reczf9FxlvLopZybb primary [fixed-route] \n", + "recziP7dvY7apKbPB primary [fixed-route] \n", + "reczmEIm3KnSr2jF3 primary [ADA paratransit] \n", + "\n", + " Provider \\\n", + "rec05rHUgCVFqsXgN Tulare County Regional Transit Agency \n", + "rec09fVK7ls8fl5sp Monterey-Salinas Transit \n", + "rec0WcjVurdKkHx7S Sonoma County \n", + "rec0XvgWtnmoUl8Lz Glenn County \n", + "rec0YWNONFHEO0pUl Ventura County Transportation Commission \n", + "... ... \n", + "reczSG6bO6il6QMLZ Sonoma County \n", + "reczZKKwKsVQuU0dF Placer County \n", + "reczf9FxlvLopZybb City of Taft \n", + "recziP7dvY7apKbPB Kern County \n", + "reczmEIm3KnSr2jF3 Monterey-Salinas Transit \n", + "\n", + " Operator \\\n", + "rec05rHUgCVFqsXgN Tulare County Regional Transit Agency \n", + "rec09fVK7ls8fl5sp Monterey-Salinas Transit \n", + "rec0WcjVurdKkHx7S Sonoma County \n", + "rec0XvgWtnmoUl8Lz Paratransit Services Inc. \n", + "rec0YWNONFHEO0pUl Ventura County Transportation Commission \n", + "... ... \n", + "reczSG6bO6il6QMLZ Sonoma County \n", + "reczZKKwKsVQuU0dF Placer County \n", + "reczf9FxlvLopZybb City of Taft \n", + "recziP7dvY7apKbPB Kern County \n", + "reczmEIm3KnSr2jF3 Monterey-Salinas Transit \n", + "\n", + " Dataset Producers (from GTFS Dataset) \\\n", + "rec05rHUgCVFqsXgN GMV Syncromatics Inc \n", + "rec09fVK7ls8fl5sp Monterey-Salinas Transit \n", + "rec0WcjVurdKkHx7S Metropolitan Transportation Commission \n", + "rec0XvgWtnmoUl8Lz Trillium Inc. \n", + "rec0YWNONFHEO0pUl GMV Syncromatics Inc \n", + "... ... \n", + "reczSG6bO6il6QMLZ Metropolitan Transportation Commission \n", + "reczZKKwKsVQuU0dF Placer County, Trillium Inc. \n", + "reczf9FxlvLopZybb Trillium Inc. \n", + "recziP7dvY7apKbPB Kern County, Trillium Inc. \n", + "reczmEIm3KnSr2jF3 Monterey-Salinas Transit \n", + "\n", + " Dataset Publisher (from GTFS Dataset) ... \\\n", + "rec05rHUgCVFqsXgN GMV Syncromatics Inc ... \n", + "rec09fVK7ls8fl5sp NaN ... \n", + "rec0WcjVurdKkHx7S Metropolitan Transportation Commission ... \n", + "rec0XvgWtnmoUl8Lz Trillium Inc. ... \n", + "rec0YWNONFHEO0pUl GMV Syncromatics Inc ... \n", + "... ... ... \n", + "reczSG6bO6il6QMLZ Metropolitan Transportation Commission ... \n", + "reczZKKwKsVQuU0dF Trillium Inc. ... \n", + "reczf9FxlvLopZybb Trillium Inc. ... \n", + "recziP7dvY7apKbPB Trillium Inc. ... \n", + "reczmEIm3KnSr2jF3 NaN ... \n", + "\n", + " Flex Status agency_id route_id \\\n", + "rec05rHUgCVFqsXgN NaN NaN NaN \n", + "rec09fVK7ls8fl5sp [Needed - Existing GTFS] NaN NaN \n", + "rec0WcjVurdKkHx7S NaN SO SO:67 \n", + "rec0XvgWtnmoUl8Lz [In Progress - Trillium] NaN NaN \n", + "rec0YWNONFHEO0pUl NaN 149 NaN \n", + "... ... ... ... \n", + "reczSG6bO6il6QMLZ NaN SO SO:67 \n", + "reczZKKwKsVQuU0dF NaN NaN NaN \n", + "reczf9FxlvLopZybb NaN NaN NaN \n", + "recziP7dvY7apKbPB NaN 194 NaN \n", + "reczmEIm3KnSr2jF3 [Needed - Existing GTFS] NaN NaN \n", + "\n", + " Fares v2 Status \\\n", + "rec05rHUgCVFqsXgN NaN \n", + "rec09fVK7ls8fl5sp NaN \n", + "rec0WcjVurdKkHx7S NaN \n", + "rec0XvgWtnmoUl8Lz [Vendor published] \n", + "rec0YWNONFHEO0pUl NaN \n", + "... ... \n", + "reczSG6bO6il6QMLZ [Vendor published] \n", + "reczZKKwKsVQuU0dF [Vendor published] \n", + "reczf9FxlvLopZybb [Needs GTFS Schedule] \n", + "recziP7dvY7apKbPB [Vendor published] \n", + "reczmEIm3KnSr2jF3 NaN \n", + "\n", + " ITP Activities (from GTFS Dataset) \\\n", + "rec05rHUgCVFqsXgN NaN \n", + "rec09fVK7ls8fl5sp NaN \n", + "rec0WcjVurdKkHx7S NaN \n", + "rec0XvgWtnmoUl8Lz [GTFS Into Google, GTFS Schedule Creation] \n", + "rec0YWNONFHEO0pUl NaN \n", + "... ... \n", + "reczSG6bO6il6QMLZ NaN \n", + "reczZKKwKsVQuU0dF NaN \n", + "reczf9FxlvLopZybb [GTFS Schedule Creation] \n", + "recziP7dvY7apKbPB NaN \n", + "reczmEIm3KnSr2jF3 NaN \n", + "\n", + " ITP Schedule TODO (from GTFS Dataset) network_id \\\n", + "rec05rHUgCVFqsXgN NaN NaN \n", + "rec09fVK7ls8fl5sp NaN NaN \n", + "rec0WcjVurdKkHx7S NaN NaN \n", + "rec0XvgWtnmoUl8Lz [Train transit provider to own] NaN \n", + "rec0YWNONFHEO0pUl NaN NaN \n", + "... ... ... \n", + "reczSG6bO6il6QMLZ NaN NaN \n", + "reczZKKwKsVQuU0dF NaN NaN \n", + "reczf9FxlvLopZybb [Get into google, Ask Kern to own] NaN \n", + "recziP7dvY7apKbPB NaN NaN \n", + "reczmEIm3KnSr2jF3 NaN NaN \n", + "\n", + " Fares Notes (from GTFS Dataset) \\\n", + "rec05rHUgCVFqsXgN NaN \n", + "rec09fVK7ls8fl5sp NaN \n", + "rec0WcjVurdKkHx7S NaN \n", + "rec0XvgWtnmoUl8Lz NaN \n", + "rec0YWNONFHEO0pUl NaN \n", + "... ... \n", + "reczSG6bO6il6QMLZ MTC \n", + "reczZKKwKsVQuU0dF Published by Trillium \n", + "reczf9FxlvLopZybb NaN \n", + "recziP7dvY7apKbPB Published by Trillium \n", + "reczmEIm3KnSr2jF3 NaN \n", + "\n", + " Schedule Comments (from GTFS Dataset) gtfs check data \n", + "rec05rHUgCVFqsXgN NaN NaN \n", + "rec09fVK7ls8fl5sp NaN NaN \n", + "rec0WcjVurdKkHx7S NaN NaN \n", + "rec0XvgWtnmoUl8Lz NaN NaN \n", + "rec0YWNONFHEO0pUl NaN NaN \n", + "... ... ... \n", + "reczSG6bO6il6QMLZ NaN NaN \n", + "reczZKKwKsVQuU0dF NaN NaN \n", + "reczf9FxlvLopZybb NaN NaN \n", + "recziP7dvY7apKbPB NaN NaN \n", + "reczmEIm3KnSr2jF3 NaN NaN \n", + "\n", + "[507 rows x 28 columns]" + ] + }, + "execution_count": 237, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gtfs_services_df" + ] + }, + { + "cell_type": "code", + "execution_count": 238, + "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", + "
Check #DescriptionScopeSourceSource: medium-termSource: goalMax ScoreScore Typegtfs-service check data copyScoring Criteriagtfs check datagtfs-dataset check data copy
rec4Ah8sgs8F243XH16TripUpdates PublishedTripUpdates Dataset[human][auto][auto]5.0Nominal[reczJXpgSxkKqzrFg, recAarP7F7LPwtlcn, reczYzu...NaNNaNNaN
rec5GIXSm4aAcpuZj20Publish to OpenMobilityDataTripUpdates Dataset[human][human][human]1.0Boolean[recjjCy0uuLGk6RSq, recXNqjW35Dq3omAX, reclalk...There or not.\\n\\nNaNNaN
rec5ahg0uEPYRoMEX26Publish to TransitLandVehiclePositions Dataset[human][human][human]1.0Boolean[recw95VXxi1w2rmOC, recWbsiIF3zlT2u5d, recuuLV...There or not.\\n\\nNaNNaN
rec6i4tZoKfMLAWiK22Reasonable API Key ProcessTripUpdates Dataset[human][human][human]2.0Nominal[rec5b8Xd4UbUciyH7, recNp2w2UUdwfEB6j, recskZe...NaNNaNNaN
recBWkZKdzqEIDE4613GTFS Grading Scheme ScoreService within GTFS Schedule Dataset[human][gtfs-trained human][human]3.0ContinuousNaN3\\* Grading scheme score / Max grading scheme ...[recuql0JQWFcn7KFs, recxItR7wCdB51vjA, rec4ivy...NaN
\n", + "
" + ], + "text/plain": [ + " Check # Description \\\n", + "rec4Ah8sgs8F243XH 16 TripUpdates Published \n", + "rec5GIXSm4aAcpuZj 20 Publish to OpenMobilityData \n", + "rec5ahg0uEPYRoMEX 26 Publish to TransitLand \n", + "rec6i4tZoKfMLAWiK 22 Reasonable API Key Process \n", + "recBWkZKdzqEIDE46 13 GTFS Grading Scheme Score \n", + "\n", + " Scope Source \\\n", + "rec4Ah8sgs8F243XH TripUpdates Dataset [human] \n", + "rec5GIXSm4aAcpuZj TripUpdates Dataset [human] \n", + "rec5ahg0uEPYRoMEX VehiclePositions Dataset [human] \n", + "rec6i4tZoKfMLAWiK TripUpdates Dataset [human] \n", + "recBWkZKdzqEIDE46 Service within GTFS Schedule Dataset [human] \n", + "\n", + " Source: medium-term Source: goal Max Score Score Type \\\n", + "rec4Ah8sgs8F243XH [auto] [auto] 5.0 Nominal \n", + "rec5GIXSm4aAcpuZj [human] [human] 1.0 Boolean \n", + "rec5ahg0uEPYRoMEX [human] [human] 1.0 Boolean \n", + "rec6i4tZoKfMLAWiK [human] [human] 2.0 Nominal \n", + "recBWkZKdzqEIDE46 [gtfs-trained human] [human] 3.0 Continuous \n", + "\n", + " gtfs-service check data copy \\\n", + "rec4Ah8sgs8F243XH [reczJXpgSxkKqzrFg, recAarP7F7LPwtlcn, reczYzu... \n", + "rec5GIXSm4aAcpuZj [recjjCy0uuLGk6RSq, recXNqjW35Dq3omAX, reclalk... \n", + "rec5ahg0uEPYRoMEX [recw95VXxi1w2rmOC, recWbsiIF3zlT2u5d, recuuLV... \n", + "rec6i4tZoKfMLAWiK [rec5b8Xd4UbUciyH7, recNp2w2UUdwfEB6j, recskZe... \n", + "recBWkZKdzqEIDE46 NaN \n", + "\n", + " Scoring Criteria \\\n", + "rec4Ah8sgs8F243XH NaN \n", + "rec5GIXSm4aAcpuZj There or not.\\n\\n \n", + "rec5ahg0uEPYRoMEX There or not.\\n\\n \n", + "rec6i4tZoKfMLAWiK NaN \n", + "recBWkZKdzqEIDE46 3\\* Grading scheme score / Max grading scheme ... \n", + "\n", + " gtfs check data \\\n", + "rec4Ah8sgs8F243XH NaN \n", + "rec5GIXSm4aAcpuZj NaN \n", + "rec5ahg0uEPYRoMEX NaN \n", + "rec6i4tZoKfMLAWiK NaN \n", + "recBWkZKdzqEIDE46 [recuql0JQWFcn7KFs, recxItR7wCdB51vjA, rec4ivy... \n", + "\n", + " gtfs-dataset check data copy \n", + "rec4Ah8sgs8F243XH NaN \n", + "rec5GIXSm4aAcpuZj NaN \n", + "rec5ahg0uEPYRoMEX NaN \n", + "rec6i4tZoKfMLAWiK NaN \n", + "recBWkZKdzqEIDE46 NaN " + ] + }, + "execution_count": 238, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gtfs_checks_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 239, + "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", + "
Nameservice_idProviderOperatorCurrently OperatingModeService TypeNotesFunding SourcesFunding Category...Service Area TypeService Area Buffer (miles)Service Availability CategoryParatransit Fororganization stack componentsITP Schedule TODO (from GTFS Dataset) (from GTFS Services Association)ITP Activities (from GTFS Dataset) (from GTFS Services Association)Schedule Comments (from GTFS Dataset) (from GTFS Services Association)Season StartSeason End
rec0OCKo3fwRLpPIhWatsonville Circulatorrec6lgJrPslFjSXdkSanta Cruz Metropolitan Transit DistrictSanta Cruz Metropolitan Transit DistrictTrue[bus][fixed-route]ETRO’s new Watsonville Circulator Route is des...Caltrans[public]...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
rec0ZVZt8PTzF2zuYTopanga Beach Busrec00Di9RibzcrxHSLos Angeles CountyLos Angeles CountyTrue[bus][fixed-route]Connects Metro Orange Line to Topanga Beach an...Caltrans[public]...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
rec0ikYugqTjhLBkgImperial Valley TransitrecMR1zH6QMLPSriVImperial County Transportation CommissionImperial County Transportation CommissionTrue[bus][fixed-route, deviated fixed-route]NaNCaltrans[public]...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
rec0n7D4vtGfWZVEcCitylinerecaTB1mtROhjUHNRCity of West HollywoodCity of West HollywoodTrue[bus][fixed-route]West Hollywood’s own free shuttle\\n\\nCityline ...Caltrans[public]...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
rec14ZBuXpyw4OLY2Avocado Heights/Bassett/West Valinda ShuttlerecHJivXoZGV1KhZeLos Angeles CountyLos Angeles CountyTrue[bus][fixed-route]The Avocado Heights/Bassett/West Valinda Shutt...Caltrans[public]...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", + "

5 rows × 41 columns

\n", + "
" + ], + "text/plain": [ + " Name \\\n", + "rec0OCKo3fwRLpPIh Watsonville Circulator \n", + "rec0ZVZt8PTzF2zuY Topanga Beach Bus \n", + "rec0ikYugqTjhLBkg Imperial Valley Transit \n", + "rec0n7D4vtGfWZVEc Cityline \n", + "rec14ZBuXpyw4OLY2 Avocado Heights/Bassett/West Valinda Shuttle \n", + "\n", + " service_id \\\n", + "rec0OCKo3fwRLpPIh rec6lgJrPslFjSXdk \n", + "rec0ZVZt8PTzF2zuY rec00Di9RibzcrxHS \n", + "rec0ikYugqTjhLBkg recMR1zH6QMLPSriV \n", + "rec0n7D4vtGfWZVEc recaTB1mtROhjUHNR \n", + "rec14ZBuXpyw4OLY2 recHJivXoZGV1KhZe \n", + "\n", + " Provider \\\n", + "rec0OCKo3fwRLpPIh Santa Cruz Metropolitan Transit District \n", + "rec0ZVZt8PTzF2zuY Los Angeles County \n", + "rec0ikYugqTjhLBkg Imperial County Transportation Commission \n", + "rec0n7D4vtGfWZVEc City of West Hollywood \n", + "rec14ZBuXpyw4OLY2 Los Angeles County \n", + "\n", + " Operator \\\n", + "rec0OCKo3fwRLpPIh Santa Cruz Metropolitan Transit District \n", + "rec0ZVZt8PTzF2zuY Los Angeles County \n", + "rec0ikYugqTjhLBkg Imperial County Transportation Commission \n", + "rec0n7D4vtGfWZVEc City of West Hollywood \n", + "rec14ZBuXpyw4OLY2 Los Angeles County \n", + "\n", + " Currently Operating Mode \\\n", + "rec0OCKo3fwRLpPIh True [bus] \n", + "rec0ZVZt8PTzF2zuY True [bus] \n", + "rec0ikYugqTjhLBkg True [bus] \n", + "rec0n7D4vtGfWZVEc True [bus] \n", + "rec14ZBuXpyw4OLY2 True [bus] \n", + "\n", + " Service Type \\\n", + "rec0OCKo3fwRLpPIh [fixed-route] \n", + "rec0ZVZt8PTzF2zuY [fixed-route] \n", + "rec0ikYugqTjhLBkg [fixed-route, deviated fixed-route] \n", + "rec0n7D4vtGfWZVEc [fixed-route] \n", + "rec14ZBuXpyw4OLY2 [fixed-route] \n", + "\n", + " Notes \\\n", + "rec0OCKo3fwRLpPIh ETRO’s new Watsonville Circulator Route is des... \n", + "rec0ZVZt8PTzF2zuY Connects Metro Orange Line to Topanga Beach an... \n", + "rec0ikYugqTjhLBkg NaN \n", + "rec0n7D4vtGfWZVEc West Hollywood’s own free shuttle\\n\\nCityline ... \n", + "rec14ZBuXpyw4OLY2 The Avocado Heights/Bassett/West Valinda Shutt... \n", + "\n", + " Funding Sources Funding Category ... Service Area Type \\\n", + "rec0OCKo3fwRLpPIh Caltrans [public] ... NaN \n", + "rec0ZVZt8PTzF2zuY Caltrans [public] ... NaN \n", + "rec0ikYugqTjhLBkg Caltrans [public] ... NaN \n", + "rec0n7D4vtGfWZVEc Caltrans [public] ... NaN \n", + "rec14ZBuXpyw4OLY2 Caltrans [public] ... NaN \n", + "\n", + " Service Area Buffer (miles) Service Availability Category \\\n", + "rec0OCKo3fwRLpPIh NaN NaN \n", + "rec0ZVZt8PTzF2zuY NaN NaN \n", + "rec0ikYugqTjhLBkg NaN NaN \n", + "rec0n7D4vtGfWZVEc NaN NaN \n", + "rec14ZBuXpyw4OLY2 NaN NaN \n", + "\n", + " Paratransit For organization stack components \\\n", + "rec0OCKo3fwRLpPIh NaN NaN \n", + "rec0ZVZt8PTzF2zuY NaN NaN \n", + "rec0ikYugqTjhLBkg NaN NaN \n", + "rec0n7D4vtGfWZVEc NaN NaN \n", + "rec14ZBuXpyw4OLY2 NaN NaN \n", + "\n", + " ITP Schedule TODO (from GTFS Dataset) (from GTFS Services Association) \\\n", + "rec0OCKo3fwRLpPIh NaN \n", + "rec0ZVZt8PTzF2zuY NaN \n", + "rec0ikYugqTjhLBkg NaN \n", + "rec0n7D4vtGfWZVEc NaN \n", + "rec14ZBuXpyw4OLY2 NaN \n", + "\n", + " ITP Activities (from GTFS Dataset) (from GTFS Services Association) \\\n", + "rec0OCKo3fwRLpPIh NaN \n", + "rec0ZVZt8PTzF2zuY NaN \n", + "rec0ikYugqTjhLBkg NaN \n", + "rec0n7D4vtGfWZVEc NaN \n", + "rec14ZBuXpyw4OLY2 NaN \n", + "\n", + " Schedule Comments (from GTFS Dataset) (from GTFS Services Association) \\\n", + "rec0OCKo3fwRLpPIh NaN \n", + "rec0ZVZt8PTzF2zuY NaN \n", + "rec0ikYugqTjhLBkg NaN \n", + "rec0n7D4vtGfWZVEc NaN \n", + "rec14ZBuXpyw4OLY2 NaN \n", + "\n", + " Season Start Season End \n", + "rec0OCKo3fwRLpPIh NaN NaN \n", + "rec0ZVZt8PTzF2zuY NaN NaN \n", + "rec0ikYugqTjhLBkg NaN NaN \n", + "rec0n7D4vtGfWZVEc NaN NaN \n", + "rec14ZBuXpyw4OLY2 NaN NaN \n", + "\n", + "[5 rows x 41 columns]" + ] + }, + "execution_count": 239, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "services_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 240, + "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", + "
NameAlias'organization_idITP IDTracking Cat - ogReporting Cat - ogAssist Cat - ogCaltrans DistrictMPO/RTPAPlanning Authority...Count of Services with Complete Realtime StatusAt least one GTFS feed for any service (1=yes)At least on complete RT set (1=yes)Complete static GTFS coverage (1=yes)Complete RT coverage (1=yes)provider check dataProvider AssessmentsDetailsWebsiteContracts Held
rec0ZHctuUYh5wtLSSan Luis Obispo Regional Transit Authority[SLORTA]reciakGBN1DP9dK9N289.0ActiveCoreWhite Glove05 - San Luis ObispoSan Luis Obispo Council of GovernmentsSan Luis Obispo Council of Governments...01000[recJpdz8eCeRsUQSj, recK3xMG6XsnQpYwD, recX8ke...[recIUkhYnikNkX12h]NaNNaNNaN
rec0dtZWydv7z5afXCity of Taft[TAT]recgTxL1xyvgC8e9k330.0ActiveCoreWhite Glove06 - FresnoKern Council of GovernmentsKern Council of Governments...01010[rec9P4eMWAQ2GaF5A, recYKDCjjLJbzcJTM, recLVPL...[recp38jhkZVctheDK]NaNNaNNaN
rec0qKtbrBvE1AyReCity of CerritosNaNrecXYM27Lts8XF98x63.0ActiveCoreWhite Glove07 - Los AngelesSouthern California Association of GovernmentsSouthern California Association of Governments...00000[receMU82jZycJkGFe, recwhLFXaVN5DcqQ1, recXbUF...[recJMNAE1xFtv9B60]NaNNaNNaN
rec0yf9AiAqnwpaITCity of DelanoNaNrecROsnN85RlZziSj91.0ActiveCoreWhite Glove06 - FresnoKern Council of GovernmentsKern Council of Governments...01010[recxPm0wCZJj0jtR0, recyeyK9Brn5UV85M, recHjg7...[rec90UiwBWjFXvdt9]NaNNaNNaN
rec1gD38VBhjtMssTImperial County Transportation CommissionNaNrec38PbjPbEy2Tvdu138.0ActiveCoreWhite Glove11 - San DiegoSouthern California Association of GovernmentsSouthern California Association of Governments...00000[recT2TIZ0r3FHdCwQ, recgcfRSpfLffxTDf, recSF6B...[reczToe4t1ynsYs5T]NaNNaNNaN
\n", + "

5 rows × 33 columns

\n", + "
" + ], + "text/plain": [ + " Name Alias' \\\n", + "rec0ZHctuUYh5wtLS San Luis Obispo Regional Transit Authority [SLORTA] \n", + "rec0dtZWydv7z5afX City of Taft [TAT] \n", + "rec0qKtbrBvE1AyRe City of Cerritos NaN \n", + "rec0yf9AiAqnwpaIT City of Delano NaN \n", + "rec1gD38VBhjtMssT Imperial County Transportation Commission NaN \n", + "\n", + " organization_id ITP ID Tracking Cat - og \\\n", + "rec0ZHctuUYh5wtLS reciakGBN1DP9dK9N 289.0 Active \n", + "rec0dtZWydv7z5afX recgTxL1xyvgC8e9k 330.0 Active \n", + "rec0qKtbrBvE1AyRe recXYM27Lts8XF98x 63.0 Active \n", + "rec0yf9AiAqnwpaIT recROsnN85RlZziSj 91.0 Active \n", + "rec1gD38VBhjtMssT rec38PbjPbEy2Tvdu 138.0 Active \n", + "\n", + " Reporting Cat - og Assist Cat - og Caltrans District \\\n", + "rec0ZHctuUYh5wtLS Core White Glove 05 - San Luis Obispo \n", + "rec0dtZWydv7z5afX Core White Glove 06 - Fresno \n", + "rec0qKtbrBvE1AyRe Core White Glove 07 - Los Angeles \n", + "rec0yf9AiAqnwpaIT Core White Glove 06 - Fresno \n", + "rec1gD38VBhjtMssT Core White Glove 11 - San Diego \n", + "\n", + " MPO/RTPA \\\n", + "rec0ZHctuUYh5wtLS San Luis Obispo Council of Governments \n", + "rec0dtZWydv7z5afX Kern Council of Governments \n", + "rec0qKtbrBvE1AyRe Southern California Association of Governments \n", + "rec0yf9AiAqnwpaIT Kern Council of Governments \n", + "rec1gD38VBhjtMssT Southern California Association of Governments \n", + "\n", + " Planning Authority ... \\\n", + "rec0ZHctuUYh5wtLS San Luis Obispo Council of Governments ... \n", + "rec0dtZWydv7z5afX Kern Council of Governments ... \n", + "rec0qKtbrBvE1AyRe Southern California Association of Governments ... \n", + "rec0yf9AiAqnwpaIT Kern Council of Governments ... \n", + "rec1gD38VBhjtMssT Southern California Association of Governments ... \n", + "\n", + " Count of Services with Complete Realtime Status \\\n", + "rec0ZHctuUYh5wtLS 0 \n", + "rec0dtZWydv7z5afX 0 \n", + "rec0qKtbrBvE1AyRe 0 \n", + "rec0yf9AiAqnwpaIT 0 \n", + "rec1gD38VBhjtMssT 0 \n", + "\n", + " At least one GTFS feed for any service (1=yes) \\\n", + "rec0ZHctuUYh5wtLS 1 \n", + "rec0dtZWydv7z5afX 1 \n", + "rec0qKtbrBvE1AyRe 0 \n", + "rec0yf9AiAqnwpaIT 1 \n", + "rec1gD38VBhjtMssT 0 \n", + "\n", + " At least on complete RT set (1=yes) \\\n", + "rec0ZHctuUYh5wtLS 0 \n", + "rec0dtZWydv7z5afX 0 \n", + "rec0qKtbrBvE1AyRe 0 \n", + "rec0yf9AiAqnwpaIT 0 \n", + "rec1gD38VBhjtMssT 0 \n", + "\n", + " Complete static GTFS coverage (1=yes) \\\n", + "rec0ZHctuUYh5wtLS 0 \n", + "rec0dtZWydv7z5afX 1 \n", + "rec0qKtbrBvE1AyRe 0 \n", + "rec0yf9AiAqnwpaIT 1 \n", + "rec1gD38VBhjtMssT 0 \n", + "\n", + " Complete RT coverage (1=yes) \\\n", + "rec0ZHctuUYh5wtLS 0 \n", + "rec0dtZWydv7z5afX 0 \n", + "rec0qKtbrBvE1AyRe 0 \n", + "rec0yf9AiAqnwpaIT 0 \n", + "rec1gD38VBhjtMssT 0 \n", + "\n", + " provider check data \\\n", + "rec0ZHctuUYh5wtLS [recJpdz8eCeRsUQSj, recK3xMG6XsnQpYwD, recX8ke... \n", + "rec0dtZWydv7z5afX [rec9P4eMWAQ2GaF5A, recYKDCjjLJbzcJTM, recLVPL... \n", + "rec0qKtbrBvE1AyRe [receMU82jZycJkGFe, recwhLFXaVN5DcqQ1, recXbUF... \n", + "rec0yf9AiAqnwpaIT [recxPm0wCZJj0jtR0, recyeyK9Brn5UV85M, recHjg7... \n", + "rec1gD38VBhjtMssT [recT2TIZ0r3FHdCwQ, recgcfRSpfLffxTDf, recSF6B... \n", + "\n", + " Provider Assessments Details Website Contracts Held \n", + "rec0ZHctuUYh5wtLS [recIUkhYnikNkX12h] NaN NaN NaN \n", + "rec0dtZWydv7z5afX [recp38jhkZVctheDK] NaN NaN NaN \n", + "rec0qKtbrBvE1AyRe [recJMNAE1xFtv9B60] NaN NaN NaN \n", + "rec0yf9AiAqnwpaIT [rec90UiwBWjFXvdt9] NaN NaN NaN \n", + "rec1gD38VBhjtMssT [reczToe4t1ynsYs5T] NaN NaN NaN \n", + "\n", + "[5 rows x 33 columns]" + ] + }, + "execution_count": 240, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gtfs_providers_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2 - Create Junction Tables\n", + "\n", + "Airtable doesn't have a good way of auto-generating a junction table (a table associating records from two other tables) based on two other tables and a set of conditions. \n", + "\n", + "The following codes createsa \"cartesian product\" (every record to every record) junction table based on exports of two airtable tables and then selecting which association records are relevant (i.e. only checks that apply to GTFS Schedule should be associated with GTFS Schedule).\n", + "\n", + "The resulting delimeted file can be pasted into a spreadsheet which can then be based into Airtable. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Services" + ] + }, + { + "cell_type": "code", + "execution_count": 241, + "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", + "
Check #ServicesDataset Type
138232AC TransitGTFS Alerts
24613AC TransitGTFS Schedule
53010AC TransitGTFS Schedule
8148AC TransitGTFS Schedule
10987AC TransitGTFS Schedule
............
24549the Link-Baldwin Hills ParklandsGTFS Schedule
273814the Link-Baldwin Hills ParklandsGTFS Schedule
302211the Link-Baldwin Hills ParklandsGTFS Schedule
217018the Link-Baldwin Hills ParklandsGTFS TripUpdates
188625the Link-Baldwin Hills ParklandsGTFS VehiclePositions
\n", + "

3124 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " Check # Services Dataset Type\n", + "1382 32 AC Transit GTFS Alerts\n", + "246 13 AC Transit GTFS Schedule\n", + "530 10 AC Transit GTFS Schedule\n", + "814 8 AC Transit GTFS Schedule\n", + "1098 7 AC Transit GTFS Schedule\n", + "... ... ... ...\n", + "2454 9 the Link-Baldwin Hills Parklands GTFS Schedule\n", + "2738 14 the Link-Baldwin Hills Parklands GTFS Schedule\n", + "3022 11 the Link-Baldwin Hills Parklands GTFS Schedule\n", + "2170 18 the Link-Baldwin Hills Parklands GTFS TripUpdates\n", + "1886 25 the Link-Baldwin Hills Parklands GTFS VehiclePositions\n", + "\n", + "[3124 rows x 3 columns]" + ] + }, + "execution_count": 241, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "services_df = services_df.rename(columns={\"Name\":\"Services\"})\n", + "\n", + "service_checks = [\n", + " \"Service within GTFS Schedule Dataset\",\n", + " \"Service within TripUpdates Dataset\",\n", + " \"Service within VehiclePositions Dataset\",\n", + " \"Service within Alerts Dataset\"\n", + "]\n", + "\n", + "service_checks_df = gtfs_checks_df.loc[gtfs_checks_df[\"Scope\"].isin(service_checks),[\"Check #\",\"Scope\"]]\n", + "\n", + "# cartesian product of service checks and services\n", + "service_checks_cross_df = service_checks_df.merge(services_df[\"Services\"], how='cross')\n", + "service_checks_cross_df = service_checks_cross_df.sort_values([\"Services\",\"Scope\"])\n", + "\n", + "scope_data_mapping = {\n", + " \"Service within GTFS Schedule Dataset\":\"GTFS Schedule\",\n", + " \"Service within TripUpdates Dataset\":\"GTFS TripUpdates\",\n", + " \"Service within VehiclePositions Dataset\":\"GTFS VehiclePositions\",\n", + " \"Service within Alerts Dataset\":\"GTFS Alerts\",\n", + "}\n", + "\n", + "service_checks_cross_df[\"Dataset Type\"] = service_checks_cross_df[\"Scope\"].map(scope_data_mapping)\n", + "\n", + "service_checks_cross_df = service_checks_cross_df.drop(columns=[\"Scope\"])\n", + "\n", + "service_checks_cross_df[\"Dataset Type\"].value_counts()\n", + "service_checks_cross_df\n" + ] + }, + { + "cell_type": "code", + "execution_count": 242, + "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", + "
gtfs-service recordDataset TypeGTFS DatasetServices
rec05rHUgCVFqsXgNTulare Intermodal Express – Tulare AlertsGTFS AlertsTulare AlertsTulare Intermodal Express
rec09fVK7ls8fl5spMonterey-Salinas Transit – Monterey Salinas Tr...GTFS TripUpdatesMonterey Salinas TripUpdatesMonterey-Salinas Transit
rec0WcjVurdKkHx7SHealdsburg Shuttle – Bay Area 511 TripUpdatesGTFS TripUpdatesBay Area 511 TripUpdatesHealdsburg Shuttle
rec0XvgWtnmoUl8LzGlenn Ride – Glenn ScheduleGTFS ScheduleGlenn ScheduleGlenn Ride
rec0YWNONFHEO0pUlValley Express – VCTC AlertsGTFS AlertsVCTC AlertsValley Express
...............
reczSG6bO6il6QMLZHealdsburg Shuttle – Bay Area 511 ScheduleGTFS ScheduleBay Area 511 ScheduleHealdsburg Shuttle
reczZKKwKsVQuU0dFPlacer County Transit – Placer ScheduleGTFS SchedulePlacer SchedulePlacer County Transit
reczf9FxlvLopZybbTaft Area Transit – Taft ScheduleGTFS ScheduleTaft ScheduleTaft Area Transit
recziP7dvY7apKbPBKern Transit – Kern ScheduleGTFS ScheduleKern ScheduleKern Transit
reczmEIm3KnSr2jF3Monterey-Salinas Transit – Monterey Salinas Ve...GTFS VehiclePositionsMonterey Salinas VehiclePositionsMonterey-Salinas Transit
\n", + "

543 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " gtfs-service record \\\n", + "rec05rHUgCVFqsXgN Tulare Intermodal Express – Tulare Alerts \n", + "rec09fVK7ls8fl5sp Monterey-Salinas Transit – Monterey Salinas Tr... \n", + "rec0WcjVurdKkHx7S Healdsburg Shuttle – Bay Area 511 TripUpdates \n", + "rec0XvgWtnmoUl8Lz Glenn Ride – Glenn Schedule \n", + "rec0YWNONFHEO0pUl Valley Express – VCTC Alerts \n", + "... ... \n", + "reczSG6bO6il6QMLZ Healdsburg Shuttle – Bay Area 511 Schedule \n", + "reczZKKwKsVQuU0dF Placer County Transit – Placer Schedule \n", + "reczf9FxlvLopZybb Taft Area Transit – Taft Schedule \n", + "recziP7dvY7apKbPB Kern Transit – Kern Schedule \n", + "reczmEIm3KnSr2jF3 Monterey-Salinas Transit – Monterey Salinas Ve... \n", + "\n", + " Dataset Type GTFS Dataset \\\n", + "rec05rHUgCVFqsXgN GTFS Alerts Tulare Alerts \n", + "rec09fVK7ls8fl5sp GTFS TripUpdates Monterey Salinas TripUpdates \n", + "rec0WcjVurdKkHx7S GTFS TripUpdates Bay Area 511 TripUpdates \n", + "rec0XvgWtnmoUl8Lz GTFS Schedule Glenn Schedule \n", + "rec0YWNONFHEO0pUl GTFS Alerts VCTC Alerts \n", + "... ... ... \n", + "reczSG6bO6il6QMLZ GTFS Schedule Bay Area 511 Schedule \n", + "reczZKKwKsVQuU0dF GTFS Schedule Placer Schedule \n", + "reczf9FxlvLopZybb GTFS Schedule Taft Schedule \n", + "recziP7dvY7apKbPB GTFS Schedule Kern Schedule \n", + "reczmEIm3KnSr2jF3 GTFS VehiclePositions Monterey Salinas VehiclePositions \n", + "\n", + " Services \n", + "rec05rHUgCVFqsXgN Tulare Intermodal Express \n", + "rec09fVK7ls8fl5sp Monterey-Salinas Transit \n", + "rec0WcjVurdKkHx7S Healdsburg Shuttle \n", + "rec0XvgWtnmoUl8Lz Glenn Ride \n", + "rec0YWNONFHEO0pUl Valley Express \n", + "... ... \n", + "reczSG6bO6il6QMLZ Healdsburg Shuttle \n", + "reczZKKwKsVQuU0dF Placer County Transit \n", + "reczf9FxlvLopZybb Taft Area Transit \n", + "recziP7dvY7apKbPB Kern Transit \n", + "reczmEIm3KnSr2jF3 Monterey-Salinas Transit \n", + "\n", + "[543 rows x 4 columns]" + ] + }, + "execution_count": 242, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "services_gtfs_df = gtfs_services_df[[\"Name\",\"Dataset Type\",\"GTFS Dataset\",\"Services\"]].rename(columns={\"Name\":\"gtfs-service record\"})\n", + "\n", + "# make services a list if it isn't already\n", + "services_gtfs_df[\"Services\"]=services_gtfs_df[\"Services\"].apply(lambda x: x.split(\",\"))\n", + "\n", + "# if dataset type is a list, then take first value\n", + "services_gtfs_df[\"Dataset Type\"]=services_gtfs_df[\"Dataset Type\"].apply(lambda x: x[0])\n", + "\n", + "all_services_gtfs_df = services_gtfs_df.explode(\"Services\")\n", + "all_services_gtfs_df[\"Services\"]=all_services_gtfs_df[\"Services\"].apply(lambda x: x.strip())\n", + "\n", + "all_services_gtfs_df" + ] + }, + { + "cell_type": "code", + "execution_count": 252, + "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", + "
Check #gtfs-service recordServices
032NaNAC Transit
113AC Transit – Bay Area 511 ScheduleAC Transit
210AC Transit – Bay Area 511 ScheduleAC Transit
38AC Transit – Bay Area 511 ScheduleAC Transit
47AC Transit – Bay Area 511 ScheduleAC Transit
............
31359the Link-Athens, the Link Florence-Firestone/W...the Link-Baldwin Hills Parklands
313614the Link-Athens, the Link Florence-Firestone/W...the Link-Baldwin Hills Parklands
313711the Link-Athens, the Link Florence-Firestone/W...the Link-Baldwin Hills Parklands
313818NaNthe Link-Baldwin Hills Parklands
313925NaNthe Link-Baldwin Hills Parklands
\n", + "

3140 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " Check # gtfs-service record \\\n", + "0 32 NaN \n", + "1 13 AC Transit – Bay Area 511 Schedule \n", + "2 10 AC Transit – Bay Area 511 Schedule \n", + "3 8 AC Transit – Bay Area 511 Schedule \n", + "4 7 AC Transit – Bay Area 511 Schedule \n", + "... ... ... \n", + "3135 9 the Link-Athens, the Link Florence-Firestone/W... \n", + "3136 14 the Link-Athens, the Link Florence-Firestone/W... \n", + "3137 11 the Link-Athens, the Link Florence-Firestone/W... \n", + "3138 18 NaN \n", + "3139 25 NaN \n", + "\n", + " Services \n", + "0 AC Transit \n", + "1 AC Transit \n", + "2 AC Transit \n", + "3 AC Transit \n", + "4 AC Transit \n", + "... ... \n", + "3135 the Link-Baldwin Hills Parklands \n", + "3136 the Link-Baldwin Hills Parklands \n", + "3137 the Link-Baldwin Hills Parklands \n", + "3138 the Link-Baldwin Hills Parklands \n", + "3139 the Link-Baldwin Hills Parklands \n", + "\n", + "[3140 rows x 3 columns]" + ] + }, + "execution_count": 252, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# attach information about gtfs datasets for each service to evaluate\n", + "\n", + "service_checkdata_df = service_checks_cross_df.merge(\n", + " all_services_gtfs_df,\n", + " on=[\"Services\",\"Dataset Type\"],how=\"left\")\n", + "\n", + "\n", + "keep_cols = [\"Check #\",\"gtfs-service record\",\"Services\"]\n", + "keep_service_checkdata_df = service_checkdata_df[keep_cols] #.drop_duplicates()\n", + "keep_service_checkdata_df.to_csv(\"service_cross.csv\",index=False,sep=\"|\")\n", + "#service_checkdata_df.loc[service_checkdata_df[\"gtfs-service record\"].isna()]\n", + "keep_service_checkdata_df\n", + "#service_checkdata_df" + ] + }, + { + "cell_type": "code", + "execution_count": 245, + "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", + "
Check #ServicesDataset Typegtfs-service recordGTFS Dataset
032AC TransitGTFS AlertsNaNNaN
113AC TransitGTFS ScheduleAC Transit – Bay Area 511 ScheduleBay Area 511 Schedule
210AC TransitGTFS ScheduleAC Transit – Bay Area 511 ScheduleBay Area 511 Schedule
38AC TransitGTFS ScheduleAC Transit – Bay Area 511 ScheduleBay Area 511 Schedule
47AC TransitGTFS ScheduleAC Transit – Bay Area 511 ScheduleBay Area 511 Schedule
\n", + "
" + ], + "text/plain": [ + " Check # Services Dataset Type gtfs-service record \\\n", + "0 32 AC Transit GTFS Alerts NaN \n", + "1 13 AC Transit GTFS Schedule AC Transit – Bay Area 511 Schedule \n", + "2 10 AC Transit GTFS Schedule AC Transit – Bay Area 511 Schedule \n", + "3 8 AC Transit GTFS Schedule AC Transit – Bay Area 511 Schedule \n", + "4 7 AC Transit GTFS Schedule AC Transit – Bay Area 511 Schedule \n", + "\n", + " GTFS Dataset \n", + "0 NaN \n", + "1 Bay Area 511 Schedule \n", + "2 Bay Area 511 Schedule \n", + "3 Bay Area 511 Schedule \n", + "4 Bay Area 511 Schedule " + ] + }, + "execution_count": 245, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "service_checkdata_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Datasets" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "dataset_checks_df = pd.read_csv(os.path.join(\"data\",\"gtfs checks-Dataset Scope.csv\"), usecols = [\"Check #\",\"Scope\"])\n", + "datasets_df = pd.read_csv(os.path.join(\"data\",\"Assessed Feeds.csv\"), usecols = [\"gtfs_dataset_id\",\"Data\"])\n", + "\n", + "# cartesian product\n", + "dataset_cross_df = datasets_df.merge(dataset_checks_df, how='cross')\n", + "\n", + "# select applicable checks\n", + "dataset_cross_df[\"data_match\"]=dataset_cross_df[\"Data\"]+\" Dataset\"\n", + "dataset_cross_df[\"scope_match\"] = dataset_cross_df[\"Scope\"]\n", + "dataset_cross_df.loc[\n", + " dataset_cross_df[\"Scope\"] != \"GTFS Schedule Dataset\", \n", + " \"scope_match\"\n", + "]=\"GTFS \" + dataset_cross_df[\"Scope\"]\n", + "dataset_checkdata_df = dataset_cross_df[dataset_cross_df[\"data_match\"]==dataset_cross_df[\"scope_match\"]]\n", + "\n", + "#checks \"GTFS Schedule Dataset\"\n", + "#dataset \"GTFS Schedule\"\n", + "\n", + "dataset_checkdata_df[[\"gtfs_dataset_id\",\"Check #\"]].to_csv(\"data_cross.csv\",index=False,sep=\"|\")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "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", + "
gtfs_dataset_idDataCheck #Scopedata_matchscope_match
0Get Around Town Express ScheduleGTFS Schedule1GTFS Schedule DatasetGTFS Schedule DatasetGTFS Schedule Dataset
1Get Around Town Express ScheduleGTFS Schedule2GTFS Schedule DatasetGTFS Schedule DatasetGTFS Schedule Dataset
2Get Around Town Express ScheduleGTFS Schedule3GTFS Schedule DatasetGTFS Schedule DatasetGTFS Schedule Dataset
3Get Around Town Express ScheduleGTFS Schedule4GTFS Schedule DatasetGTFS Schedule DatasetGTFS Schedule Dataset
4Get Around Town Express ScheduleGTFS Schedule5GTFS Schedule DatasetGTFS Schedule DatasetGTFS Schedule Dataset
\n", + "
" + ], + "text/plain": [ + " gtfs_dataset_id Data Check # \\\n", + "0 Get Around Town Express Schedule GTFS Schedule 1 \n", + "1 Get Around Town Express Schedule GTFS Schedule 2 \n", + "2 Get Around Town Express Schedule GTFS Schedule 3 \n", + "3 Get Around Town Express Schedule GTFS Schedule 4 \n", + "4 Get Around Town Express Schedule GTFS Schedule 5 \n", + "\n", + " Scope data_match scope_match \n", + "0 GTFS Schedule Dataset GTFS Schedule Dataset GTFS Schedule Dataset \n", + "1 GTFS Schedule Dataset GTFS Schedule Dataset GTFS Schedule Dataset \n", + "2 GTFS Schedule Dataset GTFS Schedule Dataset GTFS Schedule Dataset \n", + "3 GTFS Schedule Dataset GTFS Schedule Dataset GTFS Schedule Dataset \n", + "4 GTFS Schedule Dataset GTFS Schedule Dataset GTFS Schedule Dataset " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset_checkdata_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "provider_checks_df = pd.read_csv(os.path.join(\"data\",\"provider_checks.csv\"))\n", + "providers_df = pd.read_csv(os.path.join(\"data\",\"Assessed Transit Providers-Grid view.csv\"), usecols = [\"Name\"])\n", + "\n", + "# cartesian product\n", + "providers_cross_df = providers_df.merge(provider_checks_df, how='cross')\n", + "\n", + "providers_cross_df.to_csv(\"provider_cross.csv\",index=False,sep=\"|\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "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", + "
Namechecks
0Alameda-Contra Costa Transit District37
1Alameda-Contra Costa Transit District39
2Alameda-Contra Costa Transit District40
3Amador Regional Transit System37
4Amador Regional Transit System39
\n", + "
" + ], + "text/plain": [ + " Name checks\n", + "0 Alameda-Contra Costa Transit District 37\n", + "1 Alameda-Contra Costa Transit District 39\n", + "2 Alameda-Contra Costa Transit District 40\n", + "3 Amador Regional Transit System 37\n", + "4 Amador Regional Transit System 39" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "providers_cross_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49" + }, + "kernelspec": { + "display_name": "Python 3.9.4 64-bit", + "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.7.10" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/transit_riders/hh_df_3way_ct.png b/transit_riders/hh_df_3way_ct.png new file mode 100644 index 0000000000000000000000000000000000000000..f46e8209d3341e4491b2aced3ea8d631fb4b65e8 GIT binary patch literal 86301 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\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
HOUSEIDHHSIZEHHVEHCNTHHFAMINCBUSTRAINPLACEHHSTATEWTHHFIN
6300000412211445CA788.614240
930000085129553CA190.669041
1130000094114552CA163.382292
193000015512-7542CA120.772451
2330000227226-9-92CA62.015790
\n", + "" + ], + "text/plain": [ + " HOUSEID HHSIZE HHVEHCNT HHFAMINC BUS TRAIN PLACE HHSTATE \\\n", + "6 30000041 2 2 11 4 4 5 CA \n", + "9 30000085 1 2 9 5 5 3 CA \n", + "11 30000094 1 1 4 5 5 2 CA \n", + "19 30000155 1 2 -7 5 4 2 CA \n", + "23 30000227 2 2 6 -9 -9 2 CA \n", + "\n", + " WTHHFIN \n", + "6 788.614240 \n", + "9 190.669041 \n", + "11 163.382292 \n", + "19 120.772451 \n", + "23 62.015790 " + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cols_to_keep = [\n", + " 'HOUSEID',\n", + " 'HHSIZE',\n", + " 'HHVEHCNT',\n", + " 'HHFAMINC',\n", + " 'BUS',\n", + " 'TRAIN',\n", + " 'WTHHFIN',\n", + " 'PLACE',\n", + " 'HHSTATE',\n", + "]\n", + "\n", + "hh_all_df = pd.read_csv(\n", + " os.path.join(NHTS_DATA_DIR, 'csv','hhpub.csv'),\n", + " usecols=cols_to_keep,\n", + ")\n", + "hh_all_df = hh_all_df[hh_all_df['HHSTATE'] == 'CA']\n", + "\n", + "hh_all_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Analyze NHTS Data\n", + "\n", + "#### Recode Variables" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": {}, + "outputs": [], + "source": [ + "def is_transit_user(x):\n", + " _FREQ_TRANSIT = [1,2,3]\n", + " _INFREQ_TRANSIT = [4,5]\n", + "\n", + " # UNKOWN\n", + " if int(x['BUS']) < 0 or int(x['TRAIN']) < 0:\n", + " return \"Unknown\"\n", + " # NO\n", + " if int(x['BUS']) == 5 and int(x['TRAIN']) == 5:\n", + " return \"No Transit Use\"\n", + " # YES\n", + " if int(x['BUS']) in _FREQ_TRANSIT or int(x['TRAIN']) in _FREQ_TRANSIT:\n", + " return \"Frequent Transit\"\n", + " if int(x['BUS']) in _FREQ_TRANSIT+_INFREQ_TRANSIT or int(x['TRAIN']) in _FREQ_TRANSIT+_INFREQ_TRANSIT:\n", + " return \"Infrequent Transit\"\n", + " else:\n", + " logging.debug(f\"Unable to process row for is_transit_user:\\n {x}\")\n", + " raise Exception(f'Unable to determine if transit user for row: {x}')\n", + "\n", + "def has_hh_veh(x):\n", + " # UNKOWN\n", + " if int(x['HHVEHCNT']) < 0:\n", + " return \"Unknown\"\n", + " # NO\n", + " if int(x['HHVEHCNT']) == 0:\n", + " return \"No Vehicle\"\n", + " # YES\n", + " if int(x['HHVEHCNT']) > 0:\n", + " return \"Has vehicle\"\n", + " else:\n", + " logging.debug(f\"Unable to process row for has_hh_veh:\\n {x}\")\n", + " raise Exception(f'Unable to determine if household has vehicles for row: {x}')\n", + "\n", + "def travel_burden_hh(x):\n", + " BURDEN = [1,2]\n", + " NOT_BURDEN = [3,4,5]\n", + " # UNKOWN\n", + " if int(x['PLACE']) < 0:\n", + " return \"Unknown\"\n", + " # NO\n", + " if int(x['PLACE']) in NOT_BURDEN:\n", + " return \"Not Burdened\"\n", + " # YES\n", + " if int(x['PLACE']) in BURDEN:\n", + " return \"Burdened\"\n", + " else:\n", + " logging.debug(f\"Unable to process row for travel_burden_hh:\\n {x}\")\n", + " raise Exception(f'Unable to determine if household has financial burden to travel for row: {x}')\n", + " \n", + "def filter_recs(x):\n", + " FILTER_COLS = ['transit_hh','vehicle_hh','burden_hh']\n", + " FILTER_VALUE = \"Unknown\"\n", + " if FILTER_VALUE in [x[c] for c in FILTER_COLS]:\n", + " return -1\n", + " return 1" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DEBUG:root:Excluded records:\n", + " transit_hh vehicle_hh burden_hh\n", + "23 Unknown Has vehicle Burdened\n", + "106 Unknown Has vehicle Unknown\n", + "141 Unknown Has vehicle Not Burdened\n", + "211 Unknown Has vehicle Unknown\n", + "221 Unknown Has vehicle Unknown\n", + "/var/folders/60/xd2kny110pxfz3ln611jq7hm0000gn/T/ipykernel_8795/143102953.py:12: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " hh_df[c]= pd.Categorical(\n", + "DEBUG:root:Cleaned records:\n", + " transit_hh vehicle_hh burden_hh\n", + "6 Infrequent Transit Has vehicle Not Burdened\n", + "9 No Transit Use Has vehicle Not Burdened\n", + "11 No Transit Use Has vehicle Burdened\n", + "19 Infrequent Transit Has vehicle Burdened\n", + "37 No Transit Use Has vehicle Burdened\n", + "INFO:root:Cleaned records filtered to exclude 2927(11.2%) of 26099 records\n" + ] + }, + { + "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", + "
HOUSEIDHHSIZEHHVEHCNTHHFAMINCBUSTRAINPLACEHHSTATEWTHHFINtransit_hhvehicle_hhburden_hhkeep
6300000412211445CA788.614240Infrequent TransitHas vehicleNot Burdened1
930000085129553CA190.669041No Transit UseHas vehicleNot Burdened1
1130000094114552CA163.382292No Transit UseHas vehicleBurdened1
193000015512-7542CA120.772451Infrequent TransitHas vehicleBurdened1
2330000227226-9-92CA62.015790UnknownHas vehicleBurdened-1
..........................................
12967940794135235553CA63.217848No Transit UseHas vehicleNot Burdened1
12968240794179116552CA377.126813No Transit UseHas vehicleBurdened1
12968540794233238553CA33.421852No Transit UseHas vehicleNot Burdened1
12969140794291119555CA41.869638No Transit UseHas vehicleNot Burdened1
129693407942942210554CA207.672765No Transit UseHas vehicleNot Burdened1
\n", + "

26099 rows × 13 columns

\n", + "
" + ], + "text/plain": [ + " HOUSEID HHSIZE HHVEHCNT HHFAMINC BUS TRAIN PLACE HHSTATE \\\n", + "6 30000041 2 2 11 4 4 5 CA \n", + "9 30000085 1 2 9 5 5 3 CA \n", + "11 30000094 1 1 4 5 5 2 CA \n", + "19 30000155 1 2 -7 5 4 2 CA \n", + "23 30000227 2 2 6 -9 -9 2 CA \n", + "... ... ... ... ... ... ... ... ... \n", + "129679 40794135 2 3 5 5 5 3 CA \n", + "129682 40794179 1 1 6 5 5 2 CA \n", + "129685 40794233 2 3 8 5 5 3 CA \n", + "129691 40794291 1 1 9 5 5 5 CA \n", + "129693 40794294 2 2 10 5 5 4 CA \n", + "\n", + " WTHHFIN transit_hh vehicle_hh burden_hh keep \n", + "6 788.614240 Infrequent Transit Has vehicle Not Burdened 1 \n", + "9 190.669041 No Transit Use Has vehicle Not Burdened 1 \n", + "11 163.382292 No Transit Use Has vehicle Burdened 1 \n", + "19 120.772451 Infrequent Transit Has vehicle Burdened 1 \n", + "23 62.015790 Unknown Has vehicle Burdened -1 \n", + "... ... ... ... ... ... \n", + "129679 63.217848 No Transit Use Has vehicle Not Burdened 1 \n", + "129682 377.126813 No Transit Use Has vehicle Burdened 1 \n", + "129685 33.421852 No Transit Use Has vehicle Not Burdened 1 \n", + "129691 41.869638 No Transit Use Has vehicle Not Burdened 1 \n", + "129693 207.672765 No Transit Use Has vehicle Not Burdened 1 \n", + "\n", + "[26099 rows x 13 columns]" + ] + }, + "execution_count": 131, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "analysis_cols = ['transit_hh','vehicle_hh','burden_hh']\n", + "hh_all_df['transit_hh'] = hh_all_df.apply(lambda x: is_transit_user(x), axis=1)\n", + "hh_all_df['vehicle_hh'] = hh_all_df.apply(lambda x: has_hh_veh(x), axis=1)\n", + "hh_all_df['burden_hh'] = hh_all_df.apply(lambda x: travel_burden_hh(x), axis=1)\n", + "hh_all_df['keep'] = hh_all_df.apply(lambda x: filter_recs(x) ,axis=1)\n", + "\n", + "logging.debug(f\"Excluded records:\\n{hh_all_df[hh_all_df['keep']<0][analysis_cols].head()}\")\n", + "\n", + "hh_df = hh_all_df[hh_all_df['keep']>0]\n", + "\n", + "for c in analysis_cols:\n", + " hh_df[c]= pd.Categorical(\n", + " hh_df[c],\n", + " ordered = True,\n", + " )\n", + " \n", + "logging.debug(f\"Cleaned records:\\n{hh_df[analysis_cols].head()}\")\n", + "\n", + "recs_exc = len(hh_all_df)-len(hh_df)\n", + "logging.info(f\"Cleaned records filtered to exclude {recs_exc}({round(100*recs_exc/len(hh_all_df),1)}%) of {len(hh_all_df)} records\")\n", + "hh_all_df\n" + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "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", + "
 HHold Transit Use in California (Source: NHTS 2017)Frequent TransitInfrequent TransitNo Transit Use
HHold Transportation BurdenHHold Vehicles   
BurdenedHas vehicle17.7%31.0%51.3%
No Vehicle76.1%9.2%14.7%
Not BurdenedHas vehicle15.3%33.3%51.4%
No Vehicle77.0%7.8%15.3%
All20.3%30.7%49.0%
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 194, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hh_df_3way_ct = pd.crosstab(\n", + " [hh_df['burden_hh'],hh_df['vehicle_hh']],\n", + " hh_df['transit_hh'], \n", + " values = hh_df['WTHHFIN'], \n", + " aggfunc = sum,\n", + " normalize='index',\n", + " margins = True,\n", + " rownames=['HHold Transportation Burden','HHold Vehicles'], \n", + " colnames=['HHold Transit Use in California (Source: NHTS 2017)'],\n", + ")\n", + "s_hh_df_3way_ct=hh_df_3way_ct.style\\\n", + " .background_gradient()\\\n", + " .format(\"{:.1%}\")\n", + " \n", + "s_hh_df_3way_ct" + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "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", + "
HHold Transit Use in California (Source: NHTS 2017)Frequent TransitInfrequent TransitNo Transit Use
HHold Vehicles   
Has vehicle16.3%32.3%51.4%
No Vehicle76.5%8.5%15.0%
All20.3%30.7%49.0%
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 195, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hh_df_ct = pd.crosstab(\n", + " hh_df['vehicle_hh'],\n", + " hh_df['transit_hh'], \n", + " values = hh_df['WTHHFIN'], \n", + " aggfunc = sum,\n", + " normalize='index',\n", + " margins = True,\n", + " rownames=['HHold Vehicles'], \n", + " colnames=['HHold Transit Use in California (Source: NHTS 2017)'],\n", + ")\n", + "s_hh_df_ct=hh_df_ct.style\\\n", + " .background_gradient()\\\n", + " .format(\"{:.1%}\")\n", + "\n", + "s_hh_df_ct" + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "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", + "
HHold VehiclesHas vehicleNo Vehicle
HHold Transit Use in California (Source: NHTS 2017)  
Frequent Transit75.2%24.8%
Infrequent Transit98.2%1.8%
No Transit Use98.0%2.0%
All93.4%6.6%
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 196, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hh_df_ct_r = pd.crosstab(\n", + " hh_df['transit_hh'], \n", + " hh_df['vehicle_hh'],\n", + " values = hh_df['WTHHFIN'], \n", + " aggfunc = sum,\n", + " normalize='index',\n", + " margins = True,\n", + " colnames=['HHold Vehicles'], \n", + " rownames=['HHold Transit Use in California (Source: NHTS 2017)'],\n", + ")\n", + "s_hh_df_ct_r=hh_df_ct_r.style\\\n", + " .background_gradient()\\\n", + " .format(\"{:.1%}\")\n", + "\n", + "s_hh_df_ct_r" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Export Results" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "metadata": {}, + "outputs": [], + "source": [ + "# Export to markdown\n", + "\n", + "try: \n", + " import tabulate\n", + "except:\n", + " !pip install tabulate\n", + " \n", + "with open(\"results.md\",\"w\") as f:\n", + " f.write(\"\\n\\n**Which transit-using households have vehicles?**\\n\\n\")\n", + " f.write(hh_df_ct.to_markdown(floatfmt=\".1%\"))\n", + " f.write(\"\\n\\n**Which vehicle-owning households ride transit?**\\n\\n\")\n", + " f.write(hh_df_ct_r.to_markdown(floatfmt=\".1%\"))\n", + " f.write(\"\\n\\n**Does it vary among households who are financially burdened by transportation?**\\n\\n\")\n", + " f.write(hh_df_3way_ct.to_markdown(floatfmt=\".1%\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 209, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/elizabeth/opt/miniconda3/envs/calitp/lib/python3.10/site-packages/dataframe_image/_pandas_accessor.py:69: FutureWarning: this method is deprecated in favour of `Styler.to_html()`\n", + " html = '
' + obj.render() + '
'\n", + "[0324/132220.507694:INFO:headless_shell.cc(659)] Written to file /var/folders/60/xd2kny110pxfz3ln611jq7hm0000gn/T/tmp2anbgsyh/temp.png.\n", + "DEBUG:PIL.PngImagePlugin:STREAM b'IHDR' 16 13\n", + "DEBUG:PIL.PngImagePlugin:STREAM b'iCCP' 41 295\n", + "DEBUG:PIL.PngImagePlugin:iCCP profile name b'Skia'\n", + "DEBUG:PIL.PngImagePlugin:Compression method 0\n", + "DEBUG:PIL.PngImagePlugin:STREAM b'IDAT' 348 8192\n", + "[0324/132222.411945:INFO:headless_shell.cc(659)] Written to file /var/folders/60/xd2kny110pxfz3ln611jq7hm0000gn/T/tmp3rt1v9vm/temp.png.\n", + "DEBUG:PIL.PngImagePlugin:STREAM b'IHDR' 16 13\n", + "DEBUG:PIL.PngImagePlugin:STREAM b'iCCP' 41 295\n", + "DEBUG:PIL.PngImagePlugin:iCCP profile name b'Skia'\n", + "DEBUG:PIL.PngImagePlugin:Compression method 0\n", + "DEBUG:PIL.PngImagePlugin:STREAM b'IDAT' 348 8192\n", + "[0324/132225.100427:INFO:headless_shell.cc(659)] Written to file /var/folders/60/xd2kny110pxfz3ln611jq7hm0000gn/T/tmppj7306m7/temp.png.\n", + "DEBUG:PIL.PngImagePlugin:STREAM b'IHDR' 16 13\n", + "DEBUG:PIL.PngImagePlugin:STREAM b'iCCP' 41 295\n", + "DEBUG:PIL.PngImagePlugin:iCCP profile name b'Skia'\n", + "DEBUG:PIL.PngImagePlugin:Compression method 0\n", + "DEBUG:PIL.PngImagePlugin:STREAM b'IDAT' 348 8192\n" + ] + } + ], + "source": [ + "## Exporting to images\n", + "try:\n", + " import dataframe_image as dfi\n", + "except:\n", + " ! pip install dataframe_image\n", + " import dataframe_image as dfi\n", + "\n", + "dfi.export(s_hh_df_ct,\"hh_df_ct.png\")\n", + "dfi.export(s_hh_df_ct_r,\"hh_df_ct_r.png\")\n", + "dfi.export(s_hh_df_3way_ct,\"hh_df_3way_ct.png\")" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [], + "source": [ + "# Plot Chord Chart\n", + "# Currently getting an error with this >:(\n", + "\n", + "try:\n", + " from chord import Chord\n", + "except:\n", + " ! pip install chord\n", + " from chord import Chord\n", + "\n", + "names=list(hh_df_ct.columns)\n", + "matrix = hh_df_ct.values.tolist()\n", + "ch=Chord(hh_df_ct,names)" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqsAAAKaCAYAAAAZPRD5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAOnUlEQVR4nO3cz2vXBRzH8U23scq5tQ5RkSWKipBJSpcounSpyG4FEXXqFnQK+ivqHHTpDwiJqGvUsQg0IshCKCmNJVuusE39duoHZIZfw8/TL4/HbZ/vDq/jkzcfPtOj0WgKAACKtgw9AAAA/o1YBQAgS6wCAJAlVgEAyBKrAABkzVzpx5c/e+7T6zUE+MuDC98MPYExzU1fHHoCwA3pmd2fHL7cc5dVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCArJmhB/D/++DVj+899cmZxfnFuQvPH33qi6H3AACMy2V1Au0/smvlidcfOTH0DgCAayVWJ9A9D925ftPS/IWhdwAAXCuxCgBAllgFACBLrAIAkCVWAQDI8umqCfTeKx/uPP35Twu/nduYeeuxdw4cenH/9wef27cy9C4AgKslVifQk288enLoDQAA/wevAQAAkCVWAQDI8hoABL3/04H//J/Hbzt+HZZwtTZGW4eeADBRXFYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMgSqwAAZIlVAACyxCoAAFliFQCALLEKAECWWAUAIEusAgCQNXOlHz96+/D12gH8zf5nvxx6AgAkuKwCAJB1xcsqN6bVE8e2//DxuzumRqOppX2HVu546InTQ28CABiHy+qEGV26OPXDR0d37Hz6pa/2vvDaF2tfH1/+9cfv5ofeBQAwDrE6YdZPfXPL7MLyb/PLt29smZkdLe6+7+zaiWNLQ+8CABiHWJ0wm+dW52a3LW788ffstqWNzfWf54bcBAAwLrE6cUb/eDI9fZmHAAA3ALE6YWYXbt3YXF/785K6ub46N3PL9s0hNwEAjEusTphtd+36ZfPc2fnzZ8/MXbqwOb329efLi7vvXx16FwDAOHy6asJMb906dcfDR749efTNPVOjS1NLex9Yufn2u88PvQsAYBxidQIt7Tm4trTn4NrQOwAArpXXAAAAyBKrAABkTY9GvmoEAECTyyoAAFliFQCALLEKAECWWAUAIEusAgCQJVYBAMj6HVc/g0/PmESWAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot Tree Map\n", + "# This is really ugly >:(\n", + "try:\n", + " import squarify \n", + "except:\n", + " ! pip install squarify \n", + " import squarify \n", + "\n", + "matrix = hh_df_ct.values.tolist()\n", + "values = [item for sublist in matrix for item in sublist]\n", + "\n", + "names=list(hh_df_ct.columns)\n", + "\n", + "fig, ax = plt.subplots(1, figsize = (12,12))\n", + "squarify.plot(sizes=values, \n", + " label=names, \n", + " alpha=.8 )\n", + "plt.axis('off')\n", + "plt.show()" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49" + }, + "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.10.2" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}