From 3e9de6ebdedf3ed8d0eca000d3e2739f5e1367e7 Mon Sep 17 00:00:00 2001 From: Prashanth R Date: Wed, 9 Mar 2022 18:27:04 -0800 Subject: [PATCH 01/13] Created using Colaboratory --- ...ing_Superfund_data_from_Data_Commons.ipynb | 1415 +++++++++++++++++ 1 file changed, 1415 insertions(+) create mode 100644 notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb diff --git a/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb b/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb new file mode 100644 index 00000000..3aaf5a6c --- /dev/null +++ b/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb @@ -0,0 +1,1415 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Accessing Superfund data from Data Commons", + "provenance": [], + "collapsed_sections": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Copyright 2022 Google LLC.\n", + "SPDX-License-Identifier: Apache-2.0\n", + "\n", + "**Notebook Version** - 1.0.0" + ], + "metadata": { + "id": "fiV51ZPWpxwh" + } + }, + { + "cell_type": "markdown", + "source": [ + "# Accessing Superfund data from Data Commons\n", + "\n", + "[Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) are US locations contaminated with hazardous substances that the [EPA](https://epa.gov/) seeks to investigate and clean up. Data Commons (DC) includes data about Superfund sites, and this notebook illustrates how that can be accessed using the [DC python APIs](https://docs.datacommons.org/api/python/) with [Pandas extension](https://docs.datacommons.org/api/pandas/).\n", + "\n", + "An extended version of this notebook that does some analysis with the extracted Superfund data can be found [here](https://colab.sandbox.google.com/drive/1KwzzOQCsWEJ4dB1Emc5TIh-s5WdYMGFU)." + ], + "metadata": { + "id": "xIaPIPE7aYSv" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Set-up\n", + "\n", + "Import the DC python APIs, as follows:" + ], + "metadata": { + "id": "Ksgk_NrZq_64" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "bHDDJ2O7ZnVi", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "e629ed68-ea13-48bc-c610-11437e0aa68a" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[K |████████████████████████████████| 45 kB 971 kB/s \n", + "\u001b[K |████████████████████████████████| 46 kB 2.2 MB/s \n", + "\u001b[?25h" + ] + } + ], + "source": [ + "!pip install datacommons_pandas datacommons --upgrade --quiet\n", + "\n", + "# Import Data Commons libraries\n", + "import datacommons as dc\n", + "import datacommons_pandas as dcpd" + ] + }, + { + "cell_type": "markdown", + "source": [ + "## List Superfund sites\n", + "\n", + "The individual sites are instances of `SuperfundSite`, and are listed in the corresponding [Graph Browser page](https://datacommons.org/browser/SuperfundSite).\n", + "\n", + "To programmatically list all Superfund sites, use the `get_places_in` API as follows:" + ], + "metadata": { + "id": "mNVXQS0arQFS" + } + }, + { + "cell_type": "code", + "source": [ + "# Gets all Superfund sites within USA\n", + "place_dcid = 'country/USA' # DCID of USA\n", + "site_list = dc.get_places_in([place_dcid], 'SuperfundSite')[place_dcid]\n", + "\n", + "site_list[:5]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "l-4CtbWNrsNq", + "outputId": "5a703c6e-ad68-489f-d152-4ee6789ab447" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['epaSuperfundSiteId/AK0001897602',\n", + " 'epaSuperfundSiteId/AK4170024323',\n", + " 'epaSuperfundSiteId/AL3210020027',\n", + " 'epaSuperfundSiteId/AL6210020008',\n", + " 'epaSuperfundSiteId/AL7210020742']" + ] + }, + "metadata": {}, + "execution_count": 2 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "> In place of USA, you can specify any US state or county. You can use [place search](https://datacommons.org/s) to find the corresponding DCID, as illustrated [here](https://user-images.githubusercontent.com/4375037/157551351-71b83f85-1b35-414b-aa3f-d585826140e0.png).\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "metadata": { + "id": "gX3mc3lNryNY" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Get statistics\n", + "\n", + "Superfund sites have associated statistical variables like [CrsiScore_Superfundsite](https://datacommons.org/tools/statvar#CrsiScore_SuperfundSite), [NaturalHazardRiskScore_Superfundsite](https://datacommons.org/tools/statvar#NaturalHazardExposureScore_SuperfundSite), etc. To see the list of all variables, you can visit a Superfund site's Graph Browser page ([example](https://datacommons.org/browser/epaSuperfundSiteId/WY5571924179)).\n", + "\n", + "To get stats for all variables for all sites, use the `build_multivariate_dataframe` API, as follows:" + ], + "metadata": { + "id": "lMCO-dBctZ-w" + } + }, + { + "cell_type": "code", + "source": [ + "# Gets stats for the listed variables from all sites in a Pandas table\n", + "site_df = dcpd.build_multivariate_dataframe(site_list,\n", + " ['CrsiScore_SuperfundSite',\n", + " 'NaturalHazardExposureScore_SuperfundSite',\n", + " 'NaturalHazardRiskScore_SuperfundSite',\n", + " 'NaturalHazardRiskScore_SuperfundSite_CoastalFloodEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_DroughtEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_FloodEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HailEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HighWindEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HurricaneEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_LandslideEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_TornadoEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_WildfireEvent'])\n", + "\n", + "site_df.head()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 302 + }, + "id": "Mv_pUiyB8EgF", + "outputId": "60a81dab-17cf-4ab8-afea-6e126bb1a9e3" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEventNaturalHazardRiskScore_SuperfundSite_FloodEventNaturalHazardRiskScore_SuperfundSite_HurricaneEventNaturalHazardRiskScore_SuperfundSite_TornadoEventCrsiScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSite_DroughtEventNaturalHazardRiskScore_SuperfundSite_EarthquakeEventNaturalHazardRiskScore_SuperfundSite_WildfireEventNaturalHazardExposureScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSite_HighWindEventNaturalHazardRiskScore_SuperfundSite_CoastalFloodEventNaturalHazardRiskScore_SuperfundSite_HailEventNaturalHazardRiskScore_SuperfundSite_LandslideEventNaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent
place
epaSuperfundSiteId/AK000189760236.09125.8191.01.00055.4556601.7511.01.01.0005.8701.0001.01.0001.00075.696
epaSuperfundSiteId/AK417002432326.92733.5881.01.00028.1425583.9441.01.06.0392.0641.0001.01.0001.00037.392
epaSuperfundSiteId/AL321002002736.29745.1151.099.0000.32724666.94599.01.099.00082.36933.9461.032.94725.14773.927
epaSuperfundSiteId/AL621002000833.49946.4881.037.4370.60090230.33299.01.069.07064.97946.8651.032.11114.99472.603
epaSuperfundSiteId/AL721002074241.49650.8911.099.0000.61015880.38399.01.01.00092.15599.0001.091.63421.54065.770
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 36.091 \n", + "epaSuperfundSiteId/AK4170024323 26.927 \n", + "epaSuperfundSiteId/AL3210020027 36.297 \n", + "epaSuperfundSiteId/AL6210020008 33.499 \n", + "epaSuperfundSiteId/AL7210020742 41.496 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_FloodEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 25.819 \n", + "epaSuperfundSiteId/AK4170024323 33.588 \n", + "epaSuperfundSiteId/AL3210020027 45.115 \n", + "epaSuperfundSiteId/AL6210020008 46.488 \n", + "epaSuperfundSiteId/AL7210020742 50.891 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_HurricaneEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.0 \n", + "epaSuperfundSiteId/AK4170024323 1.0 \n", + "epaSuperfundSiteId/AL3210020027 1.0 \n", + "epaSuperfundSiteId/AL6210020008 1.0 \n", + "epaSuperfundSiteId/AL7210020742 1.0 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_TornadoEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 1.000 \n", + "epaSuperfundSiteId/AL3210020027 99.000 \n", + "epaSuperfundSiteId/AL6210020008 37.437 \n", + "epaSuperfundSiteId/AL7210020742 99.000 \n", + "\n", + " CrsiScore_SuperfundSite \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 55.455660 \n", + "epaSuperfundSiteId/AK4170024323 28.142558 \n", + "epaSuperfundSiteId/AL3210020027 0.327246 \n", + "epaSuperfundSiteId/AL6210020008 0.600902 \n", + "epaSuperfundSiteId/AL7210020742 0.610158 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.751 \n", + "epaSuperfundSiteId/AK4170024323 3.944 \n", + "epaSuperfundSiteId/AL3210020027 66.945 \n", + "epaSuperfundSiteId/AL6210020008 30.332 \n", + "epaSuperfundSiteId/AL7210020742 80.383 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_DroughtEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.0 \n", + "epaSuperfundSiteId/AK4170024323 1.0 \n", + "epaSuperfundSiteId/AL3210020027 99.0 \n", + "epaSuperfundSiteId/AL6210020008 99.0 \n", + "epaSuperfundSiteId/AL7210020742 99.0 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.0 \n", + "epaSuperfundSiteId/AK4170024323 1.0 \n", + "epaSuperfundSiteId/AL3210020027 1.0 \n", + "epaSuperfundSiteId/AL6210020008 1.0 \n", + "epaSuperfundSiteId/AL7210020742 1.0 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_WildfireEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 6.039 \n", + "epaSuperfundSiteId/AL3210020027 99.000 \n", + "epaSuperfundSiteId/AL6210020008 69.070 \n", + "epaSuperfundSiteId/AL7210020742 1.000 \n", + "\n", + " NaturalHazardExposureScore_SuperfundSite \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 5.870 \n", + "epaSuperfundSiteId/AK4170024323 2.064 \n", + "epaSuperfundSiteId/AL3210020027 82.369 \n", + "epaSuperfundSiteId/AL6210020008 64.979 \n", + "epaSuperfundSiteId/AL7210020742 92.155 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_HighWindEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 1.000 \n", + "epaSuperfundSiteId/AL3210020027 33.946 \n", + "epaSuperfundSiteId/AL6210020008 46.865 \n", + "epaSuperfundSiteId/AL7210020742 99.000 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_CoastalFloodEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.0 \n", + "epaSuperfundSiteId/AK4170024323 1.0 \n", + "epaSuperfundSiteId/AL3210020027 1.0 \n", + "epaSuperfundSiteId/AL6210020008 1.0 \n", + "epaSuperfundSiteId/AL7210020742 1.0 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_HailEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 1.000 \n", + "epaSuperfundSiteId/AL3210020027 32.947 \n", + "epaSuperfundSiteId/AL6210020008 32.111 \n", + "epaSuperfundSiteId/AL7210020742 91.634 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_LandslideEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 1.000 \n", + "epaSuperfundSiteId/AL3210020027 25.147 \n", + "epaSuperfundSiteId/AL6210020008 14.994 \n", + "epaSuperfundSiteId/AL7210020742 21.540 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent \n", + "place \n", + "epaSuperfundSiteId/AK0001897602 75.696 \n", + "epaSuperfundSiteId/AK4170024323 37.392 \n", + "epaSuperfundSiteId/AL3210020027 73.927 \n", + "epaSuperfundSiteId/AL6210020008 72.603 \n", + "epaSuperfundSiteId/AL7210020742 65.770 " + ] + }, + "metadata": {}, + "execution_count": 3 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Additional statistics for Tar Creek site\n", + "\n", + "[Tar Creek](https://en.wikipedia.org/wiki/Tar_Creek_Superfund_site) is one of the largest Superfund sites, and only for that site we have additional stats on contaminants in the ground water from sampling wells. These stats are attached to instances of `SuperfundMeasurementSite` contained in Tar Creek.\n", + "\n", + "The measurement sites are listed on the [Tar Creek Graph Browser page](https://datacommons.org/browser/epaSuperfundSiteId/OKD980629844), and a measurement site's Graph Browser page ([example](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Commerce_5)) lists all available statistical variables.\n", + "\n", + "To get these stats, list the measurement sites within Tar Creek, and then provide all associated variables, as follows:" + ], + "metadata": { + "id": "QjmmCevb9bRZ" + } + }, + { + "cell_type": "code", + "source": [ + "# Gets all measurement sites contained in Tar Creek \n", + "tar_creek_site = 'epaSuperfundSiteId/OKD980629844' # DCID of Tar Creek\n", + "measurement_sites = dc.get_places_in([tar_creek_site], 'SuperfundMeasurementSite')[tar_creek_site]\n", + "\n", + "# Gets stats for contaminant variables for said measurement sites\n", + "tar_creek_df = dcpd.build_multivariate_dataframe(\n", + " measurement_sites,\n", + " [\n", + " 'Concentration_Cadmium_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Cadmium_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Iron_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Lead_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Zinc_BodyOfWater_GroundWater',\n", + " 'Concentration_Iron_BodyOfWater_GroundWater',\n", + " 'Concentration_Lead_BodyOfWater_GroundWater',\n", + " 'Concentration_Sulfate_BodyOfWater_GroundWater',\n", + " 'DissolvedOxygen_BodyOfWater_GroundWater',\n", + " 'Concentration_Zinc_BodyOfWater_GroundWater',\n", + " 'PotentialOfHydrogen_BodyOfWater_GroundWater',\n", + " 'ElectricalConductivity_BodyOfWater_GroundWater',\n", + " 'Temperature_BodyOfWater_GroundWater',\n", + " 'WaterHardness_BodyOfWater_GroundWater'\n", + " ])\n", + "\n", + "tar_creek_df.head()" + ], + "metadata": { + "id": "QxWrffhqBmQ2", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 305 + }, + "outputId": "a708ecba-c6df-44c1-bdee-318a8e862d60" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
PotentialOfHydrogen_BodyOfWater_GroundWaterConcentration_DissolvedContaminant_Cadmium_BodyOfWater_GroundWaterConcentration_Iron_BodyOfWater_GroundWaterConcentration_DissolvedContaminant_Zinc_BodyOfWater_GroundWaterElectricalConductivity_BodyOfWater_GroundWaterConcentration_DissolvedContaminant_Iron_BodyOfWater_GroundWaterConcentration_DissolvedContaminant_Lead_BodyOfWater_GroundWaterConcentration_Sulfate_BodyOfWater_GroundWaterConcentration_Zinc_BodyOfWater_GroundWaterTemperature_BodyOfWater_GroundWaterWaterHardness_BodyOfWater_GroundWaterConcentration_Cadmium_BodyOfWater_GroundWaterConcentration_Lead_BodyOfWater_GroundWaterDissolvedOxygen_BodyOfWater_GroundWater
place
epaSuperfundMeasurementSite/OKD980629844/Commerce_57.6500.09830.00235.30.0000015.40.0019.81280018.1
epaSuperfundMeasurementSite/OKD980629844/Picher_5-MW6.40020.00003.412000.018.300001180.03.5419.43290014.1
epaSuperfundMeasurementSite/OKD980629844/Picher_7-MW7.2200.16200.00468.50.02390139.00.0019.5552009.6
epaSuperfundMeasurementSite/OKD980629844/Quapaw_47.5700.00000.00213.20.0000015.60.0018.81260017.4
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " PotentialOfHydrogen_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 7.65 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 6.40 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 7.22 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 7.57 \n", + "\n", + " Concentration_DissolvedContaminant_Cadmium_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0 \n", + "\n", + " Concentration_Iron_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0.0983 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 20.0000 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0.1620 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0.0000 \n", + "\n", + " Concentration_DissolvedContaminant_Zinc_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0.00 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 3.41 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0.00 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0.00 \n", + "\n", + " ElectricalConductivity_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 235.3 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 2000.0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 468.5 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 213.2 \n", + "\n", + " Concentration_DissolvedContaminant_Iron_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0.0000 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 18.3000 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0.0239 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0.0000 \n", + "\n", + " Concentration_DissolvedContaminant_Lead_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0 \n", + "\n", + " Concentration_Sulfate_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 15.4 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 1180.0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 139.0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 15.6 \n", + "\n", + " Concentration_Zinc_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0.00 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 3.54 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0.00 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0.00 \n", + "\n", + " Temperature_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 19.8 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 19.4 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 19.5 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 18.8 \n", + "\n", + " WaterHardness_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 128 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 329 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 552 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 126 \n", + "\n", + " Concentration_Cadmium_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0 \n", + "\n", + " Concentration_Lead_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0 \n", + "\n", + " DissolvedOxygen_BodyOfWater_GroundWater \n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 18.1 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 14.1 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 9.6 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 17.4 " + ] + }, + "metadata": {}, + "execution_count": 4 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Get non-statistical attributes\n", + "\n", + "The Superfund sites have non-statistical properties like latitude/longitude, ownership status, EPA region code, and so on. These are listed in each site's Graph Browser page ([example](https://autopush.datacommons.org/browser/epaSuperfundSiteId/OKD980629844)).\n", + "\n", + "To get these values, use the `get_property_labels` and `get_property_values` APIs, and append to the existing dataframe (`site_df`), as follows:" + ], + "metadata": { + "id": "D19BM5nCC2yj" + } + }, + { + "cell_type": "code", + "source": [ + "# Lists properties for a sample site\n", + "site_props = dc.get_property_labels([tar_creek_site], out=True)[tar_creek_site]\n", + "\n", + "for prop in site_props:\n", + " # Gets values for a given property. pvs is dict from site-id -> list of values\n", + " pvs = dc.get_property_values(site_list, prop)\n", + " # Turns the list of values into a comma-separated a single-value\n", + " pvs = {p: ', '.join(v) for p, v in pvs.items()}\n", + " # Extends the dataframe\n", + " site_df[prop] = site_df.index.map(pvs)\n", + "\n", + "site_df.head()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 591 + }, + "id": "QY_W-tJeDx2z", + "outputId": "fc402ad1-ccf1-46b8-b022-6d1143436887" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEventNaturalHazardRiskScore_SuperfundSite_FloodEventNaturalHazardRiskScore_SuperfundSite_HurricaneEventNaturalHazardRiskScore_SuperfundSite_TornadoEventCrsiScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSite_DroughtEventNaturalHazardRiskScore_SuperfundSite_EarthquakeEventNaturalHazardRiskScore_SuperfundSite_WildfireEventNaturalHazardExposureScore_SuperfundSite...NaturalHazardRiskScore_SuperfundSite_LandslideEventNaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEventcontainedInPlaceepaRegionCodeepaSuperfundSiteIdestablishmentOwnershiplocationnameprovenancetypeOf
place
epaSuperfundSiteId/AK000189760236.09125.8191.01.00055.4556601.7511.01.01.0005.870...1.00075.696geoId/02, geoId/0200, geoId/02198, geoId/02198...10AK0001897602latLong/5562644_-13255885Salt Chuck Minedc/999wb02SuperfundSite
epaSuperfundSiteId/AK417002432326.92733.5881.01.00028.1425583.9441.01.06.0392.064...1.00037.392geoId/02, geoId/0200, geoId/0200065, geoId/020...10AK4170024323FederalGovernmentOwnedlatLong/5187750_-17665250Adak Naval Air Stationdc/999wb02SuperfundSite
epaSuperfundSiteId/AL321002002736.29745.1151.099.0000.32724666.94599.01.099.00082.369...25.14773.927geoId/01, geoId/01015, geoId/0101590099, geoId...4AL3210020027FederalGovernmentOwnedlatLong/3365944_-8596944Anniston Army Depot (Southeast Industrial Area)dc/999wb02SuperfundSite
epaSuperfundSiteId/AL621002000833.49946.4881.037.4370.60090230.33299.01.069.07064.979...14.99472.603geoId/01, geoId/0103, geoId/01121, geoId/01121...4AL6210020008FederalGovernmentOwnedlatLong/3333810_-8632680Alabama Army Ammunition Plantdc/999wb02SuperfundSite
epaSuperfundSiteId/AL721002074241.49650.8911.099.0000.61015880.38399.01.01.00092.155...21.54065.770geoId/01, geoId/0105, geoId/01089, geoId/01089...4AL7210020742FederalGovernmentOwnedlatLong/3464694_-8667305Redstone Arsenal (USARMY/NASA)dc/999wb02SuperfundSite
\n", + "

5 rows × 23 columns

\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 36.091 \n", + "epaSuperfundSiteId/AK4170024323 26.927 \n", + "epaSuperfundSiteId/AL3210020027 36.297 \n", + "epaSuperfundSiteId/AL6210020008 33.499 \n", + "epaSuperfundSiteId/AL7210020742 41.496 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_FloodEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 25.819 \n", + "epaSuperfundSiteId/AK4170024323 33.588 \n", + "epaSuperfundSiteId/AL3210020027 45.115 \n", + "epaSuperfundSiteId/AL6210020008 46.488 \n", + "epaSuperfundSiteId/AL7210020742 50.891 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_HurricaneEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.0 \n", + "epaSuperfundSiteId/AK4170024323 1.0 \n", + "epaSuperfundSiteId/AL3210020027 1.0 \n", + "epaSuperfundSiteId/AL6210020008 1.0 \n", + "epaSuperfundSiteId/AL7210020742 1.0 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_TornadoEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 1.000 \n", + "epaSuperfundSiteId/AL3210020027 99.000 \n", + "epaSuperfundSiteId/AL6210020008 37.437 \n", + "epaSuperfundSiteId/AL7210020742 99.000 \n", + "\n", + " CrsiScore_SuperfundSite \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 55.455660 \n", + "epaSuperfundSiteId/AK4170024323 28.142558 \n", + "epaSuperfundSiteId/AL3210020027 0.327246 \n", + "epaSuperfundSiteId/AL6210020008 0.600902 \n", + "epaSuperfundSiteId/AL7210020742 0.610158 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.751 \n", + "epaSuperfundSiteId/AK4170024323 3.944 \n", + "epaSuperfundSiteId/AL3210020027 66.945 \n", + "epaSuperfundSiteId/AL6210020008 30.332 \n", + "epaSuperfundSiteId/AL7210020742 80.383 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_DroughtEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.0 \n", + "epaSuperfundSiteId/AK4170024323 1.0 \n", + "epaSuperfundSiteId/AL3210020027 99.0 \n", + "epaSuperfundSiteId/AL6210020008 99.0 \n", + "epaSuperfundSiteId/AL7210020742 99.0 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.0 \n", + "epaSuperfundSiteId/AK4170024323 1.0 \n", + "epaSuperfundSiteId/AL3210020027 1.0 \n", + "epaSuperfundSiteId/AL6210020008 1.0 \n", + "epaSuperfundSiteId/AL7210020742 1.0 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_WildfireEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 6.039 \n", + "epaSuperfundSiteId/AL3210020027 99.000 \n", + "epaSuperfundSiteId/AL6210020008 69.070 \n", + "epaSuperfundSiteId/AL7210020742 1.000 \n", + "\n", + " NaturalHazardExposureScore_SuperfundSite \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 5.870 \n", + "epaSuperfundSiteId/AK4170024323 2.064 \n", + "epaSuperfundSiteId/AL3210020027 82.369 \n", + "epaSuperfundSiteId/AL6210020008 64.979 \n", + "epaSuperfundSiteId/AL7210020742 92.155 \n", + "\n", + " ... \\\n", + "place ... \n", + "epaSuperfundSiteId/AK0001897602 ... \n", + "epaSuperfundSiteId/AK4170024323 ... \n", + "epaSuperfundSiteId/AL3210020027 ... \n", + "epaSuperfundSiteId/AL6210020008 ... \n", + "epaSuperfundSiteId/AL7210020742 ... \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_LandslideEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 1.000 \n", + "epaSuperfundSiteId/AL3210020027 25.147 \n", + "epaSuperfundSiteId/AL6210020008 14.994 \n", + "epaSuperfundSiteId/AL7210020742 21.540 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 75.696 \n", + "epaSuperfundSiteId/AK4170024323 37.392 \n", + "epaSuperfundSiteId/AL3210020027 73.927 \n", + "epaSuperfundSiteId/AL6210020008 72.603 \n", + "epaSuperfundSiteId/AL7210020742 65.770 \n", + "\n", + " containedInPlace \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 geoId/02, geoId/0200, geoId/02198, geoId/02198... \n", + "epaSuperfundSiteId/AK4170024323 geoId/02, geoId/0200, geoId/0200065, geoId/020... \n", + "epaSuperfundSiteId/AL3210020027 geoId/01, geoId/01015, geoId/0101590099, geoId... \n", + "epaSuperfundSiteId/AL6210020008 geoId/01, geoId/0103, geoId/01121, geoId/01121... \n", + "epaSuperfundSiteId/AL7210020742 geoId/01, geoId/0105, geoId/01089, geoId/01089... \n", + "\n", + " epaRegionCode epaSuperfundSiteId \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 10 AK0001897602 \n", + "epaSuperfundSiteId/AK4170024323 10 AK4170024323 \n", + "epaSuperfundSiteId/AL3210020027 4 AL3210020027 \n", + "epaSuperfundSiteId/AL6210020008 4 AL6210020008 \n", + "epaSuperfundSiteId/AL7210020742 4 AL7210020742 \n", + "\n", + " establishmentOwnership \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 \n", + "epaSuperfundSiteId/AK4170024323 FederalGovernmentOwned \n", + "epaSuperfundSiteId/AL3210020027 FederalGovernmentOwned \n", + "epaSuperfundSiteId/AL6210020008 FederalGovernmentOwned \n", + "epaSuperfundSiteId/AL7210020742 FederalGovernmentOwned \n", + "\n", + " location \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 latLong/5562644_-13255885 \n", + "epaSuperfundSiteId/AK4170024323 latLong/5187750_-17665250 \n", + "epaSuperfundSiteId/AL3210020027 latLong/3365944_-8596944 \n", + "epaSuperfundSiteId/AL6210020008 latLong/3333810_-8632680 \n", + "epaSuperfundSiteId/AL7210020742 latLong/3464694_-8667305 \n", + "\n", + " name \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 Salt Chuck Mine \n", + "epaSuperfundSiteId/AK4170024323 Adak Naval Air Station \n", + "epaSuperfundSiteId/AL3210020027 Anniston Army Depot (Southeast Industrial Area) \n", + "epaSuperfundSiteId/AL6210020008 Alabama Army Ammunition Plant \n", + "epaSuperfundSiteId/AL7210020742 Redstone Arsenal (USARMY/NASA) \n", + "\n", + " provenance typeOf \n", + "place \n", + "epaSuperfundSiteId/AK0001897602 dc/999wb02 SuperfundSite \n", + "epaSuperfundSiteId/AK4170024323 dc/999wb02 SuperfundSite \n", + "epaSuperfundSiteId/AL3210020027 dc/999wb02 SuperfundSite \n", + "epaSuperfundSiteId/AL6210020008 dc/999wb02 SuperfundSite \n", + "epaSuperfundSiteId/AL7210020742 dc/999wb02 SuperfundSite \n", + "\n", + "[5 rows x 23 columns]" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Join with other stats in Data Commons\n", + "\n", + "We can now join the Superfund data with various statistics in DC (across Demographics, Economics, Climate, Health, and so on) for places like US\n", + "Census tracts, cities, counties, etc.\n", + "\n", + "This can be done by starting with the list of places containing the Superfund sites (found in the `containedInPlace` column in `site_df`), and then using the `build_multivariate_dataframe` API to get stats for the relevant variables. This is illustrated in detail in the [extended notebook](https://colab.research.google.com/drive/1KwzzOQCsWEJ4dB1Emc5TIh-s5WdYMGFU#scrollTo=Bdada1GF-VgS)." + ], + "metadata": { + "id": "VYp-2EpfNBiS" + } + } + ] +} \ No newline at end of file From 1669b3389b50197cf6fba91fa4128a9285414821 Mon Sep 17 00:00:00 2001 From: Prashanth R Date: Wed, 9 Mar 2022 18:29:55 -0800 Subject: [PATCH 02/13] Created using Colaboratory --- ...ing_SuperfundSites_with_Data_Commons.ipynb | 4543 +++++++++++++++++ 1 file changed, 4543 insertions(+) create mode 100644 Analyzing_SuperfundSites_with_Data_Commons.ipynb diff --git a/Analyzing_SuperfundSites_with_Data_Commons.ipynb b/Analyzing_SuperfundSites_with_Data_Commons.ipynb new file mode 100644 index 00000000..b99c95a3 --- /dev/null +++ b/Analyzing_SuperfundSites_with_Data_Commons.ipynb @@ -0,0 +1,4543 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OJ_kWT4iDMaM" + }, + "source": [ + "Copyright 2022 Google LLC.\n", + "SPDX-License-Identifier: Apache-2.0\n", + "\n", + "**Notebook Version** - 1.0.0" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QJoxQoY48gHc" + }, + "source": [ + "## Analyzing SuperfundSites with Data Commons\n", + "\n", + "This information, stored in Data Commons, is available to everyone for data science projects, education, and exploration. \n", + "\n", + "This tutorial introduces the Data Commons graph and two of its tools: (1) the [browser](https://browser.datacommons.org/) and (2) the [Pandas API](https://github.com/datacommonsorg/api-pandas).\n", + "\n", + "### Data Commons Browser\n", + "\n", + "The [Data Commons browser](https://browser.datacommons.org/) provides a way to explore the data in a human-readable format. It is the best way to explore what is in Data Commons. \n", + "\n", + "An important property for all entities is the **`dcid`**. The `dcid` (Data Commons identifier) is a unique identifier assigned to each entity in the knowledge graph. With this identifier, one will be able to search for and query information on the given entity in ways that we will discuss later. The `dcid` is listed at the top of the page next to \"About: \" and also in the list of properties.\n", + "\n", + "### Accessing statistics through APIs\n", + "Currently there are three ways in which statistics from then Data Commons graph can be obtained, namely:\n", + "\n", + "1. [Python API](https://docs.datacommons.org/api/python/) - a lightweight python wrapper \n", + "2. The [Pandas API](https://github.com/datacommonsorg/api-pandas) provides functions for users to extract structured information from Data Commons programmatically and view them in different formats such as Python dicts and [pandas](https://pandas.pydata.org/) DataFrames. DataFrames allow access to all the data processing, analytical and visualization tools provided by packages such as pandas, NumPy, SciPy, and Matplotlib.\n", + "3. [REST API endpoints](https://docs.datacommons.org/api/rest/) - a common, language agnostic means to access stats\n", + "\n", + "### About this notebook\n", + "This notebook presents how different Data Commons APIs work with example snippets to extract statistics from the knowledge graph. The notebook will provide code snippets that can better showcase how data can be used for visualization and analysis. Specifically, the notebook uses statistics available on Superfund Sites and Demographics as examples, but the snippets can be used for statistics in other verticals like Climate, Economics, Health, etc.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "vD2mErj68Q1F" + }, + "outputs": [], + "source": [ + "# Refer: https://docs.datacommons.org/api/pandas/\n", + "!pip install datacommons_pandas datacommons geopandas plotly descartes --upgrade --quiet\n", + "\n", + "# Import Data Commons\n", + "import datacommons as dc\n", + "import datacommons_pandas as dpd\n", + "\n", + "# Import other required libraries\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.patches as mpatches\n", + "import pandas as pd\n", + "import geopandas as gpd\n", + "from shapely.geometry import Point\n", + "import plotly.express as px\n", + "from descartes import PolygonPatch\n", + "\n", + "import ipywidgets as widgets\n", + "import pprint\n", + "import requests\n", + "import json\n", + "\n", + "# setting place scope to US\n", + "_USA = 'country/USA'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ocd8TI35EA06" + }, + "source": [ + "### Querying Statistics from Data Commons\n", + "\n", + "Data Commons has a large corpus of statistical data, which can be queried and joined with other statistics. For example, we can query the median income of women living in Berkeley, California or the number of individuals who are insured in Maryland. \n", + "\n", + "Before we explore how to do this, we need to understand how Data Commons stores statistical data. In particular, there are two types of entities: [StatisticalVariable](https://browser.datacommons.org/kg?dcid=StatisticalVariable) and [StatVarObservation](https://browser.datacommons.org/kg?dcid=StatVarObservation).\n", + "\n", + "A StatisticalVariable represents any type of statistical metric that can be measured at a place and time. Some examples include: median income, median income of females, number of high school graduates, unemployment rate, prevalence of diabetes, essentially anything one might call a metric, statistic, or measure. A StatVarObservation represents an actual measurement of a StatisticalVariable in a given place and time.\n", + "\n", + "One example of a StatisticalVariable is the median age of people in San Antonio, Texas in 2014. The statistical metric, time, and place here are median age, 2014, and San Antonio respectively. A list of StatisticalVariables can be found [here](http://docs.datacommons.org/statistical_variables.html). To read more about StatisticalVariable and StatVarObservation, please see [representing_statistics.md](https://github.com/datacommonsorg/data/blob/master/docs/representing_statistics.md).\n", + "\n", + "Data Commons defines APIs allowing us to fetch data over these two types. To begin with, we can use the [**`build_multivariate_dataframe`**](https://docs.datacommons.org/api/pandas/multivariate_dataframe.html) function to build a dataframe with the latest StatVarObservations of multiple StatisticalVariables for multiple places.\n", + "\n", + "Now, we start of with some code snippets where we use the Data Commons API to pull out statistics from the Data Commons graph." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SbnQVUDN-CzH" + }, + "source": [ + "## Demo 1 - List of all superfund sites\n", + "\n", + "In this first demo, we will be starting off by getting all the [superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) that are located across the United States. Since, we will be fetching statistics from the United States, we have pre-defined the base place in variable `usa` with the value `country/USA`. \n", + "\n", + "Note: `country/USA` is a unique identifier to a node on the Data Commons Graph which defines [United States](https://datacommons.org/browser/country/USA)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "VqybWC6XKr6j", + "cellView": "form" + }, + "outputs": [], + "source": [ + "#@title Select place types\n", + "\n", + "#@markdown *Select `Runtime > Run all` from the menu above after filling up the values.*\n", + "\n", + "#@markdown Select a geo-level for querying statistics. Select 'State' for a quick demo\n", + "US_GEO_LEVEL = 'State' #@param [\"State\", \"Country\", \"County\"] {allow-input: true}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "t0VGnxiSR6aD" + }, + "source": [ + "Now, that a GEO_LEVEL is selected for viewing different statistics, we shall fetch all the places within the GEO_LEVEL that are present in the Data Commons Graph.\n", + "\n", + "### Get places contained in the selected place type\n", + "\n", + "So, if \"State\" is selected as the GEO_LEVEL, we will get a list of Data Common Graph ids for all the States in the US. Where each place id refers to a unique node on the graph which describes the place with different constraint properties, like the `typeOf` place which quantifies if the place is a State, or other administrative division applicable. \n", + "\n", + "This is done using the [`get_places_in`](https://docs.datacommons.org/api/python/place_in.html) API method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "i8dsWq92MpzA", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "14ad9b3b-0253-4b3c-ca63-ba79b785999d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "['geoId/01', 'geoId/02', 'geoId/04', 'geoId/05', 'geoId/06']\n" + ] + } + ], + "source": [ + "# get the dcids for all the places in the selected place type across US\n", + "if US_GEO_LEVEL == 'Country':\n", + " # if geo-level is a country, then we look at the US\n", + " _PLACE_DCID = _USA\n", + "else:\n", + " # else, we extract the place ids for the selected geo-level\n", + " _PLACE_DCID = dc.get_places_in([_USA], US_GEO_LEVEL)[_USA]\n", + "\n", + "# printing the first 5 places that we fetch from Data Commons\n", + "if type(_PLACE_DCID) is list:\n", + " print(_PLACE_DCID[:5])\n", + "else:\n", + " print(_PLACE_DCID)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "s71ffKOHdEsn" + }, + "source": [ + "### Select a place by name\n", + "\n", + "While querying the Data Commons Graph for statistics about a place we will use a place's id like [`geoId/01`](https://datacommons.org/browser/geoId/01) is for the state of Alabama, US.\n", + "\n", + ">TIP: While looking to browse the statistics available for a particular place, one can use the URL constructed as `https://datacommons.org/browser/`. Here `` refers to the unique id for a node in the above example, it will be `geoId/01`.\n", + "\n", + "To make the queried place ids human-readable, we can extract the `name` property of the place node which can be searched on the [graph browser](https://datacommons.org/browser/geoId/01), using the [`get_property_values`](https://docs.datacommons.org/api/python/property_value.html) API method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "VcEKb7spT5rU", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 101, + "referenced_widgets": [ + "e86121a3dee84467911d601c450f076f", + "2f1164c04f504f80beb625de92bbfa17", + "2e5a9eb31a424a8db158822f155d85db" + ] + }, + "outputId": "97fa64cf-d554-4199-f0fb-1a448b24baf6" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Fetching the place will take time based on the summary level and number of place nodes.....Done.\n", + "\n", + "Select a place from the list to use for the remainder of the notebook.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e86121a3dee84467911d601c450f076f", + "version_minor": 0, + "version_major": 2 + }, + "text/plain": [ + "Dropdown(options=('Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delawa…" + ] + }, + "metadata": {} + } + ], + "source": [ + "# populate a list of options based on name for non-country GEO-LEVELS\n", + "\n", + "def get_names_for_place_ids(place_id_list):\n", + " \"\"\"\n", + " This function takes as input a list of place ids and returns the corresponding place names from the Data Commons Graph\n", + " \"\"\"\n", + " print(\"Fetching the place will take time based on the summary level and number of place nodes\", end=\".....\", flush=True)\n", + " try:\n", + " # get the place names for non-country GEO-LEVELS\n", + " place_name_list = [dc.get_property_values([place_id], 'name')[place_id][0] for place_id in place_id_list]\n", + " except:\n", + " place_name_list = dc.get_property_values([_USA], 'name')[_USA]\n", + "\n", + " print('Done.\\n', flush=True)\n", + " return place_name_list\n", + "\n", + "_PLACE_NAMES = get_names_for_place_ids(_PLACE_DCID)\n", + "\n", + "print(\"Select a place from the list to use for the remainder of the notebook.\")\n", + "selected_place = widgets.Dropdown(options=_PLACE_NAMES, value=_PLACE_NAMES[0])\n", + "display(selected_place)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "kexiYzYvT5-l" + }, + "outputs": [], + "source": [ + "# get the value of the selected place from the drop-down\n", + "selected_place_choice = selected_place.value\n", + "\n", + "# get the place's id on the Data Commons Graph by name\n", + "if type(_PLACE_DCID) == list:\n", + " place_dcid = _PLACE_DCID[_PLACE_NAMES.index(selected_place_choice)]\n", + "else:\n", + " place_dcid = _PLACE_DCID" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "b9tRRw_JT6G5", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "outputId": "bb208982-dba0-4845-f395-dd117d77d0b2" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + }, + "text/plain": [ + "'geoId/01'" + ] + }, + "metadata": {}, + "execution_count": 6 + } + ], + "source": [ + "place_dcid" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Xx9lfzi8hJLP" + }, + "source": [ + "### Get all superfund sites (by id) in the selected place\n", + "\n", + "Now, let us get a list of all the superfund sites that are found in the selected place.\n", + "\n", + "For this we use the [`get_places_in`](https://docs.datacommons.org/api/python/place_in.html) API method but set the placeType or the second argument to the function call to be [`SuperfundSite`](https://datacommons.org/browser/SuperfundSite)\n", + "\n", + "---\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "8ceIHqoy9wa3", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "04274c8d-a742-4a4d-b1e8-9337583dd8a3" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['epaSuperfundSiteId/AL3210020027',\n", + " 'epaSuperfundSiteId/AL6210020008',\n", + " 'epaSuperfundSiteId/AL7210020742',\n", + " 'epaSuperfundSiteId/ALD001221902',\n", + " 'epaSuperfundSiteId/ALD004022448']" + ] + }, + "metadata": {}, + "execution_count": 17 + } + ], + "source": [ + "superfund_sites = dc.get_places_in([place_dcid], 'SuperfundSite')[place_dcid]\n", + "\n", + "# printing the first 5 superfund sites that we fetch from Data Commons\n", + "superfund_sites[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "o2AOdt78qUg_" + }, + "source": [ + "### Get all superfund sites (by name) in the selected place\n", + "\n", + "Similar to how the place names were looked up for place dcids associated with a geo-level, the same to fetch names of superfund sites, as shown in this snippet of code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "CsCeNsjFRhzp", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "3f28301f-dbc5-49ba-bc1c-cd0618d9f94d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Fetching the place will take time based on the summary level and number of place nodes.....Done.\n", + "\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['Anniston Army Depot (Southeast Industrial Area)',\n", + " 'Alabama Army Ammunition Plant',\n", + " 'Redstone Arsenal (USARMY/NASA)',\n", + " 'Ciba-Geigy Corp. (McIntosh Plant)',\n", + " 'Alabama Plating Company Inc.']" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ], + "source": [ + "# get names for superfund sites in the selected place\n", + "site_names = get_names_for_place_ids(superfund_sites)\n", + "\n", + "# printing the names of first 5 superfund sites that we fetch from Data Commons\n", + "site_names[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zxRBNf5s-JzS" + }, + "source": [ + "## Demo 2 - Pick a property for all superfund sites\n", + "\n", + "In this demo example, we continue exploring a superfund site node.\n", + "\n", + "### Select a superfund site" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "8h6ktcK2vQGd", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 66, + "referenced_widgets": [ + "8794d888dc834c1cad49e577a95736a4", + "e1eb411fba2a42b783282223aa7c6ce7", + "d5670d1d5dda4c479d70627d752ba8c1" + ] + }, + "outputId": "1373981f-4c0a-4054-86bc-8353f0405614" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Select a superfund site from the list to use for the remainder of the notebook.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "8794d888dc834c1cad49e577a95736a4", + "version_minor": 0, + "version_major": 2 + }, + "text/plain": [ + "Dropdown(options=('Anniston Army Depot (Southeast Industrial Area)', 'Alabama Army Ammunition Plant', 'Redston…" + ] + }, + "metadata": {} + } + ], + "source": [ + "print(\"Select a superfund site from the list to use for the remainder of the notebook.\")\n", + "selected_site = widgets.Dropdown(options=site_names, value=site_names[0])\n", + "display(selected_site)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "LqizAnV5vkCn", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "outputId": "b117b668-f79d-45ee-c7ed-c18f98ad4a3c" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + }, + "text/plain": [ + "'epaSuperfundSiteId/AL3210020027'" + ] + }, + "metadata": {}, + "execution_count": 20 + } + ], + "source": [ + "# get the value of the selected place from the drop-down\n", + "selected_site_choice = selected_site.value\n", + "\n", + "# get the place's id on the Data Commons Graph by name\n", + "site_dcid = superfund_sites[site_names.index(selected_site_choice)]\n", + "\n", + "# print the site_dcid\n", + "site_dcid" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Y2xWmEdVv_Hg" + }, + "source": [ + "### Understanding how superfund sites are represented in Data Commons\n", + "\n", + "\n", + "Let us start by getting all the properties a superfund site node has in the Data Commons Graph.\n", + "\n", + "For example the [Tar Creek](https://datacommons.org/browser/epaSuperfundSiteId/OKD980629844) superfund site has the following properties:\n", + "1. 'containedInPlace' - list of places within which the site is contained. Example: Ottawa County, Oklahoma State, US.\n", + "2. 'epaRegionCode' - integer value representing the epaRegionCode for the site. For Tar Creek, the EPA region is 9.\n", + "3. 'epaSuperfundSiteId' - a unique identifier property for each site, which is constructed by prefixing the EPA ID for a superfund site with `epaSuperfundSiteId`. For Tar Creek, this property has the value `epaSuperfundSiteId/OKD980629844`\n", + "4. 'location' - An autogenearted node reference which is generated using the latitude and longitude of the site\n", + "5. 'name' - name of the site\n", + "6. 'typeOf' - indicates the type of the node: `SuperfundSite`\n", + "7. 'provenance' - indicates the domain for the dataset source to generate the triple of (subject, predicate, object) \n", + "\n", + "For any node on the Data Commons Graph, the properties it has can be queried using the [`get_property_labels`](https://docs.datacommons.org/api/python/property_label.html) API method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "dLq0ZVZM-PHr", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "82149662-7f8f-4148-aa3a-72d8b5256a9b" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "{'epaSuperfundSiteId/AL3210020027': ['containedInPlace',\n", + " 'epaRegionCode',\n", + " 'epaSuperfundSiteId',\n", + " 'establishmentOwnership',\n", + " 'location',\n", + " 'name',\n", + " 'provenance',\n", + " 'typeOf']}" + ] + }, + "metadata": {}, + "execution_count": 21 + } + ], + "source": [ + "dc.get_property_labels([site_dcid], out=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GkDR0tlWvEtQ" + }, + "source": [ + "### Get values of properties of a superfund site\n", + "\n", + "Similar to getting the properties of superfund site, it is also possible to get the values associated with the different properties. \n", + "\n", + "To get the values associated with the properties for the selected superfund site, we use the [`get_property_values`](https://docs.datacommons.org/api/python/property_label.html) API method.\n", + "\n", + "For example, let us see the values for the `containedInPlace` property which gives a list of places within which the superfund site lies in:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "KUeehObcQ49-", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "10057c88-dadc-4fdb-9cd7-7c8a585d25fe" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "{'epaSuperfundSiteId/AL3210020027': ['geoId/01',\n", + " 'geoId/01015',\n", + " 'geoId/0101590099',\n", + " 'geoId/01015981901',\n", + " 'geoId/0103']}" + ] + }, + "metadata": {}, + "execution_count": 22 + } + ], + "source": [ + "dc.get_property_values([site_dcid], prop='containedInPlace', out=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "48YFNK-RcaT8" + }, + "source": [ + "The values of `containedInPlace` is a list of the places ids in Data Commons. We can do another query on the list of places to get their names using the same API, as shown in this example," + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "DI28GsHOCcGL", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "5a12c3d7-f86b-47ee-dea5-20062d0bbb35" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "{'geoId/01': ['Alabama'],\n", + " 'geoId/01015': ['Calhoun County'],\n", + " 'geoId/0101590099': ['Anniston CCD', 'Anniston CCD, Calhoun County, Alabama'],\n", + " 'geoId/01015981901': ['Census Tract 9819.01, Calhoun County, Alabama'],\n", + " 'geoId/0103': ['Congressional District 3 (113th Congress), Alabama']}" + ] + }, + "metadata": {}, + "execution_count": 23 + } + ], + "source": [ + "## get a list of places for containedInPlace\n", + "contained_places = dc.get_property_values([site_dcid], prop='containedInPlace', out=True)[site_dcid]\n", + "dc.get_property_values(contained_places, prop='name', out=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IYSLPSYy4vgl" + }, + "source": [ + "Similarly, we can see the type of place using the `typeOf` property for the above example" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "QLsiziy744wM", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "25b305fb-dab3-49e6-9f76-37ab84619a4d" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "{'geoId/01': ['AdministrativeArea1', 'State'],\n", + " 'geoId/01015': ['AdministrativeArea2', 'County'],\n", + " 'geoId/0101590099': ['CensusCountyDivision'],\n", + " 'geoId/01015981901': ['CensusTract'],\n", + " 'geoId/0103': ['CongressionalDistrict']}" + ] + }, + "metadata": {}, + "execution_count": 24 + } + ], + "source": [ + "contained_places = dc.get_property_values([site_dcid], prop='containedInPlace', out=True)[site_dcid]\n", + "dc.get_property_values(contained_places, prop='typeOf', out=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cv5z6QAOw6hE" + }, + "source": [ + "### Loading values into a pandas dataframe\n", + "\n", + "We can extend this example to make a `pandas` dataframe where we populate the different properties of the superfund site nodes as columns for all sites across the US.\n", + "\n", + "The following block of code, serves as a recap to the different API methods that were introduced thus far;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 548 + }, + "id": "9Wujk2KMxUpP", + "outputId": "d1bbd03c-4871-4b9b-c3ad-b7cfdd3fd503" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "This method will take some time since the API queries depend on number of sites ..................................................................................................................................Done.\n" + ] + }, + { + "output_type": "execute_result", + "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", + "
containedInPlaceepaRegionCodeepaSuperfundSiteIdestablishmentOwnershiplatitudelongitudenameprovenancetypeOf
0[geoId/01, geoId/01015, geoId/0101590099, geoI...4AL3210020027FederalGovernmentOwned33.659439-85.969439Anniston Army Depot (Southeast Industrial Area)dc/999wb02SuperfundSite
1[geoId/01, geoId/0103, geoId/01121, geoId/0112...4AL6210020008FederalGovernmentOwned33.3381-86.3268Alabama Army Ammunition Plantdc/999wb02SuperfundSite
2[geoId/01, geoId/0105, geoId/01089, geoId/0108...4AL7210020742FederalGovernmentOwned34.646944-86.673055Redstone Arsenal (USARMY/NASA)dc/999wb02SuperfundSite
3[geoId/01, geoId/0101, geoId/01129, geoId/0112...4ALD001221902PrivatelyOwned31.279-87.9955Ciba-Geigy Corp. (McIntosh Plant)dc/999wb02SuperfundSite
4[geoId/01, geoId/0106, geoId/01117, geoId/0111...4ALD004022448PrivatelyOwned33.399722-86.405Alabama Plating Company Inc.dc/999wb02SuperfundSite
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " containedInPlace epaRegionCode \\\n", + "0 [geoId/01, geoId/01015, geoId/0101590099, geoI... 4 \n", + "1 [geoId/01, geoId/0103, geoId/01121, geoId/0112... 4 \n", + "2 [geoId/01, geoId/0105, geoId/01089, geoId/0108... 4 \n", + "3 [geoId/01, geoId/0101, geoId/01129, geoId/0112... 4 \n", + "4 [geoId/01, geoId/0106, geoId/01117, geoId/0111... 4 \n", + "\n", + " epaSuperfundSiteId establishmentOwnership latitude longitude \\\n", + "0 AL3210020027 FederalGovernmentOwned 33.659439 -85.969439 \n", + "1 AL6210020008 FederalGovernmentOwned 33.3381 -86.3268 \n", + "2 AL7210020742 FederalGovernmentOwned 34.646944 -86.673055 \n", + "3 ALD001221902 PrivatelyOwned 31.279 -87.9955 \n", + "4 ALD004022448 PrivatelyOwned 33.399722 -86.405 \n", + "\n", + " name provenance typeOf \n", + "0 Anniston Army Depot (Southeast Industrial Area) dc/999wb02 SuperfundSite \n", + "1 Alabama Army Ammunition Plant dc/999wb02 SuperfundSite \n", + "2 Redstone Arsenal (USARMY/NASA) dc/999wb02 SuperfundSite \n", + "3 Ciba-Geigy Corp. (McIntosh Plant) dc/999wb02 SuperfundSite \n", + "4 Alabama Plating Company Inc. dc/999wb02 SuperfundSite " + ] + }, + "metadata": {}, + "execution_count": 25 + } + ], + "source": [ + "def populate_superfund_site_df(site_id_list):\n", + " \"\"\"\n", + " Populate a pandas dataframe based on the list of superfund site ids\n", + " \"\"\"\n", + " superfund_site_df = pd.DataFrame() # initalizing an empty dataframe\n", + " print(\"This method will take some time since the API queries depend on number of sites\", end=\" ...\", flush=True)\n", + " for site in site_id_list:\n", + " # get all the properties associated for a superfund site\n", + " site_props = dc.get_property_labels([site], out=True)[site]\n", + "\n", + " # a dictionary to map a property to its corresponding value\n", + " row_dict = {}\n", + "\n", + " # populate the row_dict map\n", + " for i in range(len(site_props)):\n", + " print(end=\".\")\n", + " # get all the values for each property associated with a superfund site\n", + " prop_val = dc.get_property_values([site], prop=site_props[i], out=True)[site]\n", + " # handle the case where containedInPlace is a list whereas the other props are string values\n", + " if site_props[i] == 'containedInPlace':\n", + " row_dict[site_props[i]] = prop_val\n", + " elif site_props[i] == 'location':\n", + " prop_val = ''.join(prop_val)\n", + " # location is an autogenerated internal node, and we will need an additional API call to get the latitude and longitude of the site\n", + " row_dict['latitude'] = dc.get_property_values([prop_val], prop=\"latitude\", out=True)[prop_val][0]\n", + " row_dict['longitude'] = dc.get_property_values([prop_val], prop=\"longitude\", out=True)[prop_val][0]\n", + " else:\n", + " row_dict[site_props[i]] = ''.join(prop_val)\n", + " # populate the dataframe\n", + " superfund_site_df = superfund_site_df.append(row_dict, ignore_index=True)\n", + " print(\"Done.\", flush=True)\n", + " return superfund_site_df\n", + "\n", + "\n", + "site_df = populate_superfund_site_df(superfund_sites)\n", + "site_df.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_IjeSnmpdgZM" + }, + "source": [ + "### Downloading csv files from this colab\n", + "\n", + "We can download different datasets from this colab to a csv file for offline processing. The following snippet of code will select the columns `epaSuperfundSiteId`, `name`, `latitude` and `longitude` to make a csv file which can be downloaded" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 17 + }, + "id": "Uv-IQkJad410", + "outputId": "2813c57d-42f3-43f3-f6b2-e654e71b9a57" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "application/javascript": [ + "\n", + " async function download(id, filename, size) {\n", + " if (!google.colab.kernel.accessAllowed) {\n", + " return;\n", + " }\n", + " const div = document.createElement('div');\n", + " const label = document.createElement('label');\n", + " label.textContent = `Downloading \"${filename}\": `;\n", + " div.appendChild(label);\n", + " const progress = document.createElement('progress');\n", + " progress.max = size;\n", + " div.appendChild(progress);\n", + " document.body.appendChild(div);\n", + "\n", + " const buffers = [];\n", + " let downloaded = 0;\n", + "\n", + " const channel = await google.colab.kernel.comms.open(id);\n", + " // Send a message to notify the kernel that we're ready.\n", + " channel.send({})\n", + "\n", + " for await (const message of channel.messages) {\n", + " // Send a message to notify the kernel that we're ready.\n", + " channel.send({})\n", + " if (message.buffers) {\n", + " for (const buffer of message.buffers) {\n", + " buffers.push(buffer);\n", + " downloaded += buffer.byteLength;\n", + " progress.value = downloaded;\n", + " }\n", + " }\n", + " }\n", + " const blob = new Blob(buffers, {type: 'application/binary'});\n", + " const a = document.createElement('a');\n", + " a.href = window.URL.createObjectURL(blob);\n", + " a.download = filename;\n", + " div.appendChild(a);\n", + " a.click();\n", + " div.remove();\n", + " }\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "application/javascript": [ + "download(\"download_cea8e883-1268-411c-9ea8-1c7f18d89ab4\", \"superfund_sites_locations_in_Alabama.csv\", 1056)" + ], + "text/plain": [ + "" + ] + }, + "metadata": {} + } + ], + "source": [ + "# filter `site_df` dataframe to required columns\n", + "required_cols = ['epaSuperfundSiteId', 'name', 'latitude', 'longitude']\n", + "sites_filtered = site_df[required_cols]\n", + "sites_filtered.to_csv(f\"./superfund_sites_locations_in_{selected_place_choice}.csv\", index=False)\n", + "\n", + "# direct download with script\n", + "from google.colab import files\n", + "files.download(f\"./superfund_sites_locations_in_{selected_place_choice}.csv\") " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CWiXXJjMe1ab" + }, + "source": [ + "> TIP: alternatively, one can download files in a no-code way by clickling on the 📁 icon for viewing the files associated with this colab, and click the `menu` shown with three-dots to `Downlaod` the file.\n", + "\n", + "### Visualizing the superfund sites on an external map (plotly)\n", + "\n", + "Now, that we have extracted all the values associated with a superfund site, we can visualize each superfund site on a map. \n", + "\n", + "Visualizations can be made using different plotting libraries like `plotly`, `bokeh` etc. In this example, we view the location of the superfund sites in the selected place using `plotly`. \n", + "\n", + "> NOTE: The basemap is a low-res world map, please zoom to the appropriate zoom level to view the plots better." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 542 + }, + "id": "cdv6gMAdxK2d", + "outputId": "27b91465-8c88-4181-ff7f-700f90af85af" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" + ] + }, + "metadata": {} + } + ], + "source": [ + "fig = px.scatter_geo(sites_filtered,lat='latitude',lon='longitude', hover_name=\"name\")\n", + "fig.update_layout(title = f'superfund site locations in {selected_place_choice}', title_x=0.5)\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "548WYoBAQNxN" + }, + "source": [ + "The visualization of sites on the world map has a very large spatial area in comparison to the areas of interest, which can either be the area the US or a particular state, county or city in the US. The map data for these places are available in the Data Commons Graph.\n", + "\n", + "### Spatial visualization of superfund sites with map data available in Data Commons\n", + "\n", + "The map data for a place if available, can be queried using the API using the place id as the identifier and the property `geoJsonCoordinates`. \n", + "For example, the map of the US can be queried using the snippet,\n", + "\n", + "```python\n", + "dc.get_property_values(['country/USA'], prop='geoJsonCoordinates', out=True)['country/USA']\n", + "```\n", + "\n", + "> TIP: To check if the map exists for the place selected in the menu, please replace `['country/USA']` with the value of the `place_dcid` variable enclosed within `[]`, something like `[place_dcid]`.\n", + "\n", + "Now, let us view the geoJSON for the current place selected from the drop-down menu earlier." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 244 + }, + "id": "kyHSeFIXNhLH", + "outputId": "fdec23de-19f0-41d1-c638-be261483aaf5" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "GeoJSON for Alabama which has the place id: geoId/01\n", + "\n", + "\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + }, + "text/plain": [ + "'{ \"type\": \"MultiPolygon\", \"coordinates\": [ [ [ [-88.327302, 30.229882], [-88.326371, 30.228463], [-88.318865, 30.22803], [-88.304773, 30.228031], [-88.283128, 30.232079], [-88.260192, 30.236156], [-88.234854, 30.241307], [-88.199799, 30.24779], [-88.191905, 30.248094], [-88.166789, 30.249748], [-88.149812, 30.249988], [-88.137083, 30.249179], [-88.13187, 30.247897], [-88.127338, 30.245962], [-88.1269122534897, 30.2449623756888], [-88.125306, 30.241191], [-88.124999, 30.2406148369004], [-88.122596, 30.236105], [-88.117386, 30.230793], [-88.113427, 30.226832], [-88.110301, 30.224941], [-88.106654, 30.223501], [-88.104882, 30.224581], [-88.107331, 30.225076], [-88.110978, 30.227777], [-88.115563, 30.232369], [-88.117282, 30.233314], [-88.119939, 30.237185], [-88.120564, 30.239391], [-88.122492, 30.242901], [-88.123482, 30.245197], [-88.124936, 30.247709], [-88.1248869230769, 30.247693], [-88.120151, 30.246149], [-88.1178991997814, 30.2456957303012], [-88.115198, 30.245152], [-88.1128549123886, 30.2438959437689], [-88.112176, 30.243532], [-88.112281, 30.242316], [-88.110822, 30.241956], [-88.108529, 30.242046], [-88.10655, 30.242856], [-88.104365, 30.243028], [-88.101235, 30.242001], [-88.088262, 30.245152], [-88.079562, 30.246637], [-88.075856, 30.246139], [-88.074854, 30.249119], [-88.0767561635801, 30.2508282112116], [-88.086812, 30.259864], [-88.124658, 30.28364], [-88.124670238134, 30.2817088606938], [-88.124722, 30.273541], [-88.130631, 30.262125], [-88.141143, 30.255024], [-88.14526, 30.254969], [-88.1473, 30.254105], [-88.153678, 30.253165], [-88.161904, 30.253396], [-88.167433, 30.252693], [-88.17335, 30.252418], [-88.181621, 30.251711], [-88.186372, 30.251198], [-88.190179, 30.251334], [-88.192127, 30.250248], [-88.198406, 30.25065], [-88.201468, 30.251179], [-88.224615, 30.245559], [-88.25837, 30.239595], [-88.279154, 30.235155], [-88.299705, 30.231812], [-88.313074, 30.231327], [-88.320142, 30.232035], [-88.327302, 30.229882] ] ], [ [ [-88.346745, 30.390702], [-88.346823, 30.389936], [-88.345543, 30.389914], [-88.344316, 30.389981], [-88.342645, 30.390004], [-88.340765, 30.390161], [-88.335731, 30.388969], [-88.33412, 30.388741], [-88.33289, 30.389146], [-88.333095, 30.389878], [-88.335702, 30.389727], [-88.340504, 30.391513], [-88.341235, 30.391738], [-88.342384, 30.391468], [-88.343507, 30.391445], [-88.345047, 30.3914], [-88.346745, 30.390702] ] ], [ [ [-88.053375, 30.506987], [-88.052349, 30.505591], [-88.045043, 30.501189], [-88.026748, 30.491105], [-88.02433, 30.490774], [-88.023506, 30.492573], [-88.026222, 30.516609], [-88.029165, 30.519648], [-88.032407, 30.521447], [-88.035099, 30.521967], [-88.03867, 30.520405], [-88.041966, 30.517376], [-88.045647, 30.513306], [-88.051088, 30.508857], [-88.053375, 30.506987] ] ], [ [ [-88.22512, 30.321802], [-88.226522, 30.320793], [-88.224653, 30.319886], [-88.221031, 30.32039], [-88.218694, 30.321903], [-88.221281, 30.322233], [-88.22512, 30.321802] ] ], [ [ [-88.211209, 30.322249], [-88.210824, 30.320777], [-88.209559, 30.31902], [-88.208733, 30.318878], [-88.208073, 30.319543], [-88.208954, 30.320445], [-88.209559, 30.322202], [-88.209999, 30.323199], [-88.211209, 30.322249] ] ], [ [ [-88.264659, 30.335541], [-88.264331, 30.334294], [-88.263148, 30.333614], [-88.261375, 30.332877], [-88.260521, 30.330949], [-88.260849, 30.330098], [-88.260258, 30.329304], [-88.260061, 30.32749], [-88.258813, 30.326072], [-88.257893, 30.325051], [-88.255659, 30.324087], [-88.255265, 30.326015], [-88.254542, 30.32817], [-88.253951, 30.329758], [-88.253623, 30.331005], [-88.253754, 30.33248], [-88.253294, 30.334804], [-88.253557, 30.337299], [-88.254148, 30.339454], [-88.255134, 30.342175], [-88.256382, 30.344953], [-88.256316, 30.346484], [-88.25671, 30.347788], [-88.257105, 30.350112], [-88.25717, 30.35255], [-88.256756, 30.354739], [-88.256233, 30.357999], [-88.256, 30.360907], [-88.256291, 30.363815], [-88.257105, 30.365248], [-88.25855, 30.366608], [-88.25947, 30.366778], [-88.26001, 30.365821], [-88.259661, 30.364417], [-88.259138, 30.363113], [-88.259022, 30.360756], [-88.258964, 30.359001], [-88.25908, 30.357597], [-88.259312, 30.355541], [-88.259798, 30.35306], [-88.260258, 30.351586], [-88.260389, 30.350452], [-88.261178, 30.350339], [-88.260915, 30.349318], [-88.261112, 30.348411], [-88.261966, 30.347788], [-88.262097, 30.346541], [-88.259732, 30.345633], [-88.257762, 30.344329], [-88.257827, 30.342742], [-88.258418, 30.340417], [-88.259141, 30.339], [-88.259141, 30.337129], [-88.260061, 30.336449], [-88.261506, 30.335485], [-88.263674, 30.336335], [-88.264659, 30.335541] ] ], [ [ [-88.473227, 31.893856], [-88.472642, 31.875153], [-88.471214, 31.851385], [-88.471106, 31.850949], [-88.4698254016609, 31.8193008275882], [-88.4690535330784, 31.8002251898712], [-88.468669, 31.790722], [-88.46819722538, 31.7816613313433], [-88.465107, 31.722312], [-88.4644269792809, 31.6979519029488], [-88.464425, 31.697881], [-88.4638529086848, 31.6888940694711], [-88.4606299357415, 31.6382646801284], [-88.459722, 31.624002], [-88.459478, 31.621652], [-88.4577716424541, 31.5895867307762], [-88.4563306535853, 31.5625081761439], [-88.4536095981131, 31.511375061341], [-88.4535741066828, 31.5107081188993], [-88.4532906795915, 31.5053820569557], [-88.453013, 31.500164], [-88.451575, 31.481533], [-88.451045, 31.459448], [-88.4495695963996, 31.4358347375977], [-88.449569225455, 31.4358288007726], [-88.44866, 31.421277], [-88.448686, 31.420888], [-88.445209, 31.355969], [-88.445182, 31.355855], [-88.4441564504755, 31.3393230199194], [-88.4438082387429, 31.3337098054522], [-88.4403875099455, 31.2785672511538], [-88.4397086327595, 31.2676236703237], [-88.4391512235642, 31.2586381679242], [-88.43878, 31.252654], [-88.43898, 31.246896], [-88.438211, 31.231252], [-88.438104, 31.23006], [-88.4335076962076, 31.1427912908627], [-88.432007, 31.114298], [-88.4304196826215, 31.0853230573691], [-88.425807, 31.001123], [-88.425729, 31.000183], [-88.4256361537673, 30.9983011286609], [-88.4220230007208, 30.9250672562186], [-88.419562, 30.875186], [-88.41863, 30.866528], [-88.4184764744795, 30.8632750694073], [-88.4182537702715, 30.8585563664258], [-88.4181272847116, 30.8558763641312], [-88.4148111125415, 30.7856126199293], [-88.4124506012791, 30.7355976173844], [-88.41227, 30.731771], [-88.412209, 30.730395], [-88.41155, 30.712956], [-88.411339, 30.706334], [-88.409571, 30.668731], [-88.40807, 30.63697], [-88.4080643348131, 30.6369204575682], [-88.407462, 30.631653], [-88.407484, 30.622736], [-88.4060104917735, 30.589761], [-88.404676680269, 30.5599122122086], [-88.4041884107507, 30.5489854409314], [-88.404013, 30.54506], [-88.4040045380663, 30.5448844664734], [-88.403931, 30.543359], [-88.403547, 30.5331], [-88.402283, 30.510852], [-88.4019654852472, 30.5046667163986], [-88.4004035205078, 30.4742391699529], [-88.4004023553571, 30.4742164724636], [-88.4003178648367, 30.4725705715224], [-88.3995810543803, 30.458217280556], [-88.395023, 30.369425], [-88.374671, 30.385608], [-88.364022, 30.388006], [-88.359528, 30.400858], [-88.35727, 30.405676], [-88.350021, 30.405061], [-88.343603, 30.400448], [-88.338018, 30.404753], [-88.331957, 30.401166], [-88.326134, 30.397783], [-88.321143, 30.396348], [-88.315082, 30.391633], [-88.314844, 30.384457], [-88.31223, 30.376563], [-88.314607, 30.371437], [-88.311517, 30.370206], [-88.304743, 30.371334], [-88.303317, 30.37318], [-88.303554, 30.379229], [-88.29987, 30.385585], [-88.2926965894487, 30.3872290834439], [-88.292265, 30.387328], [-88.288105, 30.387328], [-88.287392, 30.384252], [-88.282635, 30.382876], [-88.275449825652, 30.3820084364898], [-88.2717858169306, 30.381566031043], [-88.2708, 30.381447], [-88.267531, 30.381085], [-88.265637, 30.381093], [-88.260695, 30.382381], [-88.241041757723, 30.3752903664424], [-88.239957, 30.374899], [-88.238748, 30.373505], [-88.234466, 30.371715], [-88.230886, 30.371625], [-88.224536, 30.371307], [-88.216461, 30.367599], [-88.214072, 30.365558], [-88.209231, 30.360017], [-88.204495, 30.362102], [-88.200065, 30.362378], [-88.196264, 30.36348], [-88.193663, 30.363317], [-88.1897962500773, 30.3629526683256], [-88.187104, 30.362699], [-88.187858, 30.358829], [-88.188023, 30.356193], [-88.18718, 30.352616], [-88.188527, 30.348124], [-88.188532, 30.345053], [-88.196353, 30.343586], [-88.198361, 30.338819], [-88.196613, 30.337433], [-88.195776, 30.33271], [-88.194042, 30.330475], [-88.193224, 30.326038], [-88.195561, 30.323819], [-88.195664, 30.321242], [-88.191542, 30.317002], [-88.175456, 30.324158], [-88.155775, 30.327184], [-88.146112, 30.323033], [-88.139976, 30.313116], [-88.1390536385524, 30.3123728402051], [-88.138576, 30.311988], [-88.1385138087836, 30.3123715204317], [-88.137269, 30.320048], [-88.134468, 30.327865], [-88.131387, 30.334312], [-88.128052, 30.338509], [-88.124611, 30.341623], [-88.115432, 30.35657], [-88.107274, 30.377246], [-88.10407, 30.4273], [-88.1063768712011, 30.4520917995834], [-88.106437, 30.452738], [-88.100646, 30.46122], [-88.096867, 30.471053], [-88.1003016477382, 30.4833842887921], [-88.102988, 30.493029], [-88.1036982616205, 30.500199], [-88.103768, 30.500903], [-88.100874, 30.50975], [-88.0915676568704, 30.5224337931017], [-88.090734, 30.52357], [-88.0897608275368, 30.5242001971768], [-88.082792, 30.528713], [-88.081617, 30.546317], [-88.0849284846215, 30.560790648342], [-88.0852889930346, 30.5623663379769], [-88.085493, 30.563258], [-88.0871276817068, 30.5641169261882], [-88.087655, 30.564394], [-88.0874119213592, 30.565055102057], [-88.0872670721837, 30.5654490490018], [-88.085625, 30.569915], [-88.083106, 30.572842], [-88.074898, 30.578892], [-88.064898, 30.588292], [-88.0612, 30.596502], [-88.0605006951967, 30.5989906042595], [-88.059104, 30.603961], [-88.059053, 30.608291], [-88.0589078939134, 30.6084115629206], [-88.053998, 30.612491], [-88.059598, 30.619091], [-88.060293, 30.626562], [-88.058507, 30.629973], [-88.054693, 30.63376], [-88.056013, 30.637547], [-88.059681, 30.640198], [-88.061877, 30.643586], [-88.058066, 30.645538], [-88.051647, 30.646521], [-88.0504871600114, 30.6470892897996], [-88.044716, 30.649917], [-88.038407, 30.647898], [-88.034588, 30.653715], [-88.02919, 30.65904], [-88.026036, 30.65856], [-88.023981, 30.660006], [-88.021801, 30.668625], [-88.020105, 30.675666], [-88.011412, 30.685126], [-88.0089012750009, 30.6834340138575], [-88.006898, 30.682084], [-88.005812172042, 30.6818162688907], [-87.9976283912748, 30.6797984052996], [-87.990578, 30.67806], [-87.986556282732, 30.6776184845159], [-87.9861324344368, 30.6775719532526], [-87.985559, 30.677509], [-87.970897781531, 30.6682635572949], [-87.9604964261525, 30.6617044070161], [-87.955989, 30.658862], [-87.936717, 30.657432], [-87.931705, 30.654362], [-87.93107, 30.652694], [-87.929841, 30.650341], [-87.925375, 30.648894], [-87.9253017075927, 30.6481356142893], [-87.924664, 30.641537], [-87.919346, 30.63606], [-87.918571, 30.630731], [-87.921326, 30.629379], [-87.921437, 30.62689], [-87.9205869063953, 30.6262567505487], [-87.917748, 30.624142], [-87.913976, 30.620094], [-87.91253, 30.615795], [-87.9128598513308, 30.6117293716022], [-87.9138038446372, 30.6000940509725], [-87.914956, 30.585893], [-87.9143740690017, 30.5843028838652], [-87.9125924365473, 30.5794346047727], [-87.911431, 30.576261], [-87.907891, 30.573114], [-87.9043232612277, 30.5662823025228], [-87.904168, 30.565985], [-87.9040338118332, 30.5651599912706], [-87.9027987864289, 30.5575668721183], [-87.9024024885759, 30.5551303742075], [-87.902375008612, 30.5549614233184], [-87.9021004422839, 30.5532733488565], [-87.901711, 30.550879], [-87.9021722477051, 30.5491883087284], [-87.9043909997987, 30.5410555315748], [-87.905343, 30.537566], [-87.911141, 30.525848], [-87.9122941570303, 30.5238502975214], [-87.91595, 30.517517], [-87.920603, 30.51289], [-87.921522, 30.511366], [-87.9216257305834, 30.5102260385107], [-87.921715, 30.509245], [-87.9228062305104, 30.5071930515984], [-87.925026, 30.503019], [-87.9252032633027, 30.5022939366533], [-87.9253133725115, 30.5018435549317], [-87.926565, 30.496724], [-87.933716, 30.486798], [-87.93398386069, 30.4864939085373], [-87.936969, 30.483105], [-87.93203, 30.48165], [-87.925159, 30.477434], [-87.921278, 30.473848], [-87.9207225101149, 30.4724211883704], [-87.920031, 30.470645], [-87.919543, 30.4686167577608], [-87.9176827375353, 30.4608850714763], [-87.914136, 30.446144], [-87.9100506889949, 30.4212132880055], [-87.908908, 30.41424], [-87.906343, 30.40938], [-87.865017, 30.38345], [-87.853806, 30.378481], [-87.849378, 30.378069], [-87.843861, 30.378169], [-87.839609, 30.377227], [-87.837368, 30.376334], [-87.8371931337561, 30.3754978579601], [-87.837107, 30.375086], [-87.837353, 30.371802], [-87.83774, 30.370548], [-87.837479, 30.368144], [-87.83454, 30.361423], [-87.8317484564552, 30.3568618814269], [-87.82988, 30.353809], [-87.809266, 30.332702], [-87.796717, 30.324198], [-87.772758, 30.311701], [-87.755516, 30.291217], [-87.755466757673, 30.2885001399316], [-87.7553717037016, 30.2832557017534], [-87.7553479180657, 30.2819433705036], [-87.755314, 30.280072], [-87.755674548876, 30.2794479522461], [-87.7573658456151, 30.2765206100707], [-87.759304, 30.273166], [-87.768003, 30.262455], [-87.7716415610064, 30.2609420499608], [-87.780364143592, 30.2573151129268], [-87.7860993460644, 30.2549303584071], [-87.78775, 30.254244], [-87.802087, 30.253054], [-87.817743, 30.254292], [-87.8229357244899, 30.2525747046188], [-87.860085, 30.240289], [-87.879343, 30.23859], [-87.893201, 30.239237], [-87.90046, 30.241531], [-87.913762, 30.247837], [-87.918247, 30.253308], [-87.936041, 30.261469], [-87.948979, 30.256564], [-87.966847, 30.235618], [-88.011734, 30.232448], [-88.023991, 30.23039], [-88.02858, 30.226763], [-88.027678, 30.223645], [-88.021364, 30.223334], [-88.013607, 30.22349], [-87.999996, 30.225753], [-87.962253, 30.229522], [-87.926119, 30.230373], [-87.838462, 30.227185], [-87.8314807693541, 30.2275865377238], [-87.8282340300667, 30.2277732796278], [-87.8007598925694, 30.2293535028283], [-87.80056, 30.229365], [-87.736472447708, 30.2405150317797], [-87.73553, 30.240679], [-87.7311904949698, 30.2411772799321], [-87.7147045818605, 30.2430702607233], [-87.7124431944754, 30.2433299225845], [-87.6909900183965, 30.2457932650731], [-87.6866200759241, 30.2462950399583], [-87.6777388584921, 30.2473148181101], [-87.656888, 30.249709], [-87.6382462357425, 30.2545339504502], [-87.6381406732961, 30.2545612726267], [-87.6003191760141, 30.2643504131726], [-87.5822073192866, 30.2690382104254], [-87.581362, 30.269257], [-87.574075, 30.27088], [-87.565044, 30.271745], [-87.558665, 30.271302], [-87.5527352179064, 30.2727110372184], [-87.5488386853542, 30.2736369328588], [-87.543923, 30.274805], [-87.5241849433393, 30.279146], [-87.518324, 30.280435], [-87.5183423750478, 30.2815722842093], [-87.5183643805646, 30.2829342685194], [-87.51838, 30.283901], [-87.50548, 30.287101], [-87.49998, 30.287901], [-87.452378, 30.300201], [-87.450078, 30.3111], [-87.455578, 30.3102], [-87.459578, 30.3083], [-87.462978, 30.3078], [-87.465778, 30.3076], [-87.468678, 30.3082], [-87.475879, 30.3079], [-87.481879, 30.306001], [-87.483679, 30.304801], [-87.494879, 30.305001], [-87.5023015499663, 30.3071617220507], [-87.50278, 30.307301], [-87.50468, 30.308901], [-87.50578, 30.3125], [-87.5058411579151, 30.3150873925325], [-87.505943, 30.319396], [-87.504701, 30.324039], [-87.502572, 30.327405], [-87.49998, 30.328957], [-87.4920423204518, 30.3308608280906], [-87.491879, 30.3309], [-87.475579, 30.3314], [-87.4672695874252, 30.3328753652829], [-87.464878, 30.3333], [-87.462978, 30.334], [-87.459978, 30.3363], [-87.452278, 30.344099], [-87.450962, 30.346262], [-87.451978, 30.360299], [-87.451878, 30.364999], [-87.451378, 30.367199], [-87.449078, 30.370399], [-87.441823, 30.376304], [-87.438678, 30.380798], [-87.438678, 30.382098], [-87.440878, 30.386698], [-87.441178, 30.388598], [-87.440678, 30.391498], [-87.4383930064683, 30.3944550504528], [-87.437278, 30.395898], [-87.434278, 30.397498], [-87.431778, 30.403198], [-87.4306855384615, 30.4048366923077], [-87.430680166419, 30.4048447503715], [-87.429578, 30.406498], [-87.426177, 30.409198], [-87.422677, 30.410098], [-87.419177, 30.410198], [-87.413177, 30.408998], [-87.408877, 30.408798], [-87.4047733501918, 30.4098619092095], [-87.403477, 30.410198], [-87.401777, 30.411398], [-87.398776, 30.415098], [-87.395676, 30.417597], [-87.386376, 30.420497], [-87.3843547694845, 30.4216251286598], [-87.382076, 30.422897], [-87.371169, 30.43049], [-87.368191, 30.433407], [-87.3676121661119, 30.4345795003946], [-87.366591, 30.436648], [-87.366939, 30.44048], [-87.36868, 30.444631], [-87.370768, 30.446865], [-87.3782686358461, 30.449194175159], [-87.381176, 30.450097], [-87.391976, 30.451597], [-87.396877, 30.450597], [-87.399877, 30.450997], [-87.404677, 30.452897], [-87.407877, 30.456396], [-87.414677, 30.457296], [-87.425078, 30.465596], [-87.429578, 30.470596], [-87.430578, 30.476596], [-87.431578, 30.477696], [-87.434678, 30.479196], [-87.435578, 30.480496], [-87.4347654303216, 30.4818711179173], [-87.432978, 30.484896], [-87.430578, 30.491096], [-87.431178, 30.495795], [-87.438269, 30.505357], [-87.43969, 30.506649], [-87.44322, 30.506782], [-87.444714, 30.507494], [-87.447702, 30.510458], [-87.447782, 30.511913], [-87.447305, 30.512629], [-87.446499, 30.513569], [-87.445182, 30.51398], [-87.444944, 30.514943], [-87.446427, 30.520306], [-87.4464721004875, 30.5222240471467], [-87.446586, 30.527068], [-87.43544, 30.54914], [-87.434963, 30.549599], [-87.431441, 30.550263], [-87.427891, 30.554159], [-87.426037, 30.560073], [-87.423362, 30.561425], [-87.422805, 30.561379], [-87.422408, 30.560439], [-87.420925, 30.560668], [-87.418647, 30.561837], [-87.41666, 30.566306], [-87.416951, 30.568003], [-87.418513, 30.569561], [-87.418354, 30.570043], [-87.416261, 30.572448], [-87.414513, 30.573456], [-87.412712, 30.573227], [-87.4125653736963, 30.5736132585274], [-87.4124710380697, 30.573861767419], [-87.408736, 30.583701], [-87.406558, 30.599928], [-87.404597, 30.603389], [-87.401178, 30.604397], [-87.39927, 30.605611], [-87.397308, 30.608728], [-87.395026, 30.615281], [-87.395053, 30.6159], [-87.39643, 30.616909], [-87.39643, 30.617734], [-87.395659, 30.623372], [-87.394479, 30.625192], [-87.393775, 30.627006], [-87.3937572497219, 30.6273737250124], [-87.3936159919869, 30.6303001018331], [-87.393588, 30.63088], [-87.395941, 30.643968], [-87.397185, 30.648117], [-87.396177, 30.650454], [-87.397262, 30.654351], [-87.400177, 30.657217], [-87.400707, 30.657148], [-87.405874, 30.666616], [-87.407118, 30.671796], [-87.406561, 30.674019], [-87.406958, 30.675165], [-87.412739, 30.678055], [-87.419527, 30.679981], [-87.424883, 30.683374], [-87.430372, 30.688645], [-87.436021, 30.688668], [-87.439814, 30.690479], [-87.4401022024296, 30.6907361149007], [-87.44228, 30.692679], [-87.44358, 30.694604], [-87.449362, 30.698913], [-87.451404, 30.699806], [-87.456948, 30.69756], [-87.466338, 30.700835], [-87.467717, 30.701683], [-87.470397, 30.705281], [-87.474429, 30.706586], [-87.479579, 30.712865], [-87.479819, 30.71495], [-87.481225, 30.716508], [-87.487036, 30.7185], [-87.496772, 30.720353], [-87.497515, 30.720123], [-87.498482281574, 30.7204185023051], [-87.502317, 30.72159], [-87.505153, 30.726313], [-87.511729, 30.733535], [-87.523613, 30.738306], [-87.532607, 30.743489], [-87.535365, 30.749775], [-87.535416, 30.75476], [-87.536528, 30.761383], [-87.537085, 30.76253], [-87.54226, 30.767504], [-87.54616, 30.77202], [-87.545364, 30.774105], [-87.545044, 30.778666], [-87.552051, 30.786254], [-87.552954, 30.786941], [-87.554838, 30.787125], [-87.559484, 30.790447], [-87.560068, 30.792258], [-87.564209, 30.796246], [-87.56814, 30.799088], [-87.572043, 30.800532], [-87.576849, 30.808163], [-87.581869, 30.812403], [-87.58787, 30.815037], [-87.594297, 30.816984], [-87.600486, 30.820627], [-87.60163, 30.82514], [-87.60357, 30.828624], [-87.605776, 30.831304], [-87.610982, 30.832632], [-87.615923, 30.834693], [-87.615367, 30.837031], [-87.617281, 30.840353], [-87.624137, 30.845713], [-87.626075, 30.846494], [-87.627323, 30.847961], [-87.626497, 30.85188], [-87.62538, 30.854355], [-87.626228, 30.857127], [-87.628245, 30.860131], [-87.634938, 30.865886], [-87.6348442887866, 30.866109347267], [-87.629987, 30.877686], [-87.629454, 30.880115], [-87.6244, 30.884696], [-87.622062, 30.885408], [-87.620788, 30.887494], [-87.620922, 30.889923], [-87.622519, 30.89368], [-87.622203, 30.897508], [-87.620715, 30.89893], [-87.616013, 30.901453], [-87.614951, 30.904226], [-87.614209, 30.908536], [-87.611847, 30.914541], [-87.6102, 30.916628], [-87.608262, 30.9219], [-87.607811, 30.92449], [-87.602684, 30.934277], [-87.600691, 30.937074], [-87.598299, 30.938793], [-87.59689, 30.941131], [-87.592055, 30.951492], [-87.589187, 30.964464], [-87.590917, 30.969414], [-87.593046, 30.972966], [-87.594111, 30.976335], [-87.5941266776319, 30.976700910013], [-87.594164, 30.977572], [-87.592676, 30.98014], [-87.593395, 30.982959], [-87.596722, 30.98761], [-87.599172, 30.995722], [-87.598928, 30.997457], [-87.571281, 30.99787], [-87.548543, 30.997927], [-87.51952, 30.997586], [-87.514910818753, 30.9976582879967], [-87.4983756803156, 30.9979176164912], [-87.4884222032622, 30.9980737216384], [-87.4837736214982, 30.9981466275723], [-87.480243, 30.998202], [-87.479703, 30.998197], [-87.478706, 30.998213], [-87.4778008656509, 30.9982103214084], [-87.466879, 30.998178], [-87.466827, 30.998178], [-87.461783, 30.998201], [-87.461638, 30.998202], [-87.458658, 30.998386], [-87.455705, 30.998318], [-87.449811, 30.998272], [-87.432292, 30.998205], [-87.425774, 30.99809], [-87.367842, 30.998292], [-87.364011, 30.998218], [-87.3638727343641, 30.9982184302701], [-87.355656, 30.998244], [-87.3478772559728, 30.9982540449584], [-87.333973, 30.998272], [-87.312183, 30.998435], [-87.30403, 30.998191], [-87.301567, 30.998434], [-87.2977209676648, 30.9984041688752], [-87.290995, 30.998352], [-87.288905, 30.998345], [-87.2762740065311, 30.9983027902622], [-87.2664842854257, 30.9982700753722], [-87.265564, 30.998267], [-87.26054, 30.998195], [-87.259689, 30.998172], [-87.25796, 30.998263], [-87.257002, 30.998194], [-87.255592, 30.998216], [-87.25498, 30.998285], [-87.2499289302495, 30.9977324342892], [-87.2399697516361, 30.9966429421853], [-87.2383167408441, 30.9964621097818], [-87.237685, 30.996393], [-87.2295406412137, 30.9968814475167], [-87.224746, 30.997169], [-87.1748002724822, 30.9986850890056], [-87.1636528320332, 30.9990234665355], [-87.1636472414627, 30.9990236362357], [-87.162614, 30.999055], [-87.1505897595909, 30.9993173890697], [-87.140755, 30.999532], [-87.124969, 30.998802], [-87.118873, 30.999427], [-87.1150729857602, 30.9994055190278], [-87.0969117097547, 30.9993028557638], [-87.0761079929049, 30.9991852551351], [-87.0709929924211, 30.9991563407215], [-87.068633, 30.999143], [-87.064063, 30.999191], [-87.053737, 30.999131], [-87.039989, 30.999594], [-87.036366, 30.999348], [-87.027107, 30.999255], [-87.0241722401182, 30.9992628697183], [-87.004359, 30.999316], [-86.998477, 30.998661], [-86.92781, 30.997704], [-86.9062578463152, 30.9976350113795], [-86.888135, 30.997577], [-86.872989, 30.997631], [-86.831934, 30.997378], [-86.830497, 30.997401], [-86.785918, 30.996978], [-86.785692460564, 30.9969741853795], [-86.74524, 30.99629], [-86.728392, 30.996739], [-86.727293, 30.996882], [-86.725379, 30.996872], [-86.706261, 30.994703], [-86.6883130015449, 30.9945961283541], [-86.678383, 30.994537], [-86.664681, 30.994534], [-86.6277543822176, 30.9947526807274], [-86.567586, 30.995109], [-86.563436, 30.995223], [-86.5424879807519, 30.9942704232822], [-86.519938, 30.993245], [-86.512834, 30.9937], [-86.49995, 30.99334], [-86.458319, 30.993998], [-86.454704, 30.993791], [-86.404912, 30.994049], [-86.391937, 30.994172], [-86.388647, 30.994181], [-86.3886460004315, 30.9941810207682], [-86.374545, 30.994474], [-86.36927, 30.994477], [-86.364907, 30.994455], [-86.350230280186, 30.9943513326318], [-86.3485063167533, 30.994339155609], [-86.3340424591783, 30.9942369917695], [-86.3225459271826, 30.9941557873021], [-86.3091205623614, 30.99406095874], [-86.304596, 30.994029], [-86.297148668496, 30.9939169188496], [-86.289247, 30.993798], [-86.2890657988644, 30.9937983038526], [-86.2888491620992, 30.9937986671265], [-86.2711934199209, 30.9938282736944], [-86.256448, 30.993853], [-86.238335, 30.99437], [-86.1872472578628, 30.9940490694821], [-86.180232, 30.994005], [-86.175204, 30.993798], [-86.168979, 30.993706], [-86.162886, 30.993682], [-86.1327395143734, 30.9931803018294], [-86.116918, 30.992917], [-86.056213, 30.993133], [-86.052462, 30.993247], [-86.035039, 30.99332], [-85.998643, 30.99287], [-85.9972899798363, 30.9928776855665], [-85.9656625094903, 30.9930573392277], [-85.9358412897118, 30.9932267328358], [-85.9358369815805, 30.9932267573073], [-85.893543, 30.993467], [-85.8311249866156, 30.9940624465768], [-85.8311224511907, 30.9940624707639], [-85.772671867107, 30.9946200694171], [-85.749932, 30.994837], [-85.749619, 30.995292], [-85.7456723399541, 30.9953176885335], [-85.7416280289593, 30.9953440126702], [-85.6922076032916, 30.9956656867558], [-85.6524690241305, 30.9959243423813], [-85.6462550538674, 30.9959647886781], [-85.6314371471168, 30.9960612373942], [-85.5833993142329, 30.9963739122803], [-85.5832890482388, 30.9963746299939], [-85.5794903431535, 30.996399355499], [-85.498272, 30.996928], [-85.4979920209678, 30.9969323496585], [-85.4926481766373, 30.9970153697974], [-85.4882980060804, 30.9970829525603], [-85.4075437687336, 30.9983375227886], [-85.3817482781607, 30.9987382727128], [-85.3290575307526, 30.999556858154], [-85.328920402131, 30.9995589885374], [-85.3129421786429, 30.9998072207559], [-85.243632, 31.000884], [-85.2400920010687, 31.0008820549456], [-85.2131520012213, 31.0008672527479], [-85.2034099786264, 31.0008618999882], [-85.1859660283981, 31.0008523154002], [-85.154452, 31.000835], [-85.152218, 31.000834], [-85.152085, 31.000888], [-85.145835, 31.000695], [-85.1172047745361, 31.0006593342114], [-85.057534, 31.000585], [-85.054802, 31.000585], [-85.052088, 31.000585], [-85.031155, 31.000647], [-85.030107, 31.000653], [-85.027512, 31.00067], [-85.024108, 31.000681], [-85.002499, 31.000682], [-85.001366, 31.005044], [-84.999626, 31.009079], [-84.999428, 31.013843], [-85.00006, 31.014983], [-85.004549, 31.01918], [-85.005051, 31.024701], [-85.009409, 31.032378], [-85.008552, 31.042824], [-85.008816, 31.045573], [-85.011392, 31.053546], [-85.012642, 31.055402], [-85.018148, 31.059253], [-85.028573, 31.074583], [-85.0284731949453, 31.0755261577669], [-85.028333, 31.076851], [-85.026068, 31.08418], [-85.029736, 31.096163], [-85.032832, 31.10057], [-85.035615, 31.108192], [-85.037079, 31.109751], [-85.040513, 31.111583], [-85.0470614668667, 31.1165514332678], [-85.050178, 31.118916], [-85.052867, 31.119489], [-85.054677, 31.120818], [-85.0559012903933, 31.1233847023148], [-85.061072, 31.134225], [-85.06243, 31.139518], [-85.064028, 31.142495], [-85.070181, 31.14868], [-85.0757293765372, 31.155777481201], [-85.076628, 31.156927], [-85.077801, 31.157889], [-85.0826174523208, 31.1593395178154], [-85.083582, 31.15963], [-85.092106, 31.160293], [-85.100207, 31.16549], [-85.100447, 31.166727], [-85.098426, 31.17777], [-85.098507, 31.180153], [-85.102052, 31.184734], [-85.104424, 31.18565], [-85.106503, 31.185305], [-85.107516, 31.186451], [-85.107744625537, 31.189854815531], [-85.108133, 31.195637], [-85.106963, 31.202693], [-85.105631, 31.204595], [-85.09977, 31.209751], [-85.098704, 31.211286], [-85.098707, 31.219511], [-85.096763, 31.225651], [-85.098844, 31.232524], [-85.100765, 31.234813], [-85.102472, 31.23786], [-85.10426, 31.241869], [-85.106182, 31.248077], [-85.109149, 31.254609], [-85.111711, 31.258022], [-85.112352, 31.25958], [-85.113261, 31.264343], [-85.111983, 31.267987], [-85.111905, 31.272477], [-85.112546, 31.274378], [-85.114548, 31.276302], [-85.114601, 31.277333], [-85.112762, 31.280037], [-85.110309, 31.281733], [-85.0998151895073, 31.2840112491625], [-85.099107, 31.284165], [-85.09316, 31.289688], [-85.089774, 31.295026], [-85.087695, 31.304053], [-85.087651, 31.308677], [-85.087404, 31.311223], [-85.084469, 31.316194], [-85.083776, 31.31821], [-85.084152, 31.328313], [-85.088983, 31.334292], [-85.089411, 31.336033], [-85.08781, 31.337981], [-85.087063, 31.340317], [-85.0859458208434, 31.349516257559], [-85.085864, 31.35019], [-85.085918, 31.353146], [-85.087413, 31.354428], [-85.09099, 31.354428], [-85.091791, 31.355207], [-85.092619, 31.357474], [-85.092487, 31.362881], [-85.092167, 31.364576], [-85.0871444124615, 31.3740326428487], [-85.08691, 31.374474], [-85.082431, 31.38454], [-85.080403, 31.393932], [-85.078641, 31.39636], [-85.077626, 31.39888], [-85.077387, 31.402844], [-85.079978, 31.410472], [-85.079818, 31.411732], [-85.076746, 31.415971], [-85.075827, 31.421506], [-85.075523, 31.424761], [-85.073978, 31.427179], [-85.072689, 31.428278], [-85.069083, 31.427619], [-85.06697, 31.428594], [-85.065875, 31.430586], [-85.065554, 31.439543], [-85.065955, 31.442979], [-85.066703, 31.447286], [-85.069268, 31.453472], [-85.071621, 31.468384], [-85.065687, 31.484122], [-85.062105, 31.488017], [-85.058923, 31.495989], [-85.052951, 31.506518], [-85.048445, 31.513684], [-85.0479257132954, 31.5142636818047], [-85.045642, 31.516813], [-85.045495582904, 31.5171292698553], [-85.044986, 31.51823], [-85.044556, 31.520908], [-85.047649, 31.523751], [-85.048263, 31.526012], [-85.047196, 31.528671], [-85.042983, 31.5352], [-85.041813, 31.537754], [-85.041305, 31.540987], [-85.041881, 31.544684], [-85.042547, 31.545953], [-85.045698, 31.548707], [-85.050838, 31.555551], [-85.051873, 31.557871], [-85.052931, 31.56289], [-85.05796, 31.57084], [-85.057719, 31.573062], [-85.055284, 31.577092], [-85.055417, 31.578696], [-85.05844, 31.58369], [-85.0583387397868, 31.5866430659763], [-85.058109, 31.593343], [-85.056405, 31.600963], [-85.0560661470677, 31.6042922893], [-85.0560652965444, 31.6043006458404], [-85.055976, 31.605178], [-85.057314, 31.606713], [-85.059696, 31.607262], [-85.060552, 31.608224], [-85.060418, 31.611271], [-85.05833, 31.614546], [-85.057527, 31.616883], [-85.0575059086538, 31.617563000625], [-85.057473, 31.618624], [-85.058169, 31.620227], [-85.059534, 31.621717], [-85.065236, 31.624351], [-85.067628, 31.625267], [-85.073829, 31.629567], [-85.080029, 31.636867], [-85.082829, 31.637967], [-85.084503, 31.639026], [-85.085173, 31.640749], [-85.085365, 31.642186], [-85.085173, 31.644101], [-85.0830537084557, 31.6486699475309], [-85.082267, 31.650366], [-85.080301, 31.650772], [-85.078513, 31.651685], [-85.078632, 31.653309], [-85.079925, 31.655287], [-85.083161, 31.656403], [-85.08546, 31.657028], [-85.087829, 31.657866], [-85.092429, 31.659966], [-85.10943, 31.677465], [-85.11263, 31.685165], [-85.11393, 31.686865], [-85.12233, 31.691265], [-85.12553, 31.694965], [-85.1261360634263, 31.7014918368987], [-85.12683, 31.708965], [-85.12653, 31.716764], [-85.12573, 31.718864], [-85.12223, 31.722764], [-85.11913, 31.730964], [-85.11893, 31.732664], [-85.12393, 31.747564], [-85.12663, 31.752463], [-85.129231, 31.758663], [-85.1269541364676, 31.7623302614517], [-85.12563, 31.764463], [-85.12523, 31.767063], [-85.12633, 31.768863], [-85.130731, 31.772263], [-85.140431, 31.779663], [-85.1409509602038, 31.7804602723125], [-85.141931, 31.781963], [-85.14180656, 31.78212892], [-85.137131, 31.788363], [-85.132931, 31.792363], [-85.132231, 31.795162], [-85.132831, 31.798862], [-85.1328473916616, 31.8003700328662], [-85.132931, 31.808062], [-85.131531, 31.813062], [-85.131331, 31.817562], [-85.131761981986, 31.8184448059333], [-85.133647, 31.822306], [-85.134315, 31.824608], [-85.13262, 31.826833], [-85.133083, 31.828666], [-85.135931, 31.830462], [-85.139231, 31.834161], [-85.141831, 31.839261], [-85.141331, 31.841061], [-85.138331, 31.844161], [-85.137731, 31.845861], [-85.138031, 31.851262], [-85.140231, 31.855261], [-85.140731, 31.857461], [-85.140131, 31.858761], [-85.137431, 31.860661], [-85.135831, 31.862461], [-85.133731, 31.870061], [-85.128831, 31.87636], [-85.1284798, 31.8774136], [-85.128431, 31.87756], [-85.128431, 31.87966], [-85.129331, 31.88246], [-85.1297857547641, 31.8833101936895], [-85.131631, 31.88676], [-85.133731, 31.88956], [-85.1343160680101, 31.8914127153652], [-85.134331, 31.89146], [-85.134131, 31.89216], [-85.132931, 31.89306], [-85.121131, 31.89326], [-85.117031, 31.89286], [-85.114031, 31.89336], [-85.11203, 31.89476], [-85.11063, 31.89686], [-85.111558, 31.901254], [-85.109775, 31.904143], [-85.10983, 31.90806], [-85.112731, 31.909859], [-85.113131, 31.911859], [-85.10913, 31.914359], [-85.10243, 31.917359], [-85.10133, 31.918659], [-85.10023, 31.924059], [-85.09953, 31.925259], [-85.09823, 31.926259], [-85.09183, 31.928859], [-85.08643, 31.935959], [-85.08473, 31.937359], [-85.07893, 31.940159], [-85.07893, 31.941459], [-85.08243, 31.945358], [-85.08683, 31.957758], [-85.08673, 31.959158], [-85.08573, 31.960758], [-85.08323, 31.962458], [-85.07393, 31.964158], [-85.07023, 31.965658], [-85.067829, 31.967358], [-85.065929, 31.971158], [-85.065929, 31.972458], [-85.066829, 31.974758], [-85.06993, 31.978358], [-85.07093, 31.981658], [-85.06833, 31.986757], [-85.0680981818182, 31.991857], [-85.06803, 31.993357], [-85.064544, 32.002489], [-85.063441, 32.00414], [-85.055075, 32.010714], [-85.053815, 32.013502], [-85.054768, 32.017407], [-85.053669, 32.020662], [-85.05014, 32.021092], [-85.04931, 32.022694], [-85.050601, 32.023906], [-85.052814, 32.02547], [-85.0544436067118, 32.026652024344], [-85.055217, 32.027213], [-85.056253, 32.028336], [-85.056464, 32.031819], [-85.055474, 32.034221], [-85.054627, 32.036694], [-85.054839, 32.038814], [-85.055333, 32.04058], [-85.05803, 32.043756], [-85.05883, 32.046656], [-85.05663, 32.054155], [-85.05643, 32.058055], [-85.05683, 32.059755], [-85.056029, 32.063055], [-85.054179, 32.067985], [-85.054084, 32.07021], [-85.055491, 32.072657], [-85.055813, 32.074439], [-85.053232, 32.080604], [-85.051161, 32.082527], [-85.047077, 32.084347], [-85.045511, 32.086867], [-85.047063, 32.090433], [-85.04955, 32.095362], [-85.053777, 32.107684], [-85.055045, 32.113671], [-85.05918, 32.125153], [-85.06154, 32.129673], [-85.06206, 32.132486], [-85.061144, 32.134065], [-85.058749, 32.136018], [-85.047865, 32.142033], [-85.045593, 32.143758], [-85.033989, 32.156348], [-85.030336, 32.161727], [-85.026583, 32.166104], [-85.014648, 32.176882], [-85.013065, 32.179112], [-85.011267, 32.180493], [-85.008531, 32.181903], [-84.995929, 32.184852], [-84.973728, 32.191552], [-84.966828, 32.193952], [-84.964628, 32.195152], [-84.961728, 32.19865], [-84.962228, 32.200051], [-84.963228, 32.20225], [-84.966928, 32.204451], [-84.969428, 32.204451], [-84.972328, 32.20355], [-84.974628, 32.203651], [-84.977128, 32.205751], [-84.980229, 32.207751], [-84.980229, 32.210051], [-84.978729, 32.21255], [-84.972128, 32.218251], [-84.967428, 32.219351], [-84.961428, 32.218051], [-84.9582235136984, 32.2179253338705], [-84.956328, 32.217851], [-84.949451, 32.218511], [-84.939328, 32.217951], [-84.930127, 32.219051], [-84.928227, 32.219851], [-84.925427, 32.221551], [-84.922927, 32.224751], [-84.923527, 32.229751], [-84.9230311580042, 32.2308528711019], [-84.922627, 32.231751], [-84.920627, 32.233951], [-84.916327, 32.236551], [-84.912727, 32.24335], [-84.913927, 32.24515], [-84.917227, 32.24595], [-84.920327, 32.24405], [-84.923027, 32.244549], [-84.924127, 32.245649], [-84.924427, 32.249797], [-84.923015, 32.250822], [-84.917327, 32.249049], [-84.910098, 32.248333], [-84.907227, 32.24905], [-84.904087, 32.250838], [-84.90251, 32.255233], [-84.901454, 32.257424], [-84.898139, 32.258608], [-84.892296, 32.258272], [-84.889174, 32.259232], [-84.8891466552477, 32.2597204238197], [-84.88908, 32.260911], [-84.891841, 32.263398], [-84.893959, 32.265846], [-84.904023, 32.273749], [-84.911127, 32.276949], [-84.922872, 32.285333], [-84.9338, 32.29826], [-84.93868, 32.300708], [-84.9557212929735, 32.3069460371336], [-84.989514, 32.319316], [-85.001874, 32.322015], [-85.007103, 32.328362], [-85.008096, 32.336677], [-85.004582, 32.345196], [-84.99993, 32.3488179964053], [-84.986778, 32.359058], [-84.983466, 32.363186], [-84.983242, 32.365122], [-84.985171, 32.367062], [-84.986298, 32.369666], [-84.98409, 32.373522], [-84.980282, 32.374386], [-84.977274, 32.373842], [-84.97433, 32.374578], [-84.971962, 32.377698], [-84.973818, 32.379873], [-84.979354, 32.380705], [-84.986282, 32.380336], [-84.988554, 32.384081], [-84.9869699000284, 32.3875148564601], [-84.985978, 32.389665], [-84.983386, 32.391761], [-84.978362, 32.390497], [-84.976394, 32.391025], [-84.971773, 32.390599], [-84.96873, 32.391457], [-84.968762, 32.393009], [-84.973882, 32.395217], [-84.979898, 32.400097], [-84.981098, 32.402833], [-84.9803047142842, 32.4073114714284], [-84.979431, 32.412244], [-84.97183, 32.416244], [-84.96343, 32.422544], [-84.9633113901639, 32.4230480918033], [-84.963222, 32.423428], [-84.96303, 32.424244], [-84.967031, 32.435343], [-84.971831, 32.442843], [-84.983831, 32.445643], [-84.993531, 32.450743], [-84.9951957038802, 32.4530550887225], [-84.9952442623814, 32.4531225310853], [-84.995331, 32.453243], [-84.998031, 32.461743], [-84.9980355773463, 32.4619283596395], [-84.9981126856546, 32.4650508605839], [-84.998231, 32.469842], [-84.9966933747961, 32.4726097253671], [-84.995231, 32.475242], [-84.9951515506849, 32.4773871315068], [-84.994831, 32.486042], [-84.9957165356694, 32.4889767052696], [-84.996732, 32.492342], [-84.998332, 32.494142], [-84.9976909182481, 32.4992473983285], [-84.997505, 32.500728], [-84.999832, 32.504341], [-85.0001824832057, 32.5064851325529], [-85.0002841081494, 32.5071068380909], [-85.0007888680774, 32.5101947811796], [-85.0012243650608, 32.5128589980189], [-85.001532, 32.514741], [-85.0028855676767, 32.5169597521885], [-85.0071, 32.523868], [-85.008396, 32.524876], [-85.013788, 32.526108], [-85.0157046592394, 32.5301112096223], [-85.016191, 32.531127], [-85.016273434347, 32.5312007752769], [-85.020237, 32.534748], [-85.022045, 32.540044], [-85.022509, 32.542923], [-85.032071, 32.545429], [-85.034841, 32.551996], [-85.0350135739157, 32.5521061766966], [-85.040555, 32.555644], [-85.044364, 32.559584], [-85.056926, 32.571242], [-85.059672, 32.576742], [-85.067535, 32.579546], [-85.076399, 32.594665], [-85.080288, 32.603577], [-85.0806178512654, 32.608095275146], [-85.080768, 32.610152], [-85.08224, 32.616264], [-85.083616, 32.6178], [-85.08536, 32.618536], [-85.087294, 32.62047], [-85.088319, 32.623032], [-85.0892541511326, 32.6250298228741], [-85.089441, 32.625429], [-85.088534, 32.627874], [-85.0849280451451, 32.6303328637042], [-85.084724, 32.630472], [-85.082365, 32.633834], [-85.083635, 32.635973], [-85.086175, 32.635362], [-85.091336, 32.634036], [-85.096597, 32.634667], [-85.100388, 32.637118], [-85.102989, 32.641033], [-85.105337, 32.644835], [-85.100337, 32.650135], [-85.096336, 32.652835], [-85.089736, 32.655635], [-85.088483, 32.657758], [-85.093536, 32.669734], [-85.104037, 32.679634], [-85.112637, 32.683434], [-85.114737, 32.685634], [-85.1153450674004, 32.6873257492588], [-85.117037, 32.692033], [-85.119279, 32.703966], [-85.119279, 32.707715], [-85.119, 32.710057], [-85.122738, 32.715727], [-85.121505063206, 32.7204024261057], [-85.120838, 32.722932], [-85.118838, 32.724832], [-85.117338, 32.726632], [-85.115038, 32.728831], [-85.113167, 32.732813], [-85.113329, 32.735751], [-85.114795, 32.738104], [-85.11855, 32.740817], [-85.124092, 32.741694], [-85.127604, 32.743047], [-85.132196, 32.744411], [-85.134794631893, 32.7467952506839], [-85.136584, 32.748437], [-85.139576, 32.754308], [-85.142567, 32.760682], [-85.140573, 32.764036], [-85.137382, 32.769068], [-85.13439, 32.770577], [-85.130884, 32.769562], [-85.122189, 32.773353], [-85.123601, 32.775711], [-85.126219, 32.779189], [-85.129934, 32.779649], [-85.134673, 32.783905], [-85.139285, 32.784921], [-85.1401915160284, 32.7883248857941], [-85.140558, 32.789701], [-85.141903, 32.791821], [-85.145771, 32.791115], [-85.1505836689875, 32.7934570819934], [-85.151913, 32.794104], [-85.1529003459633, 32.7950825579662], [-85.162137, 32.804237], [-85.1638459228327, 32.8064092347279], [-85.167939, 32.811612], [-85.1679144901823, 32.8116912716779], [-85.1672507819921, 32.813837891558], [-85.166078, 32.817631], [-85.1646705784048, 32.8202326623105], [-85.164104, 32.82128], [-85.168016, 32.829203], [-85.165473357677, 32.8334253730464], [-85.164651, 32.834791], [-85.16058, 32.838249], [-85.157432, 32.839439], [-85.154584, 32.839805], [-85.153905, 32.841018], [-85.153497, 32.842781], [-85.153462209283, 32.8434461729737], [-85.153388, 32.844865], [-85.154255, 32.847476], [-85.155884, 32.849918], [-85.1571363009798, 32.851508931773], [-85.159841, 32.854945], [-85.161089, 32.856045], [-85.16231, 32.856479], [-85.164318, 32.856183], [-85.166761, 32.85474], [-85.168064, 32.852863], [-85.170099, 32.852497], [-85.177127, 32.853895], [-85.1783639525338, 32.854658509785], [-85.1783807279069, 32.8546688643954], [-85.1784707131974, 32.8547244078766], [-85.179353, 32.855269], [-85.1844, 32.861317], [-85.1844236329767, 32.8614156967348], [-85.1848106254084, 32.8630318659474], [-85.184888, 32.863355], [-85.1848884238249, 32.863446106048], [-85.184914, 32.868944], [-85.1846512046702, 32.8694746250528], [-85.184131, 32.870525], [-85.18474, 32.870527], [-85.1850475779872, 32.8720030053371], [-85.1853237424222, 32.8733282633109], [-85.1857371444189, 32.8753120969364], [-85.1870586538649, 32.8816537568625], [-85.188741, 32.889727], [-85.1890775794593, 32.8914116855049], [-85.1907838462341, 32.8999520845814], [-85.191284509131, 32.9024580590312], [-85.2025511620874, 32.9588511822649], [-85.2041165750202, 32.9666865637903], [-85.210891601815, 33.0005976927144], [-85.221868, 33.055538], [-85.223261, 33.06258], [-85.223516898458, 33.0638570222819], [-85.2277998763677, 33.0852305712517], [-85.2284317628998, 33.0883839047551], [-85.232378, 33.108077], [-85.2365086541145, 33.1295615488779], [-85.2521437878869, 33.2108837284737], [-85.2521537013375, 33.2109352907707], [-85.2626626417576, 33.2655948768441], [-85.2814046177246, 33.3630765074936], [-85.2939021634333, 33.4280793192012], [-85.2963097812195, 33.4406019319816], [-85.2975274009043, 33.4469350716994], [-85.3033886220355, 33.4774207256388], [-85.304439, 33.482884], [-85.313999, 33.529807], [-85.314091, 33.530218], [-85.3148434877199, 33.5349512560896], [-85.314994, 33.535898], [-85.3153400895111, 33.5376461241702], [-85.315340215273, 33.5376467594031], [-85.3225689183808, 33.5741594828964], [-85.3237922987933, 33.5803388694423], [-85.3382006083928, 33.6531163257259], [-85.3552522157442, 33.7392452779125], [-85.3569782031297, 33.7479633701095], [-85.357402, 33.750104], [-85.360491, 33.767958], [-85.361844, 33.773951], [-85.3764027281585, 33.8506557456616], [-85.3764028869154, 33.850656582095], [-85.377426, 33.856047], [-85.3808849979311, 33.873507903946], [-85.3864734721684, 33.9017183318811], [-85.3887171312565, 33.9130442466707], [-85.3914952437911, 33.9270680642863], [-85.398837, 33.964129], [-85.3993834093702, 33.9669047225612], [-85.405918, 34.0001], [-85.406748, 34.002314], [-85.420232, 34.072278], [-85.4218527741544, 34.0808218531424], [-85.4278886333432, 34.11263966956], [-85.428222, 34.114397], [-85.42947, 34.125096], [-85.4447082365292, 34.1998924138202], [-85.444715014064, 34.1999256811405], [-85.455057, 34.250689], [-85.455371, 34.252854], [-85.458071, 34.265736], [-85.458693, 34.269437], [-85.4620817189037, 34.2863854944266], [-85.467676385249, 34.3143669157448], [-85.4704343306423, 34.3281606305543], [-85.47045, 34.328239], [-85.4740169081093, 34.3445495509054], [-85.4845883505414, 34.3928900308523], [-85.502316, 34.473954], [-85.502454, 34.474527], [-85.5049447058824, 34.4857351764706], [-85.508384, 34.501212], [-85.512108, 34.518252], [-85.513709, 34.52417], [-85.51393, 34.525192], [-85.5146979912582, 34.5294437989317], [-85.517074, 34.542598], [-85.527261, 34.588683], [-85.5340893753704, 34.6238579271308], [-85.534327, 34.625082], [-85.541264, 34.656701], [-85.541267, 34.656783], [-85.542501013985, 34.6624478599444], [-85.5520892272007, 34.7064634753637], [-85.552454, 34.708138], [-85.552482, 34.708321], [-85.5580670538503, 34.734425844267], [-85.561416, 34.750079], [-85.5743534080727, 34.815746661243], [-85.5759270787553, 34.8237342946789], [-85.583145, 34.860371], [-85.595163, 34.924171], [-85.595191, 34.924331], [-85.5965230789194, 34.931968747208], [-85.598781, 34.944915], [-85.599385, 34.951766], [-85.605165, 34.984678], [-85.6114325530746, 34.9847770248572], [-85.611494932012, 34.9847780104197], [-85.6156867800132, 34.9848442399586], [-85.6947663278267, 34.9860936655062], [-85.7008262686624, 34.9861894101723], [-85.7008436226794, 34.9861896843589], [-85.7022512605366, 34.9862119244798], [-85.7223216009079, 34.9865290279118], [-85.726239039383, 34.9865909218887], [-85.7265002692043, 34.9865950492165], [-85.7454168497592, 34.9868939237002], [-85.748942822758, 34.9869496326776], [-85.7579491702861, 34.9870919294029], [-85.7960529829863, 34.9876939545582], [-85.8081505497085, 34.9878850913229], [-85.824411, 34.988142], [-85.828724, 34.988165], [-85.8609202846465, 34.9883606930947], [-85.8639354755464, 34.9883790198068], [-86.0616193097243, 34.9895805671814], [-86.0670596523409, 34.9896136342727], [-86.0671363915752, 34.9896141007035], [-86.1529311285418, 34.990135571978], [-86.2539461700063, 34.9907495541905], [-86.311274, 34.991098], [-86.3187611440952, 34.9911469680432], [-86.3777526382152, 34.9915327891245], [-86.397203, 34.99166], [-86.4286076259029, 34.9911682872265], [-86.433927, 34.991085], [-86.467798, 34.990692], [-86.4732990364922, 34.9906906403093], [-86.5179380043519, 34.9906796068999], [-86.5227079907133, 34.9906784279028], [-86.528485, 34.990677], [-86.5557676701894, 34.9909699655954], [-86.555864, 34.990971], [-86.571217, 34.991011], [-86.5713080004837, 34.9910119538512], [-86.588962, 34.991197], [-86.600039, 34.99124], [-86.641212, 34.99174], [-86.6413928487564, 34.9917405111499], [-86.65961, 34.991792], [-86.670853, 34.992], [-86.67436, 34.992001], [-86.676726, 34.99207], [-86.677616, 34.99207], [-86.6776727086777, 34.9920699224502], [-86.7217124160414, 34.9920096976354], [-86.7753399184435, 34.9919363613987], [-86.7836280170906, 34.9919250273269], [-86.783648, 34.991925], [-86.8193960245283, 34.991769485613], [-86.820657, 34.991764], [-86.836306, 34.991764], [-86.83637, 34.991764], [-86.846466, 34.99186], [-86.849794, 34.991924], [-86.8550457754793, 34.9919376045345], [-86.8573743674567, 34.9919436366679], [-86.861630362659, 34.9919546616696], [-86.862147, 34.991956], [-86.879203662682, 34.9923531162451], [-86.8792364883071, 34.9923538804971], [-86.9374605990549, 34.9937094645679], [-86.96712, 34.9944], [-86.970236, 34.994546], [-86.972613, 34.99461], [-86.974412, 34.994513], [-86.9886782470853, 34.9948518895576], [-87.000007, 34.995121], [-87.011174, 34.995162], [-87.0300940691376, 34.9955281062054], [-87.0899784494007, 34.9966868780398], [-87.0945933592216, 34.9967761772443], [-87.1204873149768, 34.9972772292127], [-87.1226456781005, 34.9973189938663], [-87.1256493142754, 34.9973771146815], [-87.1396209266955, 34.9976474674995], [-87.1627524375735, 34.9980950657409], [-87.210759, 34.999024], [-87.215236205961, 34.9991177159924], [-87.216683, 34.999148], [-87.2197717603678, 34.9992228736371], [-87.224053220297, 34.9993266591169], [-87.230544, 34.999484], [-87.270014, 35.00039], [-87.299185, 35.000915], [-87.2992156777296, 35.0009154577211], [-87.349251, 35.001662], [-87.3493245225215, 35.0016631801721], [-87.3592674303837, 35.0018227821826], [-87.359281, 35.001823], [-87.381071, 35.002118], [-87.3855468534538, 35.0022298635638], [-87.391314, 35.002374], [-87.4174, 35.002669], [-87.421543, 35.002679], [-87.428613, 35.002795], [-87.4370427920769, 35.0028352150336], [-87.4370737168059, 35.0028353625626], [-87.4432865229355, 35.0028650012779], [-87.4929179481542, 35.003101772175], [-87.4929517665586, 35.0031019335085], [-87.4958434829136, 35.0031157286851], [-87.5223899924953, 35.0032423710464], [-87.5774876474615, 35.0035052190532], [-87.606178379167, 35.0036420906069], [-87.6192815618009, 35.003704600444], [-87.625025, 35.003732], [-87.664123, 35.003523], [-87.671405, 35.003537], [-87.6887093751075, 35.0037513567643], [-87.696834, 35.003852], [-87.700543, 35.003988], [-87.702321, 35.003945], [-87.7094595821424, 35.0040883690137], [-87.709491, 35.004089], [-87.7223240284927, 35.0042505851277], [-87.75889, 35.004711], [-87.767602, 35.004783], [-87.773586, 35.004946], [-87.8211342757523, 35.0053771529474], [-87.8211613865039, 35.0053773987792], [-87.851886, 35.005656], [-87.853411, 35.005576], [-87.853528, 35.005541], [-87.872626, 35.005571], [-87.877742, 35.005512], [-87.877969, 35.005468], [-87.9269766619543, 35.0056571040592], [-87.9734958113087, 35.0058366057866], [-87.9849162019114, 35.005880673227], [-88.000032, 35.005939], [-88.202959, 35.008028], [-88.201987, 35.005421], [-88.20082, 34.997774], [-88.200064, 34.995634], [-88.198811, 34.991192], [-88.187429, 34.974909], [-88.179973, 34.967466], [-88.176106, 34.962519], [-88.172102, 34.955213], [-88.161594, 34.933456], [-88.154617, 34.922392], [-88.146335, 34.914374], [-88.139721, 34.909631], [-88.136692, 34.907592], [-88.1331860088282, 34.9059779925659], [-88.125038, 34.902227], [-88.099999, 34.894095], [-88.097888, 34.892202], [-88.104828239252, 34.8343853294572], [-88.10756, 34.811628], [-88.116418, 34.746303], [-88.118407, 34.724292], [-88.120809790864, 34.7088908621916], [-88.1229228444128, 34.6953468499391], [-88.1308067668013, 34.6448133736411], [-88.134263, 34.62266], [-88.1343641919509, 34.6219004926397], [-88.138719, 34.589215], [-88.139246, 34.587795], [-88.139988, 34.581703], [-88.1525090963558, 34.4907061779864], [-88.1560500936445, 34.4649720496905], [-88.156292, 34.463214], [-88.1565520647315, 34.4609838238307], [-88.156751039728, 34.4592775205854], [-88.1586659845225, 34.4428559772994], [-88.1594297785128, 34.4363060881802], [-88.1613748286655, 34.4196263774296], [-88.165634, 34.383102], [-88.1656733734431, 34.3827915774924], [-88.16591, 34.380926], [-88.173632, 34.321054], [-88.175867, 34.302171], [-88.176889, 34.293858], [-88.1771061707454, 34.2922387475592], [-88.1774959379743, 34.2893325939911], [-88.186667, 34.220952], [-88.18762, 34.204778], [-88.190678, 34.190123], [-88.192128, 34.175351], [-88.200196, 34.115948], [-88.2037840638383, 34.0865542422802], [-88.2060052962786, 34.0683576964181], [-88.207229, 34.058333], [-88.210741, 34.029199], [-88.2117468355469, 34.0217404155568], [-88.2132700197265, 34.0104455295678], [-88.222135875909, 33.9447024394569], [-88.226428, 33.912875], [-88.226517, 33.911665], [-88.226517, 33.911551], [-88.2289318725307, 33.8942371038877], [-88.2292490683217, 33.8919629072572], [-88.229252650117, 33.891937226882], [-88.2294613585972, 33.8904408510291], [-88.2309869597483, 33.8795027582299], [-88.235492, 33.847203], [-88.240054, 33.810879], [-88.2415992970684, 33.8029735909988], [-88.2416094387383, 33.8029217083864], [-88.243025, 33.79568], [-88.244142, 33.781673], [-88.2460218415259, 33.7672863631589], [-88.2489373465952, 33.7449736777213], [-88.252257, 33.719568], [-88.254445, 33.698779], [-88.254622, 33.69578], [-88.256131, 33.68286], [-88.256343, 33.682053], [-88.262002140265, 33.6354380745981], [-88.262370726858, 33.6324019885971], [-88.2623713027984, 33.6323972445167], [-88.267005, 33.594229], [-88.267148, 33.591989], [-88.26816, 33.58504], [-88.269076, 33.576929], [-88.269532, 33.572894], [-88.27005, 33.570819], [-88.270781740705, 33.564923594639], [-88.2713779363513, 33.560120233305], [-88.2741407842769, 33.5378608340953], [-88.274619, 33.534008], [-88.276805, 33.516463], [-88.277421, 33.512436], [-88.2783480192117, 33.5047399770047], [-88.2801043139762, 33.4901593893276], [-88.2859481129665, 33.4416447406107], [-88.2910782508144, 33.3990548370265], [-88.29301654948, 33.3829632707304], [-88.2970970227493, 33.3490875800044], [-88.3004988409734, 33.32084601721], [-88.3005000457713, 33.3208360150958], [-88.3027437308318, 33.3022091607627], [-88.3044169870826, 33.2883179507206], [-88.3080904163437, 33.2578214996127], [-88.3114725832984, 33.2297430797382], [-88.312535, 33.220923], [-88.315235, 33.203323], [-88.317135, 33.184123], [-88.3218542065997, 33.14616209746], [-88.3222722892766, 33.1427990754313], [-88.330934, 33.073125], [-88.3310076496119, 33.0724897275104], [-88.340432, 32.991199], [-88.3478500256084, 32.929077584824], [-88.354292, 32.87513], [-88.3666091107452, 32.76343394998], [-88.36818559513, 32.7491378149249], [-88.368349, 32.747656], [-88.3690552109757, 32.7425839924895], [-88.373338, 32.711825], [-88.382985, 32.626954], [-88.383039, 32.626679], [-88.3853779263182, 32.6071595288939], [-88.3855823489929, 32.6054535228254], [-88.3861753483959, 32.6005046560645], [-88.3888572465182, 32.5781229194103], [-88.399966, 32.485415], [-88.3999703119346, 32.4853749259647], [-88.4033142007722, 32.4542976645469], [-88.403789, 32.449885], [-88.403789, 32.44977], [-88.4039124245627, 32.4487817958759], [-88.4039163853966, 32.4487500832869], [-88.4100961455102, 32.3992715654218], [-88.4125, 32.380025], [-88.413819, 32.373922], [-88.4144532827107, 32.3685012674077], [-88.4147143585951, 32.3662700501098], [-88.4149186209757, 32.3645243746791], [-88.421453, 32.30868], [-88.4240705677077, 32.2862295148856], [-88.4279411433212, 32.2530321691437], [-88.428278, 32.250143], [-88.4312940163839, 32.2276546024792], [-88.4338373824385, 32.2086904392936], [-88.4358107589052, 32.1939763035621], [-88.43865, 32.172806], [-88.43871, 32.172078], [-88.4418791405619, 32.1464303710893], [-88.4428468074689, 32.1385991117127], [-88.443049750597, 32.1369567074276], [-88.4534176891327, 32.0530497191012], [-88.4538834888783, 32.0492800349269], [-88.454959, 32.040576], [-88.455039, 32.039719], [-88.46866, 31.933173], [-88.4688742551621, 31.9303250695125], [-88.4688743843865, 31.9303233518312], [-88.468879, 31.930262], [-88.473227, 31.893856] ] ] ] } '" + ] + }, + "metadata": {}, + "execution_count": 28 + } + ], + "source": [ + "print(f\"GeoJSON for {selected_place_choice} which has the place id: {place_dcid}\\n\\n\")\n", + "dc.get_property_values([place_dcid], prop='geoJsonCoordinates', out=True)[place_dcid][0]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lDalaOEiRq_9" + }, + "source": [ + "What we have obtained is a string representation of the map in GeoJSON format, which we can load for making the base-map to visualize the locations of the suprefund sites.\n", + "\n", + "The objective is to recreate the visualizations of the location of superfund sites but this time instead of using the world map we will be using the map of the selected place.\n", + "\n", + "Before, we visualize the sites, we will need to make a few transformations on the location of the sites to make sure they can be visualized on a map. For this we will be converting the `sites_filtered` dataframe to a `geopandas.GeoDataFrame`. The `geopandas.GeoDataFrame` is similar to a `pandas.DataFrame` instance but has the spatial information stored in the geometry column.\n", + "\n", + "The following snippet of code can be used as a recepie to convert a pandas dataframe with location information to a `GeoDataFrame`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 873 + }, + "id": "naH5LSL1Wnuo", + "outputId": "2f31b578-ac22-4690-9d2e-254f856da073" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
epaSuperfundSiteIdnamelatitudelongitudeCoordinates
0AL3210020027Anniston Army Depot (Southeast Industrial Area)33.659439-85.969439POINT (-85.96944 33.65944)
1AL6210020008Alabama Army Ammunition Plant33.3381-86.3268POINT (-86.32680 33.33810)
2AL7210020742Redstone Arsenal (USARMY/NASA)34.646944-86.673055POINT (-86.67306 34.64694)
3ALD001221902Ciba-Geigy Corp. (McIntosh Plant)31.279-87.9955POINT (-87.99550 31.27900)
4ALD004022448Alabama Plating Company Inc.33.399722-86.405POINT (-86.40500 33.39972)
5ALD007454085T.H. Agriculture & Nutrition Co. (Montgomery P...32.3761-86.3791POINT (-86.37910 32.37610)
6ALD008161176Stauffer Chemical Co. (LeMoyne Plant)30.969439-88.0175POINT (-88.01750 30.96944)
7ALD008188708Olin Corp. (McIntosh Plant)31.263889-87.99445POINT (-87.99445 31.26389)
8ALD031618069Mowbray Engineering Co.31.831669-86.61305POINT (-86.61305 31.83167)
9ALD041906173Interstate Lead Co. (ILCO)33.688889-86.633333POINT (-86.63333 33.68889)
10ALD095688875Stauffer Chemical Co. (Cold Creek Plant)30.975-88.021389POINT (-88.02139 30.97500)
11ALD980728703Perdido Ground Water Contamination31.0125-87.625POINT (-87.62500 31.01250)
12ALD980844385Redwing Carriers Inc. (Saraland)30.808331-88.073061POINT (-88.07306 30.80833)
13ALD981868466American Brass31.325-85.404167POINT (-85.40417 31.32500)
14ALD983166299Triana/Tennessee River34.508888-86.638194POINT (-86.63819 34.50889)
15ALN00041075035th Avenue33.557464-86.799671POINT (-86.79967 33.55746)
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " epaSuperfundSiteId name \\\n", + "0 AL3210020027 Anniston Army Depot (Southeast Industrial Area) \n", + "1 AL6210020008 Alabama Army Ammunition Plant \n", + "2 AL7210020742 Redstone Arsenal (USARMY/NASA) \n", + "3 ALD001221902 Ciba-Geigy Corp. (McIntosh Plant) \n", + "4 ALD004022448 Alabama Plating Company Inc. \n", + "5 ALD007454085 T.H. Agriculture & Nutrition Co. (Montgomery P... \n", + "6 ALD008161176 Stauffer Chemical Co. (LeMoyne Plant) \n", + "7 ALD008188708 Olin Corp. (McIntosh Plant) \n", + "8 ALD031618069 Mowbray Engineering Co. \n", + "9 ALD041906173 Interstate Lead Co. (ILCO) \n", + "10 ALD095688875 Stauffer Chemical Co. (Cold Creek Plant) \n", + "11 ALD980728703 Perdido Ground Water Contamination \n", + "12 ALD980844385 Redwing Carriers Inc. (Saraland) \n", + "13 ALD981868466 American Brass \n", + "14 ALD983166299 Triana/Tennessee River \n", + "15 ALN000410750 35th Avenue \n", + "\n", + " latitude longitude Coordinates \n", + "0 33.659439 -85.969439 POINT (-85.96944 33.65944) \n", + "1 33.3381 -86.3268 POINT (-86.32680 33.33810) \n", + "2 34.646944 -86.673055 POINT (-86.67306 34.64694) \n", + "3 31.279 -87.9955 POINT (-87.99550 31.27900) \n", + "4 33.399722 -86.405 POINT (-86.40500 33.39972) \n", + "5 32.3761 -86.3791 POINT (-86.37910 32.37610) \n", + "6 30.969439 -88.0175 POINT (-88.01750 30.96944) \n", + "7 31.263889 -87.99445 POINT (-87.99445 31.26389) \n", + "8 31.831669 -86.61305 POINT (-86.61305 31.83167) \n", + "9 33.688889 -86.633333 POINT (-86.63333 33.68889) \n", + "10 30.975 -88.021389 POINT (-88.02139 30.97500) \n", + "11 31.0125 -87.625 POINT (-87.62500 31.01250) \n", + "12 30.808331 -88.073061 POINT (-88.07306 30.80833) \n", + "13 31.325 -85.404167 POINT (-85.40417 31.32500) \n", + "14 34.508888 -86.638194 POINT (-86.63819 34.50889) \n", + "15 33.557464 -86.799671 POINT (-86.79967 33.55746) " + ] + }, + "metadata": {}, + "execution_count": 29 + } + ], + "source": [ + "# copy of the pandas dataframe which we will transform into a GeoDataFrame\n", + "gdf = sites_filtered.copy()\n", + "\n", + "# convertying the latitude and longitude columns to a Point geometry \n", + "gdf[\"Coordinates\"] = list(zip(gdf.longitude.astype(float), gdf.latitude.astype(float)))\n", + "gdf[\"Coordinates\"] = gdf[\"Coordinates\"].apply(Point)\n", + "gdf.drop(columns=['latitude', 'longitude']) # deleting redudance\n", + "\n", + "# converting to GeoDataFrame\n", + "gdf = gpd.GeoDataFrame(gdf, geometry=\"Coordinates\")\n", + "gdf" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zlOvnPKla6ve" + }, + "source": [ + "With the `GeoDataFrame` now ready, we shall visualize the location of the sites using code snippet below:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 499 + }, + "id": "VYOPuhVeltN3", + "outputId": "50ab308c-d356-4558-d9ab-0aa07ce8bd9c" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "# Get the geojson for the selected place from the Data Commons Graph\n", + "place_map = dc.get_property_values([place_dcid], prop='geoJsonCoordinates', out=True)[place_dcid][0]\n", + "place_map = json.loads(place_map)\n", + "\n", + "# set the colors and initialize the empty figure object for drawing the map\n", + "BLUE = '#6699cc'\n", + "fig = plt.figure(figsize=(12, 8)) \n", + "ax = fig.gca() \n", + "\n", + "# Draw the geojson fetched from the Data Commons Graph\n", + "ax.add_patch(PolygonPatch(place_map, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2 ))\n", + "ax.axis('scaled')\n", + "\n", + "# Add the locations of the superfund sites from the GeoDataFrame\n", + "gdf.plot(ax=ax, color='red', alpha = 0.5)\n", + "plt.title (f'superfund site locations in {selected_place_choice}')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Demo 3 - Lookup timeseries for a specific superfund site\n", + "\n", + "In this demo example, we will dive into accessing StatVarObservations for Statistical Variables related to superfund sites.\n", + "\n", + "Currently, the Data Commons graph has the following statistics about superfund sites." + ], + "metadata": { + "id": "jZZ5u5_CjXGM" + } + }, + { + "cell_type": "markdown", + "source": [ + "### For all superfund sites on the NPL\n", + "\n", + "|Statistical Variable|Data Source|Status|\n", + "|-------|-----------|------|\n", + "|[CRSI Score](https://datacommons.org/browser/CrsiScore_SuperfundSite)|[Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location)|Available|\n", + "|[Natural Hazard Exposure Score](https://datacommons.org/browser/NaturalHazardExposureScore_SuperfundSite)|[Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location)|Available|\n", + "|[Natural Hazard Risk Score](https://datacommons.org/browser/NaturalHazardRiskScore_SuperfundSite)|[Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location)|Available|\n", + "|[`Natural Hazard Risk Score by `](https://datacommons.org/browser/NaturalHazardRiskScore_SuperfundSite_WildfireEvent)|[Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location)|Available|" + ], + "metadata": { + "id": "SoZNqx5MTQKy" + } + }, + { + "cell_type": "markdown", + "source": [ + "### Statistics available for Tar Creek superfund site\n", + "\n", + "Statistics for the Tar Creek superfund site are obtained the [6th five-year review report](https://semspub.epa.gov/work/06/100021610.pdf).This report measures concentration of contaminants in GroundWater across sampling wells withing and across the site. The concentration of contaminants are presented as [Total concentration](https://datacommons.org/browser/Concentration_Iron_BodyOfWater_GroundWater) and [Dissolved concentration](https://datacommons.org/browser/Concentration_DissolvedContaminant_Iron_BodyOfWater_GroundWater) statistical variables for:\n", + "- [Iron](https://datacommons.org/browser/Concentration_Iron_BodyOfWater_GroundWater)\n", + "- [Zinc](https://datacommons.org/browser/Concentration_Zinc_BodyOfWater_GroundWater)\n", + "- [Lead](https://datacommons.org/browser/Concentration_Lead_BodyOfWater_GroundWater)\n", + "- [Cadmium](https://datacommons.org/browser/Concentration_Cadmium_BodyOfWater_GroundWater)\n", + "- [Sulfate](https://datacommons.org/browser/Concentration_Sulfate_BodyOfWater_GroundWater)\n", + "\n", + "The report also has\n", + "measurements on water properties in GroundWaterlike:\n", + "- [hardness](https://datacommons.org/browser/WaterHardness_BodyOfWater_GroundWater)\n", + "- [pH](https://datacommons.org/browser/otentialOfHydrogen_BodyOfWater_GroundWater)\n", + "- [dissolved oxygen](https://datacommons.org/browser/DissolvedOxygen_BodyOfWater_GroundWater)\n", + "- [electrical conductivity](https://datacommons.org/browser/ElectricalConductivity_BodyOfWater_GroundWater)\n", + "- [temperature](https://datacommons.org/browser/Temperature_BodyOfWater_GroundWater)\n", + "\n", + "The statistics are available for 4 sampling wells across Tar Creek namely: [Quapaw #4](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Quapaw_4), [Commerce #5](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Commerce_5), [Picher #5](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Picher_5-MW) and [Picher #7](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Picher_7-MW)\n", + "\n", + "### Accessing and Visualizing Statistics for Tar Creek" + ], + "metadata": { + "id": "uzCLbAGIkplu" + } + }, + { + "cell_type": "code", + "source": [ + "## get a list of measurement sites that are in and around Tar Creek\n", + "tar_creek = 'epaSuperfundSiteId/OKD980629844'\n", + "measurement_sites = dc.get_places_in([tar_creek], 'SuperfundMeasurementSite')[tar_creek]\n", + "measurement_sites" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "50rGzwbhnCtt", + "outputId": "33d1270a-2986-4765-8720-6af0140348a7" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['epaSuperfundMeasurementSite/OKD980629844/Commerce_5',\n", + " 'epaSuperfundMeasurementSite/OKD980629844/Picher_5-MW',\n", + " 'epaSuperfundMeasurementSite/OKD980629844/Picher_7-MW',\n", + " 'epaSuperfundMeasurementSite/OKD980629844/Quapaw_4']" + ] + }, + "metadata": {}, + "execution_count": 31 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "List of statistical variables that are available for a measurement site can be obtained on the Graph Browser page for measurement sites ([example](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Picher_7-MW))." + ], + "metadata": { + "id": "dZWRPC3bobV3" + } + }, + { + "cell_type": "code", + "source": [ + "# List of statistics that are available for each measurement site\n", + "measurement_sites_statvars_list = ['Concentration_Sulfate_BodyOfWater_GroundWater',\n", + " 'Concentration_Lead_BodyOfWater_GroundWater',\n", + " 'Concentration_Cadmium_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Cadmium_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Iron_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Lead_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Zinc_BodyOfWater_GroundWater',\n", + " 'Concentration_Iron_BodyOfWater_GroundWater',\n", + " 'DissolvedOxygen_BodyOfWater_GroundWater',\n", + " 'Concentration_Zinc_BodyOfWater_GroundWater',\n", + " 'PotentialOfHydrogen_BodyOfWater_GroundWater',\n", + " 'ElectricalConductivity_BodyOfWater_GroundWater',\n", + " 'Temperature_BodyOfWater_GroundWater',\n", + " 'WaterHardness_BodyOfWater_GroundWater']" + ], + "metadata": { + "id": "5X6mRwAaoya_" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Now, we will be to query the Data Commons graph for all statistics available for a particular sampling well and a particular statistical variable.\n", + "\n", + "Please note that statistics for Tar Creek are time-series of observed characteristics of contaminated ground water and the concentration of different contaminants. The following code snippet uses the [`build_time_series_dataframe`](https://docs.datacommons.org/api/pandas/time_series_dataframe.html) API method to show one statistical variables available from the above list for the sampling well called [`Quapaw #4`](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Quapaw_4) near Tar Creek." + ], + "metadata": { + "id": "vGx2hgEeoyiT" + } + }, + { + "cell_type": "code", + "source": [ + "tar_creek_contamiantion_statvar_df = dpd.build_time_series_dataframe(['epaSuperfundMeasurementSite/OKD980629844/Quapaw_4'], measurement_sites_statvars_list[0])\n", + "\n", + "tar_creek_contamiantion_statvar_df.head(5)" + ], + "metadata": { + "id": "bkCWV7Jioyty", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 193 + }, + "outputId": "cf1b2c07-d3a3-41a5-85ff-e4bcc7bf22c5" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
2003-11-062004-04-282004-10-132005-04-262005-10-182006-04-122006-11-092007-05-092007-10-242008-04-222010-03-252010-11-112011-11-032012-11-082013-10-312017-03-142018-04-252019-04-30
place
epaSuperfundMeasurementSite/OKD980629844/Quapaw_411.111.812.813.516.415.22012.614.313.214.815.714.315.714.316.318.815.6
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " 2003-11-06 2004-04-28 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 11.1 11.8 \n", + "\n", + " 2004-10-13 2005-04-26 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 12.8 13.5 \n", + "\n", + " 2005-10-18 2006-04-12 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 16.4 15.2 \n", + "\n", + " 2006-11-09 2007-05-09 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 20 12.6 \n", + "\n", + " 2007-10-24 2008-04-22 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 14.3 13.2 \n", + "\n", + " 2010-03-25 2010-11-11 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 14.8 15.7 \n", + "\n", + " 2011-11-03 2012-11-08 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 14.3 15.7 \n", + "\n", + " 2013-10-31 2017-03-14 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 14.3 16.3 \n", + "\n", + " 2018-04-25 2019-04-30 \n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 18.8 15.6 " + ] + }, + "metadata": {}, + "execution_count": 33 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7u8ApO7RybLd" + }, + "source": [ + "### Accessing and visualizing statistics available for all superfund sites in Data Commons\n", + "\n", + "Next, we shall use the list of statistical variables for a superfund site, we can now make visualizations of the different StatVarObservations that are made for superfund sites.\n", + "\n", + "We fetch the time-series of StatVarObservations using the [`pandas`](https://docs.datacommons.org/api/pandas) API method [`build_time_series_dataframe`](https://docs.datacommons.org/api/pandas/time_series_dataframe.html) which returns a pandas datafarme of the time-series that are available for a particular place and a particular statistical variable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "referenced_widgets": [ + "9cf7730acc784ae48e5f17c86e92a261", + "518586f83b35495aa1215c5dbd1cd79d", + "fb9e80f4aea842e390f3341a488d14d8" + ], + "base_uri": "https://localhost:8080/", + "height": 66 + }, + "id": "r5kDa_y4aQga", + "outputId": "f42ab9f7-fbc7-44c7-f19f-1e0af943a304" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Select a statistical variable\n" + ] + }, + { + "output_type": "display_data", + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "9cf7730acc784ae48e5f17c86e92a261", + "version_minor": 0, + "version_major": 2 + }, + "text/plain": [ + "Dropdown(options=('CrsiScore_SuperfundSite', 'NaturalHazardExposureScore_SuperfundSite', 'NaturalHazardRiskSco…" + ] + }, + "metadata": {} + } + ], + "source": [ + "print(\"Select a statistical variable\")\n", + "\n", + "# list of statistical variables that we shall use for this notebook\n", + "stat_var_list = [\n", + " 'CrsiScore_SuperfundSite',\n", + " 'NaturalHazardExposureScore_SuperfundSite',\n", + " 'NaturalHazardRiskScore_SuperfundSite',\n", + " 'NaturalHazardRiskScore_SuperfundSite_CoastalFloodEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_DroughtEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_FloodEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HailEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HighWindEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HurricaneEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_LandslideEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_TornadoEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_WildfireEvent'\n", + " ]\n", + "# Populating the select dropdown\n", + "stat_var_select = widgets.Dropdown(options=stat_var_list, value=stat_var_list[0])\n", + "display(stat_var_select)" + ] + }, + { + "cell_type": "code", + "source": [ + "stat_var_list" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cKX-ign5TEhk", + "outputId": "6e59125d-65c3-4eba-d55b-574ae862592c" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['CrsiScore_SuperfundSite',\n", + " 'NaturalHazardExposureScore_SuperfundSite',\n", + " 'NaturalHazardRiskScore_SuperfundSite',\n", + " 'NaturalHazardRiskScore_SuperfundSite_CoastalFloodEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_DroughtEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_FloodEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HailEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HighWindEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HurricaneEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_LandslideEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_TornadoEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_WildfireEvent']" + ] + }, + "metadata": {}, + "execution_count": 27 + } + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 112 + }, + "id": "AK0kS14J-UOZ", + "outputId": "c1e2c8db-fb19-4a3e-ecfe-24ff32462b09" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
2021
place
epaSuperfundSiteId/AL32100200270.327246
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " 2021\n", + "place \n", + "epaSuperfundSiteId/AL3210020027 0.327246" + ] + }, + "metadata": {}, + "execution_count": 36 + } + ], + "source": [ + "chosen_statvar = stat_var_select.value\n", + "site_statvar_df = dpd.build_time_series_dataframe([site_dcid], chosen_statvar)\n", + "site_statvar_df.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "iXBgV3SV2G8e" + }, + "source": [ + "#### Getting statistics to a `pandas` DataFrame\n", + "Using the same `build_time_series_dataframe` API method, get the StatVarObservations for the selected statistical variable across all superfund sites." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + }, + "id": "Kg7fHa4O2EAM", + "outputId": "bc05727f-0ebc-4ace-c691-55658a1dc5d4" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
2021
place
epaSuperfundSiteId/AL32100200270.327246
epaSuperfundSiteId/AL62100200080.600902
epaSuperfundSiteId/AL72100207420.610158
epaSuperfundSiteId/ALD0012219020.962115
epaSuperfundSiteId/ALD0040224480.951963
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " 2021\n", + "place \n", + "epaSuperfundSiteId/AL3210020027 0.327246\n", + "epaSuperfundSiteId/AL6210020008 0.600902\n", + "epaSuperfundSiteId/AL7210020742 0.610158\n", + "epaSuperfundSiteId/ALD001221902 0.962115\n", + "epaSuperfundSiteId/ALD004022448 0.951963" + ] + }, + "metadata": {}, + "execution_count": 37 + } + ], + "source": [ + "site_statvar_df = dpd.build_time_series_dataframe(superfund_sites, chosen_statvar)\n", + "site_statvar_df.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1Jh7IU9z2iEK" + }, + "source": [ + "In both examples, the dataframe is still not human readable, let us add the name to the superfund sites. To add the names to the dataframe, we will query the superfund site's node and extract the `name` property using the `get_property_values` API method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + }, + "id": "jV8qIKOlTv2g", + "outputId": "6cbe00c4-5e87-4463-e1a3-31d957b40d28" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
2021name
place
epaSuperfundSiteId/AL32100200270.327246Anniston Army Depot (Southeast Industrial Area)
epaSuperfundSiteId/AL62100200080.600902Alabama Army Ammunition Plant
epaSuperfundSiteId/AL72100207420.610158Redstone Arsenal (USARMY/NASA)
epaSuperfundSiteId/ALD0012219020.962115Ciba-Geigy Corp. (McIntosh Plant)
epaSuperfundSiteId/ALD0040224480.951963Alabama Plating Company Inc.
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " 2021 \\\n", + "place \n", + "epaSuperfundSiteId/AL3210020027 0.327246 \n", + "epaSuperfundSiteId/AL6210020008 0.600902 \n", + "epaSuperfundSiteId/AL7210020742 0.610158 \n", + "epaSuperfundSiteId/ALD001221902 0.962115 \n", + "epaSuperfundSiteId/ALD004022448 0.951963 \n", + "\n", + " name \n", + "place \n", + "epaSuperfundSiteId/AL3210020027 Anniston Army Depot (Southeast Industrial Area) \n", + "epaSuperfundSiteId/AL6210020008 Alabama Army Ammunition Plant \n", + "epaSuperfundSiteId/AL7210020742 Redstone Arsenal (USARMY/NASA) \n", + "epaSuperfundSiteId/ALD001221902 Ciba-Geigy Corp. (McIntosh Plant) \n", + "epaSuperfundSiteId/ALD004022448 Alabama Plating Company Inc. " + ] + }, + "metadata": {}, + "execution_count": 38 + } + ], + "source": [ + "def add_name_col(df):\n", + " # Add a new column called name, where each value is the name for the place dcid in the index.\n", + " df['name'] = df.index.map(dc.get_property_values(df.index, 'name'))\n", + " \n", + " # Keep just the first name, instead of a list of all names.\n", + " df['name'] = df['name'].str[0]\n", + "\n", + "add_name_col(site_statvar_df)\n", + "site_statvar_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8B6hna663EJe" + }, + "source": [ + "#### Visualizing StatVarObservations for superfund site statistics\n", + "Now, let us try visualizing the StatVarObservations.\n", + "\n", + "\n", + "The statistical variables that are currently available on superfund sites across the country is from the [Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location) paper and has only one data-point. \n", + "\n", + "Hence, we visualize the sites with highest natural hazard vulnerability as a bar chart." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 367 + }, + "id": "0iSaf-uqT0M5", + "outputId": "9c9f323a-d421-436a-bf97-cc7a4d10267d" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 39 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "# sort the dataframe by the value column in descending order\n", + "site_vulnerability = site_statvar_df.sort_values(by='2021', ascending=False)\n", + "\n", + "# set the threshold on the number sites to visualize - since there are 1,300 odd superfund sites\n", + "num_sites = 10\n", + "site_vulnerability = site_vulnerability[:num_sites]\n", + "site_vulnerability.plot(kind='bar', x='name', y='2021', figsize=(25,5))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "a8MLVfg84mV-" + }, + "source": [ + "If two statistical variables need to be compared together for correlations for a particular place, please consider using the [`build_multivariate_dataframe`](https://docs.datacommons.org/api/pandas/multivariate_dataframe.html) API method.\n", + "\n", + "For example, we shall compare the CRSI score (stat_var_id: `CrsiScore_SuperfundSite`) with the natural hazard risk score (stat_var_id: `NaturalHazardRiskScore_SuperfundSite`) across superfund sites in the US.\n", + "\n", + "> The [Climate Resilience Screening Index](https://www.iisd.org/system/files/meterial/US%20EPA%20CSIN%20webinar%203.pdf) (CRSI) score which measures the resilience of socio-ecological systems, (superfund sites) in the context of governance and risk to natural hazard events.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 488 + }, + "id": "xFF1ZuOx6iCQ", + "outputId": "25af47d9-e0db-47c1-a5b8-8ada7dce3d29" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
NaturalHazardRiskScore_SuperfundSiteCrsiScore_SuperfundSite
place
epaSuperfundSiteId/AL321002002766.9450.327246
epaSuperfundSiteId/AL621002000830.3320.600902
epaSuperfundSiteId/AL721002074280.3830.610158
epaSuperfundSiteId/ALD00122190235.1740.962115
epaSuperfundSiteId/ALD00402244853.1490.951963
epaSuperfundSiteId/ALD00745408551.8941.011869
epaSuperfundSiteId/ALD00816117653.5650.750292
epaSuperfundSiteId/ALD00818870835.1740.962115
epaSuperfundSiteId/ALD04190617391.4560.394343
epaSuperfundSiteId/ALD09568887553.5650.750292
epaSuperfundSiteId/ALD98186846622.6230.458104
epaSuperfundSiteId/ALD98316629942.5340.827992
epaSuperfundSiteId/ALN00041075091.4560.394343
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " NaturalHazardRiskScore_SuperfundSite \\\n", + "place \n", + "epaSuperfundSiteId/AL3210020027 66.945 \n", + "epaSuperfundSiteId/AL6210020008 30.332 \n", + "epaSuperfundSiteId/AL7210020742 80.383 \n", + "epaSuperfundSiteId/ALD001221902 35.174 \n", + "epaSuperfundSiteId/ALD004022448 53.149 \n", + "epaSuperfundSiteId/ALD007454085 51.894 \n", + "epaSuperfundSiteId/ALD008161176 53.565 \n", + "epaSuperfundSiteId/ALD008188708 35.174 \n", + "epaSuperfundSiteId/ALD041906173 91.456 \n", + "epaSuperfundSiteId/ALD095688875 53.565 \n", + "epaSuperfundSiteId/ALD981868466 22.623 \n", + "epaSuperfundSiteId/ALD983166299 42.534 \n", + "epaSuperfundSiteId/ALN000410750 91.456 \n", + "\n", + " CrsiScore_SuperfundSite \n", + "place \n", + "epaSuperfundSiteId/AL3210020027 0.327246 \n", + "epaSuperfundSiteId/AL6210020008 0.600902 \n", + "epaSuperfundSiteId/AL7210020742 0.610158 \n", + "epaSuperfundSiteId/ALD001221902 0.962115 \n", + "epaSuperfundSiteId/ALD004022448 0.951963 \n", + "epaSuperfundSiteId/ALD007454085 1.011869 \n", + "epaSuperfundSiteId/ALD008161176 0.750292 \n", + "epaSuperfundSiteId/ALD008188708 0.962115 \n", + "epaSuperfundSiteId/ALD041906173 0.394343 \n", + "epaSuperfundSiteId/ALD095688875 0.750292 \n", + "epaSuperfundSiteId/ALD981868466 0.458104 \n", + "epaSuperfundSiteId/ALD983166299 0.827992 \n", + "epaSuperfundSiteId/ALN000410750 0.394343 " + ] + }, + "metadata": {}, + "execution_count": 40 + } + ], + "source": [ + "multi_statvar_df = dpd.build_multivariate_dataframe(superfund_sites,[\"CrsiScore_SuperfundSite\", \"NaturalHazardRiskScore_SuperfundSite\"])\n", + "multi_statvar_df" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JnGHbrqy7Uv5" + }, + "source": [ + "For the comparison, we shall make a scatter plot across the two statistical variables namely: \"CrsiScore_SuperfundSite\" and \"NaturalHazardRiskScore_SuperfundSite\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 514 + }, + "id": "05oEIsh27J55", + "outputId": "47e8eb3a-409a-4be6-9281-e138c8c1451d" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtEAAAHxCAYAAACrjeCsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzde5hdZX33//cnJIRoosQQqCYgaKiWaow2HhAPaLUPqA2tWIGqeKigv0eq9VCxVmlLz1StPi19LCpa2ooHYjEqrWd9tJ4IGIKA1IhIEhFDCJBoCIH5/v5Ya3BnnCSzyOzsmcn7dV1zzV6HvdZ333vPns++173WTlUhSZIkaeymDboASZIkabIxREuSJEkdGaIlSZKkjgzRkiRJUkeGaEmSJKkjQ7QkSZLUkSFamoSSfCDJXwy6jq6SHJ6kkky/l/d/d5K3jmG965M8497sQ1NTkkOS/L8km5O8vc/72pLkIX3ex5OTXNunbY/57zTJsUnW9aMOaaIzREsjtAHsJ0nu2zPv5Um+NMb7/2mSf+tbgbvf/0uSfHWU+RM+WLY1bm1DyI/bDwuzh5dX1Sur6s/HeZ8nJFmV5PYkNyf5QpIjxnMfg5LkgUnel+TGNjx+N8mfDb+226D007a91yd5R5L9eu7/q0k+k+SWJLcmuSzJs9plky08nQ7cDNyvql7fzx1V1eyqug7694G3qr5SVQ/bk220z2ElOXO86pL2JYZoaXT7Aa8ZxI7vbS/tRLMHj+M3q2o2sAR4NPBH41fVjpIsAi4AXg/cHzgCOBe4exz3kSR7/b02yQOArwOzgKOrag7wTOBA4KE9qz6qbe+nAicBL+tZ9gngs8AvAQcDrwZu73/1u3Yv2/TBwNV1L75hbKr8TY7ixcAtwKmDLkSajAzR0uj+DnhDkgNHW5jkXUnWtr2XlyV5cjv/OODNwElt794V7fwdeoF7e6t7Dp3+XpIbgC+08z/a9sbe1h6G/tXxenBJHtr2uG5se1//ffixJhmuffhn23AvfJJnJ/l2+7jXJvnTnm3+wuNIsl+St7X7uA549lhrrKofA5+mCdPD+7inVy/JQUk+2faQ3pLkK6MFqyS/kuQHSU4ZZTdLgB9U1eersbmqllfVDe1990vy5iTfb3tyL0tyaLvsiUkubZ+fS5M8sWefX0ryl0n+G/gZ8JAkD0/y2bbWa5M8fyfPzUlJVo6Y99okK9rbz0pydVvP+iRv2EkTvg7YDLywqq5v23RtVb2mqlaP0t5rgP8ebu8kB9F8qHhPVd3Z/vx3Vf3CUY6dPI4z2/o2t4/31wfYph+gCYxvbF/Tz0gyM8k7k/yo/Xlnkpnt+scmWdc+hh8D7x9lm4uSfLmt9eYkH+5ZVu3y04EX9Oz3E+3yByVZnmRD+9p8dc99H5dkZfs3dlOSd+zkMe1wJCDNe8wbkqxua/pwkgN28fzcF3ge8CrgyCRLd7HuS5Nc0z5f1yV5xSjrvLlth+uTvKBn/ljeM17aLtuU5JVJHts+jluT/GPP+jt935IGoqr88cefnh/geuAZwMeAv2jnvRz4Us86LwTmAdNpejF/DBzQLvtT4N9G22bP9D3rAIcDRdMjel9gVjv/ZcAcYCbwTmBVz/0/MFzbKPW/BPjqzh5Xe3sRTa/kTGA+8P+Ad45yn/sB1wCvaKePBR5J8wF8MXAT8Fs7exzAK4HvAocCDwC+2K4zfVdt395eCFwJvGu0xw38NfBuYEb782QgI57DxwA3AM/Zyf4eAtwB/D3wNGD2iOV/2NbwMCDAo9rn/QHAJuBF7WvglHZ6Xnu/L7X7/dV2+f2BtcBL2+lH0wwtOGqUmu5DE36P7Jl3KXBye/tG4Mnt7bnAY3by2L4B/NluXusFLGpvP7zd9mvb6QDfAz4J/BZwyIj7Hgus28l2H9Y+3gf1vDYeOqg2He1vBji7baODaf4Gvgb8ec9juwv4W5q/kVmjbO9C4I9p/hYOAJ60k3Ydud9pwGXAWcD+NK/B64D/1S7/OvCi9vZs4Ak7eTw7tD/Na/5bwIPatrwGeOUunvsXtc/3fjRHHP6hZ9nh9Pyd0nz4fWj7fD2V5kPMY0a01Tvatnoq8FPgYR3eM97dtuFv0Pw9Xtw+LwuAnwBP7fK+5Y8/e+vHnmhp584Cfj/J/JELqurfqmpjVd1VVW+neVPfo/GJwJ9W1U+ramu7j/Or6RndRhO6H5Xk/mPc1hPaXpx7foDDeupfU1WfraptVbWB5h/gU3s3kKZX94M0Hx7+ub3fl6rqyqoaqqY388KR9xvxOJ5P809ubVXdQhN8d+fiJJtpAtJPgD/ZyXrbgQcCD66q7dWMEe09VP9kYAVwalV9crQNVDNu9Viaf9YfAW7OjuOwXw68paqurcYVVbWRJlR8r6r+tX0NXEjzYeE3ezb/gaq6qqruAo4Drq+q97frfxtYDvzOKDX9DPg4TYgkyZE0AXdFz+M+Ksn9qmpTVV2+k/aZRxOSdufyJD+lCV1fAv6praNoPlhcD7wduDHNEZEjx7DNu2n+Jo5KMqOqrq+q77fL9nqb7sQLgLOr6ift38Cf0QTLYUPAn7R/I1tHuf92miEiD6qqO2qMPfTAY4H5VXV2Nb371wHvAU7u2e6iJAdV1Zaq+sYYtwvwf6rqR+3f2ifoOYozihcDH66qu2n+zk9OMmO0FavqU1X1/fb5+jLwGZq/r15vbdvqy8CnaP72x/qe8edtG36GJoBf2D4v64Gv0HxAGtP7lrQ3GaKlnaiq79D0wr1p5LL2sOk17WHTW2l6xQ7aw12u7dn+fkn+pj3kfTtNkKHDPr5RVQf2/tD04g1v/5AkH2oPt98O/Nso2/5Lmp7w3kPNj0/yxfYw9G00Pc0j77e25/aDRkz/cAy1/1Y143ePpQmPO3vMfwesAT7THmIe+Ty9EvhaVX1pVzurqm9U1fOraj5NMHgKTQ8jND3o3x/lbg8a5bH8kCaMD+t93A8GHj/iQ80LaMYaj+aDtCEa+F3g4jZcA5wIPAv4YTuc4OidbGMjzYeM3XkMTY/nScDjaY4iAFBV66rqjKp6aPsYfkpzpGGXqhka8gc0H/5+0r7WHtQuHlSb7m5/P2znDdtQVXfs4v5vpOmZ/VaSq5K8bBfr9now8KARdb8ZOKRd/nvALwPfTTOk5Tlj3C40R8SG/Yzmef0FaYbPPA3493bWx2l6gkcdbpXk+CTfSHuCKc3rr/fvclNV/bRn+p62HON7xk09t7eOMj273dZY3rekvcYQLe3anwCn0fOPPM345zfS9LTMbQPqbTT/UKE5PDnST2kO0w8b7R997/1+FziBZkjC/WkOe9Kzjz31V+3+HllV96MZnnLPtpOcTBPinldV23vu90GaHtFDq+r+NIdhR9bU+zhupAlNww5jjNoerQ8Ab9vJ8s1V9fqqegiwDHhd2nG3rVcChyX5+w77vJRmGM8j2llr2fEkvGE/oglDvQ4D1vduruf2WuDLIz7YzK6q/28npXwWmJ9kCc3z8MHeGqvqBJrD3RfT9KCP5nPAb2cMJ+C1PYwfoRlKcNZO1llLc9LlI0ZbPsr6H6yqJ9G0U9EMjYDBtenu9ndYO2+0ff2CqvpxVZ1WVQ8CXgH8U5oTVX9h1RHTa2nG4ffWPaeqntVu93tVdQrN8/u3wEXpuVLQOHkRzf//T6QZ830dTYh+8cgV04wTX07zd3hI+353CTv+3c8dUWNvW47lPWOsdvm+Je1thmhpF9oetQ/T0xtL0zt7F7ABmJ7kLJqxw8NuAg4fEV5W0R4ubU/ged5udj0H2EbTm3gfmn8e42kOsAW4LckCmnGqACR5NPAPND3CG0a53y1VdUeSx9GE/V35CPDqJAuTzGWUXv3deCfwzCSPGrkgyXPSnLwVmg8xd9Mcgh+2meaQ/1OS/M1oG0/ypCSnJTm4nX44TSAfPoT+XuDPkxyZxuIk82hCxC8n+d0k05OcBBxFc+RiNJ9s139R+xqY0Z489Sujrdx+cPkoTW/7A2hCNUn2T/KCJPdv17l9xGPu9Q6a1+W/JHlwe/8FaS5jt3gn9/kb4LQkv5RkbprL4S1KMi3NiYYv62mbnUrysCRPbwPYHTS9icN1DqRNR3Eh8JYk89vHdhZNz+aYJPmdJAvbyU004W605+ImmnHPw74FbE5z0uKsNEedHpHkse12X5hkflUNAbe299nZc3xvvZhm+MqSnp8TgWe1z0Wv/WmG5mwA7kpyPM3Y5ZH+rH19Phl4Ds3rF7q/Z+zKTt+3pEEwREu7dzY9h7hprhjxX8D/0By2vIMdDzMP//PYmGR4vOpbaXrfNtH88/ogu3ZBu+31wNWMIbh09Gc0h/Fvoxm/+LGeZSfQnLD21fz8Ch3/2S7738DZacYsn8XOe0GHvYemva4ALh+xn91qQ/wFjN47eiRNb+sWmh7Uf6qqL464/600JyIdn2S060vfShOar0yyheZ5/Q/gnHb5O2ge42doAuv7aE4y20gTFF5P80HnjTQnL968k8exmSZ4nEzTQ/djfn7S2s58kOZIxEfbMcDDXgRc3x7OfiXNEIbR9nkL8ESaMbbfbJ+zz9M852t2cp8raU7W+kPgTpojIJ9rH/t3aD7YvWQXNQ+bSRPIb6Z5rAfz80sVDrJNe/0FsBJYTXOi4+XtvLF6LE27bqHpaX1NO755pPfRjA2/NcnF7Rjk59BeGYamjd5Lc8QJmg9+V7XbfRfNCaWjjcm+V5I8gaYH/ty2N334ZwXN62KHq9i07fxqmudsE00IXjFisz9ul/2IZojIK6vqu+2yru8Zu7Kr9y1prxs+k12SJEnSGNkTLUmSJHVkiJYkSZI6MkRLkiRJHRmiJUmSpI4M0ZIkSVJH0wddwL1x0EEH1eGHHz7oMiRJkjTFXXbZZTe332q7g0kZog8//HBWrlw56DIkSZI0xSX54WjzHc4hSZIkdWSIliRJkjoyREuSJEkdGaIlSZKkjgzRkiRJUkeGaEmSJKkjQ7QkSZLUkSFakiRJ6sgQLUmSJHVkiJYkSZI6MkRLkiRJHRmiJUmSpI4M0ZIkSVJHhmhJkiSpI0O0JEmS1JEhWpI62LhlG1esvZWNW7YNuhRJ0gBNH3QBkjRZfHzVes5cvpoZ06axfWiIc05czLIlCwZdliRpAOyJlqQx2LhlG2cuX80d24fYvO0u7tg+xBuXr7ZHWpL2UYZoSRqDdZu2MmPajm+ZM6ZNY92mrQOqSJI0SIZoSRqDhXNnsX1oaId524eGWDh31oAqkiQNkiFaksZg3uyZnHPiYg6YMY05M6dzwIxpnHPiYubNnjno0iRJA9DXEwuTnA88B/hJVT1ilOUB3gU8C/gZ8JKquryfNUnSvbVsyQKOWXQQ6zZtZeHcWQZoSdqH9bsn+gPAcbtYfjxwZPtzOvB/+1yPJO2RebNn8qhDDzRAS9I+rq8huqr+H3DLLlY5AbigGt8ADkzywH7WJEmSJO2pQY+JXgCs7Zle186TJEmSJqxBh+gxS3J6kpVJVm7YsGHQ5UiSJGkfNugQvR44tGd6YTvvF1TVeVW1tKqWzp8/f68UJ0mSJI1m0CF6BXBqGk8AbquqGwdckyRJkrRL/b7E3YXAscBBSdYBfwLMAKiqdwOX0Fzebg3NJe5e2s96JEmSpPHQ1xBdVafsZnkBr+pnDZIkSdJ4G/RwDkmSJGnSMURLkiRJHRmiJUmSpI4M0ZIkSVJHhmhJkiSpI0O0JEmS1JEhWpIkSerIEC1JkiR1ZIiWJEmSOjJES5IkSR0ZoiVJkqSODNGSJElSR4ZoSZIkqSNDtCRJktSRIVpT3pqbNnPRyrWsuWnzoEuRJElTxPRBFyD101kXX8kF37jhnulTjz6Ms0945AArkiRJU4E90Zqy1ty0eYcADXDB12+wR1qSJO0xQ7SmrFVrb+00X5IkaawM0Zqylhx6YKf5kiRJY2WI1pS16JA5nHr0YTvMO/Xow1h0yJwBVaR9zcYt27hi7a1s3LJt0KVIksaZJxZqSjv7hEdy6hMOZ9XaW1ly6IEGaO01H1+1njOXr2bGtGlsHxrinBMXs2zJgkGXJUkaJ4ZoTXmLDpljeNZetXHLNs5cvpo7tg9xB0MAvHH5ao5ZdBDzZs8ccHWSpPHgcA5JGmfrNm1lxrQd315nTJvGuk1bB1SRJGm8GaIlaZwtnDuL7UNDO8zbPjTEwrmzBlSRJGm8GaIlaZzNmz2Tc05czAEzpjFn5nQOmDGNc05c7FAOSZpCHBMtSX2wbMkCjll0EOs2bWXh3FkGaEmaYgzRktQn82bPNDxL0hTlcA5JkiSpI0O0JEmS1JEhWpIkSerIEC1JkiR1ZIiWJEmSOjJES5IkSR0ZoiVJkqSODNGSJElSR4ZoSZIkqSNDtCRJktSRIVqSJEnqyBAtSZIkdWSIliRJkjoyREuSJEkdGaIlSZKkjgzRkiRJUkeGaEmSJKkjQ7QkSZLUkSFakiRJ6sgQLUmSJHVkiJYkSZI6MkRLkiRJHfU9RCc5Lsm1SdYkedMoyx+c5PNJVif5UpKF/a5JkiRJ2hN9DdFJ9gPOBY4HjgJOSXLUiNXeBlxQVYuBs4G/7mdNkiRJ0p7qd0/044A1VXVdVd0JfAg4YcQ6RwFfaG9/cZTlkiRJ0oTS7xC9AFjbM72undfrCuC57e3fBuYkmTdyQ0lOT7IyycoNGzb0pVhJkiRpLCbCiYVvAJ6a5NvAU4H1wN0jV6qq86pqaVUtnT9//t6uUZIkSbrH9D5vfz1waM/0wnbeParqR7Q90UlmAydW1a19rkuSJEm61/rdE30pcGSSI5LsD5wMrOhdIclBSYbr+CPg/D7XJEmSJO2RvoboqroLOAP4NHAN8JGquirJ2UmWtasdC1yb5H+AQ4C/7GdNkiRJ0p5KVQ26hs6WLl1aK1euHHQZkiRJmuKSXFZVS0fOnwgnFkqSJEmTiiFakiRJ6sgQLUmSJHVkiJYkSZI6MkRLkiRJHRmiJUmSpI4M0ZIkSVJHhmhJkiSpI0O0JEmS1JEhWpIkSerIEC1JkiR1ZIiWJEmSOjJES5IkSR0ZoiVJkqSODNGSJElSR4ZoSZIkqSNDtCRJktSRIVqSJEnqyBAtSZIkdWSIliRJkjoyREuSJEkdGaIlSZKkjgzRkiRJUkeGaEmSJKkjQ7QkSZLUkSFakiRJ6sgQLUmSJHVkiJYkSZI6MkRLkiRJHRmiJUmSpI4M0ZIkSVJHhmhJkiSpI0O0JEmS1JEhWtpHbNyyjSvW3srGLdsGXYokSZPe9EEXIKn/Pr5qPWcuX82MadPYPjTEOScuZtmSBYMuS5KkScueaGmK27hlG2cuX80d24fYvO0u7tg+xBuXr7ZHWpKkPWCIlqa4dZu2MmPajn/qM6ZNY92mrQOqSJKkyc8QLU1xC+fOYvvQ0A7ztg8NsXDurAFVJEnS5GeIlqa4ebNncs6JizlgxjTmzJzOATOmcc6Ji5k3e+agS5MkadLyxEJpH7BsyQKOWXQQ6zZtZeHcWQZoSZL2kCFa2kfMmz3T8CxJ0jhxOIckSZLUkSFakiRJ6sgQLUmSJHVkiJYkSZI6MkRLkiRJHRmiJUmSpI4M0ZIkSVJHfQ/RSY5Lcm2SNUneNMryw5J8Mcm3k6xO8qx+1yRJkiTtib6G6CT7AecCxwNHAackOWrEam8BPlJVjwZOBv6pnzVJkiRJe6rfPdGPA9ZU1XVVdSfwIeCEEesUcL/29v2BH/W5JkmSJGmP9PtrvxcAa3um1wGPH7HOnwKfSfL7wH2BZ/S5JkmSJGmPTIQTC08BPlBVC4FnAf+a5BfqSnJ6kpVJVm7YsGGvFylJkiQN63eIXg8c2jO9sJ3X6/eAjwBU1deBA4CDRm6oqs6rqqVVtXT+/Pl9KleSJEnavX6H6EuBI5MckWR/mhMHV4xY5wbg1wGS/ApNiLarWZIkSRNWX0N0Vd0FnAF8GriG5iocVyU5O8mydrXXA6cluQK4EHhJVVU/65IkSZL2RL9PLKSqLgEuGTHvrJ7bVwPH9LsOSZIkabxMhBMLJUmSpEnFEC1JkiR1ZIiWJEmSOjJES5IkSR0ZoiVJkqSODNGSJElSR4ZoSZIkqSNDtCRJktSRIVqSJEnqyBAtSZIkdWSIliRJkjrqFKKTPDjJM9rbs5LM6U9ZkiRJ0sQ15hCd5DTgIuCf21kLgYv7UZQkSZI0kXXpiX4VcAxwO0BVfQ84uB9FSZIkSRNZlxC9raruHJ5IMh2o8S9JkiRJmti6hOgvJ3kzMCvJM4GPAp/oT1mSJEnSxNUlRL8J2ABcCbwCuKSq/rgvVUmSJEkT2PQO6/5+Vb0LeM/wjCSvaedJkiRJ+4wuPdEvHmXeS8apDkmSJGnS2G1PdJJTgN8FjkiyomfRHOCWfhUmSZIkTVRjGc7xNeBG4CDg7T3zNwOr+1GUJEmSNJHtNkRX1Q+BHwJH978cSZq61ty0mVVrb2XJoQey6BC/8FWSJrOxDOf4alU9KclmdrwudICqqvv1rTpJmiLOuvhKLvjGDfdMn3r0YZx9wiMHWJEkaU/s9sTCqnpS+3tOVd2v52eOAVqSdm/NTZt3CNAAF3z9BtbctHlAFUmS9tRuQ3SS+ySZ0TP9sCSvTfLb/S1NkqaGVWtv7TRfkjTxjeUSd/8FHA6QZBHwdeAhwBlJ/qZ/pUnS1LDk0AM7zZckTXxjCdFzq+p77e0XAxdW1e8DxwPP7ltlkjRFLDpkDqcefdgO8049+jBPLpSkSWwsl7jrPZnw6cDfAVTVnUmG+lKVJE0xZ5/wSE59wuFenUOSpoixhOjVSd4GrAcWAZ8BSOJxSEnqYNEhcwzPkjRFjGU4x2nAzTTjon+jqn7Wzj8KeFuf6pIkSZImrLF82cpW4BdOIKyqr9F8m6EkSZK0TxnLl61cyY7jondQVYvHtSJJkiRpghvLmOjntL9f1f7+1/b3C9lFuJYkSZKmqrEM5/ghQJJnVtWjexadmeRy4E39Kk6SJEmaiMZyYuGwJDmmZ+KJHe8vSZIkTQljGc4x7PeA85PcHwiwCXhZX6qSJEmSJrAxh+iqugx4VBuiqarb+laVJEmSNIGNOUQnmQmcSHO96OlJAKiqs/tSmSRJkjRBdRnO8XHgNuAyYFt/ypEkSZImvi4hemFVHde3SiRJkqRJosvVNb6W5JF9q0SSJEmaJLr0RD8JeEmSH9AM5whQfmOhJEmS9jVdQvTxfatCkiRJmkS6hGi/4luSJEmiW4j+FE2QDnAAcARwLfCrfahLkiRJmrC6fNnKDicVJnkM8L/HvSJJkiRpgutydY4dVNXlwOPHsRZJkiRpUujyjYWv65mcBjwG+NG4VyRJkiRNcF3GRM/puX0XzRjp5eNbjiRJkjTx7TZEJ/nXqnoRcGtVvavrDpIcB7wL2A94b1X9zYjlfw88rZ28D3BwVR3YdT+SJEnS3jKWnuhfS/Ig4GVJLqC5Osc9quqWnd0xyX7AucAzgXXApUlWVNXVPfd/bc/6vw88uttDkCRJkvausYTodwOfBx4CXMaOIbra+TvzOGBNVV0HkORDwAnA1TtZ/xTgT8ZQkyRJkjQwu706R1X9n6r6FeD8qnpIVR3R87OrAA2wAFjbM72unfcLkjyY5trTXxhj7ZIkSdJAjOkSd+2wjKftdsU9czJwUVXdvZMaTk+yMsnKDRs29LkUSZIkaefGFKLbYHttksM6bn89cGjP9MJ23mhOBi7cRQ3nVdXSqlo6f/78jmVIkiRJ46fLJe7mAlcl+Rbw0+GZVbVsF/e5FDgyyRE04flk4HdHrpTk4e32v96hHkmSJGkguoTot3bdeFXdleQM4NM0l7g7v6quSnI2sLKqVrSrngx8qKqq6z4kSZKkvS1dcmt78t+RVfW5JPcB9quqzX2rbieWLl1aK1eu3Nu7lSRJ0j4myWVVtXTk/DGNiW43cBpwEfDP7awFwMXjU54kSZI0eYw5RAOvAo4Bbgeoqu8BB/ejKEmSJGki6xKit1XVncMTSabTfNmKJEmStE/pEqK/nOTNwKwkzwQ+CnyiP2VJkiRJE1eXEP0mYANwJfAK4BLgLf0oSpIkSZrIxnyJu6oaSvIvwDdphnFc6yXpJEmStC8ac4hO8mzg3cD3gQBHJHlFVf1nv4qTJEmSJqIuX7byduBpVbUGIMlDgU8BhmhJkiTtU7qMid48HKBb1wF7/YtWJEmSpEHr0hO9MsklwEdoxkT/DnBpkucCVNXH+lCfJEmSNOF0CdEHADcBT22nNwCzgN+kCdWGaEmSJO0Tulyd46X9LESSJEmaLLpcneP9jPINhVX1snGtSJIkSZrgugzn+GTP7QOA3wZ+NL7lSJIkSRNfl+Ecy3unk1wIfHXcK5IkSZImuC6XuBvpSODg8SpEkiRJmiy6jIneTDMmOu3vHwNn9qkuSZIkacLqMpxjTj8LkSRJkiaL3Q7nSPLgJPfvmX5akncleW2S/ftbniRJkjTxjGVM9EeA+wIkWQJ8FLgBWAL8U/9KkyRJkiamsQznmFVVw5eyeyFwflW9Pck0YFX/SpMkSZImprH0RKfn9tOBzwNU1VBfKpIkSZImuLH0RH8hyUeAG4G5wBcAkjwQuLOPtUmSJEkT0lhC9B8AJwEPBJ5UVdvb+b8E/HG/CpMkSZImqt2G6Koq4EOjzP9273SSr1fV0eNYmyRJkjQh7ck3Fo50wDhuS5IkSZqwxjNE1zhuS5IkSZqwxjNES5IkSfuE8QzR2f0qkiRJ0uTXKUS3XwH+jPb2rCRzeha/aFwrkyRJkiaoMYfoJKcBFwH/3M5aCFw8vLyqvjO+pUmSJEkTU5ee6FcBxwC3A1TV94CD+1GUJEmSNJF1CdHbquqebyhMMh2vyCFJkqR9UJcQ/eUkbwZmJXkm8FHgE/0pS5IkSZq4uoToM4ENwJXAK4BLgLf0oyhJkiRpItvt134DJNkPuKqqHg68p78lSZIkSRPbmHqiq+pu4Nokh/W5HkmSJGnCG1NPdGsucFWSbwE/HZ5ZVcvGvSpJkiRpAusSot/atyokSZKkSWTMIbqqvpzkEOCx7axvVdVP+lOWJEmSNHF1+cbC5wPfAn4HeD7wzSTP61dhkiRJ0kTVZTjHHwOPHe59TowD4bYAABpDSURBVDIf+BzNV4FLkiRJ+4wu14meNmL4xsaO95ckSZKmhC490f+V5NPAhe30ScB/jn9JkiRJ0sTW5cTCP0zyXOBJ7azzquo/+lOWJEnSYG3cso11m7aycO4s5s2eOehyNMGMOUQnOQK4pKo+1k7PSnJ4VV3fr+IkSZIG4eOr1nPm8tXMmDaN7UNDnHPiYpYtWTDosjSBdBnT/FFgqGf67naeJEnSlLFxyzbOXL6aO7YPsXnbXdyxfYg3Ll/Nxi3bBl2aJpAuIXp6Vd05PNHe3n/8S5IkSRqcdZu2MmPajhFpxrRprNu0dUAVaSLqEqI3JLnnK76TnADcPP4lSZIkDc7CubPYPjS0w7ztQ0MsnDtrQBVpIuoSol8JvDnJDUnWAmcCr9jdnZIcl+TaJGuSvGkn6zw/ydVJrkrywQ41aYA2btnGFWtv9fCWJGlKmTd7JuecuJgDZkxjzszpHDBjGuecuNiTC7WDLlfn+D7whCSz2+ktu7tPkv2Ac4FnAuuAS5OsqKqre9Y5Evgj4Jiq2pTk4I6PQQPgCReSpKls2ZIFHLPoIK/OoZ3abU90kt9M8uCeWa8D/jvJivaKHbvyOGBNVV3XjqH+EHDCiHVOA86tqk0AI77QRROQJ1xIkvYF82bP5FGHHmiA1qjGMpzjL4ENAEmeA7wQeBmwAnj3bu67AFjbM72undfrl4FfTvLfSb6R5LixFK7B8YQLSZK0rxtLiK6q+ll7+7nA+6rqsqp6LzB/HGqYDhwJHAucArwnyYEjV0pyepKVSVZu2LBhHHare8sTLiRJ0r5uLCE6SWYnmQb8OvD5nmUH7Oa+64FDe6YXtvN6rQNWVNX2qvoB8D80oXoHVXVeVS2tqqXz549Hdte95QkXkiRpXzeWEwvfCawCbgeuqaqVAEkeDdy4m/teChzZjp1eD5wM/O6IdS6m6YF+f5KDaIZ3XDfmR6CB8IQLSZK0L9ttiK6q85N8GjgYuKJn0Y+Bl+7mvnclOQP4NLAfcH5VXZXkbGBlVa1ol/1GkqtpvgXxD6tq4717ONqb5s2eaXiWJEn7pFTVrldIHl5V303ymNGWV9XlfalsF5YuXVorV67c27uVJEnSPibJZVW1dOT8sQzneB1wOvD2UZYV8PQ9rE2SJEmaVMYynOP09vfT+l+OJEmSNPGN+Wu/k/xOkjnt7bck+Vh7cqEkSZK0TxlziAbeWlWbkzwJeAbwPnb/ZSuSJEnSlNMlRN/d/n42cF5VfQrYf/xLkiRJkia2LiF6fZJ/Bk4CLkkys+P9JUmSpCmhSwh+Ps01nf9XVd0KPAD4w75UJUmSJE1gY7nEHUn2Ay6vqocPz6uqG9n9NxZKkiRJU86YeqKr6m7g2iSH9bkeSZIkacIbU090ay5wVZJvAT8dnllVy8a9KkmSJGkC222ITrIIOAR464hFT8bhHJIkSdoHjaUn+p3AH1XVlb0zk9wC/BXN9aIlSZKkfcZYxkQfMjJAA7TzDh/3iiRJkqQJbiwh+sBdLJs1XoVIkiRJk8VYQvTKJKeNnJnk5cBl41+SJEmSNLGNZUz0HwD/keQF/Dw0L6X5yu/f7ldhkiRJ0kS12xBdVTcBT0zyNOAR7exPVdUX+lqZJEmSNEGN+TrRVfVF4It9rEWSJEmaFMb0jYWSJEmSfs4QLUmSJHVkiJYkSZI6MkRLkiRJHRmiJUmSpI4M0ZIkSVJHhmhJkiSpI0O0JEmS1JEhWpIkSerIEC1JkiR1ZIiWJEmSOjJES5IkSR0ZoiVJkqSODNGSJElSR4ZoSZIkqSNDtCRJktSRIVqSJEnqyBAtSZIkdWSIliRJkjoyREuSJEkdGaIlSZKkjgzRkiRJUkeGaEmSJKkjQ7QkSZLUkSFakiRJ6sgQLUmSJHVkiJYkSZI6MkRLkiRJHRmiJUmSpI4M0ZIkSVJHhmhJkiSpo76H6CTHJbk2yZokbxpl+UuSbEiyqv15eb9rkiRJkvbE9H5uPMl+wLnAM4F1wKVJVlTV1SNW/XBVndHPWiRJkqTx0u+e6McBa6rquqq6E/gQcEKf9ylJkiT1Vb9D9AJgbc/0unbeSCcmWZ3koiSHjrahJKcnWZlk5YYNG/pRqyRJkjQmE+HEwk8Ah1fVYuCzwL+MtlJVnVdVS6tq6fz58/dqgZIkSVKvfofo9UBvz/LCdt49qmpjVW1rJ98L/Fqfa5IkSZL2SL9D9KXAkUmOSLI/cDKwoneFJA/smVwGXNPnmiRJkqQ90terc1TVXUnOAD4N7AecX1VXJTkbWFlVK4BXJ1kG3AXcAryknzVJkiRJeypVNegaOlu6dGmtXLly0GVIkiRpiktyWVUtHTl/IpxYKEmSJE0qhmhJkiSpI0O0JEmS1JEhWpIkSerIEC1JkiR1ZIiWJEmSOjJES5IkSR0ZoiVJkqSODNGSJElSR4ZoSZIkqSNDtCRJktSRIVqSJEnqyBAtSZIkdWSIliRJkjoyREuSJEkdGaIlSZKkjgzRY7RxyzauWHsrG7dsG3QpkiRJGrDpgy5gMvj4qvWcuXw1M6ZNY/vQEOecuJhlSxYMuixJkiQNiD3Ru7FxyzbOXL6aO7YPsXnbXdyxfYg3Ll9tj7QkSdI+zBC9G+s2bWXGtB2baca0aazbtHVAFUmSJGnQDNG7sXDuLLYPDe0wb/vQEAvnzhpQRZIkSRo0Q/RuzJs9k3NOXMwBM6YxZ+Z0DpgxjXNOXMy82TMHXZokSZIGxBMLx2DZkgUcs+gg1m3aysK5swzQkiRJ+zhD9BjNmz3T8CxJkiTA4RySJElSZ4ZoSZIkqSNDtCRJktSRIVqSJEnqyBAtSZIkdWSIliRJkjoyREuSJEkdGaIlSZKkjgzRkiRJUkeGaEmSJKkjQ7QkSZLUkSFakiRJ6sgQLUmSJHVkiJYkSZI6MkRLkiRJHRmiJUmSpI4M0ZIkSVJHhmhJkiSpI0O0JEmS1JEhWpIkSerIEC1JkiR1ZIiWJEmSOjJES5IkSR0ZoiVJkqSO+h6ikxyX5Noka5K8aRfrnZikkiztd02SJEnSnuhriE6yH3AucDxwFHBKkqNGWW8O8Brgm/2sR5IkSRoP/e6Jfhywpqquq6o7gQ8BJ4yy3p8Dfwvc0ed6JEmSpD3W7xC9AFjbM72unXePJI8BDq2qT/W5FkmSJGlcDPTEwiTTgHcArx/DuqcnWZlk5YYNG/pfnCRJkgZuzU2buWjlWtbctHnQpexgep+3vx44tGd6YTtv2BzgEcCXkgD8ErAiybKqWtm7oao6DzgPYOnSpdXPoiVJkjR4Z118JRd844Z7pk89+jDOPuGRA6zo5/rdE30pcGSSI5LsD5wMrBheWFW3VdVBVXV4VR0OfAP4hQAtSZKkfcuamzbvEKABLvj6DROmR7qvIbqq7gLOAD4NXAN8pKquSnJ2kmX93LckSZImr1Vrb+00f2/r93AOquoS4JIR887aybrH9rseSZIkTXxLDj2w0/y9zW8slCRJ0oSz6JA5nHr0YTvMO/Xow1h0yJwBVbSjvvdES5IkSffG2Sc8klOfcDir1t7KkkMPnDABGgzRkiRJmsAWHTJnQoXnYQ7nkCRJkjoyREuSJEkdGaIlSZKkjgzRkiRJUkeGaEmSJKkjQ7QkSZLUkSFakiRJ6sgQLUmSJHVkiJYkSZI6MkRLkiRJHRmiJUmSpI4M0ZIkSVJHhmhJkiSpI0O0JEmS1JEhWpIkSerIEC1JkiR1ZIiWJEmSOjJES5IkSR0ZoiVJkqSODNGSJElSR4ZoSZIkqSNDtCRJktSRIVqSJEnqyBAtSZIkdWSIliRJkjoyREuSJEkdGaIlSZKkjgzRkiRJUkeGaEmSJKkjQ7QkSZLUkSFakiRJ6sgQLUnSHti4ZRtXrL2VjVu2DboUSXvR9EEXIEnSZPXxVes5c/lqZkybxvahIc45cTHLliwYdFmS9gJ7oiVJuhc2btnGmctXc8f2ITZvu4s7tg/xxuWr7ZGW9hGGaEmS7oV1m7YyY9qO/0ZnTJvGuk1bB1SRpL3JEC1J0r2wcO4stg8N7TBv+9AQC+fOGlBFkvYmQ7QkSffCvNkzOefExRwwYxpzZk7ngBnTOOfExcybPXPQpUnaCzyxUJKke2nZkgUcs+gg1m3aysK5swzQ0j7EEC1J0h6YN3um4VnaBzmcQ5IkSerIEC1JkiR1ZIiWJEmSOjJES5IkSR0ZoiVJkqSODNGSJElSR4ZoSZIkqaO+h+gkxyW5NsmaJG8aZfkrk1yZZFWSryY5qt81SZIkSXuiryE6yX7AucDxwFHAKaOE5A9W1SOraglwDvCOftYkSZIk7al+90Q/DlhTVddV1Z3Ah4ATeleoqtt7Ju8LVJ9rkiRJkvZIv7/2ewGwtmd6HfD4kSsleRXwOmB/4Ol9rkmSJEnaIxPixMKqOreqHgqcCbxltHWSnJ5kZZKVGzZs2LsFSpIkST36HaLXA4f2TC9s5+3Mh4DfGm1BVZ1XVUuraun8+fPHsURJkiSpm36H6EuBI5MckWR/4GRgRe8KSY7smXw28L0+1yRJkiTtkb6Oia6qu5KcAXwa2A84v6quSnI2sLKqVgBnJHkGsB3YBLy4nzVJkiRJeypVk+9iGEk2AD/cyeKDgJv3Yjn7Itu4v2zf/rON+8v27S/bt/9s4/6abO374Kr6hbHEkzJE70qSlVW1dNB1TGW2cX/Zvv1nG/eX7dtftm//2cb9NVXad0JcnUOSJEmaTAzRkiRJUkdTMUSfN+gC9gG2cX/Zvv1nG/eX7dtftm//2cb9NSXad8qNiZYkSZL6bSr2REuSJEl9NalDdJJDk3wxydVJrkrymnb+A5J8Nsn32t9zB13rZJTkgCTfSnJF275/1s4/Isk3k6xJ8uH2i3R0LyXZL8m3k3yynbZ9x1GS65NcmWRVkpXtPN8jxkmSA5NclOS7Sa5JcrTtO36SPKx97Q7/3J7kD2zj8ZPkte3/uO8kubD93+f78DhK8pq2fa9K8gftvEn/Gp7UIRq4C3h9VR0FPAF4VZKjgDcBn6+qI4HPt9Pqbhvw9Kp6FLAEOC7JE4C/Bf6+qhbRfEHO7w2wxqngNcA1PdO27/h7WlUt6bmkku8R4+ddwH9V1cOBR9G8lm3fcVJV17av3SXArwE/A/4D23hcJFkAvBpYWlWPoPliuJPxfXjcJHkEcBrwOJr3iOckWcQUeA1P6hBdVTdW1eXt7c00b94LgBOAf2lX+xfgtwZT4eRWjS3t5Iz2p4CnAxe1823fPZBkIc3X3b+3nQ62797ge8Q4SHJ/4CnA+wCq6s6quhXbt19+Hfh+Vf0Q23g8TQdmJZkO3Ae4Ed+Hx9OvAN+sqp9V1V3Al4HnMgVew5M6RPdKcjjwaOCbwCFVdWO76MfAIQMqa9JrhxqsAn4CfBb4PnBr+4cAsI7mg4vunXcCbwSG2ul52L7jrYDPJLksyentPN8jxscRwAbg/e2QpPcmuS+2b7+cDFzY3raNx0FVrQfeBtxAE55vAy7D9+Hx9B3gyUnmJbkP8CzgUKbAa3hKhOgks4HlwB9U1e29y6q5/IiXILmXquru9jDiQppDMQ8fcElTRpLnAD+pqssGXcsU96SqegxwPM2Qr6f0LvQ9Yo9MBx4D/N+qejTwU0YckrV9x0c7JncZ8NGRy2zje68dh3sCzQfCBwH3BY4baFFTTFVdQzM85jPAfwGrgLtHrDMpX8OTPkQnmUEToP+9qj7Wzr4pyQPb5Q+k6UXVHmgP0X4ROBo4sD3sBU24Xj+wwia3Y4BlSa4HPkRz+PBd2L7jqu1poqp+QjOW9HH4HjFe1gHrquqb7fRFNKHa9h1/xwOXV9VN7bRtPD6eAfygqjZU1XbgYzTvzb4Pj6Oqel9V/VpVPYVmjPn/MAVew5M6RLfjR98HXFNV7+hZtAJ4cXv7xcDH93ZtU0GS+UkObG/PAp5JM+78i8Dz2tVs33upqv6oqhZW1eE0h2m/UFUvwPYdN0num2TO8G3gN2gOLfoeMQ6q6sfA2iQPa2f9OnA1tm8/nMLPh3KAbTxebgCekOQ+baYYfg37PjyOkhzc/j6MZjz0B5kCr+FJ/WUrSZ4EfAW4kp+PKX0zzbjojwCHAT8Enl9VtwykyEksyWKawf770Xzg+khVnZ3kITQ9pw8Avg28sKq2Da7SyS/JscAbquo5tu/4advyP9rJ6cAHq+ovk8zD94hxkWQJzYmx+wPXAS+lfb/A9h0X7QfAG4CHVNVt7Txfw+MkzeVbT6K54te3gZfTjIH2fXicJPkKzTk/24HXVdXnp8JreFKHaEmSJGkQJvVwDkmSJGkQDNGSJElSR4ZoSZIkqSNDtCRJktSRIVqSJEnqyBAtSZIkdWSIltR3SSrJ23um35DkT3dzn2OTPHGc67g+yUHt7S0jlr0kyT+O5/52U8sHkjyvvf2lJNcmuSLJpe21l4fXu2T4S492sp17HtOI+X+c5Kokq5OsSvL4/jySndZ1nyT/nuTKJN9J8tUks/fCfv+ufdx/Nw7bOjbJJ9vbhyT5ZPscXZ3kknb+g5Jc1N5ekuRZe7pfSZPD9N2vIkl7bBvw3CR/XVU3j/E+xwJbgK+NdSdJplfVXfeivr4aY10vqKqVSV4K/B3NN4RSVZ1DWZKjgecAj6mqbW3I3r/rdkZss2vbvga4qaoe2d7/YTRftNAXPfWdDjygqu4e512cDXy2qt7V7m8xQFX9iJ9/s90SYClwyTjvW9IEZE+0pL3hLuA84LUjFyT5zSTfTPLtJJ9re/wOB14JvLbtRX1yb89te78t7e9jk3wlyQqar+slycVJLmt7JE/vWuxoNbXzL2nrWZXktiQvTnJ4u//L258njlZXGv/Y9jh/Djh4J7v/Os23pQ3Xcn2Sg9qvMP9U2xP6nSQnjah5VpL/THIa8EDg5uFvWKuqm9uwR5LHJvlau51vJZmT5IAk7297jb+d5Gntui9JsiLJF4DPtzWc397v20lO2EUzPhBYPzxRVde2gf7wJN/pqfueoxJtj/y72vb9TpLHtfNH3e8o9a0AZgOXJTlpN6+ZLyW5KMl32x7ztMuOa+ddTvP1xL2PZ13P41ndrn94W+v+NEH7pLb+kzq2l6RJxp5oSXvLucDqJOeMmP9V4AlVVUleDryxql6f5N3Alqp6G0CS39vFth8DPKKqftBOv6yqbkkyC7g0yfKq2jjiPrOSrOqZfgCwYmc1Aa8f7hVO8mvA+4GLaXpXn1lVdyQ5EriQpjdyh7qSPBd4GHAUcAhN4D9/lMdyXLvd0eb/qKqe3dZw/55ls2m+oviCqrogzbCJs5L8D/A54MNV9eU26H0YOKmqLk1yP2ArTa9xVdUjkzwc+EySX+55DIvb9vwr4AtV9bI0Q0y+leRzVfXTUeo9v93O84DPA/9SVd8bZb2R7lNVS5I8pd3GI4A/Hm2/I+tr22VLVS1pbx+/i/08GvhV4EfAfwPHJFkJvAd4OrCmbath5wIfTnJG26bvH/5gQtN4dyY5C1haVWe0++/SXpImGUO0pL2iqm5PcgHwaprgNmwhTTh5IM2Qgx+Mdv/d+FZPgAZ4dZLfbm8fChwJjAzRW4fDFjS9mvw8/O60pjRDI/4VeH5V3daG2X9MM475bmA4fI6s6ynAhe0wgx+1vae9/r0NubNphgWMdCXw9iR/C3yyqr7Ss+zjwDlV9e8AVbWlDfpPBp7WPpY3AZcBN1bVpe16t7eP6UnAP7Tzvpvkhz2P47PDARX4DWBZkje00/9/O3cTolUVx3H8+3PshWKSCIJaDOIsiii0JHCo6IUoayGIC4kQgxZBFBLYspRyUUEQGNKijTFUFNUigqRFZkRhE2MjodVCjSBqkUhh9mK/Fuc8zp3bPI9zJxiZ+H1g4L6ce8//3ucy/O/hf+6FwAhwqB2s7QOSVtRj7qS8zIwx87efzWv1+H2SLqnJZ79+2/F1sd/29wD1ZWo5pXzoSC/ZlzROKQ/B9p56PWuBe4BJSdeepY8536+IWHxSzhERC+kF4EHg4sa2ncCLtXb2IUqiMZu/qP+zJC1hZo3vmZE9SbdRkrYx2yuByQHn7GfWmCQNUUZ8n7LdK0l4DPgRWElJwmeNaw7uB1YAu2v/M9j+hjLqehDYUUc9ez4B1vZKEmr707b32t4GPAJs6BBLU/MaBGywvar+jdjumxDa/tX227YfBsaBe2n8jlX7t/Es64P6HXSPBz0zvzeWTzOHQSXbP9t+1fYm4HPKi9Egne5XRCwuSaIjYsHUEcM3KIl0zzKma2c3N7b/Agw31o8Cq+vyOuC8Pt0sA47bPllLE9bMI9R+MT0DTNl+vdX2B9t/A5uAoT7n3Eeplx2qI9y3txvYNvAEsKbGfoakK4GTtscpEw9vaOx+EjhOKTlA0lW1tKRnFXAM+Bq4QtKNtd2wpKXAx5QknlrGMVLbtu0BHm3UD1/f51qRdJOkS+vy+ZQylmOUF47LJV0m6QLKBMimjfWYm4ETtk906bflKHN7ZnoOA8sljdb1+xrXc4eki+ryMDAKfNc6vv3MzjfuiFgEkkRHxEJ7Hmh+km078KakL4DmlzveBdbXSVq3UGpVb5X0JTBG/xHI94Glkg5Rkt7P5hFjv5i2AndpenLhOmAXsLnGdfWAuN4BvqXUQr9CmUD4L7Z/o9yjx1u7rqPU1B4AtgE7Wvu3UOq8n6OUhOxW+RTbFCWB3W77D0qSurPG+wFlJHgXsETSQUod8AO9SYktT1MS0SlJX9X1fkaBj+o5J4EJ4C3bf1Im4O2v/R9uHXdK0iTwEtMvW136bZrrMwOA7VOU8o33VCYW/tTYvRqYqPfzU+DlXllMw4fANfXZ2Pgf4o6IRUBl4CMiIuLckrQX2Gp74lzHEhFxNhmJjoiIiIjoKCPRERExb5LuBp5tbT5ie/1s7SMi/i+SREdEREREdJRyjoiIiIiIjpJER0RERER0lCQ6IiIiIqKjJNERERERER0liY6IiIiI6OgfqrVKM0hU+CYAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "# Scatter plot the information\n", + "multi_statvar_df.plot(kind='scatter', x='NaturalHazardRiskScore_SuperfundSite', y='CrsiScore_SuperfundSite', figsize=(12, 8))\n", + "plt.title(f\"Natural Hazard Risk Score vs CRSI score for sites in {selected_place_choice}\")\n", + "plt.xlabel(\"NaturalHazardRiskScore_SuperfundSite\")\n", + "plt.ylabel(\"CrsiScore_SuperfundSite\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Bdada1GF-VgS" + }, + "source": [ + "## Demo 4 - Comparing superfund statistics with other statistics in Data Commons\n", + "\n", + "This demo example is probably the most interesting one since, we will compare superfund statistics with other statistics in Data Commons. \n", + "\n", + "In this example, we will compare the `CRSI score` of a superfund site and the impact seen on the tribal population living in cities in and around the site. The tribal population statistics come from the US census and the CRSI score is the same statistical variable we used in the previous examples.\n", + "\n", + "This is advantage which Data Commons offers, where it is easy to make such cross-domain, cross-place, cross-statistics analysis.\n", + "\n", + "\n", + "Before making the visualization let us first take a look at how the dataset will look and what will the pre-processing that is required" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + }, + "id": "DFNDoYxE_Dpj", + "outputId": "0c3d67a0-6445-41ba-bef3-1650c6d320b7" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
2021
place
epaSuperfundSiteId/AL32100200270.327246
epaSuperfundSiteId/AL62100200080.600902
epaSuperfundSiteId/AL72100207420.610158
epaSuperfundSiteId/ALD0012219020.962115
epaSuperfundSiteId/ALD0040224480.951963
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " 2021\n", + "place \n", + "epaSuperfundSiteId/AL3210020027 0.327246\n", + "epaSuperfundSiteId/AL6210020008 0.600902\n", + "epaSuperfundSiteId/AL7210020742 0.610158\n", + "epaSuperfundSiteId/ALD001221902 0.962115\n", + "epaSuperfundSiteId/ALD004022448 0.951963" + ] + }, + "metadata": {}, + "execution_count": 42 + } + ], + "source": [ + "superfund_sites = dc.get_places_in([place_dcid], 'SuperfundSite')[place_dcid]\n", + "dpd.build_time_series_dataframe(superfund_sites, 'CrsiScore_SuperfundSite').head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + }, + "id": "RKVLyWgR_0R7", + "outputId": "0d82a3a7-b8eb-4ceb-a359-fb680b18033e" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
200020102020
place
geoId/0100100NaN0.00.0
geoId/01001240.02.05.0
geoId/010046020.023.031.0
geoId/01004841.00.09.0
geoId/01006760.00.00.0
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " 2000 2010 2020\n", + "place \n", + "geoId/0100100 NaN 0.0 0.0\n", + "geoId/0100124 0.0 2.0 5.0\n", + "geoId/0100460 20.0 23.0 31.0\n", + "geoId/0100484 1.0 0.0 9.0\n", + "geoId/0100676 0.0 0.0 0.0" + ] + }, + "metadata": {}, + "execution_count": 43 + } + ], + "source": [ + "cities = dpd.get_places_in([place_dcid], 'City')[place_dcid]\n", + "dpd.build_time_series_dataframe(cities, 'Count_Person_AmericanIndianAndAlaskaNativeAlone').head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NEaZRTT6BaXn" + }, + "source": [ + "From the two dataframes, it is clear that we have statistics from different years and the number of places across the two dataframes are not consistent.\n", + "\n", + "Let's get started....\n", + "\n", + "#### Understanding the hierarchy in which places are nested in Data Commons\n", + "\n", + "For getting the city which has a superfund site, we will be using the `site_df` dataframe, which we created in the begining. This dataframe has a column called `containedInPlace` which is a list.\n", + "\n", + "An example of the `containedInPlace` list looks as follows:\n", + "```python\n", + "['geoId/01',\n", + " 'geoId/01015',\n", + " 'geoId/0101590099',\n", + " 'geoId/01015981901',\n", + " 'geoId/0103']\n", + "```\n", + "The list essentially lists the place ids based on the administrative area division. An example of getting the `typeOf` places for a list of place ids is shown as an example in the beginning sections of the notebook.\n", + "\n", + "In this case, the interpretation of the list is done as follows:\n", + "```python\n", + "['geoId/01', #state's place_id\n", + " 'geoId/01015', # county's place_id\n", + " 'geoId/0101590099', # city's place_id\n", + " 'geoId/01015981901', # census tract's place_id\n", + " 'geoId/0103' # congressional district's place_id\n", + " ]\n", + "```" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Preparing the datasets for comparison\n", + "From this list we pick the third element which corresponds to the city's place_id.\n", + "\n", + "> The structure of this list is consistent at the high-level some sites have finer geo-level like Zip Code Tabulation Area (ZCTA) codes.\n", + "\n", + "First let us make a dataframe based off the `site_df` dataframe. To this dataframe, we will add different statistics which we will visualize.\n", + "\n", + "The recipe we plan to do is the following:\n", + "1. From the `site_df` dataframe, create a new dataframe where the superfund sites are located in a city.\n", + "2. To this dataframe, we shall merge the StatVarObservations for the `CrsiScore_SuperfundSite` statistical variable based on the superfund site id\n", + "3. To the merged dataframe, we shall do another merge but this time with StatVarObservations for the `Count_Person_AmericanIndianAndAlaskaNativeAlone` statistical variable based on the `containedInPlace` city id\n", + "4. Visualize!" + ], + "metadata": { + "id": "zr4BOZ7d10Ia" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 629 + }, + "id": "QH6Hlo2MCUaU", + "outputId": "a82a0b0f-c389-4018-9ce3-b5d66a45de0a" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:9: SettingWithCopyWarning:\n", + "\n", + "\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", + "\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:10: SettingWithCopyWarning:\n", + "\n", + "\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", + "\n" + ] + }, + { + "output_type": "execute_result", + "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", + "
epaSuperfundSiteIdcontainedInPlace
1epaSuperfundSiteId/AL6210020008geoId/0114464
4epaSuperfundSiteId/ALD004022448geoId/0179008
5epaSuperfundSiteId/ALD007454085geoId/0151000
8epaSuperfundSiteId/ALD031618069geoId/0131912
9epaSuperfundSiteId/ALD041906173geoId/0115256
11epaSuperfundSiteId/ALD980728703geoId/0159064
12epaSuperfundSiteId/ALD980844385geoId/0168160
13epaSuperfundSiteId/ALD981868466geoId/0133856
15epaSuperfundSiteId/ALN000410750geoId/0107000
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " epaSuperfundSiteId containedInPlace\n", + "1 epaSuperfundSiteId/AL6210020008 geoId/0114464\n", + "4 epaSuperfundSiteId/ALD004022448 geoId/0179008\n", + "5 epaSuperfundSiteId/ALD007454085 geoId/0151000\n", + "8 epaSuperfundSiteId/ALD031618069 geoId/0131912\n", + "9 epaSuperfundSiteId/ALD041906173 geoId/0115256\n", + "11 epaSuperfundSiteId/ALD980728703 geoId/0159064\n", + "12 epaSuperfundSiteId/ALD980844385 geoId/0168160\n", + "13 epaSuperfundSiteId/ALD981868466 geoId/0133856\n", + "15 epaSuperfundSiteId/ALN000410750 geoId/0107000" + ] + }, + "metadata": {}, + "execution_count": 44 + } + ], + "source": [ + "## Step 1: Making dataframe with the superfund site id and the id of the city where the site is present\n", + "def get_city_id(elem_list, fips_code_len=7):\n", + " for e in elem_list:\n", + " if len(e.split('/')[1]) == fips_code_len:\n", + " return e\n", + " return ''\n", + "\n", + "site_place_df = site_df[['epaSuperfundSiteId', 'containedInPlace']]\n", + "site_place_df['epaSuperfundSiteId'] = site_place_df['epaSuperfundSiteId'].apply(lambda elem: 'epaSuperfundSiteId/' + elem)\n", + "site_place_df['containedInPlace'] = site_place_df['containedInPlace'].apply(get_city_id)\n", + "site_place_df = site_place_df[site_place_df['containedInPlace'] != '']\n", + "site_place_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 332 + }, + "id": "POaCwvhXGBBr", + "outputId": "8ab2dff3-40b5-40bc-c82e-9d880db830d4" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
epaSuperfundSiteIdcontainedInPlaceCrsiScore_SuperfundSite200020102020
0epaSuperfundSiteId/AL6210020008geoId/01144640.60090216.021.08
1epaSuperfundSiteId/ALD004022448geoId/01790080.95196314.07.010
2epaSuperfundSiteId/ALD007454085geoId/01510001.011869500.0512.0713
3epaSuperfundSiteId/ALD031618069geoId/0131912NaN20.04.09
4epaSuperfundSiteId/ALD041906173geoId/01152560.39434315.029.038
5epaSuperfundSiteId/ALD980728703geoId/0159064NaNNaNNaN21
6epaSuperfundSiteId/ALD980844385geoId/0168160NaN69.0104.0228
7epaSuperfundSiteId/ALD981868466geoId/01338560.4581047.018.06
8epaSuperfundSiteId/ALN000410750geoId/01070000.394343422.0445.0755
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " epaSuperfundSiteId containedInPlace CrsiScore_SuperfundSite \\\n", + "0 epaSuperfundSiteId/AL6210020008 geoId/0114464 0.600902 \n", + "1 epaSuperfundSiteId/ALD004022448 geoId/0179008 0.951963 \n", + "2 epaSuperfundSiteId/ALD007454085 geoId/0151000 1.011869 \n", + "3 epaSuperfundSiteId/ALD031618069 geoId/0131912 NaN \n", + "4 epaSuperfundSiteId/ALD041906173 geoId/0115256 0.394343 \n", + "5 epaSuperfundSiteId/ALD980728703 geoId/0159064 NaN \n", + "6 epaSuperfundSiteId/ALD980844385 geoId/0168160 NaN \n", + "7 epaSuperfundSiteId/ALD981868466 geoId/0133856 0.458104 \n", + "8 epaSuperfundSiteId/ALN000410750 geoId/0107000 0.394343 \n", + "\n", + " 2000 2010 2020 \n", + "0 16.0 21.0 8 \n", + "1 14.0 7.0 10 \n", + "2 500.0 512.0 713 \n", + "3 20.0 4.0 9 \n", + "4 15.0 29.0 38 \n", + "5 NaN NaN 21 \n", + "6 69.0 104.0 228 \n", + "7 7.0 18.0 6 \n", + "8 422.0 445.0 755 " + ] + }, + "metadata": {}, + "execution_count": 45 + } + ], + "source": [ + "# Step 2: Merging the StatVarObservations for the `CrsiScore_SuperfundSite` statistical variable to `site_data_df`\n", + "site_data_df = site_place_df.copy()\n", + "# Get the list of superfundsites that are contained in a city\n", + "contained_site_list = site_data_df['epaSuperfundSiteId'].values.tolist()\n", + "# with the list of superfund sites' place_ids query Data Commons to stats for CrsiScore_SuperfundSite statistical variable\n", + "superfund_data_df = dpd.build_time_series_dataframe(contained_site_list, 'CrsiScore_SuperfundSite')\n", + "# rename the column to make it readable\n", + "superfund_data_df.columns = ['CrsiScore_SuperfundSite']\n", + "# merge\n", + "site_data_df = pd.merge(site_data_df, superfund_data_df, left_on='epaSuperfundSiteId', right_on='place', how='left')\n", + "\n", + "\n", + "# Step 3: Merging the StatVarObservations for the `Count_Person_AmericanIndianAndAlaskaNativeAlone` statistical variable to `site_data_df`\n", + "# Get the list of cities that have superfund sites\n", + "contained_cities_list = site_data_df['containedInPlace'].values.tolist()\n", + "# with the list of cities' place_ids query Data Commons to stats for Count_Person_AmericanIndianAndAlaskaNativeAlone statistical variable\n", + "demographic_data_df = dpd.build_time_series_dataframe(contained_cities_list, 'Count_Person_AmericanIndianAndAlaskaNativeAlone')\n", + "# merge\n", + "site_data_df = pd.merge(site_data_df, demographic_data_df, left_on='containedInPlace', right_on='place', how='left')\n", + "site_data_df" + ] + }, + { + "cell_type": "markdown", + "source": [ + "#### Example to create custom data aggregations and normalizations\n", + "\n", + "We have the dataset where the superfund related statistic ranges from 0-1 but the count of the American Indian and Alaska Native population is an absolute value. We will need to normalize the count of the American Indian and Alaska Native population with the total population in the selected place. \n", + "\n", + "This can done easily with the [`build_multivaritate_dataframe`](https://docs.datacommons.org/api/pandas/multivariate_dataframe.html) API method as shown in the following code snippet." + ], + "metadata": { + "id": "uWifdZFthuXI" + } + }, + { + "cell_type": "code", + "source": [ + "# api call to get the total population and population of the American Indian and Alaska Natives\n", + "multivariate_dataframe = dpd.build_multivariate_dataframe(places=contained_cities_list, stat_vars=['Count_Person', 'Count_Person_AmericanIndianAndAlaskaNativeAlone'])\n", + "multivariate_dataframe = multivariate_dataframe.reset_index()\n", + "\n", + "# computing per capita population\n", + "multivariate_dataframe['perCapitaPopulation'] = multivariate_dataframe['Count_Person_AmericanIndianAndAlaskaNativeAlone'] / multivariate_dataframe['Count_Person']\n", + "\n", + "# merge the computed per_capita values to the site_data_df\n", + "site_data_df = pd.merge(site_data_df, multivariate_dataframe[['place', 'perCapitaPopulation']], left_on='containedInPlace', right_on='place', how='left')\n", + "site_data_df" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 396 + }, + "id": "59jf2xIWhuBD", + "outputId": "26ed34aa-b033-4622-8a2c-cfc1180ab56e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
epaSuperfundSiteIdcontainedInPlaceCrsiScore_SuperfundSite200020102020placeperCapitaPopulation
0epaSuperfundSiteId/AL6210020008geoId/01144640.60090216.021.08geoId/01144640.001683
1epaSuperfundSiteId/ALD004022448geoId/01790080.95196314.07.010geoId/01790080.005045
2epaSuperfundSiteId/ALD007454085geoId/01510001.011869500.0512.0713geoId/01510000.003554
3epaSuperfundSiteId/ALD031618069geoId/0131912NaN20.04.09geoId/01319120.001221
4epaSuperfundSiteId/ALD041906173geoId/01152560.39434315.029.038geoId/01152560.003693
5epaSuperfundSiteId/ALD980728703geoId/0159064NaNNaNNaN21geoId/01590640.028767
6epaSuperfundSiteId/ALD980844385geoId/0168160NaN69.0104.0228geoId/01681600.014099
7epaSuperfundSiteId/ALD981868466geoId/01338560.4581047.018.06geoId/01338560.001207
8epaSuperfundSiteId/ALN000410750geoId/01070000.394343422.0445.0755geoId/01070000.003761
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " epaSuperfundSiteId containedInPlace CrsiScore_SuperfundSite \\\n", + "0 epaSuperfundSiteId/AL6210020008 geoId/0114464 0.600902 \n", + "1 epaSuperfundSiteId/ALD004022448 geoId/0179008 0.951963 \n", + "2 epaSuperfundSiteId/ALD007454085 geoId/0151000 1.011869 \n", + "3 epaSuperfundSiteId/ALD031618069 geoId/0131912 NaN \n", + "4 epaSuperfundSiteId/ALD041906173 geoId/0115256 0.394343 \n", + "5 epaSuperfundSiteId/ALD980728703 geoId/0159064 NaN \n", + "6 epaSuperfundSiteId/ALD980844385 geoId/0168160 NaN \n", + "7 epaSuperfundSiteId/ALD981868466 geoId/0133856 0.458104 \n", + "8 epaSuperfundSiteId/ALN000410750 geoId/0107000 0.394343 \n", + "\n", + " 2000 2010 2020 place perCapitaPopulation \n", + "0 16.0 21.0 8 geoId/0114464 0.001683 \n", + "1 14.0 7.0 10 geoId/0179008 0.005045 \n", + "2 500.0 512.0 713 geoId/0151000 0.003554 \n", + "3 20.0 4.0 9 geoId/0131912 0.001221 \n", + "4 15.0 29.0 38 geoId/0115256 0.003693 \n", + "5 NaN NaN 21 geoId/0159064 0.028767 \n", + "6 69.0 104.0 228 geoId/0168160 0.014099 \n", + "7 7.0 18.0 6 geoId/0133856 0.001207 \n", + "8 422.0 445.0 755 geoId/0107000 0.003761 " + ] + }, + "metadata": {}, + "execution_count": 46 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Visualizing the comparison on a scatter plot" + ], + "metadata": { + "id": "eqMS7NXo2LnF" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 514 + }, + "id": "me2TjmV2Hhjv", + "outputId": "46a5db38-544d-4a7d-ccde-a72823f5376b" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "def plot_data(title, pd_table, x, y):\n", + " \"\"\" Generate a scatter plot comparing CrsiScore_SuperfundSite and Count_Person_AmericanIndianAndAlaskaNativeAlone. \"\"\"\n", + " plt.figure(figsize=(12, 8))\n", + " plt.title(title)\n", + " plt.xlabel('CrsiScore_SuperfundSite')\n", + " plt.ylabel('Count_Person_AmericanIndianAndAlaskaNativeAlone')\n", + " \n", + " # Scatter plot the information\n", + " ax = plt.gca()\n", + " ax.scatter(pd_table[x], pd_table[y], alpha=0.7)\n", + "\n", + "# Generate the plot for state data\n", + "title = 'CRSI score vs Count of American Indian and Alaska Native population (per Capita)'\n", + "plot_data(title, site_data_df, x='CrsiScore_SuperfundSite', y='perCapitaPopulation')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zbjmGtocOLHg" + }, + "source": [ + "### What's Next?\n", + "Congratulations 🎉 on completing the tutorial. Next, please free to explore other Data Commons notebooks to get ideas for querying and joining data from the graph" + ] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "name": "Analyzing SuperfundSites with Data Commons", + "provenance": [], + "toc_visible": true, + "include_colab_link": true + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "e86121a3dee84467911d601c450f076f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DropdownModel", + "model_module_version": "1.5.0", + "state": { + "_options_labels": [ + "Alabama", + "Alaska", + "Arizona", + "Arkansas", + "California", + "Colorado", + "Connecticut", + "Delaware", + "District of Columbia", + "Florida", + "Georgia", + "Hawaii", + "Idaho", + "Illinois", + "Indiana", + "Iowa", + "Kansas", + "Kentucky", + "Louisiana", + "Maine", + "Maryland", + "Massachusetts", + "Michigan", + "Minnesota", + "Mississippi", + "Missouri", + "Montana", + "Nebraska", + "Nevada", + "New Hampshire", + "New Jersey", + "New Mexico", + "New York", + "North Carolina", + "North Dakota", + "Ohio", + "Oklahoma", + "Oregon", + "Pennsylvania", + "Rhode Island", + "South Carolina", + "South Dakota", + "Tennessee", + "Texas", + "Utah", + "Vermont", + "Virginia", + "Washington", + "West Virginia", + "Wisconsin", + "Wyoming", + "Puerto Rico" + ], + "_view_name": "DropdownView", + "style": "IPY_MODEL_2f1164c04f504f80beb625de92bbfa17", + "_dom_classes": [], + "description": "", + "_model_name": "DropdownModel", + "index": 0, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "disabled": false, + "_view_module_version": "1.5.0", + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_2e5a9eb31a424a8db158822f155d85db" + } + }, + "2f1164c04f504f80beb625de92bbfa17": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_view_name": "StyleView", + "_model_name": "DescriptionStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "2e5a9eb31a424a8db158822f155d85db": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "8794d888dc834c1cad49e577a95736a4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DropdownModel", + "model_module_version": "1.5.0", + "state": { + "_options_labels": [ + "Anniston Army Depot (Southeast Industrial Area)", + "Alabama Army Ammunition Plant", + "Redstone Arsenal (USARMY/NASA)", + "Ciba-Geigy Corp. (McIntosh Plant)", + "Alabama Plating Company Inc.", + "T.H. Agriculture & Nutrition Co. (Montgomery Plant)", + "Stauffer Chemical Co. (LeMoyne Plant)", + "Olin Corp. (McIntosh Plant)", + "Mowbray Engineering Co.", + "Interstate Lead Co. (ILCO)", + "Stauffer Chemical Co. (Cold Creek Plant)", + "Perdido Ground Water Contamination", + "Redwing Carriers Inc. (Saraland)", + "American Brass", + "Triana/Tennessee River", + "35th Avenue" + ], + "_view_name": "DropdownView", + "style": "IPY_MODEL_e1eb411fba2a42b783282223aa7c6ce7", + "_dom_classes": [], + "description": "", + "_model_name": "DropdownModel", + "index": 0, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "disabled": false, + "_view_module_version": "1.5.0", + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_d5670d1d5dda4c479d70627d752ba8c1" + } + }, + "e1eb411fba2a42b783282223aa7c6ce7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_view_name": "StyleView", + "_model_name": "DescriptionStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "d5670d1d5dda4c479d70627d752ba8c1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "9cf7730acc784ae48e5f17c86e92a261": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DropdownModel", + "model_module_version": "1.5.0", + "state": { + "_options_labels": [ + "CrsiScore_SuperfundSite", + "NaturalHazardExposureScore_SuperfundSite", + "NaturalHazardRiskScore_SuperfundSite", + "NaturalHazardRiskScore_SuperfundSite_CoastalFloodEvent", + "NaturalHazardRiskScore_SuperfundSite_DroughtEvent", + "NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent", + "NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent", + "NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent", + "NaturalHazardRiskScore_SuperfundSite_FloodEvent", + "NaturalHazardRiskScore_SuperfundSite_HailEvent", + "NaturalHazardRiskScore_SuperfundSite_HighWindEvent", + "NaturalHazardRiskScore_SuperfundSite_HurricaneEvent", + "NaturalHazardRiskScore_SuperfundSite_LandslideEvent", + "NaturalHazardRiskScore_SuperfundSite_TornadoEvent", + "NaturalHazardRiskScore_SuperfundSite_WildfireEvent" + ], + "_view_name": "DropdownView", + "style": "IPY_MODEL_518586f83b35495aa1215c5dbd1cd79d", + "_dom_classes": [], + "description": "", + "_model_name": "DropdownModel", + "index": 0, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "disabled": false, + "_view_module_version": "1.5.0", + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_fb9e80f4aea842e390f3341a488d14d8" + } + }, + "518586f83b35495aa1215c5dbd1cd79d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_view_name": "StyleView", + "_model_name": "DescriptionStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "fb9e80f4aea842e390f3341a488d14d8": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file From e7fc2d64512d0c4cffb202f56c36cb70375d7d2d Mon Sep 17 00:00:00 2001 From: Prashanth R Date: Wed, 9 Mar 2022 18:31:14 -0800 Subject: [PATCH 03/13] Created using Colaboratory --- ...ing_SuperfundSites_with_Data_Commons.ipynb | 65 ++----------------- 1 file changed, 4 insertions(+), 61 deletions(-) diff --git a/Analyzing_SuperfundSites_with_Data_Commons.ipynb b/Analyzing_SuperfundSites_with_Data_Commons.ipynb index b99c95a3..77718dda 100644 --- a/Analyzing_SuperfundSites_with_Data_Commons.ipynb +++ b/Analyzing_SuperfundSites_with_Data_Commons.ipynb @@ -1168,37 +1168,9 @@ "cell_type": "code", "execution_count": null, "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 244 - }, - "id": "kyHSeFIXNhLH", - "outputId": "fdec23de-19f0-41d1-c638-be261483aaf5" + "id": "kyHSeFIXNhLH" }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "GeoJSON for Alabama which has the place id: geoId/01\n", - "\n", - "\n" - ] - }, - { - "output_type": "execute_result", - "data": { - "application/vnd.google.colaboratory.intrinsic+json": { - "type": "string" - }, - "text/plain": [ - "'{ \"type\": \"MultiPolygon\", \"coordinates\": [ [ [ [-88.327302, 30.229882], [-88.326371, 30.228463], [-88.318865, 30.22803], [-88.304773, 30.228031], [-88.283128, 30.232079], [-88.260192, 30.236156], [-88.234854, 30.241307], [-88.199799, 30.24779], [-88.191905, 30.248094], [-88.166789, 30.249748], [-88.149812, 30.249988], [-88.137083, 30.249179], [-88.13187, 30.247897], [-88.127338, 30.245962], [-88.1269122534897, 30.2449623756888], [-88.125306, 30.241191], [-88.124999, 30.2406148369004], [-88.122596, 30.236105], [-88.117386, 30.230793], [-88.113427, 30.226832], [-88.110301, 30.224941], [-88.106654, 30.223501], [-88.104882, 30.224581], [-88.107331, 30.225076], [-88.110978, 30.227777], [-88.115563, 30.232369], [-88.117282, 30.233314], [-88.119939, 30.237185], [-88.120564, 30.239391], [-88.122492, 30.242901], [-88.123482, 30.245197], [-88.124936, 30.247709], [-88.1248869230769, 30.247693], [-88.120151, 30.246149], [-88.1178991997814, 30.2456957303012], [-88.115198, 30.245152], [-88.1128549123886, 30.2438959437689], [-88.112176, 30.243532], [-88.112281, 30.242316], [-88.110822, 30.241956], [-88.108529, 30.242046], [-88.10655, 30.242856], [-88.104365, 30.243028], [-88.101235, 30.242001], [-88.088262, 30.245152], [-88.079562, 30.246637], [-88.075856, 30.246139], [-88.074854, 30.249119], [-88.0767561635801, 30.2508282112116], [-88.086812, 30.259864], [-88.124658, 30.28364], [-88.124670238134, 30.2817088606938], [-88.124722, 30.273541], [-88.130631, 30.262125], [-88.141143, 30.255024], [-88.14526, 30.254969], [-88.1473, 30.254105], [-88.153678, 30.253165], [-88.161904, 30.253396], [-88.167433, 30.252693], [-88.17335, 30.252418], [-88.181621, 30.251711], [-88.186372, 30.251198], [-88.190179, 30.251334], [-88.192127, 30.250248], [-88.198406, 30.25065], [-88.201468, 30.251179], [-88.224615, 30.245559], [-88.25837, 30.239595], [-88.279154, 30.235155], [-88.299705, 30.231812], [-88.313074, 30.231327], [-88.320142, 30.232035], [-88.327302, 30.229882] ] ], [ [ [-88.346745, 30.390702], [-88.346823, 30.389936], [-88.345543, 30.389914], [-88.344316, 30.389981], [-88.342645, 30.390004], [-88.340765, 30.390161], [-88.335731, 30.388969], [-88.33412, 30.388741], [-88.33289, 30.389146], [-88.333095, 30.389878], [-88.335702, 30.389727], [-88.340504, 30.391513], [-88.341235, 30.391738], [-88.342384, 30.391468], [-88.343507, 30.391445], [-88.345047, 30.3914], [-88.346745, 30.390702] ] ], [ [ [-88.053375, 30.506987], [-88.052349, 30.505591], [-88.045043, 30.501189], [-88.026748, 30.491105], [-88.02433, 30.490774], [-88.023506, 30.492573], [-88.026222, 30.516609], [-88.029165, 30.519648], [-88.032407, 30.521447], [-88.035099, 30.521967], [-88.03867, 30.520405], [-88.041966, 30.517376], [-88.045647, 30.513306], [-88.051088, 30.508857], [-88.053375, 30.506987] ] ], [ [ [-88.22512, 30.321802], [-88.226522, 30.320793], [-88.224653, 30.319886], [-88.221031, 30.32039], [-88.218694, 30.321903], [-88.221281, 30.322233], [-88.22512, 30.321802] ] ], [ [ [-88.211209, 30.322249], [-88.210824, 30.320777], [-88.209559, 30.31902], [-88.208733, 30.318878], [-88.208073, 30.319543], [-88.208954, 30.320445], [-88.209559, 30.322202], [-88.209999, 30.323199], [-88.211209, 30.322249] ] ], [ [ [-88.264659, 30.335541], [-88.264331, 30.334294], [-88.263148, 30.333614], [-88.261375, 30.332877], [-88.260521, 30.330949], [-88.260849, 30.330098], [-88.260258, 30.329304], [-88.260061, 30.32749], [-88.258813, 30.326072], [-88.257893, 30.325051], [-88.255659, 30.324087], [-88.255265, 30.326015], [-88.254542, 30.32817], [-88.253951, 30.329758], [-88.253623, 30.331005], [-88.253754, 30.33248], [-88.253294, 30.334804], [-88.253557, 30.337299], [-88.254148, 30.339454], [-88.255134, 30.342175], [-88.256382, 30.344953], [-88.256316, 30.346484], [-88.25671, 30.347788], [-88.257105, 30.350112], [-88.25717, 30.35255], [-88.256756, 30.354739], [-88.256233, 30.357999], [-88.256, 30.360907], [-88.256291, 30.363815], [-88.257105, 30.365248], [-88.25855, 30.366608], [-88.25947, 30.366778], [-88.26001, 30.365821], [-88.259661, 30.364417], [-88.259138, 30.363113], [-88.259022, 30.360756], [-88.258964, 30.359001], [-88.25908, 30.357597], [-88.259312, 30.355541], [-88.259798, 30.35306], [-88.260258, 30.351586], [-88.260389, 30.350452], [-88.261178, 30.350339], [-88.260915, 30.349318], [-88.261112, 30.348411], [-88.261966, 30.347788], [-88.262097, 30.346541], [-88.259732, 30.345633], [-88.257762, 30.344329], [-88.257827, 30.342742], [-88.258418, 30.340417], [-88.259141, 30.339], [-88.259141, 30.337129], [-88.260061, 30.336449], [-88.261506, 30.335485], [-88.263674, 30.336335], [-88.264659, 30.335541] ] ], [ [ [-88.473227, 31.893856], [-88.472642, 31.875153], [-88.471214, 31.851385], [-88.471106, 31.850949], [-88.4698254016609, 31.8193008275882], [-88.4690535330784, 31.8002251898712], [-88.468669, 31.790722], [-88.46819722538, 31.7816613313433], [-88.465107, 31.722312], [-88.4644269792809, 31.6979519029488], [-88.464425, 31.697881], [-88.4638529086848, 31.6888940694711], [-88.4606299357415, 31.6382646801284], [-88.459722, 31.624002], [-88.459478, 31.621652], [-88.4577716424541, 31.5895867307762], [-88.4563306535853, 31.5625081761439], [-88.4536095981131, 31.511375061341], [-88.4535741066828, 31.5107081188993], [-88.4532906795915, 31.5053820569557], [-88.453013, 31.500164], [-88.451575, 31.481533], [-88.451045, 31.459448], [-88.4495695963996, 31.4358347375977], [-88.449569225455, 31.4358288007726], [-88.44866, 31.421277], [-88.448686, 31.420888], [-88.445209, 31.355969], [-88.445182, 31.355855], [-88.4441564504755, 31.3393230199194], [-88.4438082387429, 31.3337098054522], [-88.4403875099455, 31.2785672511538], [-88.4397086327595, 31.2676236703237], [-88.4391512235642, 31.2586381679242], [-88.43878, 31.252654], [-88.43898, 31.246896], [-88.438211, 31.231252], [-88.438104, 31.23006], [-88.4335076962076, 31.1427912908627], [-88.432007, 31.114298], [-88.4304196826215, 31.0853230573691], [-88.425807, 31.001123], [-88.425729, 31.000183], [-88.4256361537673, 30.9983011286609], [-88.4220230007208, 30.9250672562186], [-88.419562, 30.875186], [-88.41863, 30.866528], [-88.4184764744795, 30.8632750694073], [-88.4182537702715, 30.8585563664258], [-88.4181272847116, 30.8558763641312], [-88.4148111125415, 30.7856126199293], [-88.4124506012791, 30.7355976173844], [-88.41227, 30.731771], [-88.412209, 30.730395], [-88.41155, 30.712956], [-88.411339, 30.706334], [-88.409571, 30.668731], [-88.40807, 30.63697], [-88.4080643348131, 30.6369204575682], [-88.407462, 30.631653], [-88.407484, 30.622736], [-88.4060104917735, 30.589761], [-88.404676680269, 30.5599122122086], [-88.4041884107507, 30.5489854409314], [-88.404013, 30.54506], [-88.4040045380663, 30.5448844664734], [-88.403931, 30.543359], [-88.403547, 30.5331], [-88.402283, 30.510852], [-88.4019654852472, 30.5046667163986], [-88.4004035205078, 30.4742391699529], [-88.4004023553571, 30.4742164724636], [-88.4003178648367, 30.4725705715224], [-88.3995810543803, 30.458217280556], [-88.395023, 30.369425], [-88.374671, 30.385608], [-88.364022, 30.388006], [-88.359528, 30.400858], [-88.35727, 30.405676], [-88.350021, 30.405061], [-88.343603, 30.400448], [-88.338018, 30.404753], [-88.331957, 30.401166], [-88.326134, 30.397783], [-88.321143, 30.396348], [-88.315082, 30.391633], [-88.314844, 30.384457], [-88.31223, 30.376563], [-88.314607, 30.371437], [-88.311517, 30.370206], [-88.304743, 30.371334], [-88.303317, 30.37318], [-88.303554, 30.379229], [-88.29987, 30.385585], [-88.2926965894487, 30.3872290834439], [-88.292265, 30.387328], [-88.288105, 30.387328], [-88.287392, 30.384252], [-88.282635, 30.382876], [-88.275449825652, 30.3820084364898], [-88.2717858169306, 30.381566031043], [-88.2708, 30.381447], [-88.267531, 30.381085], [-88.265637, 30.381093], [-88.260695, 30.382381], [-88.241041757723, 30.3752903664424], [-88.239957, 30.374899], [-88.238748, 30.373505], [-88.234466, 30.371715], [-88.230886, 30.371625], [-88.224536, 30.371307], [-88.216461, 30.367599], [-88.214072, 30.365558], [-88.209231, 30.360017], [-88.204495, 30.362102], [-88.200065, 30.362378], [-88.196264, 30.36348], [-88.193663, 30.363317], [-88.1897962500773, 30.3629526683256], [-88.187104, 30.362699], [-88.187858, 30.358829], [-88.188023, 30.356193], [-88.18718, 30.352616], [-88.188527, 30.348124], [-88.188532, 30.345053], [-88.196353, 30.343586], [-88.198361, 30.338819], [-88.196613, 30.337433], [-88.195776, 30.33271], [-88.194042, 30.330475], [-88.193224, 30.326038], [-88.195561, 30.323819], [-88.195664, 30.321242], [-88.191542, 30.317002], [-88.175456, 30.324158], [-88.155775, 30.327184], [-88.146112, 30.323033], [-88.139976, 30.313116], [-88.1390536385524, 30.3123728402051], [-88.138576, 30.311988], [-88.1385138087836, 30.3123715204317], [-88.137269, 30.320048], [-88.134468, 30.327865], [-88.131387, 30.334312], [-88.128052, 30.338509], [-88.124611, 30.341623], [-88.115432, 30.35657], [-88.107274, 30.377246], [-88.10407, 30.4273], [-88.1063768712011, 30.4520917995834], [-88.106437, 30.452738], [-88.100646, 30.46122], [-88.096867, 30.471053], [-88.1003016477382, 30.4833842887921], [-88.102988, 30.493029], [-88.1036982616205, 30.500199], [-88.103768, 30.500903], [-88.100874, 30.50975], [-88.0915676568704, 30.5224337931017], [-88.090734, 30.52357], [-88.0897608275368, 30.5242001971768], [-88.082792, 30.528713], [-88.081617, 30.546317], [-88.0849284846215, 30.560790648342], [-88.0852889930346, 30.5623663379769], [-88.085493, 30.563258], [-88.0871276817068, 30.5641169261882], [-88.087655, 30.564394], [-88.0874119213592, 30.565055102057], [-88.0872670721837, 30.5654490490018], [-88.085625, 30.569915], [-88.083106, 30.572842], [-88.074898, 30.578892], [-88.064898, 30.588292], [-88.0612, 30.596502], [-88.0605006951967, 30.5989906042595], [-88.059104, 30.603961], [-88.059053, 30.608291], [-88.0589078939134, 30.6084115629206], [-88.053998, 30.612491], [-88.059598, 30.619091], [-88.060293, 30.626562], [-88.058507, 30.629973], [-88.054693, 30.63376], [-88.056013, 30.637547], [-88.059681, 30.640198], [-88.061877, 30.643586], [-88.058066, 30.645538], [-88.051647, 30.646521], [-88.0504871600114, 30.6470892897996], [-88.044716, 30.649917], [-88.038407, 30.647898], [-88.034588, 30.653715], [-88.02919, 30.65904], [-88.026036, 30.65856], [-88.023981, 30.660006], [-88.021801, 30.668625], [-88.020105, 30.675666], [-88.011412, 30.685126], [-88.0089012750009, 30.6834340138575], [-88.006898, 30.682084], [-88.005812172042, 30.6818162688907], [-87.9976283912748, 30.6797984052996], [-87.990578, 30.67806], [-87.986556282732, 30.6776184845159], [-87.9861324344368, 30.6775719532526], [-87.985559, 30.677509], [-87.970897781531, 30.6682635572949], [-87.9604964261525, 30.6617044070161], [-87.955989, 30.658862], [-87.936717, 30.657432], [-87.931705, 30.654362], [-87.93107, 30.652694], [-87.929841, 30.650341], [-87.925375, 30.648894], [-87.9253017075927, 30.6481356142893], [-87.924664, 30.641537], [-87.919346, 30.63606], [-87.918571, 30.630731], [-87.921326, 30.629379], [-87.921437, 30.62689], [-87.9205869063953, 30.6262567505487], [-87.917748, 30.624142], [-87.913976, 30.620094], [-87.91253, 30.615795], [-87.9128598513308, 30.6117293716022], [-87.9138038446372, 30.6000940509725], [-87.914956, 30.585893], [-87.9143740690017, 30.5843028838652], [-87.9125924365473, 30.5794346047727], [-87.911431, 30.576261], [-87.907891, 30.573114], [-87.9043232612277, 30.5662823025228], [-87.904168, 30.565985], [-87.9040338118332, 30.5651599912706], [-87.9027987864289, 30.5575668721183], [-87.9024024885759, 30.5551303742075], [-87.902375008612, 30.5549614233184], [-87.9021004422839, 30.5532733488565], [-87.901711, 30.550879], [-87.9021722477051, 30.5491883087284], [-87.9043909997987, 30.5410555315748], [-87.905343, 30.537566], [-87.911141, 30.525848], [-87.9122941570303, 30.5238502975214], [-87.91595, 30.517517], [-87.920603, 30.51289], [-87.921522, 30.511366], [-87.9216257305834, 30.5102260385107], [-87.921715, 30.509245], [-87.9228062305104, 30.5071930515984], [-87.925026, 30.503019], [-87.9252032633027, 30.5022939366533], [-87.9253133725115, 30.5018435549317], [-87.926565, 30.496724], [-87.933716, 30.486798], [-87.93398386069, 30.4864939085373], [-87.936969, 30.483105], [-87.93203, 30.48165], [-87.925159, 30.477434], [-87.921278, 30.473848], [-87.9207225101149, 30.4724211883704], [-87.920031, 30.470645], [-87.919543, 30.4686167577608], [-87.9176827375353, 30.4608850714763], [-87.914136, 30.446144], [-87.9100506889949, 30.4212132880055], [-87.908908, 30.41424], [-87.906343, 30.40938], [-87.865017, 30.38345], [-87.853806, 30.378481], [-87.849378, 30.378069], [-87.843861, 30.378169], [-87.839609, 30.377227], [-87.837368, 30.376334], [-87.8371931337561, 30.3754978579601], [-87.837107, 30.375086], [-87.837353, 30.371802], [-87.83774, 30.370548], [-87.837479, 30.368144], [-87.83454, 30.361423], [-87.8317484564552, 30.3568618814269], [-87.82988, 30.353809], [-87.809266, 30.332702], [-87.796717, 30.324198], [-87.772758, 30.311701], [-87.755516, 30.291217], [-87.755466757673, 30.2885001399316], [-87.7553717037016, 30.2832557017534], [-87.7553479180657, 30.2819433705036], [-87.755314, 30.280072], [-87.755674548876, 30.2794479522461], [-87.7573658456151, 30.2765206100707], [-87.759304, 30.273166], [-87.768003, 30.262455], [-87.7716415610064, 30.2609420499608], [-87.780364143592, 30.2573151129268], [-87.7860993460644, 30.2549303584071], [-87.78775, 30.254244], [-87.802087, 30.253054], [-87.817743, 30.254292], [-87.8229357244899, 30.2525747046188], [-87.860085, 30.240289], [-87.879343, 30.23859], [-87.893201, 30.239237], [-87.90046, 30.241531], [-87.913762, 30.247837], [-87.918247, 30.253308], [-87.936041, 30.261469], [-87.948979, 30.256564], [-87.966847, 30.235618], [-88.011734, 30.232448], [-88.023991, 30.23039], [-88.02858, 30.226763], [-88.027678, 30.223645], [-88.021364, 30.223334], [-88.013607, 30.22349], [-87.999996, 30.225753], [-87.962253, 30.229522], [-87.926119, 30.230373], [-87.838462, 30.227185], [-87.8314807693541, 30.2275865377238], [-87.8282340300667, 30.2277732796278], [-87.8007598925694, 30.2293535028283], [-87.80056, 30.229365], [-87.736472447708, 30.2405150317797], [-87.73553, 30.240679], [-87.7311904949698, 30.2411772799321], [-87.7147045818605, 30.2430702607233], [-87.7124431944754, 30.2433299225845], [-87.6909900183965, 30.2457932650731], [-87.6866200759241, 30.2462950399583], [-87.6777388584921, 30.2473148181101], [-87.656888, 30.249709], [-87.6382462357425, 30.2545339504502], [-87.6381406732961, 30.2545612726267], [-87.6003191760141, 30.2643504131726], [-87.5822073192866, 30.2690382104254], [-87.581362, 30.269257], [-87.574075, 30.27088], [-87.565044, 30.271745], [-87.558665, 30.271302], [-87.5527352179064, 30.2727110372184], [-87.5488386853542, 30.2736369328588], [-87.543923, 30.274805], [-87.5241849433393, 30.279146], [-87.518324, 30.280435], [-87.5183423750478, 30.2815722842093], [-87.5183643805646, 30.2829342685194], [-87.51838, 30.283901], [-87.50548, 30.287101], [-87.49998, 30.287901], [-87.452378, 30.300201], [-87.450078, 30.3111], [-87.455578, 30.3102], [-87.459578, 30.3083], [-87.462978, 30.3078], [-87.465778, 30.3076], [-87.468678, 30.3082], [-87.475879, 30.3079], [-87.481879, 30.306001], [-87.483679, 30.304801], [-87.494879, 30.305001], [-87.5023015499663, 30.3071617220507], [-87.50278, 30.307301], [-87.50468, 30.308901], [-87.50578, 30.3125], [-87.5058411579151, 30.3150873925325], [-87.505943, 30.319396], [-87.504701, 30.324039], [-87.502572, 30.327405], [-87.49998, 30.328957], [-87.4920423204518, 30.3308608280906], [-87.491879, 30.3309], [-87.475579, 30.3314], [-87.4672695874252, 30.3328753652829], [-87.464878, 30.3333], [-87.462978, 30.334], [-87.459978, 30.3363], [-87.452278, 30.344099], [-87.450962, 30.346262], [-87.451978, 30.360299], [-87.451878, 30.364999], [-87.451378, 30.367199], [-87.449078, 30.370399], [-87.441823, 30.376304], [-87.438678, 30.380798], [-87.438678, 30.382098], [-87.440878, 30.386698], [-87.441178, 30.388598], [-87.440678, 30.391498], [-87.4383930064683, 30.3944550504528], [-87.437278, 30.395898], [-87.434278, 30.397498], [-87.431778, 30.403198], [-87.4306855384615, 30.4048366923077], [-87.430680166419, 30.4048447503715], [-87.429578, 30.406498], [-87.426177, 30.409198], [-87.422677, 30.410098], [-87.419177, 30.410198], [-87.413177, 30.408998], [-87.408877, 30.408798], [-87.4047733501918, 30.4098619092095], [-87.403477, 30.410198], [-87.401777, 30.411398], [-87.398776, 30.415098], [-87.395676, 30.417597], [-87.386376, 30.420497], [-87.3843547694845, 30.4216251286598], [-87.382076, 30.422897], [-87.371169, 30.43049], [-87.368191, 30.433407], [-87.3676121661119, 30.4345795003946], [-87.366591, 30.436648], [-87.366939, 30.44048], [-87.36868, 30.444631], [-87.370768, 30.446865], [-87.3782686358461, 30.449194175159], [-87.381176, 30.450097], [-87.391976, 30.451597], [-87.396877, 30.450597], [-87.399877, 30.450997], [-87.404677, 30.452897], [-87.407877, 30.456396], [-87.414677, 30.457296], [-87.425078, 30.465596], [-87.429578, 30.470596], [-87.430578, 30.476596], [-87.431578, 30.477696], [-87.434678, 30.479196], [-87.435578, 30.480496], [-87.4347654303216, 30.4818711179173], [-87.432978, 30.484896], [-87.430578, 30.491096], [-87.431178, 30.495795], [-87.438269, 30.505357], [-87.43969, 30.506649], [-87.44322, 30.506782], [-87.444714, 30.507494], [-87.447702, 30.510458], [-87.447782, 30.511913], [-87.447305, 30.512629], [-87.446499, 30.513569], [-87.445182, 30.51398], [-87.444944, 30.514943], [-87.446427, 30.520306], [-87.4464721004875, 30.5222240471467], [-87.446586, 30.527068], [-87.43544, 30.54914], [-87.434963, 30.549599], [-87.431441, 30.550263], [-87.427891, 30.554159], [-87.426037, 30.560073], [-87.423362, 30.561425], [-87.422805, 30.561379], [-87.422408, 30.560439], [-87.420925, 30.560668], [-87.418647, 30.561837], [-87.41666, 30.566306], [-87.416951, 30.568003], [-87.418513, 30.569561], [-87.418354, 30.570043], [-87.416261, 30.572448], [-87.414513, 30.573456], [-87.412712, 30.573227], [-87.4125653736963, 30.5736132585274], [-87.4124710380697, 30.573861767419], [-87.408736, 30.583701], [-87.406558, 30.599928], [-87.404597, 30.603389], [-87.401178, 30.604397], [-87.39927, 30.605611], [-87.397308, 30.608728], [-87.395026, 30.615281], [-87.395053, 30.6159], [-87.39643, 30.616909], [-87.39643, 30.617734], [-87.395659, 30.623372], [-87.394479, 30.625192], [-87.393775, 30.627006], [-87.3937572497219, 30.6273737250124], [-87.3936159919869, 30.6303001018331], [-87.393588, 30.63088], [-87.395941, 30.643968], [-87.397185, 30.648117], [-87.396177, 30.650454], [-87.397262, 30.654351], [-87.400177, 30.657217], [-87.400707, 30.657148], [-87.405874, 30.666616], [-87.407118, 30.671796], [-87.406561, 30.674019], [-87.406958, 30.675165], [-87.412739, 30.678055], [-87.419527, 30.679981], [-87.424883, 30.683374], [-87.430372, 30.688645], [-87.436021, 30.688668], [-87.439814, 30.690479], [-87.4401022024296, 30.6907361149007], [-87.44228, 30.692679], [-87.44358, 30.694604], [-87.449362, 30.698913], [-87.451404, 30.699806], [-87.456948, 30.69756], [-87.466338, 30.700835], [-87.467717, 30.701683], [-87.470397, 30.705281], [-87.474429, 30.706586], [-87.479579, 30.712865], [-87.479819, 30.71495], [-87.481225, 30.716508], [-87.487036, 30.7185], [-87.496772, 30.720353], [-87.497515, 30.720123], [-87.498482281574, 30.7204185023051], [-87.502317, 30.72159], [-87.505153, 30.726313], [-87.511729, 30.733535], [-87.523613, 30.738306], [-87.532607, 30.743489], [-87.535365, 30.749775], [-87.535416, 30.75476], [-87.536528, 30.761383], [-87.537085, 30.76253], [-87.54226, 30.767504], [-87.54616, 30.77202], [-87.545364, 30.774105], [-87.545044, 30.778666], [-87.552051, 30.786254], [-87.552954, 30.786941], [-87.554838, 30.787125], [-87.559484, 30.790447], [-87.560068, 30.792258], [-87.564209, 30.796246], [-87.56814, 30.799088], [-87.572043, 30.800532], [-87.576849, 30.808163], [-87.581869, 30.812403], [-87.58787, 30.815037], [-87.594297, 30.816984], [-87.600486, 30.820627], [-87.60163, 30.82514], [-87.60357, 30.828624], [-87.605776, 30.831304], [-87.610982, 30.832632], [-87.615923, 30.834693], [-87.615367, 30.837031], [-87.617281, 30.840353], [-87.624137, 30.845713], [-87.626075, 30.846494], [-87.627323, 30.847961], [-87.626497, 30.85188], [-87.62538, 30.854355], [-87.626228, 30.857127], [-87.628245, 30.860131], [-87.634938, 30.865886], [-87.6348442887866, 30.866109347267], [-87.629987, 30.877686], [-87.629454, 30.880115], [-87.6244, 30.884696], [-87.622062, 30.885408], [-87.620788, 30.887494], [-87.620922, 30.889923], [-87.622519, 30.89368], [-87.622203, 30.897508], [-87.620715, 30.89893], [-87.616013, 30.901453], [-87.614951, 30.904226], [-87.614209, 30.908536], [-87.611847, 30.914541], [-87.6102, 30.916628], [-87.608262, 30.9219], [-87.607811, 30.92449], [-87.602684, 30.934277], [-87.600691, 30.937074], [-87.598299, 30.938793], [-87.59689, 30.941131], [-87.592055, 30.951492], [-87.589187, 30.964464], [-87.590917, 30.969414], [-87.593046, 30.972966], [-87.594111, 30.976335], [-87.5941266776319, 30.976700910013], [-87.594164, 30.977572], [-87.592676, 30.98014], [-87.593395, 30.982959], [-87.596722, 30.98761], [-87.599172, 30.995722], [-87.598928, 30.997457], [-87.571281, 30.99787], [-87.548543, 30.997927], [-87.51952, 30.997586], [-87.514910818753, 30.9976582879967], [-87.4983756803156, 30.9979176164912], [-87.4884222032622, 30.9980737216384], [-87.4837736214982, 30.9981466275723], [-87.480243, 30.998202], [-87.479703, 30.998197], [-87.478706, 30.998213], [-87.4778008656509, 30.9982103214084], [-87.466879, 30.998178], [-87.466827, 30.998178], [-87.461783, 30.998201], [-87.461638, 30.998202], [-87.458658, 30.998386], [-87.455705, 30.998318], [-87.449811, 30.998272], [-87.432292, 30.998205], [-87.425774, 30.99809], [-87.367842, 30.998292], [-87.364011, 30.998218], [-87.3638727343641, 30.9982184302701], [-87.355656, 30.998244], [-87.3478772559728, 30.9982540449584], [-87.333973, 30.998272], [-87.312183, 30.998435], [-87.30403, 30.998191], [-87.301567, 30.998434], [-87.2977209676648, 30.9984041688752], [-87.290995, 30.998352], [-87.288905, 30.998345], [-87.2762740065311, 30.9983027902622], [-87.2664842854257, 30.9982700753722], [-87.265564, 30.998267], [-87.26054, 30.998195], [-87.259689, 30.998172], [-87.25796, 30.998263], [-87.257002, 30.998194], [-87.255592, 30.998216], [-87.25498, 30.998285], [-87.2499289302495, 30.9977324342892], [-87.2399697516361, 30.9966429421853], [-87.2383167408441, 30.9964621097818], [-87.237685, 30.996393], [-87.2295406412137, 30.9968814475167], [-87.224746, 30.997169], [-87.1748002724822, 30.9986850890056], [-87.1636528320332, 30.9990234665355], [-87.1636472414627, 30.9990236362357], [-87.162614, 30.999055], [-87.1505897595909, 30.9993173890697], [-87.140755, 30.999532], [-87.124969, 30.998802], [-87.118873, 30.999427], [-87.1150729857602, 30.9994055190278], [-87.0969117097547, 30.9993028557638], [-87.0761079929049, 30.9991852551351], [-87.0709929924211, 30.9991563407215], [-87.068633, 30.999143], [-87.064063, 30.999191], [-87.053737, 30.999131], [-87.039989, 30.999594], [-87.036366, 30.999348], [-87.027107, 30.999255], [-87.0241722401182, 30.9992628697183], [-87.004359, 30.999316], [-86.998477, 30.998661], [-86.92781, 30.997704], [-86.9062578463152, 30.9976350113795], [-86.888135, 30.997577], [-86.872989, 30.997631], [-86.831934, 30.997378], [-86.830497, 30.997401], [-86.785918, 30.996978], [-86.785692460564, 30.9969741853795], [-86.74524, 30.99629], [-86.728392, 30.996739], [-86.727293, 30.996882], [-86.725379, 30.996872], [-86.706261, 30.994703], [-86.6883130015449, 30.9945961283541], [-86.678383, 30.994537], [-86.664681, 30.994534], [-86.6277543822176, 30.9947526807274], [-86.567586, 30.995109], [-86.563436, 30.995223], [-86.5424879807519, 30.9942704232822], [-86.519938, 30.993245], [-86.512834, 30.9937], [-86.49995, 30.99334], [-86.458319, 30.993998], [-86.454704, 30.993791], [-86.404912, 30.994049], [-86.391937, 30.994172], [-86.388647, 30.994181], [-86.3886460004315, 30.9941810207682], [-86.374545, 30.994474], [-86.36927, 30.994477], [-86.364907, 30.994455], [-86.350230280186, 30.9943513326318], [-86.3485063167533, 30.994339155609], [-86.3340424591783, 30.9942369917695], [-86.3225459271826, 30.9941557873021], [-86.3091205623614, 30.99406095874], [-86.304596, 30.994029], [-86.297148668496, 30.9939169188496], [-86.289247, 30.993798], [-86.2890657988644, 30.9937983038526], [-86.2888491620992, 30.9937986671265], [-86.2711934199209, 30.9938282736944], [-86.256448, 30.993853], [-86.238335, 30.99437], [-86.1872472578628, 30.9940490694821], [-86.180232, 30.994005], [-86.175204, 30.993798], [-86.168979, 30.993706], [-86.162886, 30.993682], [-86.1327395143734, 30.9931803018294], [-86.116918, 30.992917], [-86.056213, 30.993133], [-86.052462, 30.993247], [-86.035039, 30.99332], [-85.998643, 30.99287], [-85.9972899798363, 30.9928776855665], [-85.9656625094903, 30.9930573392277], [-85.9358412897118, 30.9932267328358], [-85.9358369815805, 30.9932267573073], [-85.893543, 30.993467], [-85.8311249866156, 30.9940624465768], [-85.8311224511907, 30.9940624707639], [-85.772671867107, 30.9946200694171], [-85.749932, 30.994837], [-85.749619, 30.995292], [-85.7456723399541, 30.9953176885335], [-85.7416280289593, 30.9953440126702], [-85.6922076032916, 30.9956656867558], [-85.6524690241305, 30.9959243423813], [-85.6462550538674, 30.9959647886781], [-85.6314371471168, 30.9960612373942], [-85.5833993142329, 30.9963739122803], [-85.5832890482388, 30.9963746299939], [-85.5794903431535, 30.996399355499], [-85.498272, 30.996928], [-85.4979920209678, 30.9969323496585], [-85.4926481766373, 30.9970153697974], [-85.4882980060804, 30.9970829525603], [-85.4075437687336, 30.9983375227886], [-85.3817482781607, 30.9987382727128], [-85.3290575307526, 30.999556858154], [-85.328920402131, 30.9995589885374], [-85.3129421786429, 30.9998072207559], [-85.243632, 31.000884], [-85.2400920010687, 31.0008820549456], [-85.2131520012213, 31.0008672527479], [-85.2034099786264, 31.0008618999882], [-85.1859660283981, 31.0008523154002], [-85.154452, 31.000835], [-85.152218, 31.000834], [-85.152085, 31.000888], [-85.145835, 31.000695], [-85.1172047745361, 31.0006593342114], [-85.057534, 31.000585], [-85.054802, 31.000585], [-85.052088, 31.000585], [-85.031155, 31.000647], [-85.030107, 31.000653], [-85.027512, 31.00067], [-85.024108, 31.000681], [-85.002499, 31.000682], [-85.001366, 31.005044], [-84.999626, 31.009079], [-84.999428, 31.013843], [-85.00006, 31.014983], [-85.004549, 31.01918], [-85.005051, 31.024701], [-85.009409, 31.032378], [-85.008552, 31.042824], [-85.008816, 31.045573], [-85.011392, 31.053546], [-85.012642, 31.055402], [-85.018148, 31.059253], [-85.028573, 31.074583], [-85.0284731949453, 31.0755261577669], [-85.028333, 31.076851], [-85.026068, 31.08418], [-85.029736, 31.096163], [-85.032832, 31.10057], [-85.035615, 31.108192], [-85.037079, 31.109751], [-85.040513, 31.111583], [-85.0470614668667, 31.1165514332678], [-85.050178, 31.118916], [-85.052867, 31.119489], [-85.054677, 31.120818], [-85.0559012903933, 31.1233847023148], [-85.061072, 31.134225], [-85.06243, 31.139518], [-85.064028, 31.142495], [-85.070181, 31.14868], [-85.0757293765372, 31.155777481201], [-85.076628, 31.156927], [-85.077801, 31.157889], [-85.0826174523208, 31.1593395178154], [-85.083582, 31.15963], [-85.092106, 31.160293], [-85.100207, 31.16549], [-85.100447, 31.166727], [-85.098426, 31.17777], [-85.098507, 31.180153], [-85.102052, 31.184734], [-85.104424, 31.18565], [-85.106503, 31.185305], [-85.107516, 31.186451], [-85.107744625537, 31.189854815531], [-85.108133, 31.195637], [-85.106963, 31.202693], [-85.105631, 31.204595], [-85.09977, 31.209751], [-85.098704, 31.211286], [-85.098707, 31.219511], [-85.096763, 31.225651], [-85.098844, 31.232524], [-85.100765, 31.234813], [-85.102472, 31.23786], [-85.10426, 31.241869], [-85.106182, 31.248077], [-85.109149, 31.254609], [-85.111711, 31.258022], [-85.112352, 31.25958], [-85.113261, 31.264343], [-85.111983, 31.267987], [-85.111905, 31.272477], [-85.112546, 31.274378], [-85.114548, 31.276302], [-85.114601, 31.277333], [-85.112762, 31.280037], [-85.110309, 31.281733], [-85.0998151895073, 31.2840112491625], [-85.099107, 31.284165], [-85.09316, 31.289688], [-85.089774, 31.295026], [-85.087695, 31.304053], [-85.087651, 31.308677], [-85.087404, 31.311223], [-85.084469, 31.316194], [-85.083776, 31.31821], [-85.084152, 31.328313], [-85.088983, 31.334292], [-85.089411, 31.336033], [-85.08781, 31.337981], [-85.087063, 31.340317], [-85.0859458208434, 31.349516257559], [-85.085864, 31.35019], [-85.085918, 31.353146], [-85.087413, 31.354428], [-85.09099, 31.354428], [-85.091791, 31.355207], [-85.092619, 31.357474], [-85.092487, 31.362881], [-85.092167, 31.364576], [-85.0871444124615, 31.3740326428487], [-85.08691, 31.374474], [-85.082431, 31.38454], [-85.080403, 31.393932], [-85.078641, 31.39636], [-85.077626, 31.39888], [-85.077387, 31.402844], [-85.079978, 31.410472], [-85.079818, 31.411732], [-85.076746, 31.415971], [-85.075827, 31.421506], [-85.075523, 31.424761], [-85.073978, 31.427179], [-85.072689, 31.428278], [-85.069083, 31.427619], [-85.06697, 31.428594], [-85.065875, 31.430586], [-85.065554, 31.439543], [-85.065955, 31.442979], [-85.066703, 31.447286], [-85.069268, 31.453472], [-85.071621, 31.468384], [-85.065687, 31.484122], [-85.062105, 31.488017], [-85.058923, 31.495989], [-85.052951, 31.506518], [-85.048445, 31.513684], [-85.0479257132954, 31.5142636818047], [-85.045642, 31.516813], [-85.045495582904, 31.5171292698553], [-85.044986, 31.51823], [-85.044556, 31.520908], [-85.047649, 31.523751], [-85.048263, 31.526012], [-85.047196, 31.528671], [-85.042983, 31.5352], [-85.041813, 31.537754], [-85.041305, 31.540987], [-85.041881, 31.544684], [-85.042547, 31.545953], [-85.045698, 31.548707], [-85.050838, 31.555551], [-85.051873, 31.557871], [-85.052931, 31.56289], [-85.05796, 31.57084], [-85.057719, 31.573062], [-85.055284, 31.577092], [-85.055417, 31.578696], [-85.05844, 31.58369], [-85.0583387397868, 31.5866430659763], [-85.058109, 31.593343], [-85.056405, 31.600963], [-85.0560661470677, 31.6042922893], [-85.0560652965444, 31.6043006458404], [-85.055976, 31.605178], [-85.057314, 31.606713], [-85.059696, 31.607262], [-85.060552, 31.608224], [-85.060418, 31.611271], [-85.05833, 31.614546], [-85.057527, 31.616883], [-85.0575059086538, 31.617563000625], [-85.057473, 31.618624], [-85.058169, 31.620227], [-85.059534, 31.621717], [-85.065236, 31.624351], [-85.067628, 31.625267], [-85.073829, 31.629567], [-85.080029, 31.636867], [-85.082829, 31.637967], [-85.084503, 31.639026], [-85.085173, 31.640749], [-85.085365, 31.642186], [-85.085173, 31.644101], [-85.0830537084557, 31.6486699475309], [-85.082267, 31.650366], [-85.080301, 31.650772], [-85.078513, 31.651685], [-85.078632, 31.653309], [-85.079925, 31.655287], [-85.083161, 31.656403], [-85.08546, 31.657028], [-85.087829, 31.657866], [-85.092429, 31.659966], [-85.10943, 31.677465], [-85.11263, 31.685165], [-85.11393, 31.686865], [-85.12233, 31.691265], [-85.12553, 31.694965], [-85.1261360634263, 31.7014918368987], [-85.12683, 31.708965], [-85.12653, 31.716764], [-85.12573, 31.718864], [-85.12223, 31.722764], [-85.11913, 31.730964], [-85.11893, 31.732664], [-85.12393, 31.747564], [-85.12663, 31.752463], [-85.129231, 31.758663], [-85.1269541364676, 31.7623302614517], [-85.12563, 31.764463], [-85.12523, 31.767063], [-85.12633, 31.768863], [-85.130731, 31.772263], [-85.140431, 31.779663], [-85.1409509602038, 31.7804602723125], [-85.141931, 31.781963], [-85.14180656, 31.78212892], [-85.137131, 31.788363], [-85.132931, 31.792363], [-85.132231, 31.795162], [-85.132831, 31.798862], [-85.1328473916616, 31.8003700328662], [-85.132931, 31.808062], [-85.131531, 31.813062], [-85.131331, 31.817562], [-85.131761981986, 31.8184448059333], [-85.133647, 31.822306], [-85.134315, 31.824608], [-85.13262, 31.826833], [-85.133083, 31.828666], [-85.135931, 31.830462], [-85.139231, 31.834161], [-85.141831, 31.839261], [-85.141331, 31.841061], [-85.138331, 31.844161], [-85.137731, 31.845861], [-85.138031, 31.851262], [-85.140231, 31.855261], [-85.140731, 31.857461], [-85.140131, 31.858761], [-85.137431, 31.860661], [-85.135831, 31.862461], [-85.133731, 31.870061], [-85.128831, 31.87636], [-85.1284798, 31.8774136], [-85.128431, 31.87756], [-85.128431, 31.87966], [-85.129331, 31.88246], [-85.1297857547641, 31.8833101936895], [-85.131631, 31.88676], [-85.133731, 31.88956], [-85.1343160680101, 31.8914127153652], [-85.134331, 31.89146], [-85.134131, 31.89216], [-85.132931, 31.89306], [-85.121131, 31.89326], [-85.117031, 31.89286], [-85.114031, 31.89336], [-85.11203, 31.89476], [-85.11063, 31.89686], [-85.111558, 31.901254], [-85.109775, 31.904143], [-85.10983, 31.90806], [-85.112731, 31.909859], [-85.113131, 31.911859], [-85.10913, 31.914359], [-85.10243, 31.917359], [-85.10133, 31.918659], [-85.10023, 31.924059], [-85.09953, 31.925259], [-85.09823, 31.926259], [-85.09183, 31.928859], [-85.08643, 31.935959], [-85.08473, 31.937359], [-85.07893, 31.940159], [-85.07893, 31.941459], [-85.08243, 31.945358], [-85.08683, 31.957758], [-85.08673, 31.959158], [-85.08573, 31.960758], [-85.08323, 31.962458], [-85.07393, 31.964158], [-85.07023, 31.965658], [-85.067829, 31.967358], [-85.065929, 31.971158], [-85.065929, 31.972458], [-85.066829, 31.974758], [-85.06993, 31.978358], [-85.07093, 31.981658], [-85.06833, 31.986757], [-85.0680981818182, 31.991857], [-85.06803, 31.993357], [-85.064544, 32.002489], [-85.063441, 32.00414], [-85.055075, 32.010714], [-85.053815, 32.013502], [-85.054768, 32.017407], [-85.053669, 32.020662], [-85.05014, 32.021092], [-85.04931, 32.022694], [-85.050601, 32.023906], [-85.052814, 32.02547], [-85.0544436067118, 32.026652024344], [-85.055217, 32.027213], [-85.056253, 32.028336], [-85.056464, 32.031819], [-85.055474, 32.034221], [-85.054627, 32.036694], [-85.054839, 32.038814], [-85.055333, 32.04058], [-85.05803, 32.043756], [-85.05883, 32.046656], [-85.05663, 32.054155], [-85.05643, 32.058055], [-85.05683, 32.059755], [-85.056029, 32.063055], [-85.054179, 32.067985], [-85.054084, 32.07021], [-85.055491, 32.072657], [-85.055813, 32.074439], [-85.053232, 32.080604], [-85.051161, 32.082527], [-85.047077, 32.084347], [-85.045511, 32.086867], [-85.047063, 32.090433], [-85.04955, 32.095362], [-85.053777, 32.107684], [-85.055045, 32.113671], [-85.05918, 32.125153], [-85.06154, 32.129673], [-85.06206, 32.132486], [-85.061144, 32.134065], [-85.058749, 32.136018], [-85.047865, 32.142033], [-85.045593, 32.143758], [-85.033989, 32.156348], [-85.030336, 32.161727], [-85.026583, 32.166104], [-85.014648, 32.176882], [-85.013065, 32.179112], [-85.011267, 32.180493], [-85.008531, 32.181903], [-84.995929, 32.184852], [-84.973728, 32.191552], [-84.966828, 32.193952], [-84.964628, 32.195152], [-84.961728, 32.19865], [-84.962228, 32.200051], [-84.963228, 32.20225], [-84.966928, 32.204451], [-84.969428, 32.204451], [-84.972328, 32.20355], [-84.974628, 32.203651], [-84.977128, 32.205751], [-84.980229, 32.207751], [-84.980229, 32.210051], [-84.978729, 32.21255], [-84.972128, 32.218251], [-84.967428, 32.219351], [-84.961428, 32.218051], [-84.9582235136984, 32.2179253338705], [-84.956328, 32.217851], [-84.949451, 32.218511], [-84.939328, 32.217951], [-84.930127, 32.219051], [-84.928227, 32.219851], [-84.925427, 32.221551], [-84.922927, 32.224751], [-84.923527, 32.229751], [-84.9230311580042, 32.2308528711019], [-84.922627, 32.231751], [-84.920627, 32.233951], [-84.916327, 32.236551], [-84.912727, 32.24335], [-84.913927, 32.24515], [-84.917227, 32.24595], [-84.920327, 32.24405], [-84.923027, 32.244549], [-84.924127, 32.245649], [-84.924427, 32.249797], [-84.923015, 32.250822], [-84.917327, 32.249049], [-84.910098, 32.248333], [-84.907227, 32.24905], [-84.904087, 32.250838], [-84.90251, 32.255233], [-84.901454, 32.257424], [-84.898139, 32.258608], [-84.892296, 32.258272], [-84.889174, 32.259232], [-84.8891466552477, 32.2597204238197], [-84.88908, 32.260911], [-84.891841, 32.263398], [-84.893959, 32.265846], [-84.904023, 32.273749], [-84.911127, 32.276949], [-84.922872, 32.285333], [-84.9338, 32.29826], [-84.93868, 32.300708], [-84.9557212929735, 32.3069460371336], [-84.989514, 32.319316], [-85.001874, 32.322015], [-85.007103, 32.328362], [-85.008096, 32.336677], [-85.004582, 32.345196], [-84.99993, 32.3488179964053], [-84.986778, 32.359058], [-84.983466, 32.363186], [-84.983242, 32.365122], [-84.985171, 32.367062], [-84.986298, 32.369666], [-84.98409, 32.373522], [-84.980282, 32.374386], [-84.977274, 32.373842], [-84.97433, 32.374578], [-84.971962, 32.377698], [-84.973818, 32.379873], [-84.979354, 32.380705], [-84.986282, 32.380336], [-84.988554, 32.384081], [-84.9869699000284, 32.3875148564601], [-84.985978, 32.389665], [-84.983386, 32.391761], [-84.978362, 32.390497], [-84.976394, 32.391025], [-84.971773, 32.390599], [-84.96873, 32.391457], [-84.968762, 32.393009], [-84.973882, 32.395217], [-84.979898, 32.400097], [-84.981098, 32.402833], [-84.9803047142842, 32.4073114714284], [-84.979431, 32.412244], [-84.97183, 32.416244], [-84.96343, 32.422544], [-84.9633113901639, 32.4230480918033], [-84.963222, 32.423428], [-84.96303, 32.424244], [-84.967031, 32.435343], [-84.971831, 32.442843], [-84.983831, 32.445643], [-84.993531, 32.450743], [-84.9951957038802, 32.4530550887225], [-84.9952442623814, 32.4531225310853], [-84.995331, 32.453243], [-84.998031, 32.461743], [-84.9980355773463, 32.4619283596395], [-84.9981126856546, 32.4650508605839], [-84.998231, 32.469842], [-84.9966933747961, 32.4726097253671], [-84.995231, 32.475242], [-84.9951515506849, 32.4773871315068], [-84.994831, 32.486042], [-84.9957165356694, 32.4889767052696], [-84.996732, 32.492342], [-84.998332, 32.494142], [-84.9976909182481, 32.4992473983285], [-84.997505, 32.500728], [-84.999832, 32.504341], [-85.0001824832057, 32.5064851325529], [-85.0002841081494, 32.5071068380909], [-85.0007888680774, 32.5101947811796], [-85.0012243650608, 32.5128589980189], [-85.001532, 32.514741], [-85.0028855676767, 32.5169597521885], [-85.0071, 32.523868], [-85.008396, 32.524876], [-85.013788, 32.526108], [-85.0157046592394, 32.5301112096223], [-85.016191, 32.531127], [-85.016273434347, 32.5312007752769], [-85.020237, 32.534748], [-85.022045, 32.540044], [-85.022509, 32.542923], [-85.032071, 32.545429], [-85.034841, 32.551996], [-85.0350135739157, 32.5521061766966], [-85.040555, 32.555644], [-85.044364, 32.559584], [-85.056926, 32.571242], [-85.059672, 32.576742], [-85.067535, 32.579546], [-85.076399, 32.594665], [-85.080288, 32.603577], [-85.0806178512654, 32.608095275146], [-85.080768, 32.610152], [-85.08224, 32.616264], [-85.083616, 32.6178], [-85.08536, 32.618536], [-85.087294, 32.62047], [-85.088319, 32.623032], [-85.0892541511326, 32.6250298228741], [-85.089441, 32.625429], [-85.088534, 32.627874], [-85.0849280451451, 32.6303328637042], [-85.084724, 32.630472], [-85.082365, 32.633834], [-85.083635, 32.635973], [-85.086175, 32.635362], [-85.091336, 32.634036], [-85.096597, 32.634667], [-85.100388, 32.637118], [-85.102989, 32.641033], [-85.105337, 32.644835], [-85.100337, 32.650135], [-85.096336, 32.652835], [-85.089736, 32.655635], [-85.088483, 32.657758], [-85.093536, 32.669734], [-85.104037, 32.679634], [-85.112637, 32.683434], [-85.114737, 32.685634], [-85.1153450674004, 32.6873257492588], [-85.117037, 32.692033], [-85.119279, 32.703966], [-85.119279, 32.707715], [-85.119, 32.710057], [-85.122738, 32.715727], [-85.121505063206, 32.7204024261057], [-85.120838, 32.722932], [-85.118838, 32.724832], [-85.117338, 32.726632], [-85.115038, 32.728831], [-85.113167, 32.732813], [-85.113329, 32.735751], [-85.114795, 32.738104], [-85.11855, 32.740817], [-85.124092, 32.741694], [-85.127604, 32.743047], [-85.132196, 32.744411], [-85.134794631893, 32.7467952506839], [-85.136584, 32.748437], [-85.139576, 32.754308], [-85.142567, 32.760682], [-85.140573, 32.764036], [-85.137382, 32.769068], [-85.13439, 32.770577], [-85.130884, 32.769562], [-85.122189, 32.773353], [-85.123601, 32.775711], [-85.126219, 32.779189], [-85.129934, 32.779649], [-85.134673, 32.783905], [-85.139285, 32.784921], [-85.1401915160284, 32.7883248857941], [-85.140558, 32.789701], [-85.141903, 32.791821], [-85.145771, 32.791115], [-85.1505836689875, 32.7934570819934], [-85.151913, 32.794104], [-85.1529003459633, 32.7950825579662], [-85.162137, 32.804237], [-85.1638459228327, 32.8064092347279], [-85.167939, 32.811612], [-85.1679144901823, 32.8116912716779], [-85.1672507819921, 32.813837891558], [-85.166078, 32.817631], [-85.1646705784048, 32.8202326623105], [-85.164104, 32.82128], [-85.168016, 32.829203], [-85.165473357677, 32.8334253730464], [-85.164651, 32.834791], [-85.16058, 32.838249], [-85.157432, 32.839439], [-85.154584, 32.839805], [-85.153905, 32.841018], [-85.153497, 32.842781], [-85.153462209283, 32.8434461729737], [-85.153388, 32.844865], [-85.154255, 32.847476], [-85.155884, 32.849918], [-85.1571363009798, 32.851508931773], [-85.159841, 32.854945], [-85.161089, 32.856045], [-85.16231, 32.856479], [-85.164318, 32.856183], [-85.166761, 32.85474], [-85.168064, 32.852863], [-85.170099, 32.852497], [-85.177127, 32.853895], [-85.1783639525338, 32.854658509785], [-85.1783807279069, 32.8546688643954], [-85.1784707131974, 32.8547244078766], [-85.179353, 32.855269], [-85.1844, 32.861317], [-85.1844236329767, 32.8614156967348], [-85.1848106254084, 32.8630318659474], [-85.184888, 32.863355], [-85.1848884238249, 32.863446106048], [-85.184914, 32.868944], [-85.1846512046702, 32.8694746250528], [-85.184131, 32.870525], [-85.18474, 32.870527], [-85.1850475779872, 32.8720030053371], [-85.1853237424222, 32.8733282633109], [-85.1857371444189, 32.8753120969364], [-85.1870586538649, 32.8816537568625], [-85.188741, 32.889727], [-85.1890775794593, 32.8914116855049], [-85.1907838462341, 32.8999520845814], [-85.191284509131, 32.9024580590312], [-85.2025511620874, 32.9588511822649], [-85.2041165750202, 32.9666865637903], [-85.210891601815, 33.0005976927144], [-85.221868, 33.055538], [-85.223261, 33.06258], [-85.223516898458, 33.0638570222819], [-85.2277998763677, 33.0852305712517], [-85.2284317628998, 33.0883839047551], [-85.232378, 33.108077], [-85.2365086541145, 33.1295615488779], [-85.2521437878869, 33.2108837284737], [-85.2521537013375, 33.2109352907707], [-85.2626626417576, 33.2655948768441], [-85.2814046177246, 33.3630765074936], [-85.2939021634333, 33.4280793192012], [-85.2963097812195, 33.4406019319816], [-85.2975274009043, 33.4469350716994], [-85.3033886220355, 33.4774207256388], [-85.304439, 33.482884], [-85.313999, 33.529807], [-85.314091, 33.530218], [-85.3148434877199, 33.5349512560896], [-85.314994, 33.535898], [-85.3153400895111, 33.5376461241702], [-85.315340215273, 33.5376467594031], [-85.3225689183808, 33.5741594828964], [-85.3237922987933, 33.5803388694423], [-85.3382006083928, 33.6531163257259], [-85.3552522157442, 33.7392452779125], [-85.3569782031297, 33.7479633701095], [-85.357402, 33.750104], [-85.360491, 33.767958], [-85.361844, 33.773951], [-85.3764027281585, 33.8506557456616], [-85.3764028869154, 33.850656582095], [-85.377426, 33.856047], [-85.3808849979311, 33.873507903946], [-85.3864734721684, 33.9017183318811], [-85.3887171312565, 33.9130442466707], [-85.3914952437911, 33.9270680642863], [-85.398837, 33.964129], [-85.3993834093702, 33.9669047225612], [-85.405918, 34.0001], [-85.406748, 34.002314], [-85.420232, 34.072278], [-85.4218527741544, 34.0808218531424], [-85.4278886333432, 34.11263966956], [-85.428222, 34.114397], [-85.42947, 34.125096], [-85.4447082365292, 34.1998924138202], [-85.444715014064, 34.1999256811405], [-85.455057, 34.250689], [-85.455371, 34.252854], [-85.458071, 34.265736], [-85.458693, 34.269437], [-85.4620817189037, 34.2863854944266], [-85.467676385249, 34.3143669157448], [-85.4704343306423, 34.3281606305543], [-85.47045, 34.328239], [-85.4740169081093, 34.3445495509054], [-85.4845883505414, 34.3928900308523], [-85.502316, 34.473954], [-85.502454, 34.474527], [-85.5049447058824, 34.4857351764706], [-85.508384, 34.501212], [-85.512108, 34.518252], [-85.513709, 34.52417], [-85.51393, 34.525192], [-85.5146979912582, 34.5294437989317], [-85.517074, 34.542598], [-85.527261, 34.588683], [-85.5340893753704, 34.6238579271308], [-85.534327, 34.625082], [-85.541264, 34.656701], [-85.541267, 34.656783], [-85.542501013985, 34.6624478599444], [-85.5520892272007, 34.7064634753637], [-85.552454, 34.708138], [-85.552482, 34.708321], [-85.5580670538503, 34.734425844267], [-85.561416, 34.750079], [-85.5743534080727, 34.815746661243], [-85.5759270787553, 34.8237342946789], [-85.583145, 34.860371], [-85.595163, 34.924171], [-85.595191, 34.924331], [-85.5965230789194, 34.931968747208], [-85.598781, 34.944915], [-85.599385, 34.951766], [-85.605165, 34.984678], [-85.6114325530746, 34.9847770248572], [-85.611494932012, 34.9847780104197], [-85.6156867800132, 34.9848442399586], [-85.6947663278267, 34.9860936655062], [-85.7008262686624, 34.9861894101723], [-85.7008436226794, 34.9861896843589], [-85.7022512605366, 34.9862119244798], [-85.7223216009079, 34.9865290279118], [-85.726239039383, 34.9865909218887], [-85.7265002692043, 34.9865950492165], [-85.7454168497592, 34.9868939237002], [-85.748942822758, 34.9869496326776], [-85.7579491702861, 34.9870919294029], [-85.7960529829863, 34.9876939545582], [-85.8081505497085, 34.9878850913229], [-85.824411, 34.988142], [-85.828724, 34.988165], [-85.8609202846465, 34.9883606930947], [-85.8639354755464, 34.9883790198068], [-86.0616193097243, 34.9895805671814], [-86.0670596523409, 34.9896136342727], [-86.0671363915752, 34.9896141007035], [-86.1529311285418, 34.990135571978], [-86.2539461700063, 34.9907495541905], [-86.311274, 34.991098], [-86.3187611440952, 34.9911469680432], [-86.3777526382152, 34.9915327891245], [-86.397203, 34.99166], [-86.4286076259029, 34.9911682872265], [-86.433927, 34.991085], [-86.467798, 34.990692], [-86.4732990364922, 34.9906906403093], [-86.5179380043519, 34.9906796068999], [-86.5227079907133, 34.9906784279028], [-86.528485, 34.990677], [-86.5557676701894, 34.9909699655954], [-86.555864, 34.990971], [-86.571217, 34.991011], [-86.5713080004837, 34.9910119538512], [-86.588962, 34.991197], [-86.600039, 34.99124], [-86.641212, 34.99174], [-86.6413928487564, 34.9917405111499], [-86.65961, 34.991792], [-86.670853, 34.992], [-86.67436, 34.992001], [-86.676726, 34.99207], [-86.677616, 34.99207], [-86.6776727086777, 34.9920699224502], [-86.7217124160414, 34.9920096976354], [-86.7753399184435, 34.9919363613987], [-86.7836280170906, 34.9919250273269], [-86.783648, 34.991925], [-86.8193960245283, 34.991769485613], [-86.820657, 34.991764], [-86.836306, 34.991764], [-86.83637, 34.991764], [-86.846466, 34.99186], [-86.849794, 34.991924], [-86.8550457754793, 34.9919376045345], [-86.8573743674567, 34.9919436366679], [-86.861630362659, 34.9919546616696], [-86.862147, 34.991956], [-86.879203662682, 34.9923531162451], [-86.8792364883071, 34.9923538804971], [-86.9374605990549, 34.9937094645679], [-86.96712, 34.9944], [-86.970236, 34.994546], [-86.972613, 34.99461], [-86.974412, 34.994513], [-86.9886782470853, 34.9948518895576], [-87.000007, 34.995121], [-87.011174, 34.995162], [-87.0300940691376, 34.9955281062054], [-87.0899784494007, 34.9966868780398], [-87.0945933592216, 34.9967761772443], [-87.1204873149768, 34.9972772292127], [-87.1226456781005, 34.9973189938663], [-87.1256493142754, 34.9973771146815], [-87.1396209266955, 34.9976474674995], [-87.1627524375735, 34.9980950657409], [-87.210759, 34.999024], [-87.215236205961, 34.9991177159924], [-87.216683, 34.999148], [-87.2197717603678, 34.9992228736371], [-87.224053220297, 34.9993266591169], [-87.230544, 34.999484], [-87.270014, 35.00039], [-87.299185, 35.000915], [-87.2992156777296, 35.0009154577211], [-87.349251, 35.001662], [-87.3493245225215, 35.0016631801721], [-87.3592674303837, 35.0018227821826], [-87.359281, 35.001823], [-87.381071, 35.002118], [-87.3855468534538, 35.0022298635638], [-87.391314, 35.002374], [-87.4174, 35.002669], [-87.421543, 35.002679], [-87.428613, 35.002795], [-87.4370427920769, 35.0028352150336], [-87.4370737168059, 35.0028353625626], [-87.4432865229355, 35.0028650012779], [-87.4929179481542, 35.003101772175], [-87.4929517665586, 35.0031019335085], [-87.4958434829136, 35.0031157286851], [-87.5223899924953, 35.0032423710464], [-87.5774876474615, 35.0035052190532], [-87.606178379167, 35.0036420906069], [-87.6192815618009, 35.003704600444], [-87.625025, 35.003732], [-87.664123, 35.003523], [-87.671405, 35.003537], [-87.6887093751075, 35.0037513567643], [-87.696834, 35.003852], [-87.700543, 35.003988], [-87.702321, 35.003945], [-87.7094595821424, 35.0040883690137], [-87.709491, 35.004089], [-87.7223240284927, 35.0042505851277], [-87.75889, 35.004711], [-87.767602, 35.004783], [-87.773586, 35.004946], [-87.8211342757523, 35.0053771529474], [-87.8211613865039, 35.0053773987792], [-87.851886, 35.005656], [-87.853411, 35.005576], [-87.853528, 35.005541], [-87.872626, 35.005571], [-87.877742, 35.005512], [-87.877969, 35.005468], [-87.9269766619543, 35.0056571040592], [-87.9734958113087, 35.0058366057866], [-87.9849162019114, 35.005880673227], [-88.000032, 35.005939], [-88.202959, 35.008028], [-88.201987, 35.005421], [-88.20082, 34.997774], [-88.200064, 34.995634], [-88.198811, 34.991192], [-88.187429, 34.974909], [-88.179973, 34.967466], [-88.176106, 34.962519], [-88.172102, 34.955213], [-88.161594, 34.933456], [-88.154617, 34.922392], [-88.146335, 34.914374], [-88.139721, 34.909631], [-88.136692, 34.907592], [-88.1331860088282, 34.9059779925659], [-88.125038, 34.902227], [-88.099999, 34.894095], [-88.097888, 34.892202], [-88.104828239252, 34.8343853294572], [-88.10756, 34.811628], [-88.116418, 34.746303], [-88.118407, 34.724292], [-88.120809790864, 34.7088908621916], [-88.1229228444128, 34.6953468499391], [-88.1308067668013, 34.6448133736411], [-88.134263, 34.62266], [-88.1343641919509, 34.6219004926397], [-88.138719, 34.589215], [-88.139246, 34.587795], [-88.139988, 34.581703], [-88.1525090963558, 34.4907061779864], [-88.1560500936445, 34.4649720496905], [-88.156292, 34.463214], [-88.1565520647315, 34.4609838238307], [-88.156751039728, 34.4592775205854], [-88.1586659845225, 34.4428559772994], [-88.1594297785128, 34.4363060881802], [-88.1613748286655, 34.4196263774296], [-88.165634, 34.383102], [-88.1656733734431, 34.3827915774924], [-88.16591, 34.380926], [-88.173632, 34.321054], [-88.175867, 34.302171], [-88.176889, 34.293858], [-88.1771061707454, 34.2922387475592], [-88.1774959379743, 34.2893325939911], [-88.186667, 34.220952], [-88.18762, 34.204778], [-88.190678, 34.190123], [-88.192128, 34.175351], [-88.200196, 34.115948], [-88.2037840638383, 34.0865542422802], [-88.2060052962786, 34.0683576964181], [-88.207229, 34.058333], [-88.210741, 34.029199], [-88.2117468355469, 34.0217404155568], [-88.2132700197265, 34.0104455295678], [-88.222135875909, 33.9447024394569], [-88.226428, 33.912875], [-88.226517, 33.911665], [-88.226517, 33.911551], [-88.2289318725307, 33.8942371038877], [-88.2292490683217, 33.8919629072572], [-88.229252650117, 33.891937226882], [-88.2294613585972, 33.8904408510291], [-88.2309869597483, 33.8795027582299], [-88.235492, 33.847203], [-88.240054, 33.810879], [-88.2415992970684, 33.8029735909988], [-88.2416094387383, 33.8029217083864], [-88.243025, 33.79568], [-88.244142, 33.781673], [-88.2460218415259, 33.7672863631589], [-88.2489373465952, 33.7449736777213], [-88.252257, 33.719568], [-88.254445, 33.698779], [-88.254622, 33.69578], [-88.256131, 33.68286], [-88.256343, 33.682053], [-88.262002140265, 33.6354380745981], [-88.262370726858, 33.6324019885971], [-88.2623713027984, 33.6323972445167], [-88.267005, 33.594229], [-88.267148, 33.591989], [-88.26816, 33.58504], [-88.269076, 33.576929], [-88.269532, 33.572894], [-88.27005, 33.570819], [-88.270781740705, 33.564923594639], [-88.2713779363513, 33.560120233305], [-88.2741407842769, 33.5378608340953], [-88.274619, 33.534008], [-88.276805, 33.516463], [-88.277421, 33.512436], [-88.2783480192117, 33.5047399770047], [-88.2801043139762, 33.4901593893276], [-88.2859481129665, 33.4416447406107], [-88.2910782508144, 33.3990548370265], [-88.29301654948, 33.3829632707304], [-88.2970970227493, 33.3490875800044], [-88.3004988409734, 33.32084601721], [-88.3005000457713, 33.3208360150958], [-88.3027437308318, 33.3022091607627], [-88.3044169870826, 33.2883179507206], [-88.3080904163437, 33.2578214996127], [-88.3114725832984, 33.2297430797382], [-88.312535, 33.220923], [-88.315235, 33.203323], [-88.317135, 33.184123], [-88.3218542065997, 33.14616209746], [-88.3222722892766, 33.1427990754313], [-88.330934, 33.073125], [-88.3310076496119, 33.0724897275104], [-88.340432, 32.991199], [-88.3478500256084, 32.929077584824], [-88.354292, 32.87513], [-88.3666091107452, 32.76343394998], [-88.36818559513, 32.7491378149249], [-88.368349, 32.747656], [-88.3690552109757, 32.7425839924895], [-88.373338, 32.711825], [-88.382985, 32.626954], [-88.383039, 32.626679], [-88.3853779263182, 32.6071595288939], [-88.3855823489929, 32.6054535228254], [-88.3861753483959, 32.6005046560645], [-88.3888572465182, 32.5781229194103], [-88.399966, 32.485415], [-88.3999703119346, 32.4853749259647], [-88.4033142007722, 32.4542976645469], [-88.403789, 32.449885], [-88.403789, 32.44977], [-88.4039124245627, 32.4487817958759], [-88.4039163853966, 32.4487500832869], [-88.4100961455102, 32.3992715654218], [-88.4125, 32.380025], [-88.413819, 32.373922], [-88.4144532827107, 32.3685012674077], [-88.4147143585951, 32.3662700501098], [-88.4149186209757, 32.3645243746791], [-88.421453, 32.30868], [-88.4240705677077, 32.2862295148856], [-88.4279411433212, 32.2530321691437], [-88.428278, 32.250143], [-88.4312940163839, 32.2276546024792], [-88.4338373824385, 32.2086904392936], [-88.4358107589052, 32.1939763035621], [-88.43865, 32.172806], [-88.43871, 32.172078], [-88.4418791405619, 32.1464303710893], [-88.4428468074689, 32.1385991117127], [-88.443049750597, 32.1369567074276], [-88.4534176891327, 32.0530497191012], [-88.4538834888783, 32.0492800349269], [-88.454959, 32.040576], [-88.455039, 32.039719], [-88.46866, 31.933173], [-88.4688742551621, 31.9303250695125], [-88.4688743843865, 31.9303233518312], [-88.468879, 31.930262], [-88.473227, 31.893856] ] ] ] } '" - ] - }, - "metadata": {}, - "execution_count": 28 - } - ], + "outputs": [], "source": [ "print(f\"GeoJSON for {selected_place_choice} which has the place id: {place_dcid}\\n\\n\")\n", "dc.get_property_values([place_dcid], prop='geoJsonCoordinates', out=True)[place_dcid][0]" @@ -2028,39 +2000,10 @@ "stat_var_list" ], "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "cKX-ign5TEhk", - "outputId": "6e59125d-65c3-4eba-d55b-574ae862592c" + "id": "cKX-ign5TEhk" }, "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "['CrsiScore_SuperfundSite',\n", - " 'NaturalHazardExposureScore_SuperfundSite',\n", - " 'NaturalHazardRiskScore_SuperfundSite',\n", - " 'NaturalHazardRiskScore_SuperfundSite_CoastalFloodEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_DroughtEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_FloodEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_HailEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_HighWindEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_HurricaneEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_LandslideEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_TornadoEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_WildfireEvent']" - ] - }, - "metadata": {}, - "execution_count": 27 - } - ] + "outputs": [] }, { "cell_type": "code", From 7171cd640a6d75f5a577387c26ed2f61e1524ecd Mon Sep 17 00:00:00 2001 From: Prashanth R Date: Wed, 9 Mar 2022 18:37:01 -0800 Subject: [PATCH 04/13] Created using Colaboratory --- ...ing_Superfund_data_from_Data_Commons.ipynb | 1401 +++++++++++++++++ 1 file changed, 1401 insertions(+) create mode 100644 Accessing_Superfund_data_from_Data_Commons.ipynb diff --git a/Accessing_Superfund_data_from_Data_Commons.ipynb b/Accessing_Superfund_data_from_Data_Commons.ipynb new file mode 100644 index 00000000..8e1b4e7d --- /dev/null +++ b/Accessing_Superfund_data_from_Data_Commons.ipynb @@ -0,0 +1,1401 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Accessing Superfund data from Data Commons", + "provenance": [], + "collapsed_sections": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Copyright 2022 Google LLC.\n", + "SPDX-License-Identifier: Apache-2.0\n", + "\n", + "**Notebook Version** - 1.0.0" + ], + "metadata": { + "id": "fiV51ZPWpxwh" + } + }, + { + "cell_type": "markdown", + "source": [ + "# Accessing Superfund data from Data Commons\n", + "\n", + "[Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) are US locations contaminated with hazardous substances that the [EPA](https://epa.gov/) seeks to investigate and clean up. Data Commons (DC) includes data about Superfund sites, and this notebook illustrates how that can be accessed using the [DC python APIs](https://docs.datacommons.org/api/python/) with [Pandas extension](https://docs.datacommons.org/api/pandas/).\n", + "\n", + "An extended version of this notebook that does some analysis with the extracted Superfund data can be found [here](https://colab.research.google.com/github/pradh/api-python/blob/superfund1/Analyzing_SuperfundSites_with_Data_Commons.ipynb)." + ], + "metadata": { + "id": "xIaPIPE7aYSv" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Set-up\n", + "\n", + "Import the DC python APIs, as follows:" + ], + "metadata": { + "id": "Ksgk_NrZq_64" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "bHDDJ2O7ZnVi" + }, + "outputs": [], + "source": [ + "!pip install datacommons_pandas datacommons --upgrade --quiet\n", + "\n", + "# Import Data Commons libraries\n", + "import datacommons as dc\n", + "import datacommons_pandas as dcpd" + ] + }, + { + "cell_type": "markdown", + "source": [ + "## List Superfund sites\n", + "\n", + "The individual sites are instances of `SuperfundSite`, and are listed in the corresponding [Graph Browser page](https://datacommons.org/browser/SuperfundSite).\n", + "\n", + "To programmatically list all Superfund sites, use the `get_places_in` API as follows:" + ], + "metadata": { + "id": "mNVXQS0arQFS" + } + }, + { + "cell_type": "code", + "source": [ + "# Gets all Superfund sites within USA\n", + "place_dcid = 'country/USA' # DCID of USA\n", + "site_list = dc.get_places_in([place_dcid], 'SuperfundSite')[place_dcid]\n", + "\n", + "site_list[:5]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "l-4CtbWNrsNq", + "outputId": "5a703c6e-ad68-489f-d152-4ee6789ab447" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['epaSuperfundSiteId/AK0001897602',\n", + " 'epaSuperfundSiteId/AK4170024323',\n", + " 'epaSuperfundSiteId/AL3210020027',\n", + " 'epaSuperfundSiteId/AL6210020008',\n", + " 'epaSuperfundSiteId/AL7210020742']" + ] + }, + "metadata": {}, + "execution_count": 2 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "> In place of USA, you can specify any US state or county. You can use [place search](https://datacommons.org/s) to find the corresponding DCID, as illustrated [here](https://user-images.githubusercontent.com/4375037/157551351-71b83f85-1b35-414b-aa3f-d585826140e0.png).\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "metadata": { + "id": "gX3mc3lNryNY" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Get statistics\n", + "\n", + "Superfund sites have associated statistical variables like [CrsiScore_Superfundsite](https://datacommons.org/tools/statvar#CrsiScore_SuperfundSite), [NaturalHazardRiskScore_Superfundsite](https://datacommons.org/tools/statvar#NaturalHazardExposureScore_SuperfundSite), etc. To see the list of all variables, you can visit a Superfund site's Graph Browser page ([example](https://datacommons.org/browser/epaSuperfundSiteId/WY5571924179)).\n", + "\n", + "To get stats for all variables for all sites, use the `build_multivariate_dataframe` API, as follows:" + ], + "metadata": { + "id": "lMCO-dBctZ-w" + } + }, + { + "cell_type": "code", + "source": [ + "# Gets stats for the listed variables from all sites in a Pandas table\n", + "site_df = dcpd.build_multivariate_dataframe(site_list,\n", + " ['CrsiScore_SuperfundSite',\n", + " 'NaturalHazardExposureScore_SuperfundSite',\n", + " 'NaturalHazardRiskScore_SuperfundSite',\n", + " 'NaturalHazardRiskScore_SuperfundSite_CoastalFloodEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_DroughtEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_FloodEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HailEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HighWindEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HurricaneEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_LandslideEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_TornadoEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_WildfireEvent'])\n", + "\n", + "site_df.head()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 302 + }, + "id": "Mv_pUiyB8EgF", + "outputId": "60a81dab-17cf-4ab8-afea-6e126bb1a9e3" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEventNaturalHazardRiskScore_SuperfundSite_FloodEventNaturalHazardRiskScore_SuperfundSite_HurricaneEventNaturalHazardRiskScore_SuperfundSite_TornadoEventCrsiScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSite_DroughtEventNaturalHazardRiskScore_SuperfundSite_EarthquakeEventNaturalHazardRiskScore_SuperfundSite_WildfireEventNaturalHazardExposureScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSite_HighWindEventNaturalHazardRiskScore_SuperfundSite_CoastalFloodEventNaturalHazardRiskScore_SuperfundSite_HailEventNaturalHazardRiskScore_SuperfundSite_LandslideEventNaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent
place
epaSuperfundSiteId/AK000189760236.09125.8191.01.00055.4556601.7511.01.01.0005.8701.0001.01.0001.00075.696
epaSuperfundSiteId/AK417002432326.92733.5881.01.00028.1425583.9441.01.06.0392.0641.0001.01.0001.00037.392
epaSuperfundSiteId/AL321002002736.29745.1151.099.0000.32724666.94599.01.099.00082.36933.9461.032.94725.14773.927
epaSuperfundSiteId/AL621002000833.49946.4881.037.4370.60090230.33299.01.069.07064.97946.8651.032.11114.99472.603
epaSuperfundSiteId/AL721002074241.49650.8911.099.0000.61015880.38399.01.01.00092.15599.0001.091.63421.54065.770
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 36.091 \n", + "epaSuperfundSiteId/AK4170024323 26.927 \n", + "epaSuperfundSiteId/AL3210020027 36.297 \n", + "epaSuperfundSiteId/AL6210020008 33.499 \n", + "epaSuperfundSiteId/AL7210020742 41.496 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_FloodEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 25.819 \n", + "epaSuperfundSiteId/AK4170024323 33.588 \n", + "epaSuperfundSiteId/AL3210020027 45.115 \n", + "epaSuperfundSiteId/AL6210020008 46.488 \n", + "epaSuperfundSiteId/AL7210020742 50.891 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_HurricaneEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.0 \n", + "epaSuperfundSiteId/AK4170024323 1.0 \n", + "epaSuperfundSiteId/AL3210020027 1.0 \n", + "epaSuperfundSiteId/AL6210020008 1.0 \n", + "epaSuperfundSiteId/AL7210020742 1.0 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_TornadoEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 1.000 \n", + "epaSuperfundSiteId/AL3210020027 99.000 \n", + "epaSuperfundSiteId/AL6210020008 37.437 \n", + "epaSuperfundSiteId/AL7210020742 99.000 \n", + "\n", + " CrsiScore_SuperfundSite \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 55.455660 \n", + "epaSuperfundSiteId/AK4170024323 28.142558 \n", + "epaSuperfundSiteId/AL3210020027 0.327246 \n", + "epaSuperfundSiteId/AL6210020008 0.600902 \n", + "epaSuperfundSiteId/AL7210020742 0.610158 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.751 \n", + "epaSuperfundSiteId/AK4170024323 3.944 \n", + "epaSuperfundSiteId/AL3210020027 66.945 \n", + "epaSuperfundSiteId/AL6210020008 30.332 \n", + "epaSuperfundSiteId/AL7210020742 80.383 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_DroughtEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.0 \n", + "epaSuperfundSiteId/AK4170024323 1.0 \n", + "epaSuperfundSiteId/AL3210020027 99.0 \n", + "epaSuperfundSiteId/AL6210020008 99.0 \n", + "epaSuperfundSiteId/AL7210020742 99.0 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.0 \n", + "epaSuperfundSiteId/AK4170024323 1.0 \n", + "epaSuperfundSiteId/AL3210020027 1.0 \n", + "epaSuperfundSiteId/AL6210020008 1.0 \n", + "epaSuperfundSiteId/AL7210020742 1.0 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_WildfireEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 6.039 \n", + "epaSuperfundSiteId/AL3210020027 99.000 \n", + "epaSuperfundSiteId/AL6210020008 69.070 \n", + "epaSuperfundSiteId/AL7210020742 1.000 \n", + "\n", + " NaturalHazardExposureScore_SuperfundSite \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 5.870 \n", + "epaSuperfundSiteId/AK4170024323 2.064 \n", + "epaSuperfundSiteId/AL3210020027 82.369 \n", + "epaSuperfundSiteId/AL6210020008 64.979 \n", + "epaSuperfundSiteId/AL7210020742 92.155 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_HighWindEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 1.000 \n", + "epaSuperfundSiteId/AL3210020027 33.946 \n", + "epaSuperfundSiteId/AL6210020008 46.865 \n", + "epaSuperfundSiteId/AL7210020742 99.000 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_CoastalFloodEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.0 \n", + "epaSuperfundSiteId/AK4170024323 1.0 \n", + "epaSuperfundSiteId/AL3210020027 1.0 \n", + "epaSuperfundSiteId/AL6210020008 1.0 \n", + "epaSuperfundSiteId/AL7210020742 1.0 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_HailEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 1.000 \n", + "epaSuperfundSiteId/AL3210020027 32.947 \n", + "epaSuperfundSiteId/AL6210020008 32.111 \n", + "epaSuperfundSiteId/AL7210020742 91.634 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_LandslideEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 1.000 \n", + "epaSuperfundSiteId/AL3210020027 25.147 \n", + "epaSuperfundSiteId/AL6210020008 14.994 \n", + "epaSuperfundSiteId/AL7210020742 21.540 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent \n", + "place \n", + "epaSuperfundSiteId/AK0001897602 75.696 \n", + "epaSuperfundSiteId/AK4170024323 37.392 \n", + "epaSuperfundSiteId/AL3210020027 73.927 \n", + "epaSuperfundSiteId/AL6210020008 72.603 \n", + "epaSuperfundSiteId/AL7210020742 65.770 " + ] + }, + "metadata": {}, + "execution_count": 3 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Additional statistics for Tar Creek site\n", + "\n", + "[Tar Creek](https://en.wikipedia.org/wiki/Tar_Creek_Superfund_site) is one of the largest Superfund sites, and only for that site we have additional stats on contaminants in the ground water from sampling wells. These stats are attached to instances of `SuperfundMeasurementSite` contained in Tar Creek.\n", + "\n", + "The measurement sites are listed on the [Tar Creek Graph Browser page](https://datacommons.org/browser/epaSuperfundSiteId/OKD980629844), and a measurement site's Graph Browser page ([example](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Commerce_5)) lists all available statistical variables.\n", + "\n", + "To get these stats, list the measurement sites within Tar Creek, and then provide all associated variables, as follows:" + ], + "metadata": { + "id": "QjmmCevb9bRZ" + } + }, + { + "cell_type": "code", + "source": [ + "# Gets all measurement sites contained in Tar Creek \n", + "tar_creek_site = 'epaSuperfundSiteId/OKD980629844' # DCID of Tar Creek\n", + "measurement_sites = dc.get_places_in([tar_creek_site], 'SuperfundMeasurementSite')[tar_creek_site]\n", + "\n", + "# Gets stats for contaminant variables for said measurement sites\n", + "tar_creek_df = dcpd.build_multivariate_dataframe(\n", + " measurement_sites,\n", + " [\n", + " 'Concentration_Cadmium_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Cadmium_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Iron_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Lead_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Zinc_BodyOfWater_GroundWater',\n", + " 'Concentration_Iron_BodyOfWater_GroundWater',\n", + " 'Concentration_Lead_BodyOfWater_GroundWater',\n", + " 'Concentration_Sulfate_BodyOfWater_GroundWater',\n", + " 'DissolvedOxygen_BodyOfWater_GroundWater',\n", + " 'Concentration_Zinc_BodyOfWater_GroundWater',\n", + " 'PotentialOfHydrogen_BodyOfWater_GroundWater',\n", + " 'ElectricalConductivity_BodyOfWater_GroundWater',\n", + " 'Temperature_BodyOfWater_GroundWater',\n", + " 'WaterHardness_BodyOfWater_GroundWater'\n", + " ])\n", + "\n", + "tar_creek_df.head()" + ], + "metadata": { + "id": "QxWrffhqBmQ2", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 305 + }, + "outputId": "a708ecba-c6df-44c1-bdee-318a8e862d60" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
PotentialOfHydrogen_BodyOfWater_GroundWaterConcentration_DissolvedContaminant_Cadmium_BodyOfWater_GroundWaterConcentration_Iron_BodyOfWater_GroundWaterConcentration_DissolvedContaminant_Zinc_BodyOfWater_GroundWaterElectricalConductivity_BodyOfWater_GroundWaterConcentration_DissolvedContaminant_Iron_BodyOfWater_GroundWaterConcentration_DissolvedContaminant_Lead_BodyOfWater_GroundWaterConcentration_Sulfate_BodyOfWater_GroundWaterConcentration_Zinc_BodyOfWater_GroundWaterTemperature_BodyOfWater_GroundWaterWaterHardness_BodyOfWater_GroundWaterConcentration_Cadmium_BodyOfWater_GroundWaterConcentration_Lead_BodyOfWater_GroundWaterDissolvedOxygen_BodyOfWater_GroundWater
place
epaSuperfundMeasurementSite/OKD980629844/Commerce_57.6500.09830.00235.30.0000015.40.0019.81280018.1
epaSuperfundMeasurementSite/OKD980629844/Picher_5-MW6.40020.00003.412000.018.300001180.03.5419.43290014.1
epaSuperfundMeasurementSite/OKD980629844/Picher_7-MW7.2200.16200.00468.50.02390139.00.0019.5552009.6
epaSuperfundMeasurementSite/OKD980629844/Quapaw_47.5700.00000.00213.20.0000015.60.0018.81260017.4
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " PotentialOfHydrogen_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 7.65 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 6.40 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 7.22 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 7.57 \n", + "\n", + " Concentration_DissolvedContaminant_Cadmium_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0 \n", + "\n", + " Concentration_Iron_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0.0983 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 20.0000 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0.1620 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0.0000 \n", + "\n", + " Concentration_DissolvedContaminant_Zinc_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0.00 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 3.41 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0.00 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0.00 \n", + "\n", + " ElectricalConductivity_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 235.3 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 2000.0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 468.5 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 213.2 \n", + "\n", + " Concentration_DissolvedContaminant_Iron_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0.0000 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 18.3000 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0.0239 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0.0000 \n", + "\n", + " Concentration_DissolvedContaminant_Lead_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0 \n", + "\n", + " Concentration_Sulfate_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 15.4 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 1180.0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 139.0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 15.6 \n", + "\n", + " Concentration_Zinc_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0.00 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 3.54 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0.00 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0.00 \n", + "\n", + " Temperature_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 19.8 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 19.4 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 19.5 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 18.8 \n", + "\n", + " WaterHardness_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 128 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 329 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 552 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 126 \n", + "\n", + " Concentration_Cadmium_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0 \n", + "\n", + " Concentration_Lead_BodyOfWater_GroundWater \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0 \n", + "\n", + " DissolvedOxygen_BodyOfWater_GroundWater \n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Commer... 18.1 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 14.1 \n", + "epaSuperfundMeasurementSite/OKD980629844/Picher... 9.6 \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 17.4 " + ] + }, + "metadata": {}, + "execution_count": 4 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Get non-statistical attributes\n", + "\n", + "The Superfund sites have non-statistical properties like latitude/longitude, ownership status, EPA region code, and so on. These are listed in each site's Graph Browser page ([example](https://autopush.datacommons.org/browser/epaSuperfundSiteId/OKD980629844)).\n", + "\n", + "To get these values, use the `get_property_labels` and `get_property_values` APIs, and append to the existing dataframe (`site_df`), as follows:" + ], + "metadata": { + "id": "D19BM5nCC2yj" + } + }, + { + "cell_type": "code", + "source": [ + "# Lists properties for a sample site\n", + "site_props = dc.get_property_labels([tar_creek_site], out=True)[tar_creek_site]\n", + "\n", + "for prop in site_props:\n", + " # Gets values for a given property. pvs is dict from site-id -> list of values\n", + " pvs = dc.get_property_values(site_list, prop)\n", + " # Turns the list of values into a comma-separated a single-value\n", + " pvs = {p: ', '.join(v) for p, v in pvs.items()}\n", + " # Extends the dataframe\n", + " site_df[prop] = site_df.index.map(pvs)\n", + "\n", + "site_df.head()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 591 + }, + "id": "QY_W-tJeDx2z", + "outputId": "fc402ad1-ccf1-46b8-b022-6d1143436887" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEventNaturalHazardRiskScore_SuperfundSite_FloodEventNaturalHazardRiskScore_SuperfundSite_HurricaneEventNaturalHazardRiskScore_SuperfundSite_TornadoEventCrsiScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSite_DroughtEventNaturalHazardRiskScore_SuperfundSite_EarthquakeEventNaturalHazardRiskScore_SuperfundSite_WildfireEventNaturalHazardExposureScore_SuperfundSite...NaturalHazardRiskScore_SuperfundSite_LandslideEventNaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEventcontainedInPlaceepaRegionCodeepaSuperfundSiteIdestablishmentOwnershiplocationnameprovenancetypeOf
place
epaSuperfundSiteId/AK000189760236.09125.8191.01.00055.4556601.7511.01.01.0005.870...1.00075.696geoId/02, geoId/0200, geoId/02198, geoId/02198...10AK0001897602latLong/5562644_-13255885Salt Chuck Minedc/999wb02SuperfundSite
epaSuperfundSiteId/AK417002432326.92733.5881.01.00028.1425583.9441.01.06.0392.064...1.00037.392geoId/02, geoId/0200, geoId/0200065, geoId/020...10AK4170024323FederalGovernmentOwnedlatLong/5187750_-17665250Adak Naval Air Stationdc/999wb02SuperfundSite
epaSuperfundSiteId/AL321002002736.29745.1151.099.0000.32724666.94599.01.099.00082.369...25.14773.927geoId/01, geoId/01015, geoId/0101590099, geoId...4AL3210020027FederalGovernmentOwnedlatLong/3365944_-8596944Anniston Army Depot (Southeast Industrial Area)dc/999wb02SuperfundSite
epaSuperfundSiteId/AL621002000833.49946.4881.037.4370.60090230.33299.01.069.07064.979...14.99472.603geoId/01, geoId/0103, geoId/01121, geoId/01121...4AL6210020008FederalGovernmentOwnedlatLong/3333810_-8632680Alabama Army Ammunition Plantdc/999wb02SuperfundSite
epaSuperfundSiteId/AL721002074241.49650.8911.099.0000.61015880.38399.01.01.00092.155...21.54065.770geoId/01, geoId/0105, geoId/01089, geoId/01089...4AL7210020742FederalGovernmentOwnedlatLong/3464694_-8667305Redstone Arsenal (USARMY/NASA)dc/999wb02SuperfundSite
\n", + "

5 rows × 23 columns

\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 36.091 \n", + "epaSuperfundSiteId/AK4170024323 26.927 \n", + "epaSuperfundSiteId/AL3210020027 36.297 \n", + "epaSuperfundSiteId/AL6210020008 33.499 \n", + "epaSuperfundSiteId/AL7210020742 41.496 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_FloodEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 25.819 \n", + "epaSuperfundSiteId/AK4170024323 33.588 \n", + "epaSuperfundSiteId/AL3210020027 45.115 \n", + "epaSuperfundSiteId/AL6210020008 46.488 \n", + "epaSuperfundSiteId/AL7210020742 50.891 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_HurricaneEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.0 \n", + "epaSuperfundSiteId/AK4170024323 1.0 \n", + "epaSuperfundSiteId/AL3210020027 1.0 \n", + "epaSuperfundSiteId/AL6210020008 1.0 \n", + "epaSuperfundSiteId/AL7210020742 1.0 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_TornadoEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 1.000 \n", + "epaSuperfundSiteId/AL3210020027 99.000 \n", + "epaSuperfundSiteId/AL6210020008 37.437 \n", + "epaSuperfundSiteId/AL7210020742 99.000 \n", + "\n", + " CrsiScore_SuperfundSite \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 55.455660 \n", + "epaSuperfundSiteId/AK4170024323 28.142558 \n", + "epaSuperfundSiteId/AL3210020027 0.327246 \n", + "epaSuperfundSiteId/AL6210020008 0.600902 \n", + "epaSuperfundSiteId/AL7210020742 0.610158 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.751 \n", + "epaSuperfundSiteId/AK4170024323 3.944 \n", + "epaSuperfundSiteId/AL3210020027 66.945 \n", + "epaSuperfundSiteId/AL6210020008 30.332 \n", + "epaSuperfundSiteId/AL7210020742 80.383 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_DroughtEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.0 \n", + "epaSuperfundSiteId/AK4170024323 1.0 \n", + "epaSuperfundSiteId/AL3210020027 99.0 \n", + "epaSuperfundSiteId/AL6210020008 99.0 \n", + "epaSuperfundSiteId/AL7210020742 99.0 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.0 \n", + "epaSuperfundSiteId/AK4170024323 1.0 \n", + "epaSuperfundSiteId/AL3210020027 1.0 \n", + "epaSuperfundSiteId/AL6210020008 1.0 \n", + "epaSuperfundSiteId/AL7210020742 1.0 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_WildfireEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 6.039 \n", + "epaSuperfundSiteId/AL3210020027 99.000 \n", + "epaSuperfundSiteId/AL6210020008 69.070 \n", + "epaSuperfundSiteId/AL7210020742 1.000 \n", + "\n", + " NaturalHazardExposureScore_SuperfundSite \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 5.870 \n", + "epaSuperfundSiteId/AK4170024323 2.064 \n", + "epaSuperfundSiteId/AL3210020027 82.369 \n", + "epaSuperfundSiteId/AL6210020008 64.979 \n", + "epaSuperfundSiteId/AL7210020742 92.155 \n", + "\n", + " ... \\\n", + "place ... \n", + "epaSuperfundSiteId/AK0001897602 ... \n", + "epaSuperfundSiteId/AK4170024323 ... \n", + "epaSuperfundSiteId/AL3210020027 ... \n", + "epaSuperfundSiteId/AL6210020008 ... \n", + "epaSuperfundSiteId/AL7210020742 ... \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_LandslideEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 1.000 \n", + "epaSuperfundSiteId/AK4170024323 1.000 \n", + "epaSuperfundSiteId/AL3210020027 25.147 \n", + "epaSuperfundSiteId/AL6210020008 14.994 \n", + "epaSuperfundSiteId/AL7210020742 21.540 \n", + "\n", + " NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 75.696 \n", + "epaSuperfundSiteId/AK4170024323 37.392 \n", + "epaSuperfundSiteId/AL3210020027 73.927 \n", + "epaSuperfundSiteId/AL6210020008 72.603 \n", + "epaSuperfundSiteId/AL7210020742 65.770 \n", + "\n", + " containedInPlace \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 geoId/02, geoId/0200, geoId/02198, geoId/02198... \n", + "epaSuperfundSiteId/AK4170024323 geoId/02, geoId/0200, geoId/0200065, geoId/020... \n", + "epaSuperfundSiteId/AL3210020027 geoId/01, geoId/01015, geoId/0101590099, geoId... \n", + "epaSuperfundSiteId/AL6210020008 geoId/01, geoId/0103, geoId/01121, geoId/01121... \n", + "epaSuperfundSiteId/AL7210020742 geoId/01, geoId/0105, geoId/01089, geoId/01089... \n", + "\n", + " epaRegionCode epaSuperfundSiteId \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 10 AK0001897602 \n", + "epaSuperfundSiteId/AK4170024323 10 AK4170024323 \n", + "epaSuperfundSiteId/AL3210020027 4 AL3210020027 \n", + "epaSuperfundSiteId/AL6210020008 4 AL6210020008 \n", + "epaSuperfundSiteId/AL7210020742 4 AL7210020742 \n", + "\n", + " establishmentOwnership \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 \n", + "epaSuperfundSiteId/AK4170024323 FederalGovernmentOwned \n", + "epaSuperfundSiteId/AL3210020027 FederalGovernmentOwned \n", + "epaSuperfundSiteId/AL6210020008 FederalGovernmentOwned \n", + "epaSuperfundSiteId/AL7210020742 FederalGovernmentOwned \n", + "\n", + " location \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 latLong/5562644_-13255885 \n", + "epaSuperfundSiteId/AK4170024323 latLong/5187750_-17665250 \n", + "epaSuperfundSiteId/AL3210020027 latLong/3365944_-8596944 \n", + "epaSuperfundSiteId/AL6210020008 latLong/3333810_-8632680 \n", + "epaSuperfundSiteId/AL7210020742 latLong/3464694_-8667305 \n", + "\n", + " name \\\n", + "place \n", + "epaSuperfundSiteId/AK0001897602 Salt Chuck Mine \n", + "epaSuperfundSiteId/AK4170024323 Adak Naval Air Station \n", + "epaSuperfundSiteId/AL3210020027 Anniston Army Depot (Southeast Industrial Area) \n", + "epaSuperfundSiteId/AL6210020008 Alabama Army Ammunition Plant \n", + "epaSuperfundSiteId/AL7210020742 Redstone Arsenal (USARMY/NASA) \n", + "\n", + " provenance typeOf \n", + "place \n", + "epaSuperfundSiteId/AK0001897602 dc/999wb02 SuperfundSite \n", + "epaSuperfundSiteId/AK4170024323 dc/999wb02 SuperfundSite \n", + "epaSuperfundSiteId/AL3210020027 dc/999wb02 SuperfundSite \n", + "epaSuperfundSiteId/AL6210020008 dc/999wb02 SuperfundSite \n", + "epaSuperfundSiteId/AL7210020742 dc/999wb02 SuperfundSite \n", + "\n", + "[5 rows x 23 columns]" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Join with other stats in Data Commons\n", + "\n", + "We can now join the Superfund data with various statistics in DC (across Demographics, Economics, Climate, Health, and so on) for places like US\n", + "Census tracts, cities, counties, etc.\n", + "\n", + "This can be done by starting with the list of places containing the Superfund sites (found in the `containedInPlace` column in `site_df`), and then using the `build_multivariate_dataframe` API to get stats for the relevant variables. This is illustrated in detail in the [extended notebook](https://colab.research.google.com/github/pradh/api-python/blob/superfund1/Analyzing_SuperfundSites_with_Data_Commons.ipynb#scrollTo=Bdada1GF-VgS)." + ], + "metadata": { + "id": "VYp-2EpfNBiS" + } + } + ] +} \ No newline at end of file From f047e075f5dc6554829685e2633e2d2249d12596 Mon Sep 17 00:00:00 2001 From: Prashanth R Date: Wed, 9 Mar 2022 18:38:41 -0800 Subject: [PATCH 05/13] Created using Colaboratory --- ...ing_Superfund_data_from_Data_Commons.ipynb | 22 ++++--------------- 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb b/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb index 3aaf5a6c..838ab73b 100644 --- a/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb +++ b/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb @@ -46,7 +46,7 @@ "\n", "[Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) are US locations contaminated with hazardous substances that the [EPA](https://epa.gov/) seeks to investigate and clean up. Data Commons (DC) includes data about Superfund sites, and this notebook illustrates how that can be accessed using the [DC python APIs](https://docs.datacommons.org/api/python/) with [Pandas extension](https://docs.datacommons.org/api/pandas/).\n", "\n", - "An extended version of this notebook that does some analysis with the extracted Superfund data can be found [here](https://colab.sandbox.google.com/drive/1KwzzOQCsWEJ4dB1Emc5TIh-s5WdYMGFU)." + "An extended version of this notebook that does some analysis with the extracted Superfund data can be found [here](https://colab.research.google.com/github/pradh/api-python/blob/superfund1/Analyzing_SuperfundSites_with_Data_Commons.ipynb)." ], "metadata": { "id": "xIaPIPE7aYSv" @@ -67,23 +67,9 @@ "cell_type": "code", "execution_count": null, "metadata": { - "id": "bHDDJ2O7ZnVi", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "e629ed68-ea13-48bc-c610-11437e0aa68a" + "id": "bHDDJ2O7ZnVi" }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "\u001b[K |████████████████████████████████| 45 kB 971 kB/s \n", - "\u001b[K |████████████████████████████████| 46 kB 2.2 MB/s \n", - "\u001b[?25h" - ] - } - ], + "outputs": [], "source": [ "!pip install datacommons_pandas datacommons --upgrade --quiet\n", "\n", @@ -1405,7 +1391,7 @@ "We can now join the Superfund data with various statistics in DC (across Demographics, Economics, Climate, Health, and so on) for places like US\n", "Census tracts, cities, counties, etc.\n", "\n", - "This can be done by starting with the list of places containing the Superfund sites (found in the `containedInPlace` column in `site_df`), and then using the `build_multivariate_dataframe` API to get stats for the relevant variables. This is illustrated in detail in the [extended notebook](https://colab.research.google.com/drive/1KwzzOQCsWEJ4dB1Emc5TIh-s5WdYMGFU#scrollTo=Bdada1GF-VgS)." + "This can be done by starting with the list of places containing the Superfund sites (found in the `containedInPlace` column in `site_df`), and then using the `build_multivariate_dataframe` API to get stats for the relevant variables. This is illustrated in detail in the [extended notebook](https://colab.research.google.com/github/pradh/api-python/blob/superfund1/Analyzing_SuperfundSites_with_Data_Commons.ipynb#scrollTo=Bdada1GF-VgS)." ], "metadata": { "id": "VYp-2EpfNBiS" From 2e0f03c197bba40470a12622c024a816349aad98 Mon Sep 17 00:00:00 2001 From: Prashanth R Date: Wed, 9 Mar 2022 18:39:11 -0800 Subject: [PATCH 06/13] Created using Colaboratory --- ...ing_SuperfundSites_with_Data_Commons.ipynb | 4486 +++++++++++++++++ 1 file changed, 4486 insertions(+) create mode 100644 notebooks/Analyzing_SuperfundSites_with_Data_Commons.ipynb diff --git a/notebooks/Analyzing_SuperfundSites_with_Data_Commons.ipynb b/notebooks/Analyzing_SuperfundSites_with_Data_Commons.ipynb new file mode 100644 index 00000000..5d965c9b --- /dev/null +++ b/notebooks/Analyzing_SuperfundSites_with_Data_Commons.ipynb @@ -0,0 +1,4486 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OJ_kWT4iDMaM" + }, + "source": [ + "Copyright 2022 Google LLC.\n", + "SPDX-License-Identifier: Apache-2.0\n", + "\n", + "**Notebook Version** - 1.0.0" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QJoxQoY48gHc" + }, + "source": [ + "## Analyzing SuperfundSites with Data Commons\n", + "\n", + "This information, stored in Data Commons, is available to everyone for data science projects, education, and exploration. \n", + "\n", + "This tutorial introduces the Data Commons graph and two of its tools: (1) the [browser](https://browser.datacommons.org/) and (2) the [Pandas API](https://github.com/datacommonsorg/api-pandas).\n", + "\n", + "### Data Commons Browser\n", + "\n", + "The [Data Commons browser](https://browser.datacommons.org/) provides a way to explore the data in a human-readable format. It is the best way to explore what is in Data Commons. \n", + "\n", + "An important property for all entities is the **`dcid`**. The `dcid` (Data Commons identifier) is a unique identifier assigned to each entity in the knowledge graph. With this identifier, one will be able to search for and query information on the given entity in ways that we will discuss later. The `dcid` is listed at the top of the page next to \"About: \" and also in the list of properties.\n", + "\n", + "### Accessing statistics through APIs\n", + "Currently there are three ways in which statistics from then Data Commons graph can be obtained, namely:\n", + "\n", + "1. [Python API](https://docs.datacommons.org/api/python/) - a lightweight python wrapper \n", + "2. The [Pandas API](https://github.com/datacommonsorg/api-pandas) provides functions for users to extract structured information from Data Commons programmatically and view them in different formats such as Python dicts and [pandas](https://pandas.pydata.org/) DataFrames. DataFrames allow access to all the data processing, analytical and visualization tools provided by packages such as pandas, NumPy, SciPy, and Matplotlib.\n", + "3. [REST API endpoints](https://docs.datacommons.org/api/rest/) - a common, language agnostic means to access stats\n", + "\n", + "### About this notebook\n", + "This notebook presents how different Data Commons APIs work with example snippets to extract statistics from the knowledge graph. The notebook will provide code snippets that can better showcase how data can be used for visualization and analysis. Specifically, the notebook uses statistics available on Superfund Sites and Demographics as examples, but the snippets can be used for statistics in other verticals like Climate, Economics, Health, etc.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "vD2mErj68Q1F" + }, + "outputs": [], + "source": [ + "# Refer: https://docs.datacommons.org/api/pandas/\n", + "!pip install datacommons_pandas datacommons geopandas plotly descartes --upgrade --quiet\n", + "\n", + "# Import Data Commons\n", + "import datacommons as dc\n", + "import datacommons_pandas as dpd\n", + "\n", + "# Import other required libraries\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.patches as mpatches\n", + "import pandas as pd\n", + "import geopandas as gpd\n", + "from shapely.geometry import Point\n", + "import plotly.express as px\n", + "from descartes import PolygonPatch\n", + "\n", + "import ipywidgets as widgets\n", + "import pprint\n", + "import requests\n", + "import json\n", + "\n", + "# setting place scope to US\n", + "_USA = 'country/USA'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ocd8TI35EA06" + }, + "source": [ + "### Querying Statistics from Data Commons\n", + "\n", + "Data Commons has a large corpus of statistical data, which can be queried and joined with other statistics. For example, we can query the median income of women living in Berkeley, California or the number of individuals who are insured in Maryland. \n", + "\n", + "Before we explore how to do this, we need to understand how Data Commons stores statistical data. In particular, there are two types of entities: [StatisticalVariable](https://browser.datacommons.org/kg?dcid=StatisticalVariable) and [StatVarObservation](https://browser.datacommons.org/kg?dcid=StatVarObservation).\n", + "\n", + "A StatisticalVariable represents any type of statistical metric that can be measured at a place and time. Some examples include: median income, median income of females, number of high school graduates, unemployment rate, prevalence of diabetes, essentially anything one might call a metric, statistic, or measure. A StatVarObservation represents an actual measurement of a StatisticalVariable in a given place and time.\n", + "\n", + "One example of a StatisticalVariable is the median age of people in San Antonio, Texas in 2014. The statistical metric, time, and place here are median age, 2014, and San Antonio respectively. A list of StatisticalVariables can be found [here](http://docs.datacommons.org/statistical_variables.html). To read more about StatisticalVariable and StatVarObservation, please see [representing_statistics.md](https://github.com/datacommonsorg/data/blob/master/docs/representing_statistics.md).\n", + "\n", + "Data Commons defines APIs allowing us to fetch data over these two types. To begin with, we can use the [**`build_multivariate_dataframe`**](https://docs.datacommons.org/api/pandas/multivariate_dataframe.html) function to build a dataframe with the latest StatVarObservations of multiple StatisticalVariables for multiple places.\n", + "\n", + "Now, we start of with some code snippets where we use the Data Commons API to pull out statistics from the Data Commons graph." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SbnQVUDN-CzH" + }, + "source": [ + "## Demo 1 - List of all superfund sites\n", + "\n", + "In this first demo, we will be starting off by getting all the [superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) that are located across the United States. Since, we will be fetching statistics from the United States, we have pre-defined the base place in variable `usa` with the value `country/USA`. \n", + "\n", + "Note: `country/USA` is a unique identifier to a node on the Data Commons Graph which defines [United States](https://datacommons.org/browser/country/USA)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "VqybWC6XKr6j", + "cellView": "form" + }, + "outputs": [], + "source": [ + "#@title Select place types\n", + "\n", + "#@markdown *Select `Runtime > Run all` from the menu above after filling up the values.*\n", + "\n", + "#@markdown Select a geo-level for querying statistics. Select 'State' for a quick demo\n", + "US_GEO_LEVEL = 'State' #@param [\"State\", \"Country\", \"County\"] {allow-input: true}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "t0VGnxiSR6aD" + }, + "source": [ + "Now, that a GEO_LEVEL is selected for viewing different statistics, we shall fetch all the places within the GEO_LEVEL that are present in the Data Commons Graph.\n", + "\n", + "### Get places contained in the selected place type\n", + "\n", + "So, if \"State\" is selected as the GEO_LEVEL, we will get a list of Data Common Graph ids for all the States in the US. Where each place id refers to a unique node on the graph which describes the place with different constraint properties, like the `typeOf` place which quantifies if the place is a State, or other administrative division applicable. \n", + "\n", + "This is done using the [`get_places_in`](https://docs.datacommons.org/api/python/place_in.html) API method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "i8dsWq92MpzA", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "14ad9b3b-0253-4b3c-ca63-ba79b785999d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "['geoId/01', 'geoId/02', 'geoId/04', 'geoId/05', 'geoId/06']\n" + ] + } + ], + "source": [ + "# get the dcids for all the places in the selected place type across US\n", + "if US_GEO_LEVEL == 'Country':\n", + " # if geo-level is a country, then we look at the US\n", + " _PLACE_DCID = _USA\n", + "else:\n", + " # else, we extract the place ids for the selected geo-level\n", + " _PLACE_DCID = dc.get_places_in([_USA], US_GEO_LEVEL)[_USA]\n", + "\n", + "# printing the first 5 places that we fetch from Data Commons\n", + "if type(_PLACE_DCID) is list:\n", + " print(_PLACE_DCID[:5])\n", + "else:\n", + " print(_PLACE_DCID)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "s71ffKOHdEsn" + }, + "source": [ + "### Select a place by name\n", + "\n", + "While querying the Data Commons Graph for statistics about a place we will use a place's id like [`geoId/01`](https://datacommons.org/browser/geoId/01) is for the state of Alabama, US.\n", + "\n", + ">TIP: While looking to browse the statistics available for a particular place, one can use the URL constructed as `https://datacommons.org/browser/`. Here `` refers to the unique id for a node in the above example, it will be `geoId/01`.\n", + "\n", + "To make the queried place ids human-readable, we can extract the `name` property of the place node which can be searched on the [graph browser](https://datacommons.org/browser/geoId/01), using the [`get_property_values`](https://docs.datacommons.org/api/python/property_value.html) API method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "VcEKb7spT5rU", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 101, + "referenced_widgets": [ + "e86121a3dee84467911d601c450f076f", + "2f1164c04f504f80beb625de92bbfa17", + "2e5a9eb31a424a8db158822f155d85db" + ] + }, + "outputId": "97fa64cf-d554-4199-f0fb-1a448b24baf6" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Fetching the place will take time based on the summary level and number of place nodes.....Done.\n", + "\n", + "Select a place from the list to use for the remainder of the notebook.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e86121a3dee84467911d601c450f076f", + "version_minor": 0, + "version_major": 2 + }, + "text/plain": [ + "Dropdown(options=('Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delawa…" + ] + }, + "metadata": {} + } + ], + "source": [ + "# populate a list of options based on name for non-country GEO-LEVELS\n", + "\n", + "def get_names_for_place_ids(place_id_list):\n", + " \"\"\"\n", + " This function takes as input a list of place ids and returns the corresponding place names from the Data Commons Graph\n", + " \"\"\"\n", + " print(\"Fetching the place will take time based on the summary level and number of place nodes\", end=\".....\", flush=True)\n", + " try:\n", + " # get the place names for non-country GEO-LEVELS\n", + " place_name_list = [dc.get_property_values([place_id], 'name')[place_id][0] for place_id in place_id_list]\n", + " except:\n", + " place_name_list = dc.get_property_values([_USA], 'name')[_USA]\n", + "\n", + " print('Done.\\n', flush=True)\n", + " return place_name_list\n", + "\n", + "_PLACE_NAMES = get_names_for_place_ids(_PLACE_DCID)\n", + "\n", + "print(\"Select a place from the list to use for the remainder of the notebook.\")\n", + "selected_place = widgets.Dropdown(options=_PLACE_NAMES, value=_PLACE_NAMES[0])\n", + "display(selected_place)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "kexiYzYvT5-l" + }, + "outputs": [], + "source": [ + "# get the value of the selected place from the drop-down\n", + "selected_place_choice = selected_place.value\n", + "\n", + "# get the place's id on the Data Commons Graph by name\n", + "if type(_PLACE_DCID) == list:\n", + " place_dcid = _PLACE_DCID[_PLACE_NAMES.index(selected_place_choice)]\n", + "else:\n", + " place_dcid = _PLACE_DCID" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "b9tRRw_JT6G5", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "outputId": "bb208982-dba0-4845-f395-dd117d77d0b2" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + }, + "text/plain": [ + "'geoId/01'" + ] + }, + "metadata": {}, + "execution_count": 6 + } + ], + "source": [ + "place_dcid" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Xx9lfzi8hJLP" + }, + "source": [ + "### Get all superfund sites (by id) in the selected place\n", + "\n", + "Now, let us get a list of all the superfund sites that are found in the selected place.\n", + "\n", + "For this we use the [`get_places_in`](https://docs.datacommons.org/api/python/place_in.html) API method but set the placeType or the second argument to the function call to be [`SuperfundSite`](https://datacommons.org/browser/SuperfundSite)\n", + "\n", + "---\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "8ceIHqoy9wa3", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "04274c8d-a742-4a4d-b1e8-9337583dd8a3" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['epaSuperfundSiteId/AL3210020027',\n", + " 'epaSuperfundSiteId/AL6210020008',\n", + " 'epaSuperfundSiteId/AL7210020742',\n", + " 'epaSuperfundSiteId/ALD001221902',\n", + " 'epaSuperfundSiteId/ALD004022448']" + ] + }, + "metadata": {}, + "execution_count": 17 + } + ], + "source": [ + "superfund_sites = dc.get_places_in([place_dcid], 'SuperfundSite')[place_dcid]\n", + "\n", + "# printing the first 5 superfund sites that we fetch from Data Commons\n", + "superfund_sites[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "o2AOdt78qUg_" + }, + "source": [ + "### Get all superfund sites (by name) in the selected place\n", + "\n", + "Similar to how the place names were looked up for place dcids associated with a geo-level, the same to fetch names of superfund sites, as shown in this snippet of code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "CsCeNsjFRhzp", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "3f28301f-dbc5-49ba-bc1c-cd0618d9f94d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Fetching the place will take time based on the summary level and number of place nodes.....Done.\n", + "\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['Anniston Army Depot (Southeast Industrial Area)',\n", + " 'Alabama Army Ammunition Plant',\n", + " 'Redstone Arsenal (USARMY/NASA)',\n", + " 'Ciba-Geigy Corp. (McIntosh Plant)',\n", + " 'Alabama Plating Company Inc.']" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ], + "source": [ + "# get names for superfund sites in the selected place\n", + "site_names = get_names_for_place_ids(superfund_sites)\n", + "\n", + "# printing the names of first 5 superfund sites that we fetch from Data Commons\n", + "site_names[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zxRBNf5s-JzS" + }, + "source": [ + "## Demo 2 - Pick a property for all superfund sites\n", + "\n", + "In this demo example, we continue exploring a superfund site node.\n", + "\n", + "### Select a superfund site" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "8h6ktcK2vQGd", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 66, + "referenced_widgets": [ + "8794d888dc834c1cad49e577a95736a4", + "e1eb411fba2a42b783282223aa7c6ce7", + "d5670d1d5dda4c479d70627d752ba8c1" + ] + }, + "outputId": "1373981f-4c0a-4054-86bc-8353f0405614" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Select a superfund site from the list to use for the remainder of the notebook.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "8794d888dc834c1cad49e577a95736a4", + "version_minor": 0, + "version_major": 2 + }, + "text/plain": [ + "Dropdown(options=('Anniston Army Depot (Southeast Industrial Area)', 'Alabama Army Ammunition Plant', 'Redston…" + ] + }, + "metadata": {} + } + ], + "source": [ + "print(\"Select a superfund site from the list to use for the remainder of the notebook.\")\n", + "selected_site = widgets.Dropdown(options=site_names, value=site_names[0])\n", + "display(selected_site)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "LqizAnV5vkCn", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "outputId": "b117b668-f79d-45ee-c7ed-c18f98ad4a3c" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + }, + "text/plain": [ + "'epaSuperfundSiteId/AL3210020027'" + ] + }, + "metadata": {}, + "execution_count": 20 + } + ], + "source": [ + "# get the value of the selected place from the drop-down\n", + "selected_site_choice = selected_site.value\n", + "\n", + "# get the place's id on the Data Commons Graph by name\n", + "site_dcid = superfund_sites[site_names.index(selected_site_choice)]\n", + "\n", + "# print the site_dcid\n", + "site_dcid" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Y2xWmEdVv_Hg" + }, + "source": [ + "### Understanding how superfund sites are represented in Data Commons\n", + "\n", + "\n", + "Let us start by getting all the properties a superfund site node has in the Data Commons Graph.\n", + "\n", + "For example the [Tar Creek](https://datacommons.org/browser/epaSuperfundSiteId/OKD980629844) superfund site has the following properties:\n", + "1. 'containedInPlace' - list of places within which the site is contained. Example: Ottawa County, Oklahoma State, US.\n", + "2. 'epaRegionCode' - integer value representing the epaRegionCode for the site. For Tar Creek, the EPA region is 9.\n", + "3. 'epaSuperfundSiteId' - a unique identifier property for each site, which is constructed by prefixing the EPA ID for a superfund site with `epaSuperfundSiteId`. For Tar Creek, this property has the value `epaSuperfundSiteId/OKD980629844`\n", + "4. 'location' - An autogenearted node reference which is generated using the latitude and longitude of the site\n", + "5. 'name' - name of the site\n", + "6. 'typeOf' - indicates the type of the node: `SuperfundSite`\n", + "7. 'provenance' - indicates the domain for the dataset source to generate the triple of (subject, predicate, object) \n", + "\n", + "For any node on the Data Commons Graph, the properties it has can be queried using the [`get_property_labels`](https://docs.datacommons.org/api/python/property_label.html) API method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "dLq0ZVZM-PHr", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "82149662-7f8f-4148-aa3a-72d8b5256a9b" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "{'epaSuperfundSiteId/AL3210020027': ['containedInPlace',\n", + " 'epaRegionCode',\n", + " 'epaSuperfundSiteId',\n", + " 'establishmentOwnership',\n", + " 'location',\n", + " 'name',\n", + " 'provenance',\n", + " 'typeOf']}" + ] + }, + "metadata": {}, + "execution_count": 21 + } + ], + "source": [ + "dc.get_property_labels([site_dcid], out=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GkDR0tlWvEtQ" + }, + "source": [ + "### Get values of properties of a superfund site\n", + "\n", + "Similar to getting the properties of superfund site, it is also possible to get the values associated with the different properties. \n", + "\n", + "To get the values associated with the properties for the selected superfund site, we use the [`get_property_values`](https://docs.datacommons.org/api/python/property_label.html) API method.\n", + "\n", + "For example, let us see the values for the `containedInPlace` property which gives a list of places within which the superfund site lies in:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "KUeehObcQ49-", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "10057c88-dadc-4fdb-9cd7-7c8a585d25fe" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "{'epaSuperfundSiteId/AL3210020027': ['geoId/01',\n", + " 'geoId/01015',\n", + " 'geoId/0101590099',\n", + " 'geoId/01015981901',\n", + " 'geoId/0103']}" + ] + }, + "metadata": {}, + "execution_count": 22 + } + ], + "source": [ + "dc.get_property_values([site_dcid], prop='containedInPlace', out=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "48YFNK-RcaT8" + }, + "source": [ + "The values of `containedInPlace` is a list of the places ids in Data Commons. We can do another query on the list of places to get their names using the same API, as shown in this example," + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "DI28GsHOCcGL", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "5a12c3d7-f86b-47ee-dea5-20062d0bbb35" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "{'geoId/01': ['Alabama'],\n", + " 'geoId/01015': ['Calhoun County'],\n", + " 'geoId/0101590099': ['Anniston CCD', 'Anniston CCD, Calhoun County, Alabama'],\n", + " 'geoId/01015981901': ['Census Tract 9819.01, Calhoun County, Alabama'],\n", + " 'geoId/0103': ['Congressional District 3 (113th Congress), Alabama']}" + ] + }, + "metadata": {}, + "execution_count": 23 + } + ], + "source": [ + "## get a list of places for containedInPlace\n", + "contained_places = dc.get_property_values([site_dcid], prop='containedInPlace', out=True)[site_dcid]\n", + "dc.get_property_values(contained_places, prop='name', out=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IYSLPSYy4vgl" + }, + "source": [ + "Similarly, we can see the type of place using the `typeOf` property for the above example" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "QLsiziy744wM", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "25b305fb-dab3-49e6-9f76-37ab84619a4d" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "{'geoId/01': ['AdministrativeArea1', 'State'],\n", + " 'geoId/01015': ['AdministrativeArea2', 'County'],\n", + " 'geoId/0101590099': ['CensusCountyDivision'],\n", + " 'geoId/01015981901': ['CensusTract'],\n", + " 'geoId/0103': ['CongressionalDistrict']}" + ] + }, + "metadata": {}, + "execution_count": 24 + } + ], + "source": [ + "contained_places = dc.get_property_values([site_dcid], prop='containedInPlace', out=True)[site_dcid]\n", + "dc.get_property_values(contained_places, prop='typeOf', out=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cv5z6QAOw6hE" + }, + "source": [ + "### Loading values into a pandas dataframe\n", + "\n", + "We can extend this example to make a `pandas` dataframe where we populate the different properties of the superfund site nodes as columns for all sites across the US.\n", + "\n", + "The following block of code, serves as a recap to the different API methods that were introduced thus far;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 548 + }, + "id": "9Wujk2KMxUpP", + "outputId": "d1bbd03c-4871-4b9b-c3ad-b7cfdd3fd503" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "This method will take some time since the API queries depend on number of sites ..................................................................................................................................Done.\n" + ] + }, + { + "output_type": "execute_result", + "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", + "
containedInPlaceepaRegionCodeepaSuperfundSiteIdestablishmentOwnershiplatitudelongitudenameprovenancetypeOf
0[geoId/01, geoId/01015, geoId/0101590099, geoI...4AL3210020027FederalGovernmentOwned33.659439-85.969439Anniston Army Depot (Southeast Industrial Area)dc/999wb02SuperfundSite
1[geoId/01, geoId/0103, geoId/01121, geoId/0112...4AL6210020008FederalGovernmentOwned33.3381-86.3268Alabama Army Ammunition Plantdc/999wb02SuperfundSite
2[geoId/01, geoId/0105, geoId/01089, geoId/0108...4AL7210020742FederalGovernmentOwned34.646944-86.673055Redstone Arsenal (USARMY/NASA)dc/999wb02SuperfundSite
3[geoId/01, geoId/0101, geoId/01129, geoId/0112...4ALD001221902PrivatelyOwned31.279-87.9955Ciba-Geigy Corp. (McIntosh Plant)dc/999wb02SuperfundSite
4[geoId/01, geoId/0106, geoId/01117, geoId/0111...4ALD004022448PrivatelyOwned33.399722-86.405Alabama Plating Company Inc.dc/999wb02SuperfundSite
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " containedInPlace epaRegionCode \\\n", + "0 [geoId/01, geoId/01015, geoId/0101590099, geoI... 4 \n", + "1 [geoId/01, geoId/0103, geoId/01121, geoId/0112... 4 \n", + "2 [geoId/01, geoId/0105, geoId/01089, geoId/0108... 4 \n", + "3 [geoId/01, geoId/0101, geoId/01129, geoId/0112... 4 \n", + "4 [geoId/01, geoId/0106, geoId/01117, geoId/0111... 4 \n", + "\n", + " epaSuperfundSiteId establishmentOwnership latitude longitude \\\n", + "0 AL3210020027 FederalGovernmentOwned 33.659439 -85.969439 \n", + "1 AL6210020008 FederalGovernmentOwned 33.3381 -86.3268 \n", + "2 AL7210020742 FederalGovernmentOwned 34.646944 -86.673055 \n", + "3 ALD001221902 PrivatelyOwned 31.279 -87.9955 \n", + "4 ALD004022448 PrivatelyOwned 33.399722 -86.405 \n", + "\n", + " name provenance typeOf \n", + "0 Anniston Army Depot (Southeast Industrial Area) dc/999wb02 SuperfundSite \n", + "1 Alabama Army Ammunition Plant dc/999wb02 SuperfundSite \n", + "2 Redstone Arsenal (USARMY/NASA) dc/999wb02 SuperfundSite \n", + "3 Ciba-Geigy Corp. (McIntosh Plant) dc/999wb02 SuperfundSite \n", + "4 Alabama Plating Company Inc. dc/999wb02 SuperfundSite " + ] + }, + "metadata": {}, + "execution_count": 25 + } + ], + "source": [ + "def populate_superfund_site_df(site_id_list):\n", + " \"\"\"\n", + " Populate a pandas dataframe based on the list of superfund site ids\n", + " \"\"\"\n", + " superfund_site_df = pd.DataFrame() # initalizing an empty dataframe\n", + " print(\"This method will take some time since the API queries depend on number of sites\", end=\" ...\", flush=True)\n", + " for site in site_id_list:\n", + " # get all the properties associated for a superfund site\n", + " site_props = dc.get_property_labels([site], out=True)[site]\n", + "\n", + " # a dictionary to map a property to its corresponding value\n", + " row_dict = {}\n", + "\n", + " # populate the row_dict map\n", + " for i in range(len(site_props)):\n", + " print(end=\".\")\n", + " # get all the values for each property associated with a superfund site\n", + " prop_val = dc.get_property_values([site], prop=site_props[i], out=True)[site]\n", + " # handle the case where containedInPlace is a list whereas the other props are string values\n", + " if site_props[i] == 'containedInPlace':\n", + " row_dict[site_props[i]] = prop_val\n", + " elif site_props[i] == 'location':\n", + " prop_val = ''.join(prop_val)\n", + " # location is an autogenerated internal node, and we will need an additional API call to get the latitude and longitude of the site\n", + " row_dict['latitude'] = dc.get_property_values([prop_val], prop=\"latitude\", out=True)[prop_val][0]\n", + " row_dict['longitude'] = dc.get_property_values([prop_val], prop=\"longitude\", out=True)[prop_val][0]\n", + " else:\n", + " row_dict[site_props[i]] = ''.join(prop_val)\n", + " # populate the dataframe\n", + " superfund_site_df = superfund_site_df.append(row_dict, ignore_index=True)\n", + " print(\"Done.\", flush=True)\n", + " return superfund_site_df\n", + "\n", + "\n", + "site_df = populate_superfund_site_df(superfund_sites)\n", + "site_df.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_IjeSnmpdgZM" + }, + "source": [ + "### Downloading csv files from this colab\n", + "\n", + "We can download different datasets from this colab to a csv file for offline processing. The following snippet of code will select the columns `epaSuperfundSiteId`, `name`, `latitude` and `longitude` to make a csv file which can be downloaded" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 17 + }, + "id": "Uv-IQkJad410", + "outputId": "2813c57d-42f3-43f3-f6b2-e654e71b9a57" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "application/javascript": [ + "\n", + " async function download(id, filename, size) {\n", + " if (!google.colab.kernel.accessAllowed) {\n", + " return;\n", + " }\n", + " const div = document.createElement('div');\n", + " const label = document.createElement('label');\n", + " label.textContent = `Downloading \"${filename}\": `;\n", + " div.appendChild(label);\n", + " const progress = document.createElement('progress');\n", + " progress.max = size;\n", + " div.appendChild(progress);\n", + " document.body.appendChild(div);\n", + "\n", + " const buffers = [];\n", + " let downloaded = 0;\n", + "\n", + " const channel = await google.colab.kernel.comms.open(id);\n", + " // Send a message to notify the kernel that we're ready.\n", + " channel.send({})\n", + "\n", + " for await (const message of channel.messages) {\n", + " // Send a message to notify the kernel that we're ready.\n", + " channel.send({})\n", + " if (message.buffers) {\n", + " for (const buffer of message.buffers) {\n", + " buffers.push(buffer);\n", + " downloaded += buffer.byteLength;\n", + " progress.value = downloaded;\n", + " }\n", + " }\n", + " }\n", + " const blob = new Blob(buffers, {type: 'application/binary'});\n", + " const a = document.createElement('a');\n", + " a.href = window.URL.createObjectURL(blob);\n", + " a.download = filename;\n", + " div.appendChild(a);\n", + " a.click();\n", + " div.remove();\n", + " }\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "application/javascript": [ + "download(\"download_cea8e883-1268-411c-9ea8-1c7f18d89ab4\", \"superfund_sites_locations_in_Alabama.csv\", 1056)" + ], + "text/plain": [ + "" + ] + }, + "metadata": {} + } + ], + "source": [ + "# filter `site_df` dataframe to required columns\n", + "required_cols = ['epaSuperfundSiteId', 'name', 'latitude', 'longitude']\n", + "sites_filtered = site_df[required_cols]\n", + "sites_filtered.to_csv(f\"./superfund_sites_locations_in_{selected_place_choice}.csv\", index=False)\n", + "\n", + "# direct download with script\n", + "from google.colab import files\n", + "files.download(f\"./superfund_sites_locations_in_{selected_place_choice}.csv\") " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CWiXXJjMe1ab" + }, + "source": [ + "> TIP: alternatively, one can download files in a no-code way by clickling on the 📁 icon for viewing the files associated with this colab, and click the `menu` shown with three-dots to `Downlaod` the file.\n", + "\n", + "### Visualizing the superfund sites on an external map (plotly)\n", + "\n", + "Now, that we have extracted all the values associated with a superfund site, we can visualize each superfund site on a map. \n", + "\n", + "Visualizations can be made using different plotting libraries like `plotly`, `bokeh` etc. In this example, we view the location of the superfund sites in the selected place using `plotly`. \n", + "\n", + "> NOTE: The basemap is a low-res world map, please zoom to the appropriate zoom level to view the plots better." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 542 + }, + "id": "cdv6gMAdxK2d", + "outputId": "27b91465-8c88-4181-ff7f-700f90af85af" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" + ] + }, + "metadata": {} + } + ], + "source": [ + "fig = px.scatter_geo(sites_filtered,lat='latitude',lon='longitude', hover_name=\"name\")\n", + "fig.update_layout(title = f'superfund site locations in {selected_place_choice}', title_x=0.5)\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "548WYoBAQNxN" + }, + "source": [ + "The visualization of sites on the world map has a very large spatial area in comparison to the areas of interest, which can either be the area the US or a particular state, county or city in the US. The map data for these places are available in the Data Commons Graph.\n", + "\n", + "### Spatial visualization of superfund sites with map data available in Data Commons\n", + "\n", + "The map data for a place if available, can be queried using the API using the place id as the identifier and the property `geoJsonCoordinates`. \n", + "For example, the map of the US can be queried using the snippet,\n", + "\n", + "```python\n", + "dc.get_property_values(['country/USA'], prop='geoJsonCoordinates', out=True)['country/USA']\n", + "```\n", + "\n", + "> TIP: To check if the map exists for the place selected in the menu, please replace `['country/USA']` with the value of the `place_dcid` variable enclosed within `[]`, something like `[place_dcid]`.\n", + "\n", + "Now, let us view the geoJSON for the current place selected from the drop-down menu earlier." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "kyHSeFIXNhLH" + }, + "outputs": [], + "source": [ + "print(f\"GeoJSON for {selected_place_choice} which has the place id: {place_dcid}\\n\\n\")\n", + "dc.get_property_values([place_dcid], prop='geoJsonCoordinates', out=True)[place_dcid][0]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lDalaOEiRq_9" + }, + "source": [ + "What we have obtained is a string representation of the map in GeoJSON format, which we can load for making the base-map to visualize the locations of the suprefund sites.\n", + "\n", + "The objective is to recreate the visualizations of the location of superfund sites but this time instead of using the world map we will be using the map of the selected place.\n", + "\n", + "Before, we visualize the sites, we will need to make a few transformations on the location of the sites to make sure they can be visualized on a map. For this we will be converting the `sites_filtered` dataframe to a `geopandas.GeoDataFrame`. The `geopandas.GeoDataFrame` is similar to a `pandas.DataFrame` instance but has the spatial information stored in the geometry column.\n", + "\n", + "The following snippet of code can be used as a recepie to convert a pandas dataframe with location information to a `GeoDataFrame`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 873 + }, + "id": "naH5LSL1Wnuo", + "outputId": "2f31b578-ac22-4690-9d2e-254f856da073" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
epaSuperfundSiteIdnamelatitudelongitudeCoordinates
0AL3210020027Anniston Army Depot (Southeast Industrial Area)33.659439-85.969439POINT (-85.96944 33.65944)
1AL6210020008Alabama Army Ammunition Plant33.3381-86.3268POINT (-86.32680 33.33810)
2AL7210020742Redstone Arsenal (USARMY/NASA)34.646944-86.673055POINT (-86.67306 34.64694)
3ALD001221902Ciba-Geigy Corp. (McIntosh Plant)31.279-87.9955POINT (-87.99550 31.27900)
4ALD004022448Alabama Plating Company Inc.33.399722-86.405POINT (-86.40500 33.39972)
5ALD007454085T.H. Agriculture & Nutrition Co. (Montgomery P...32.3761-86.3791POINT (-86.37910 32.37610)
6ALD008161176Stauffer Chemical Co. (LeMoyne Plant)30.969439-88.0175POINT (-88.01750 30.96944)
7ALD008188708Olin Corp. (McIntosh Plant)31.263889-87.99445POINT (-87.99445 31.26389)
8ALD031618069Mowbray Engineering Co.31.831669-86.61305POINT (-86.61305 31.83167)
9ALD041906173Interstate Lead Co. (ILCO)33.688889-86.633333POINT (-86.63333 33.68889)
10ALD095688875Stauffer Chemical Co. (Cold Creek Plant)30.975-88.021389POINT (-88.02139 30.97500)
11ALD980728703Perdido Ground Water Contamination31.0125-87.625POINT (-87.62500 31.01250)
12ALD980844385Redwing Carriers Inc. (Saraland)30.808331-88.073061POINT (-88.07306 30.80833)
13ALD981868466American Brass31.325-85.404167POINT (-85.40417 31.32500)
14ALD983166299Triana/Tennessee River34.508888-86.638194POINT (-86.63819 34.50889)
15ALN00041075035th Avenue33.557464-86.799671POINT (-86.79967 33.55746)
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " epaSuperfundSiteId name \\\n", + "0 AL3210020027 Anniston Army Depot (Southeast Industrial Area) \n", + "1 AL6210020008 Alabama Army Ammunition Plant \n", + "2 AL7210020742 Redstone Arsenal (USARMY/NASA) \n", + "3 ALD001221902 Ciba-Geigy Corp. (McIntosh Plant) \n", + "4 ALD004022448 Alabama Plating Company Inc. \n", + "5 ALD007454085 T.H. Agriculture & Nutrition Co. (Montgomery P... \n", + "6 ALD008161176 Stauffer Chemical Co. (LeMoyne Plant) \n", + "7 ALD008188708 Olin Corp. (McIntosh Plant) \n", + "8 ALD031618069 Mowbray Engineering Co. \n", + "9 ALD041906173 Interstate Lead Co. (ILCO) \n", + "10 ALD095688875 Stauffer Chemical Co. (Cold Creek Plant) \n", + "11 ALD980728703 Perdido Ground Water Contamination \n", + "12 ALD980844385 Redwing Carriers Inc. (Saraland) \n", + "13 ALD981868466 American Brass \n", + "14 ALD983166299 Triana/Tennessee River \n", + "15 ALN000410750 35th Avenue \n", + "\n", + " latitude longitude Coordinates \n", + "0 33.659439 -85.969439 POINT (-85.96944 33.65944) \n", + "1 33.3381 -86.3268 POINT (-86.32680 33.33810) \n", + "2 34.646944 -86.673055 POINT (-86.67306 34.64694) \n", + "3 31.279 -87.9955 POINT (-87.99550 31.27900) \n", + "4 33.399722 -86.405 POINT (-86.40500 33.39972) \n", + "5 32.3761 -86.3791 POINT (-86.37910 32.37610) \n", + "6 30.969439 -88.0175 POINT (-88.01750 30.96944) \n", + "7 31.263889 -87.99445 POINT (-87.99445 31.26389) \n", + "8 31.831669 -86.61305 POINT (-86.61305 31.83167) \n", + "9 33.688889 -86.633333 POINT (-86.63333 33.68889) \n", + "10 30.975 -88.021389 POINT (-88.02139 30.97500) \n", + "11 31.0125 -87.625 POINT (-87.62500 31.01250) \n", + "12 30.808331 -88.073061 POINT (-88.07306 30.80833) \n", + "13 31.325 -85.404167 POINT (-85.40417 31.32500) \n", + "14 34.508888 -86.638194 POINT (-86.63819 34.50889) \n", + "15 33.557464 -86.799671 POINT (-86.79967 33.55746) " + ] + }, + "metadata": {}, + "execution_count": 29 + } + ], + "source": [ + "# copy of the pandas dataframe which we will transform into a GeoDataFrame\n", + "gdf = sites_filtered.copy()\n", + "\n", + "# convertying the latitude and longitude columns to a Point geometry \n", + "gdf[\"Coordinates\"] = list(zip(gdf.longitude.astype(float), gdf.latitude.astype(float)))\n", + "gdf[\"Coordinates\"] = gdf[\"Coordinates\"].apply(Point)\n", + "gdf.drop(columns=['latitude', 'longitude']) # deleting redudance\n", + "\n", + "# converting to GeoDataFrame\n", + "gdf = gpd.GeoDataFrame(gdf, geometry=\"Coordinates\")\n", + "gdf" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zlOvnPKla6ve" + }, + "source": [ + "With the `GeoDataFrame` now ready, we shall visualize the location of the sites using code snippet below:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 499 + }, + "id": "VYOPuhVeltN3", + "outputId": "50ab308c-d356-4558-d9ab-0aa07ce8bd9c" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "# Get the geojson for the selected place from the Data Commons Graph\n", + "place_map = dc.get_property_values([place_dcid], prop='geoJsonCoordinates', out=True)[place_dcid][0]\n", + "place_map = json.loads(place_map)\n", + "\n", + "# set the colors and initialize the empty figure object for drawing the map\n", + "BLUE = '#6699cc'\n", + "fig = plt.figure(figsize=(12, 8)) \n", + "ax = fig.gca() \n", + "\n", + "# Draw the geojson fetched from the Data Commons Graph\n", + "ax.add_patch(PolygonPatch(place_map, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2 ))\n", + "ax.axis('scaled')\n", + "\n", + "# Add the locations of the superfund sites from the GeoDataFrame\n", + "gdf.plot(ax=ax, color='red', alpha = 0.5)\n", + "plt.title (f'superfund site locations in {selected_place_choice}')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Demo 3 - Lookup timeseries for a specific superfund site\n", + "\n", + "In this demo example, we will dive into accessing StatVarObservations for Statistical Variables related to superfund sites.\n", + "\n", + "Currently, the Data Commons graph has the following statistics about superfund sites." + ], + "metadata": { + "id": "jZZ5u5_CjXGM" + } + }, + { + "cell_type": "markdown", + "source": [ + "### For all superfund sites on the NPL\n", + "\n", + "|Statistical Variable|Data Source|Status|\n", + "|-------|-----------|------|\n", + "|[CRSI Score](https://datacommons.org/browser/CrsiScore_SuperfundSite)|[Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location)|Available|\n", + "|[Natural Hazard Exposure Score](https://datacommons.org/browser/NaturalHazardExposureScore_SuperfundSite)|[Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location)|Available|\n", + "|[Natural Hazard Risk Score](https://datacommons.org/browser/NaturalHazardRiskScore_SuperfundSite)|[Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location)|Available|\n", + "|[`Natural Hazard Risk Score by `](https://datacommons.org/browser/NaturalHazardRiskScore_SuperfundSite_WildfireEvent)|[Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location)|Available|" + ], + "metadata": { + "id": "SoZNqx5MTQKy" + } + }, + { + "cell_type": "markdown", + "source": [ + "### Statistics available for Tar Creek superfund site\n", + "\n", + "Statistics for the Tar Creek superfund site are obtained the [6th five-year review report](https://semspub.epa.gov/work/06/100021610.pdf).This report measures concentration of contaminants in GroundWater across sampling wells withing and across the site. The concentration of contaminants are presented as [Total concentration](https://datacommons.org/browser/Concentration_Iron_BodyOfWater_GroundWater) and [Dissolved concentration](https://datacommons.org/browser/Concentration_DissolvedContaminant_Iron_BodyOfWater_GroundWater) statistical variables for:\n", + "- [Iron](https://datacommons.org/browser/Concentration_Iron_BodyOfWater_GroundWater)\n", + "- [Zinc](https://datacommons.org/browser/Concentration_Zinc_BodyOfWater_GroundWater)\n", + "- [Lead](https://datacommons.org/browser/Concentration_Lead_BodyOfWater_GroundWater)\n", + "- [Cadmium](https://datacommons.org/browser/Concentration_Cadmium_BodyOfWater_GroundWater)\n", + "- [Sulfate](https://datacommons.org/browser/Concentration_Sulfate_BodyOfWater_GroundWater)\n", + "\n", + "The report also has\n", + "measurements on water properties in GroundWaterlike:\n", + "- [hardness](https://datacommons.org/browser/WaterHardness_BodyOfWater_GroundWater)\n", + "- [pH](https://datacommons.org/browser/otentialOfHydrogen_BodyOfWater_GroundWater)\n", + "- [dissolved oxygen](https://datacommons.org/browser/DissolvedOxygen_BodyOfWater_GroundWater)\n", + "- [electrical conductivity](https://datacommons.org/browser/ElectricalConductivity_BodyOfWater_GroundWater)\n", + "- [temperature](https://datacommons.org/browser/Temperature_BodyOfWater_GroundWater)\n", + "\n", + "The statistics are available for 4 sampling wells across Tar Creek namely: [Quapaw #4](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Quapaw_4), [Commerce #5](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Commerce_5), [Picher #5](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Picher_5-MW) and [Picher #7](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Picher_7-MW)\n", + "\n", + "### Accessing and Visualizing Statistics for Tar Creek" + ], + "metadata": { + "id": "uzCLbAGIkplu" + } + }, + { + "cell_type": "code", + "source": [ + "## get a list of measurement sites that are in and around Tar Creek\n", + "tar_creek = 'epaSuperfundSiteId/OKD980629844'\n", + "measurement_sites = dc.get_places_in([tar_creek], 'SuperfundMeasurementSite')[tar_creek]\n", + "measurement_sites" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "50rGzwbhnCtt", + "outputId": "33d1270a-2986-4765-8720-6af0140348a7" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['epaSuperfundMeasurementSite/OKD980629844/Commerce_5',\n", + " 'epaSuperfundMeasurementSite/OKD980629844/Picher_5-MW',\n", + " 'epaSuperfundMeasurementSite/OKD980629844/Picher_7-MW',\n", + " 'epaSuperfundMeasurementSite/OKD980629844/Quapaw_4']" + ] + }, + "metadata": {}, + "execution_count": 31 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "List of statistical variables that are available for a measurement site can be obtained on the Graph Browser page for measurement sites ([example](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Picher_7-MW))." + ], + "metadata": { + "id": "dZWRPC3bobV3" + } + }, + { + "cell_type": "code", + "source": [ + "# List of statistics that are available for each measurement site\n", + "measurement_sites_statvars_list = ['Concentration_Sulfate_BodyOfWater_GroundWater',\n", + " 'Concentration_Lead_BodyOfWater_GroundWater',\n", + " 'Concentration_Cadmium_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Cadmium_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Iron_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Lead_BodyOfWater_GroundWater',\n", + " 'Concentration_DissolvedContaminant_Zinc_BodyOfWater_GroundWater',\n", + " 'Concentration_Iron_BodyOfWater_GroundWater',\n", + " 'DissolvedOxygen_BodyOfWater_GroundWater',\n", + " 'Concentration_Zinc_BodyOfWater_GroundWater',\n", + " 'PotentialOfHydrogen_BodyOfWater_GroundWater',\n", + " 'ElectricalConductivity_BodyOfWater_GroundWater',\n", + " 'Temperature_BodyOfWater_GroundWater',\n", + " 'WaterHardness_BodyOfWater_GroundWater']" + ], + "metadata": { + "id": "5X6mRwAaoya_" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Now, we will be to query the Data Commons graph for all statistics available for a particular sampling well and a particular statistical variable.\n", + "\n", + "Please note that statistics for Tar Creek are time-series of observed characteristics of contaminated ground water and the concentration of different contaminants. The following code snippet uses the [`build_time_series_dataframe`](https://docs.datacommons.org/api/pandas/time_series_dataframe.html) API method to show one statistical variables available from the above list for the sampling well called [`Quapaw #4`](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Quapaw_4) near Tar Creek." + ], + "metadata": { + "id": "vGx2hgEeoyiT" + } + }, + { + "cell_type": "code", + "source": [ + "tar_creek_contamiantion_statvar_df = dpd.build_time_series_dataframe(['epaSuperfundMeasurementSite/OKD980629844/Quapaw_4'], measurement_sites_statvars_list[0])\n", + "\n", + "tar_creek_contamiantion_statvar_df.head(5)" + ], + "metadata": { + "id": "bkCWV7Jioyty", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 193 + }, + "outputId": "cf1b2c07-d3a3-41a5-85ff-e4bcc7bf22c5" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
2003-11-062004-04-282004-10-132005-04-262005-10-182006-04-122006-11-092007-05-092007-10-242008-04-222010-03-252010-11-112011-11-032012-11-082013-10-312017-03-142018-04-252019-04-30
place
epaSuperfundMeasurementSite/OKD980629844/Quapaw_411.111.812.813.516.415.22012.614.313.214.815.714.315.714.316.318.815.6
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " 2003-11-06 2004-04-28 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 11.1 11.8 \n", + "\n", + " 2004-10-13 2005-04-26 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 12.8 13.5 \n", + "\n", + " 2005-10-18 2006-04-12 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 16.4 15.2 \n", + "\n", + " 2006-11-09 2007-05-09 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 20 12.6 \n", + "\n", + " 2007-10-24 2008-04-22 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 14.3 13.2 \n", + "\n", + " 2010-03-25 2010-11-11 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 14.8 15.7 \n", + "\n", + " 2011-11-03 2012-11-08 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 14.3 15.7 \n", + "\n", + " 2013-10-31 2017-03-14 \\\n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 14.3 16.3 \n", + "\n", + " 2018-04-25 2019-04-30 \n", + "place \n", + "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 18.8 15.6 " + ] + }, + "metadata": {}, + "execution_count": 33 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7u8ApO7RybLd" + }, + "source": [ + "### Accessing and visualizing statistics available for all superfund sites in Data Commons\n", + "\n", + "Next, we shall use the list of statistical variables for a superfund site, we can now make visualizations of the different StatVarObservations that are made for superfund sites.\n", + "\n", + "We fetch the time-series of StatVarObservations using the [`pandas`](https://docs.datacommons.org/api/pandas) API method [`build_time_series_dataframe`](https://docs.datacommons.org/api/pandas/time_series_dataframe.html) which returns a pandas datafarme of the time-series that are available for a particular place and a particular statistical variable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "referenced_widgets": [ + "9cf7730acc784ae48e5f17c86e92a261", + "518586f83b35495aa1215c5dbd1cd79d", + "fb9e80f4aea842e390f3341a488d14d8" + ], + "base_uri": "https://localhost:8080/", + "height": 66 + }, + "id": "r5kDa_y4aQga", + "outputId": "f42ab9f7-fbc7-44c7-f19f-1e0af943a304" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Select a statistical variable\n" + ] + }, + { + "output_type": "display_data", + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "9cf7730acc784ae48e5f17c86e92a261", + "version_minor": 0, + "version_major": 2 + }, + "text/plain": [ + "Dropdown(options=('CrsiScore_SuperfundSite', 'NaturalHazardExposureScore_SuperfundSite', 'NaturalHazardRiskSco…" + ] + }, + "metadata": {} + } + ], + "source": [ + "print(\"Select a statistical variable\")\n", + "\n", + "# list of statistical variables that we shall use for this notebook\n", + "stat_var_list = [\n", + " 'CrsiScore_SuperfundSite',\n", + " 'NaturalHazardExposureScore_SuperfundSite',\n", + " 'NaturalHazardRiskScore_SuperfundSite',\n", + " 'NaturalHazardRiskScore_SuperfundSite_CoastalFloodEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_DroughtEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_FloodEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HailEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HighWindEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_HurricaneEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_LandslideEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_TornadoEvent',\n", + " 'NaturalHazardRiskScore_SuperfundSite_WildfireEvent'\n", + " ]\n", + "# Populating the select dropdown\n", + "stat_var_select = widgets.Dropdown(options=stat_var_list, value=stat_var_list[0])\n", + "display(stat_var_select)" + ] + }, + { + "cell_type": "code", + "source": [ + "stat_var_list" + ], + "metadata": { + "id": "cKX-ign5TEhk" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 112 + }, + "id": "AK0kS14J-UOZ", + "outputId": "c1e2c8db-fb19-4a3e-ecfe-24ff32462b09" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
2021
place
epaSuperfundSiteId/AL32100200270.327246
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " 2021\n", + "place \n", + "epaSuperfundSiteId/AL3210020027 0.327246" + ] + }, + "metadata": {}, + "execution_count": 36 + } + ], + "source": [ + "chosen_statvar = stat_var_select.value\n", + "site_statvar_df = dpd.build_time_series_dataframe([site_dcid], chosen_statvar)\n", + "site_statvar_df.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "iXBgV3SV2G8e" + }, + "source": [ + "#### Getting statistics to a `pandas` DataFrame\n", + "Using the same `build_time_series_dataframe` API method, get the StatVarObservations for the selected statistical variable across all superfund sites." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + }, + "id": "Kg7fHa4O2EAM", + "outputId": "bc05727f-0ebc-4ace-c691-55658a1dc5d4" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
2021
place
epaSuperfundSiteId/AL32100200270.327246
epaSuperfundSiteId/AL62100200080.600902
epaSuperfundSiteId/AL72100207420.610158
epaSuperfundSiteId/ALD0012219020.962115
epaSuperfundSiteId/ALD0040224480.951963
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " 2021\n", + "place \n", + "epaSuperfundSiteId/AL3210020027 0.327246\n", + "epaSuperfundSiteId/AL6210020008 0.600902\n", + "epaSuperfundSiteId/AL7210020742 0.610158\n", + "epaSuperfundSiteId/ALD001221902 0.962115\n", + "epaSuperfundSiteId/ALD004022448 0.951963" + ] + }, + "metadata": {}, + "execution_count": 37 + } + ], + "source": [ + "site_statvar_df = dpd.build_time_series_dataframe(superfund_sites, chosen_statvar)\n", + "site_statvar_df.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1Jh7IU9z2iEK" + }, + "source": [ + "In both examples, the dataframe is still not human readable, let us add the name to the superfund sites. To add the names to the dataframe, we will query the superfund site's node and extract the `name` property using the `get_property_values` API method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + }, + "id": "jV8qIKOlTv2g", + "outputId": "6cbe00c4-5e87-4463-e1a3-31d957b40d28" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
2021name
place
epaSuperfundSiteId/AL32100200270.327246Anniston Army Depot (Southeast Industrial Area)
epaSuperfundSiteId/AL62100200080.600902Alabama Army Ammunition Plant
epaSuperfundSiteId/AL72100207420.610158Redstone Arsenal (USARMY/NASA)
epaSuperfundSiteId/ALD0012219020.962115Ciba-Geigy Corp. (McIntosh Plant)
epaSuperfundSiteId/ALD0040224480.951963Alabama Plating Company Inc.
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " 2021 \\\n", + "place \n", + "epaSuperfundSiteId/AL3210020027 0.327246 \n", + "epaSuperfundSiteId/AL6210020008 0.600902 \n", + "epaSuperfundSiteId/AL7210020742 0.610158 \n", + "epaSuperfundSiteId/ALD001221902 0.962115 \n", + "epaSuperfundSiteId/ALD004022448 0.951963 \n", + "\n", + " name \n", + "place \n", + "epaSuperfundSiteId/AL3210020027 Anniston Army Depot (Southeast Industrial Area) \n", + "epaSuperfundSiteId/AL6210020008 Alabama Army Ammunition Plant \n", + "epaSuperfundSiteId/AL7210020742 Redstone Arsenal (USARMY/NASA) \n", + "epaSuperfundSiteId/ALD001221902 Ciba-Geigy Corp. (McIntosh Plant) \n", + "epaSuperfundSiteId/ALD004022448 Alabama Plating Company Inc. " + ] + }, + "metadata": {}, + "execution_count": 38 + } + ], + "source": [ + "def add_name_col(df):\n", + " # Add a new column called name, where each value is the name for the place dcid in the index.\n", + " df['name'] = df.index.map(dc.get_property_values(df.index, 'name'))\n", + " \n", + " # Keep just the first name, instead of a list of all names.\n", + " df['name'] = df['name'].str[0]\n", + "\n", + "add_name_col(site_statvar_df)\n", + "site_statvar_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8B6hna663EJe" + }, + "source": [ + "#### Visualizing StatVarObservations for superfund site statistics\n", + "Now, let us try visualizing the StatVarObservations.\n", + "\n", + "\n", + "The statistical variables that are currently available on superfund sites across the country is from the [Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location) paper and has only one data-point. \n", + "\n", + "Hence, we visualize the sites with highest natural hazard vulnerability as a bar chart." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 367 + }, + "id": "0iSaf-uqT0M5", + "outputId": "9c9f323a-d421-436a-bf97-cc7a4d10267d" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 39 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "# sort the dataframe by the value column in descending order\n", + "site_vulnerability = site_statvar_df.sort_values(by='2021', ascending=False)\n", + "\n", + "# set the threshold on the number sites to visualize - since there are 1,300 odd superfund sites\n", + "num_sites = 10\n", + "site_vulnerability = site_vulnerability[:num_sites]\n", + "site_vulnerability.plot(kind='bar', x='name', y='2021', figsize=(25,5))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "a8MLVfg84mV-" + }, + "source": [ + "If two statistical variables need to be compared together for correlations for a particular place, please consider using the [`build_multivariate_dataframe`](https://docs.datacommons.org/api/pandas/multivariate_dataframe.html) API method.\n", + "\n", + "For example, we shall compare the CRSI score (stat_var_id: `CrsiScore_SuperfundSite`) with the natural hazard risk score (stat_var_id: `NaturalHazardRiskScore_SuperfundSite`) across superfund sites in the US.\n", + "\n", + "> The [Climate Resilience Screening Index](https://www.iisd.org/system/files/meterial/US%20EPA%20CSIN%20webinar%203.pdf) (CRSI) score which measures the resilience of socio-ecological systems, (superfund sites) in the context of governance and risk to natural hazard events.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 488 + }, + "id": "xFF1ZuOx6iCQ", + "outputId": "25af47d9-e0db-47c1-a5b8-8ada7dce3d29" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
NaturalHazardRiskScore_SuperfundSiteCrsiScore_SuperfundSite
place
epaSuperfundSiteId/AL321002002766.9450.327246
epaSuperfundSiteId/AL621002000830.3320.600902
epaSuperfundSiteId/AL721002074280.3830.610158
epaSuperfundSiteId/ALD00122190235.1740.962115
epaSuperfundSiteId/ALD00402244853.1490.951963
epaSuperfundSiteId/ALD00745408551.8941.011869
epaSuperfundSiteId/ALD00816117653.5650.750292
epaSuperfundSiteId/ALD00818870835.1740.962115
epaSuperfundSiteId/ALD04190617391.4560.394343
epaSuperfundSiteId/ALD09568887553.5650.750292
epaSuperfundSiteId/ALD98186846622.6230.458104
epaSuperfundSiteId/ALD98316629942.5340.827992
epaSuperfundSiteId/ALN00041075091.4560.394343
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " NaturalHazardRiskScore_SuperfundSite \\\n", + "place \n", + "epaSuperfundSiteId/AL3210020027 66.945 \n", + "epaSuperfundSiteId/AL6210020008 30.332 \n", + "epaSuperfundSiteId/AL7210020742 80.383 \n", + "epaSuperfundSiteId/ALD001221902 35.174 \n", + "epaSuperfundSiteId/ALD004022448 53.149 \n", + "epaSuperfundSiteId/ALD007454085 51.894 \n", + "epaSuperfundSiteId/ALD008161176 53.565 \n", + "epaSuperfundSiteId/ALD008188708 35.174 \n", + "epaSuperfundSiteId/ALD041906173 91.456 \n", + "epaSuperfundSiteId/ALD095688875 53.565 \n", + "epaSuperfundSiteId/ALD981868466 22.623 \n", + "epaSuperfundSiteId/ALD983166299 42.534 \n", + "epaSuperfundSiteId/ALN000410750 91.456 \n", + "\n", + " CrsiScore_SuperfundSite \n", + "place \n", + "epaSuperfundSiteId/AL3210020027 0.327246 \n", + "epaSuperfundSiteId/AL6210020008 0.600902 \n", + "epaSuperfundSiteId/AL7210020742 0.610158 \n", + "epaSuperfundSiteId/ALD001221902 0.962115 \n", + "epaSuperfundSiteId/ALD004022448 0.951963 \n", + "epaSuperfundSiteId/ALD007454085 1.011869 \n", + "epaSuperfundSiteId/ALD008161176 0.750292 \n", + "epaSuperfundSiteId/ALD008188708 0.962115 \n", + "epaSuperfundSiteId/ALD041906173 0.394343 \n", + "epaSuperfundSiteId/ALD095688875 0.750292 \n", + "epaSuperfundSiteId/ALD981868466 0.458104 \n", + "epaSuperfundSiteId/ALD983166299 0.827992 \n", + "epaSuperfundSiteId/ALN000410750 0.394343 " + ] + }, + "metadata": {}, + "execution_count": 40 + } + ], + "source": [ + "multi_statvar_df = dpd.build_multivariate_dataframe(superfund_sites,[\"CrsiScore_SuperfundSite\", \"NaturalHazardRiskScore_SuperfundSite\"])\n", + "multi_statvar_df" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JnGHbrqy7Uv5" + }, + "source": [ + "For the comparison, we shall make a scatter plot across the two statistical variables namely: \"CrsiScore_SuperfundSite\" and \"NaturalHazardRiskScore_SuperfundSite\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 514 + }, + "id": "05oEIsh27J55", + "outputId": "47e8eb3a-409a-4be6-9281-e138c8c1451d" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "# Scatter plot the information\n", + "multi_statvar_df.plot(kind='scatter', x='NaturalHazardRiskScore_SuperfundSite', y='CrsiScore_SuperfundSite', figsize=(12, 8))\n", + "plt.title(f\"Natural Hazard Risk Score vs CRSI score for sites in {selected_place_choice}\")\n", + "plt.xlabel(\"NaturalHazardRiskScore_SuperfundSite\")\n", + "plt.ylabel(\"CrsiScore_SuperfundSite\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Bdada1GF-VgS" + }, + "source": [ + "## Demo 4 - Comparing superfund statistics with other statistics in Data Commons\n", + "\n", + "This demo example is probably the most interesting one since, we will compare superfund statistics with other statistics in Data Commons. \n", + "\n", + "In this example, we will compare the `CRSI score` of a superfund site and the impact seen on the tribal population living in cities in and around the site. The tribal population statistics come from the US census and the CRSI score is the same statistical variable we used in the previous examples.\n", + "\n", + "This is advantage which Data Commons offers, where it is easy to make such cross-domain, cross-place, cross-statistics analysis.\n", + "\n", + "\n", + "Before making the visualization let us first take a look at how the dataset will look and what will the pre-processing that is required" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + }, + "id": "DFNDoYxE_Dpj", + "outputId": "0c3d67a0-6445-41ba-bef3-1650c6d320b7" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
2021
place
epaSuperfundSiteId/AL32100200270.327246
epaSuperfundSiteId/AL62100200080.600902
epaSuperfundSiteId/AL72100207420.610158
epaSuperfundSiteId/ALD0012219020.962115
epaSuperfundSiteId/ALD0040224480.951963
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " 2021\n", + "place \n", + "epaSuperfundSiteId/AL3210020027 0.327246\n", + "epaSuperfundSiteId/AL6210020008 0.600902\n", + "epaSuperfundSiteId/AL7210020742 0.610158\n", + "epaSuperfundSiteId/ALD001221902 0.962115\n", + "epaSuperfundSiteId/ALD004022448 0.951963" + ] + }, + "metadata": {}, + "execution_count": 42 + } + ], + "source": [ + "superfund_sites = dc.get_places_in([place_dcid], 'SuperfundSite')[place_dcid]\n", + "dpd.build_time_series_dataframe(superfund_sites, 'CrsiScore_SuperfundSite').head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + }, + "id": "RKVLyWgR_0R7", + "outputId": "0d82a3a7-b8eb-4ceb-a359-fb680b18033e" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
200020102020
place
geoId/0100100NaN0.00.0
geoId/01001240.02.05.0
geoId/010046020.023.031.0
geoId/01004841.00.09.0
geoId/01006760.00.00.0
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " 2000 2010 2020\n", + "place \n", + "geoId/0100100 NaN 0.0 0.0\n", + "geoId/0100124 0.0 2.0 5.0\n", + "geoId/0100460 20.0 23.0 31.0\n", + "geoId/0100484 1.0 0.0 9.0\n", + "geoId/0100676 0.0 0.0 0.0" + ] + }, + "metadata": {}, + "execution_count": 43 + } + ], + "source": [ + "cities = dpd.get_places_in([place_dcid], 'City')[place_dcid]\n", + "dpd.build_time_series_dataframe(cities, 'Count_Person_AmericanIndianAndAlaskaNativeAlone').head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NEaZRTT6BaXn" + }, + "source": [ + "From the two dataframes, it is clear that we have statistics from different years and the number of places across the two dataframes are not consistent.\n", + "\n", + "Let's get started....\n", + "\n", + "#### Understanding the hierarchy in which places are nested in Data Commons\n", + "\n", + "For getting the city which has a superfund site, we will be using the `site_df` dataframe, which we created in the begining. This dataframe has a column called `containedInPlace` which is a list.\n", + "\n", + "An example of the `containedInPlace` list looks as follows:\n", + "```python\n", + "['geoId/01',\n", + " 'geoId/01015',\n", + " 'geoId/0101590099',\n", + " 'geoId/01015981901',\n", + " 'geoId/0103']\n", + "```\n", + "The list essentially lists the place ids based on the administrative area division. An example of getting the `typeOf` places for a list of place ids is shown as an example in the beginning sections of the notebook.\n", + "\n", + "In this case, the interpretation of the list is done as follows:\n", + "```python\n", + "['geoId/01', #state's place_id\n", + " 'geoId/01015', # county's place_id\n", + " 'geoId/0101590099', # city's place_id\n", + " 'geoId/01015981901', # census tract's place_id\n", + " 'geoId/0103' # congressional district's place_id\n", + " ]\n", + "```" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Preparing the datasets for comparison\n", + "From this list we pick the third element which corresponds to the city's place_id.\n", + "\n", + "> The structure of this list is consistent at the high-level some sites have finer geo-level like Zip Code Tabulation Area (ZCTA) codes.\n", + "\n", + "First let us make a dataframe based off the `site_df` dataframe. To this dataframe, we will add different statistics which we will visualize.\n", + "\n", + "The recipe we plan to do is the following:\n", + "1. From the `site_df` dataframe, create a new dataframe where the superfund sites are located in a city.\n", + "2. To this dataframe, we shall merge the StatVarObservations for the `CrsiScore_SuperfundSite` statistical variable based on the superfund site id\n", + "3. To the merged dataframe, we shall do another merge but this time with StatVarObservations for the `Count_Person_AmericanIndianAndAlaskaNativeAlone` statistical variable based on the `containedInPlace` city id\n", + "4. Visualize!" + ], + "metadata": { + "id": "zr4BOZ7d10Ia" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 629 + }, + "id": "QH6Hlo2MCUaU", + "outputId": "a82a0b0f-c389-4018-9ce3-b5d66a45de0a" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:9: SettingWithCopyWarning:\n", + "\n", + "\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", + "\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:10: SettingWithCopyWarning:\n", + "\n", + "\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", + "\n" + ] + }, + { + "output_type": "execute_result", + "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", + "
epaSuperfundSiteIdcontainedInPlace
1epaSuperfundSiteId/AL6210020008geoId/0114464
4epaSuperfundSiteId/ALD004022448geoId/0179008
5epaSuperfundSiteId/ALD007454085geoId/0151000
8epaSuperfundSiteId/ALD031618069geoId/0131912
9epaSuperfundSiteId/ALD041906173geoId/0115256
11epaSuperfundSiteId/ALD980728703geoId/0159064
12epaSuperfundSiteId/ALD980844385geoId/0168160
13epaSuperfundSiteId/ALD981868466geoId/0133856
15epaSuperfundSiteId/ALN000410750geoId/0107000
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " epaSuperfundSiteId containedInPlace\n", + "1 epaSuperfundSiteId/AL6210020008 geoId/0114464\n", + "4 epaSuperfundSiteId/ALD004022448 geoId/0179008\n", + "5 epaSuperfundSiteId/ALD007454085 geoId/0151000\n", + "8 epaSuperfundSiteId/ALD031618069 geoId/0131912\n", + "9 epaSuperfundSiteId/ALD041906173 geoId/0115256\n", + "11 epaSuperfundSiteId/ALD980728703 geoId/0159064\n", + "12 epaSuperfundSiteId/ALD980844385 geoId/0168160\n", + "13 epaSuperfundSiteId/ALD981868466 geoId/0133856\n", + "15 epaSuperfundSiteId/ALN000410750 geoId/0107000" + ] + }, + "metadata": {}, + "execution_count": 44 + } + ], + "source": [ + "## Step 1: Making dataframe with the superfund site id and the id of the city where the site is present\n", + "def get_city_id(elem_list, fips_code_len=7):\n", + " for e in elem_list:\n", + " if len(e.split('/')[1]) == fips_code_len:\n", + " return e\n", + " return ''\n", + "\n", + "site_place_df = site_df[['epaSuperfundSiteId', 'containedInPlace']]\n", + "site_place_df['epaSuperfundSiteId'] = site_place_df['epaSuperfundSiteId'].apply(lambda elem: 'epaSuperfundSiteId/' + elem)\n", + "site_place_df['containedInPlace'] = site_place_df['containedInPlace'].apply(get_city_id)\n", + "site_place_df = site_place_df[site_place_df['containedInPlace'] != '']\n", + "site_place_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 332 + }, + "id": "POaCwvhXGBBr", + "outputId": "8ab2dff3-40b5-40bc-c82e-9d880db830d4" + }, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
epaSuperfundSiteIdcontainedInPlaceCrsiScore_SuperfundSite200020102020
0epaSuperfundSiteId/AL6210020008geoId/01144640.60090216.021.08
1epaSuperfundSiteId/ALD004022448geoId/01790080.95196314.07.010
2epaSuperfundSiteId/ALD007454085geoId/01510001.011869500.0512.0713
3epaSuperfundSiteId/ALD031618069geoId/0131912NaN20.04.09
4epaSuperfundSiteId/ALD041906173geoId/01152560.39434315.029.038
5epaSuperfundSiteId/ALD980728703geoId/0159064NaNNaNNaN21
6epaSuperfundSiteId/ALD980844385geoId/0168160NaN69.0104.0228
7epaSuperfundSiteId/ALD981868466geoId/01338560.4581047.018.06
8epaSuperfundSiteId/ALN000410750geoId/01070000.394343422.0445.0755
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " epaSuperfundSiteId containedInPlace CrsiScore_SuperfundSite \\\n", + "0 epaSuperfundSiteId/AL6210020008 geoId/0114464 0.600902 \n", + "1 epaSuperfundSiteId/ALD004022448 geoId/0179008 0.951963 \n", + "2 epaSuperfundSiteId/ALD007454085 geoId/0151000 1.011869 \n", + "3 epaSuperfundSiteId/ALD031618069 geoId/0131912 NaN \n", + "4 epaSuperfundSiteId/ALD041906173 geoId/0115256 0.394343 \n", + "5 epaSuperfundSiteId/ALD980728703 geoId/0159064 NaN \n", + "6 epaSuperfundSiteId/ALD980844385 geoId/0168160 NaN \n", + "7 epaSuperfundSiteId/ALD981868466 geoId/0133856 0.458104 \n", + "8 epaSuperfundSiteId/ALN000410750 geoId/0107000 0.394343 \n", + "\n", + " 2000 2010 2020 \n", + "0 16.0 21.0 8 \n", + "1 14.0 7.0 10 \n", + "2 500.0 512.0 713 \n", + "3 20.0 4.0 9 \n", + "4 15.0 29.0 38 \n", + "5 NaN NaN 21 \n", + "6 69.0 104.0 228 \n", + "7 7.0 18.0 6 \n", + "8 422.0 445.0 755 " + ] + }, + "metadata": {}, + "execution_count": 45 + } + ], + "source": [ + "# Step 2: Merging the StatVarObservations for the `CrsiScore_SuperfundSite` statistical variable to `site_data_df`\n", + "site_data_df = site_place_df.copy()\n", + "# Get the list of superfundsites that are contained in a city\n", + "contained_site_list = site_data_df['epaSuperfundSiteId'].values.tolist()\n", + "# with the list of superfund sites' place_ids query Data Commons to stats for CrsiScore_SuperfundSite statistical variable\n", + "superfund_data_df = dpd.build_time_series_dataframe(contained_site_list, 'CrsiScore_SuperfundSite')\n", + "# rename the column to make it readable\n", + "superfund_data_df.columns = ['CrsiScore_SuperfundSite']\n", + "# merge\n", + "site_data_df = pd.merge(site_data_df, superfund_data_df, left_on='epaSuperfundSiteId', right_on='place', how='left')\n", + "\n", + "\n", + "# Step 3: Merging the StatVarObservations for the `Count_Person_AmericanIndianAndAlaskaNativeAlone` statistical variable to `site_data_df`\n", + "# Get the list of cities that have superfund sites\n", + "contained_cities_list = site_data_df['containedInPlace'].values.tolist()\n", + "# with the list of cities' place_ids query Data Commons to stats for Count_Person_AmericanIndianAndAlaskaNativeAlone statistical variable\n", + "demographic_data_df = dpd.build_time_series_dataframe(contained_cities_list, 'Count_Person_AmericanIndianAndAlaskaNativeAlone')\n", + "# merge\n", + "site_data_df = pd.merge(site_data_df, demographic_data_df, left_on='containedInPlace', right_on='place', how='left')\n", + "site_data_df" + ] + }, + { + "cell_type": "markdown", + "source": [ + "#### Example to create custom data aggregations and normalizations\n", + "\n", + "We have the dataset where the superfund related statistic ranges from 0-1 but the count of the American Indian and Alaska Native population is an absolute value. We will need to normalize the count of the American Indian and Alaska Native population with the total population in the selected place. \n", + "\n", + "This can done easily with the [`build_multivaritate_dataframe`](https://docs.datacommons.org/api/pandas/multivariate_dataframe.html) API method as shown in the following code snippet." + ], + "metadata": { + "id": "uWifdZFthuXI" + } + }, + { + "cell_type": "code", + "source": [ + "# api call to get the total population and population of the American Indian and Alaska Natives\n", + "multivariate_dataframe = dpd.build_multivariate_dataframe(places=contained_cities_list, stat_vars=['Count_Person', 'Count_Person_AmericanIndianAndAlaskaNativeAlone'])\n", + "multivariate_dataframe = multivariate_dataframe.reset_index()\n", + "\n", + "# computing per capita population\n", + "multivariate_dataframe['perCapitaPopulation'] = multivariate_dataframe['Count_Person_AmericanIndianAndAlaskaNativeAlone'] / multivariate_dataframe['Count_Person']\n", + "\n", + "# merge the computed per_capita values to the site_data_df\n", + "site_data_df = pd.merge(site_data_df, multivariate_dataframe[['place', 'perCapitaPopulation']], left_on='containedInPlace', right_on='place', how='left')\n", + "site_data_df" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 396 + }, + "id": "59jf2xIWhuBD", + "outputId": "26ed34aa-b033-4622-8a2c-cfc1180ab56e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
epaSuperfundSiteIdcontainedInPlaceCrsiScore_SuperfundSite200020102020placeperCapitaPopulation
0epaSuperfundSiteId/AL6210020008geoId/01144640.60090216.021.08geoId/01144640.001683
1epaSuperfundSiteId/ALD004022448geoId/01790080.95196314.07.010geoId/01790080.005045
2epaSuperfundSiteId/ALD007454085geoId/01510001.011869500.0512.0713geoId/01510000.003554
3epaSuperfundSiteId/ALD031618069geoId/0131912NaN20.04.09geoId/01319120.001221
4epaSuperfundSiteId/ALD041906173geoId/01152560.39434315.029.038geoId/01152560.003693
5epaSuperfundSiteId/ALD980728703geoId/0159064NaNNaNNaN21geoId/01590640.028767
6epaSuperfundSiteId/ALD980844385geoId/0168160NaN69.0104.0228geoId/01681600.014099
7epaSuperfundSiteId/ALD981868466geoId/01338560.4581047.018.06geoId/01338560.001207
8epaSuperfundSiteId/ALN000410750geoId/01070000.394343422.0445.0755geoId/01070000.003761
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " epaSuperfundSiteId containedInPlace CrsiScore_SuperfundSite \\\n", + "0 epaSuperfundSiteId/AL6210020008 geoId/0114464 0.600902 \n", + "1 epaSuperfundSiteId/ALD004022448 geoId/0179008 0.951963 \n", + "2 epaSuperfundSiteId/ALD007454085 geoId/0151000 1.011869 \n", + "3 epaSuperfundSiteId/ALD031618069 geoId/0131912 NaN \n", + "4 epaSuperfundSiteId/ALD041906173 geoId/0115256 0.394343 \n", + "5 epaSuperfundSiteId/ALD980728703 geoId/0159064 NaN \n", + "6 epaSuperfundSiteId/ALD980844385 geoId/0168160 NaN \n", + "7 epaSuperfundSiteId/ALD981868466 geoId/0133856 0.458104 \n", + "8 epaSuperfundSiteId/ALN000410750 geoId/0107000 0.394343 \n", + "\n", + " 2000 2010 2020 place perCapitaPopulation \n", + "0 16.0 21.0 8 geoId/0114464 0.001683 \n", + "1 14.0 7.0 10 geoId/0179008 0.005045 \n", + "2 500.0 512.0 713 geoId/0151000 0.003554 \n", + "3 20.0 4.0 9 geoId/0131912 0.001221 \n", + "4 15.0 29.0 38 geoId/0115256 0.003693 \n", + "5 NaN NaN 21 geoId/0159064 0.028767 \n", + "6 69.0 104.0 228 geoId/0168160 0.014099 \n", + "7 7.0 18.0 6 geoId/0133856 0.001207 \n", + "8 422.0 445.0 755 geoId/0107000 0.003761 " + ] + }, + "metadata": {}, + "execution_count": 46 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Visualizing the comparison on a scatter plot" + ], + "metadata": { + "id": "eqMS7NXo2LnF" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 514 + }, + "id": "me2TjmV2Hhjv", + "outputId": "46a5db38-544d-4a7d-ccde-a72823f5376b" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "def plot_data(title, pd_table, x, y):\n", + " \"\"\" Generate a scatter plot comparing CrsiScore_SuperfundSite and Count_Person_AmericanIndianAndAlaskaNativeAlone. \"\"\"\n", + " plt.figure(figsize=(12, 8))\n", + " plt.title(title)\n", + " plt.xlabel('CrsiScore_SuperfundSite')\n", + " plt.ylabel('Count_Person_AmericanIndianAndAlaskaNativeAlone')\n", + " \n", + " # Scatter plot the information\n", + " ax = plt.gca()\n", + " ax.scatter(pd_table[x], pd_table[y], alpha=0.7)\n", + "\n", + "# Generate the plot for state data\n", + "title = 'CRSI score vs Count of American Indian and Alaska Native population (per Capita)'\n", + "plot_data(title, site_data_df, x='CrsiScore_SuperfundSite', y='perCapitaPopulation')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zbjmGtocOLHg" + }, + "source": [ + "### What's Next?\n", + "Congratulations 🎉 on completing the tutorial. Next, please free to explore other Data Commons notebooks to get ideas for querying and joining data from the graph" + ] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "name": "Analyzing SuperfundSites with Data Commons", + "provenance": [], + "toc_visible": true, + "include_colab_link": true + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "e86121a3dee84467911d601c450f076f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DropdownModel", + "model_module_version": "1.5.0", + "state": { + "_options_labels": [ + "Alabama", + "Alaska", + "Arizona", + "Arkansas", + "California", + "Colorado", + "Connecticut", + "Delaware", + "District of Columbia", + "Florida", + "Georgia", + "Hawaii", + "Idaho", + "Illinois", + "Indiana", + "Iowa", + "Kansas", + "Kentucky", + "Louisiana", + "Maine", + "Maryland", + "Massachusetts", + "Michigan", + "Minnesota", + "Mississippi", + "Missouri", + "Montana", + "Nebraska", + "Nevada", + "New Hampshire", + "New Jersey", + "New Mexico", + "New York", + "North Carolina", + "North Dakota", + "Ohio", + "Oklahoma", + "Oregon", + "Pennsylvania", + "Rhode Island", + "South Carolina", + "South Dakota", + "Tennessee", + "Texas", + "Utah", + "Vermont", + "Virginia", + "Washington", + "West Virginia", + "Wisconsin", + "Wyoming", + "Puerto Rico" + ], + "_view_name": "DropdownView", + "style": "IPY_MODEL_2f1164c04f504f80beb625de92bbfa17", + "_dom_classes": [], + "description": "", + "_model_name": "DropdownModel", + "index": 0, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "disabled": false, + "_view_module_version": "1.5.0", + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_2e5a9eb31a424a8db158822f155d85db" + } + }, + "2f1164c04f504f80beb625de92bbfa17": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_view_name": "StyleView", + "_model_name": "DescriptionStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "2e5a9eb31a424a8db158822f155d85db": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "8794d888dc834c1cad49e577a95736a4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DropdownModel", + "model_module_version": "1.5.0", + "state": { + "_options_labels": [ + "Anniston Army Depot (Southeast Industrial Area)", + "Alabama Army Ammunition Plant", + "Redstone Arsenal (USARMY/NASA)", + "Ciba-Geigy Corp. (McIntosh Plant)", + "Alabama Plating Company Inc.", + "T.H. Agriculture & Nutrition Co. (Montgomery Plant)", + "Stauffer Chemical Co. (LeMoyne Plant)", + "Olin Corp. (McIntosh Plant)", + "Mowbray Engineering Co.", + "Interstate Lead Co. (ILCO)", + "Stauffer Chemical Co. (Cold Creek Plant)", + "Perdido Ground Water Contamination", + "Redwing Carriers Inc. (Saraland)", + "American Brass", + "Triana/Tennessee River", + "35th Avenue" + ], + "_view_name": "DropdownView", + "style": "IPY_MODEL_e1eb411fba2a42b783282223aa7c6ce7", + "_dom_classes": [], + "description": "", + "_model_name": "DropdownModel", + "index": 0, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "disabled": false, + "_view_module_version": "1.5.0", + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_d5670d1d5dda4c479d70627d752ba8c1" + } + }, + "e1eb411fba2a42b783282223aa7c6ce7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_view_name": "StyleView", + "_model_name": "DescriptionStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "d5670d1d5dda4c479d70627d752ba8c1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "9cf7730acc784ae48e5f17c86e92a261": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DropdownModel", + "model_module_version": "1.5.0", + "state": { + "_options_labels": [ + "CrsiScore_SuperfundSite", + "NaturalHazardExposureScore_SuperfundSite", + "NaturalHazardRiskScore_SuperfundSite", + "NaturalHazardRiskScore_SuperfundSite_CoastalFloodEvent", + "NaturalHazardRiskScore_SuperfundSite_DroughtEvent", + "NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent", + "NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent", + "NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent", + "NaturalHazardRiskScore_SuperfundSite_FloodEvent", + "NaturalHazardRiskScore_SuperfundSite_HailEvent", + "NaturalHazardRiskScore_SuperfundSite_HighWindEvent", + "NaturalHazardRiskScore_SuperfundSite_HurricaneEvent", + "NaturalHazardRiskScore_SuperfundSite_LandslideEvent", + "NaturalHazardRiskScore_SuperfundSite_TornadoEvent", + "NaturalHazardRiskScore_SuperfundSite_WildfireEvent" + ], + "_view_name": "DropdownView", + "style": "IPY_MODEL_518586f83b35495aa1215c5dbd1cd79d", + "_dom_classes": [], + "description": "", + "_model_name": "DropdownModel", + "index": 0, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "disabled": false, + "_view_module_version": "1.5.0", + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_fb9e80f4aea842e390f3341a488d14d8" + } + }, + "518586f83b35495aa1215c5dbd1cd79d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_view_name": "StyleView", + "_model_name": "DescriptionStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "fb9e80f4aea842e390f3341a488d14d8": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file From 02f5b795f0d34405bab09dc9a5c7f38b57511734 Mon Sep 17 00:00:00 2001 From: Prashanth Radhakrishnan Date: Thu, 10 Mar 2022 02:43:37 +0000 Subject: [PATCH 07/13] Update README --- ...ing_Superfund_data_from_Data_Commons.ipynb | 1401 ----- ...ing_SuperfundSites_with_Data_Commons.ipynb | 4486 ----------------- notebooks/README.md | 1 + 3 files changed, 1 insertion(+), 5887 deletions(-) delete mode 100644 Accessing_Superfund_data_from_Data_Commons.ipynb delete mode 100644 Analyzing_SuperfundSites_with_Data_Commons.ipynb diff --git a/Accessing_Superfund_data_from_Data_Commons.ipynb b/Accessing_Superfund_data_from_Data_Commons.ipynb deleted file mode 100644 index 8e1b4e7d..00000000 --- a/Accessing_Superfund_data_from_Data_Commons.ipynb +++ /dev/null @@ -1,1401 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Accessing Superfund data from Data Commons", - "provenance": [], - "collapsed_sections": [], - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Copyright 2022 Google LLC.\n", - "SPDX-License-Identifier: Apache-2.0\n", - "\n", - "**Notebook Version** - 1.0.0" - ], - "metadata": { - "id": "fiV51ZPWpxwh" - } - }, - { - "cell_type": "markdown", - "source": [ - "# Accessing Superfund data from Data Commons\n", - "\n", - "[Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) are US locations contaminated with hazardous substances that the [EPA](https://epa.gov/) seeks to investigate and clean up. Data Commons (DC) includes data about Superfund sites, and this notebook illustrates how that can be accessed using the [DC python APIs](https://docs.datacommons.org/api/python/) with [Pandas extension](https://docs.datacommons.org/api/pandas/).\n", - "\n", - "An extended version of this notebook that does some analysis with the extracted Superfund data can be found [here](https://colab.research.google.com/github/pradh/api-python/blob/superfund1/Analyzing_SuperfundSites_with_Data_Commons.ipynb)." - ], - "metadata": { - "id": "xIaPIPE7aYSv" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Set-up\n", - "\n", - "Import the DC python APIs, as follows:" - ], - "metadata": { - "id": "Ksgk_NrZq_64" - } - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "bHDDJ2O7ZnVi" - }, - "outputs": [], - "source": [ - "!pip install datacommons_pandas datacommons --upgrade --quiet\n", - "\n", - "# Import Data Commons libraries\n", - "import datacommons as dc\n", - "import datacommons_pandas as dcpd" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## List Superfund sites\n", - "\n", - "The individual sites are instances of `SuperfundSite`, and are listed in the corresponding [Graph Browser page](https://datacommons.org/browser/SuperfundSite).\n", - "\n", - "To programmatically list all Superfund sites, use the `get_places_in` API as follows:" - ], - "metadata": { - "id": "mNVXQS0arQFS" - } - }, - { - "cell_type": "code", - "source": [ - "# Gets all Superfund sites within USA\n", - "place_dcid = 'country/USA' # DCID of USA\n", - "site_list = dc.get_places_in([place_dcid], 'SuperfundSite')[place_dcid]\n", - "\n", - "site_list[:5]" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "l-4CtbWNrsNq", - "outputId": "5a703c6e-ad68-489f-d152-4ee6789ab447" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "['epaSuperfundSiteId/AK0001897602',\n", - " 'epaSuperfundSiteId/AK4170024323',\n", - " 'epaSuperfundSiteId/AL3210020027',\n", - " 'epaSuperfundSiteId/AL6210020008',\n", - " 'epaSuperfundSiteId/AL7210020742']" - ] - }, - "metadata": {}, - "execution_count": 2 - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "> In place of USA, you can specify any US state or county. You can use [place search](https://datacommons.org/s) to find the corresponding DCID, as illustrated [here](https://user-images.githubusercontent.com/4375037/157551351-71b83f85-1b35-414b-aa3f-d585826140e0.png).\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "metadata": { - "id": "gX3mc3lNryNY" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Get statistics\n", - "\n", - "Superfund sites have associated statistical variables like [CrsiScore_Superfundsite](https://datacommons.org/tools/statvar#CrsiScore_SuperfundSite), [NaturalHazardRiskScore_Superfundsite](https://datacommons.org/tools/statvar#NaturalHazardExposureScore_SuperfundSite), etc. To see the list of all variables, you can visit a Superfund site's Graph Browser page ([example](https://datacommons.org/browser/epaSuperfundSiteId/WY5571924179)).\n", - "\n", - "To get stats for all variables for all sites, use the `build_multivariate_dataframe` API, as follows:" - ], - "metadata": { - "id": "lMCO-dBctZ-w" - } - }, - { - "cell_type": "code", - "source": [ - "# Gets stats for the listed variables from all sites in a Pandas table\n", - "site_df = dcpd.build_multivariate_dataframe(site_list,\n", - " ['CrsiScore_SuperfundSite',\n", - " 'NaturalHazardExposureScore_SuperfundSite',\n", - " 'NaturalHazardRiskScore_SuperfundSite',\n", - " 'NaturalHazardRiskScore_SuperfundSite_CoastalFloodEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_DroughtEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_FloodEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_HailEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_HighWindEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_HurricaneEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_LandslideEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_TornadoEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_WildfireEvent'])\n", - "\n", - "site_df.head()" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 302 - }, - "id": "Mv_pUiyB8EgF", - "outputId": "60a81dab-17cf-4ab8-afea-6e126bb1a9e3" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "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", - "
NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEventNaturalHazardRiskScore_SuperfundSite_FloodEventNaturalHazardRiskScore_SuperfundSite_HurricaneEventNaturalHazardRiskScore_SuperfundSite_TornadoEventCrsiScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSite_DroughtEventNaturalHazardRiskScore_SuperfundSite_EarthquakeEventNaturalHazardRiskScore_SuperfundSite_WildfireEventNaturalHazardExposureScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSite_HighWindEventNaturalHazardRiskScore_SuperfundSite_CoastalFloodEventNaturalHazardRiskScore_SuperfundSite_HailEventNaturalHazardRiskScore_SuperfundSite_LandslideEventNaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent
place
epaSuperfundSiteId/AK000189760236.09125.8191.01.00055.4556601.7511.01.01.0005.8701.0001.01.0001.00075.696
epaSuperfundSiteId/AK417002432326.92733.5881.01.00028.1425583.9441.01.06.0392.0641.0001.01.0001.00037.392
epaSuperfundSiteId/AL321002002736.29745.1151.099.0000.32724666.94599.01.099.00082.36933.9461.032.94725.14773.927
epaSuperfundSiteId/AL621002000833.49946.4881.037.4370.60090230.33299.01.069.07064.97946.8651.032.11114.99472.603
epaSuperfundSiteId/AL721002074241.49650.8911.099.0000.61015880.38399.01.01.00092.15599.0001.091.63421.54065.770
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 36.091 \n", - "epaSuperfundSiteId/AK4170024323 26.927 \n", - "epaSuperfundSiteId/AL3210020027 36.297 \n", - "epaSuperfundSiteId/AL6210020008 33.499 \n", - "epaSuperfundSiteId/AL7210020742 41.496 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_FloodEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 25.819 \n", - "epaSuperfundSiteId/AK4170024323 33.588 \n", - "epaSuperfundSiteId/AL3210020027 45.115 \n", - "epaSuperfundSiteId/AL6210020008 46.488 \n", - "epaSuperfundSiteId/AL7210020742 50.891 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_HurricaneEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.0 \n", - "epaSuperfundSiteId/AK4170024323 1.0 \n", - "epaSuperfundSiteId/AL3210020027 1.0 \n", - "epaSuperfundSiteId/AL6210020008 1.0 \n", - "epaSuperfundSiteId/AL7210020742 1.0 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_TornadoEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.000 \n", - "epaSuperfundSiteId/AK4170024323 1.000 \n", - "epaSuperfundSiteId/AL3210020027 99.000 \n", - "epaSuperfundSiteId/AL6210020008 37.437 \n", - "epaSuperfundSiteId/AL7210020742 99.000 \n", - "\n", - " CrsiScore_SuperfundSite \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 55.455660 \n", - "epaSuperfundSiteId/AK4170024323 28.142558 \n", - "epaSuperfundSiteId/AL3210020027 0.327246 \n", - "epaSuperfundSiteId/AL6210020008 0.600902 \n", - "epaSuperfundSiteId/AL7210020742 0.610158 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.751 \n", - "epaSuperfundSiteId/AK4170024323 3.944 \n", - "epaSuperfundSiteId/AL3210020027 66.945 \n", - "epaSuperfundSiteId/AL6210020008 30.332 \n", - "epaSuperfundSiteId/AL7210020742 80.383 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_DroughtEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.0 \n", - "epaSuperfundSiteId/AK4170024323 1.0 \n", - "epaSuperfundSiteId/AL3210020027 99.0 \n", - "epaSuperfundSiteId/AL6210020008 99.0 \n", - "epaSuperfundSiteId/AL7210020742 99.0 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.0 \n", - "epaSuperfundSiteId/AK4170024323 1.0 \n", - "epaSuperfundSiteId/AL3210020027 1.0 \n", - "epaSuperfundSiteId/AL6210020008 1.0 \n", - "epaSuperfundSiteId/AL7210020742 1.0 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_WildfireEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.000 \n", - "epaSuperfundSiteId/AK4170024323 6.039 \n", - "epaSuperfundSiteId/AL3210020027 99.000 \n", - "epaSuperfundSiteId/AL6210020008 69.070 \n", - "epaSuperfundSiteId/AL7210020742 1.000 \n", - "\n", - " NaturalHazardExposureScore_SuperfundSite \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 5.870 \n", - "epaSuperfundSiteId/AK4170024323 2.064 \n", - "epaSuperfundSiteId/AL3210020027 82.369 \n", - "epaSuperfundSiteId/AL6210020008 64.979 \n", - "epaSuperfundSiteId/AL7210020742 92.155 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_HighWindEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.000 \n", - "epaSuperfundSiteId/AK4170024323 1.000 \n", - "epaSuperfundSiteId/AL3210020027 33.946 \n", - "epaSuperfundSiteId/AL6210020008 46.865 \n", - "epaSuperfundSiteId/AL7210020742 99.000 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_CoastalFloodEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.0 \n", - "epaSuperfundSiteId/AK4170024323 1.0 \n", - "epaSuperfundSiteId/AL3210020027 1.0 \n", - "epaSuperfundSiteId/AL6210020008 1.0 \n", - "epaSuperfundSiteId/AL7210020742 1.0 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_HailEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.000 \n", - "epaSuperfundSiteId/AK4170024323 1.000 \n", - "epaSuperfundSiteId/AL3210020027 32.947 \n", - "epaSuperfundSiteId/AL6210020008 32.111 \n", - "epaSuperfundSiteId/AL7210020742 91.634 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_LandslideEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.000 \n", - "epaSuperfundSiteId/AK4170024323 1.000 \n", - "epaSuperfundSiteId/AL3210020027 25.147 \n", - "epaSuperfundSiteId/AL6210020008 14.994 \n", - "epaSuperfundSiteId/AL7210020742 21.540 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent \n", - "place \n", - "epaSuperfundSiteId/AK0001897602 75.696 \n", - "epaSuperfundSiteId/AK4170024323 37.392 \n", - "epaSuperfundSiteId/AL3210020027 73.927 \n", - "epaSuperfundSiteId/AL6210020008 72.603 \n", - "epaSuperfundSiteId/AL7210020742 65.770 " - ] - }, - "metadata": {}, - "execution_count": 3 - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Additional statistics for Tar Creek site\n", - "\n", - "[Tar Creek](https://en.wikipedia.org/wiki/Tar_Creek_Superfund_site) is one of the largest Superfund sites, and only for that site we have additional stats on contaminants in the ground water from sampling wells. These stats are attached to instances of `SuperfundMeasurementSite` contained in Tar Creek.\n", - "\n", - "The measurement sites are listed on the [Tar Creek Graph Browser page](https://datacommons.org/browser/epaSuperfundSiteId/OKD980629844), and a measurement site's Graph Browser page ([example](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Commerce_5)) lists all available statistical variables.\n", - "\n", - "To get these stats, list the measurement sites within Tar Creek, and then provide all associated variables, as follows:" - ], - "metadata": { - "id": "QjmmCevb9bRZ" - } - }, - { - "cell_type": "code", - "source": [ - "# Gets all measurement sites contained in Tar Creek \n", - "tar_creek_site = 'epaSuperfundSiteId/OKD980629844' # DCID of Tar Creek\n", - "measurement_sites = dc.get_places_in([tar_creek_site], 'SuperfundMeasurementSite')[tar_creek_site]\n", - "\n", - "# Gets stats for contaminant variables for said measurement sites\n", - "tar_creek_df = dcpd.build_multivariate_dataframe(\n", - " measurement_sites,\n", - " [\n", - " 'Concentration_Cadmium_BodyOfWater_GroundWater',\n", - " 'Concentration_DissolvedContaminant_Cadmium_BodyOfWater_GroundWater',\n", - " 'Concentration_DissolvedContaminant_Iron_BodyOfWater_GroundWater',\n", - " 'Concentration_DissolvedContaminant_Lead_BodyOfWater_GroundWater',\n", - " 'Concentration_DissolvedContaminant_Zinc_BodyOfWater_GroundWater',\n", - " 'Concentration_Iron_BodyOfWater_GroundWater',\n", - " 'Concentration_Lead_BodyOfWater_GroundWater',\n", - " 'Concentration_Sulfate_BodyOfWater_GroundWater',\n", - " 'DissolvedOxygen_BodyOfWater_GroundWater',\n", - " 'Concentration_Zinc_BodyOfWater_GroundWater',\n", - " 'PotentialOfHydrogen_BodyOfWater_GroundWater',\n", - " 'ElectricalConductivity_BodyOfWater_GroundWater',\n", - " 'Temperature_BodyOfWater_GroundWater',\n", - " 'WaterHardness_BodyOfWater_GroundWater'\n", - " ])\n", - "\n", - "tar_creek_df.head()" - ], - "metadata": { - "id": "QxWrffhqBmQ2", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 305 - }, - "outputId": "a708ecba-c6df-44c1-bdee-318a8e862d60" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "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", - "
PotentialOfHydrogen_BodyOfWater_GroundWaterConcentration_DissolvedContaminant_Cadmium_BodyOfWater_GroundWaterConcentration_Iron_BodyOfWater_GroundWaterConcentration_DissolvedContaminant_Zinc_BodyOfWater_GroundWaterElectricalConductivity_BodyOfWater_GroundWaterConcentration_DissolvedContaminant_Iron_BodyOfWater_GroundWaterConcentration_DissolvedContaminant_Lead_BodyOfWater_GroundWaterConcentration_Sulfate_BodyOfWater_GroundWaterConcentration_Zinc_BodyOfWater_GroundWaterTemperature_BodyOfWater_GroundWaterWaterHardness_BodyOfWater_GroundWaterConcentration_Cadmium_BodyOfWater_GroundWaterConcentration_Lead_BodyOfWater_GroundWaterDissolvedOxygen_BodyOfWater_GroundWater
place
epaSuperfundMeasurementSite/OKD980629844/Commerce_57.6500.09830.00235.30.0000015.40.0019.81280018.1
epaSuperfundMeasurementSite/OKD980629844/Picher_5-MW6.40020.00003.412000.018.300001180.03.5419.43290014.1
epaSuperfundMeasurementSite/OKD980629844/Picher_7-MW7.2200.16200.00468.50.02390139.00.0019.5552009.6
epaSuperfundMeasurementSite/OKD980629844/Quapaw_47.5700.00000.00213.20.0000015.60.0018.81260017.4
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " PotentialOfHydrogen_BodyOfWater_GroundWater \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Commer... 7.65 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 6.40 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 7.22 \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 7.57 \n", - "\n", - " Concentration_DissolvedContaminant_Cadmium_BodyOfWater_GroundWater \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Commer... 0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0 \n", - "\n", - " Concentration_Iron_BodyOfWater_GroundWater \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Commer... 0.0983 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 20.0000 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 0.1620 \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0.0000 \n", - "\n", - " Concentration_DissolvedContaminant_Zinc_BodyOfWater_GroundWater \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Commer... 0.00 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 3.41 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 0.00 \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0.00 \n", - "\n", - " ElectricalConductivity_BodyOfWater_GroundWater \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Commer... 235.3 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 2000.0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 468.5 \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 213.2 \n", - "\n", - " Concentration_DissolvedContaminant_Iron_BodyOfWater_GroundWater \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Commer... 0.0000 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 18.3000 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 0.0239 \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0.0000 \n", - "\n", - " Concentration_DissolvedContaminant_Lead_BodyOfWater_GroundWater \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Commer... 0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0 \n", - "\n", - " Concentration_Sulfate_BodyOfWater_GroundWater \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Commer... 15.4 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 1180.0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 139.0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 15.6 \n", - "\n", - " Concentration_Zinc_BodyOfWater_GroundWater \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Commer... 0.00 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 3.54 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 0.00 \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0.00 \n", - "\n", - " Temperature_BodyOfWater_GroundWater \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Commer... 19.8 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 19.4 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 19.5 \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 18.8 \n", - "\n", - " WaterHardness_BodyOfWater_GroundWater \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Commer... 128 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 329 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 552 \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 126 \n", - "\n", - " Concentration_Cadmium_BodyOfWater_GroundWater \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Commer... 0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0 \n", - "\n", - " Concentration_Lead_BodyOfWater_GroundWater \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Commer... 0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 0 \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 0 \n", - "\n", - " DissolvedOxygen_BodyOfWater_GroundWater \n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Commer... 18.1 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 14.1 \n", - "epaSuperfundMeasurementSite/OKD980629844/Picher... 9.6 \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 17.4 " - ] - }, - "metadata": {}, - "execution_count": 4 - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Get non-statistical attributes\n", - "\n", - "The Superfund sites have non-statistical properties like latitude/longitude, ownership status, EPA region code, and so on. These are listed in each site's Graph Browser page ([example](https://autopush.datacommons.org/browser/epaSuperfundSiteId/OKD980629844)).\n", - "\n", - "To get these values, use the `get_property_labels` and `get_property_values` APIs, and append to the existing dataframe (`site_df`), as follows:" - ], - "metadata": { - "id": "D19BM5nCC2yj" - } - }, - { - "cell_type": "code", - "source": [ - "# Lists properties for a sample site\n", - "site_props = dc.get_property_labels([tar_creek_site], out=True)[tar_creek_site]\n", - "\n", - "for prop in site_props:\n", - " # Gets values for a given property. pvs is dict from site-id -> list of values\n", - " pvs = dc.get_property_values(site_list, prop)\n", - " # Turns the list of values into a comma-separated a single-value\n", - " pvs = {p: ', '.join(v) for p, v in pvs.items()}\n", - " # Extends the dataframe\n", - " site_df[prop] = site_df.index.map(pvs)\n", - "\n", - "site_df.head()" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 591 - }, - "id": "QY_W-tJeDx2z", - "outputId": "fc402ad1-ccf1-46b8-b022-6d1143436887" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "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", - "
NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEventNaturalHazardRiskScore_SuperfundSite_FloodEventNaturalHazardRiskScore_SuperfundSite_HurricaneEventNaturalHazardRiskScore_SuperfundSite_TornadoEventCrsiScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSiteNaturalHazardRiskScore_SuperfundSite_DroughtEventNaturalHazardRiskScore_SuperfundSite_EarthquakeEventNaturalHazardRiskScore_SuperfundSite_WildfireEventNaturalHazardExposureScore_SuperfundSite...NaturalHazardRiskScore_SuperfundSite_LandslideEventNaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEventcontainedInPlaceepaRegionCodeepaSuperfundSiteIdestablishmentOwnershiplocationnameprovenancetypeOf
place
epaSuperfundSiteId/AK000189760236.09125.8191.01.00055.4556601.7511.01.01.0005.870...1.00075.696geoId/02, geoId/0200, geoId/02198, geoId/02198...10AK0001897602latLong/5562644_-13255885Salt Chuck Minedc/999wb02SuperfundSite
epaSuperfundSiteId/AK417002432326.92733.5881.01.00028.1425583.9441.01.06.0392.064...1.00037.392geoId/02, geoId/0200, geoId/0200065, geoId/020...10AK4170024323FederalGovernmentOwnedlatLong/5187750_-17665250Adak Naval Air Stationdc/999wb02SuperfundSite
epaSuperfundSiteId/AL321002002736.29745.1151.099.0000.32724666.94599.01.099.00082.369...25.14773.927geoId/01, geoId/01015, geoId/0101590099, geoId...4AL3210020027FederalGovernmentOwnedlatLong/3365944_-8596944Anniston Army Depot (Southeast Industrial Area)dc/999wb02SuperfundSite
epaSuperfundSiteId/AL621002000833.49946.4881.037.4370.60090230.33299.01.069.07064.979...14.99472.603geoId/01, geoId/0103, geoId/01121, geoId/01121...4AL6210020008FederalGovernmentOwnedlatLong/3333810_-8632680Alabama Army Ammunition Plantdc/999wb02SuperfundSite
epaSuperfundSiteId/AL721002074241.49650.8911.099.0000.61015880.38399.01.01.00092.155...21.54065.770geoId/01, geoId/0105, geoId/01089, geoId/01089...4AL7210020742FederalGovernmentOwnedlatLong/3464694_-8667305Redstone Arsenal (USARMY/NASA)dc/999wb02SuperfundSite
\n", - "

5 rows × 23 columns

\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 36.091 \n", - "epaSuperfundSiteId/AK4170024323 26.927 \n", - "epaSuperfundSiteId/AL3210020027 36.297 \n", - "epaSuperfundSiteId/AL6210020008 33.499 \n", - "epaSuperfundSiteId/AL7210020742 41.496 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_FloodEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 25.819 \n", - "epaSuperfundSiteId/AK4170024323 33.588 \n", - "epaSuperfundSiteId/AL3210020027 45.115 \n", - "epaSuperfundSiteId/AL6210020008 46.488 \n", - "epaSuperfundSiteId/AL7210020742 50.891 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_HurricaneEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.0 \n", - "epaSuperfundSiteId/AK4170024323 1.0 \n", - "epaSuperfundSiteId/AL3210020027 1.0 \n", - "epaSuperfundSiteId/AL6210020008 1.0 \n", - "epaSuperfundSiteId/AL7210020742 1.0 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_TornadoEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.000 \n", - "epaSuperfundSiteId/AK4170024323 1.000 \n", - "epaSuperfundSiteId/AL3210020027 99.000 \n", - "epaSuperfundSiteId/AL6210020008 37.437 \n", - "epaSuperfundSiteId/AL7210020742 99.000 \n", - "\n", - " CrsiScore_SuperfundSite \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 55.455660 \n", - "epaSuperfundSiteId/AK4170024323 28.142558 \n", - "epaSuperfundSiteId/AL3210020027 0.327246 \n", - "epaSuperfundSiteId/AL6210020008 0.600902 \n", - "epaSuperfundSiteId/AL7210020742 0.610158 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.751 \n", - "epaSuperfundSiteId/AK4170024323 3.944 \n", - "epaSuperfundSiteId/AL3210020027 66.945 \n", - "epaSuperfundSiteId/AL6210020008 30.332 \n", - "epaSuperfundSiteId/AL7210020742 80.383 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_DroughtEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.0 \n", - "epaSuperfundSiteId/AK4170024323 1.0 \n", - "epaSuperfundSiteId/AL3210020027 99.0 \n", - "epaSuperfundSiteId/AL6210020008 99.0 \n", - "epaSuperfundSiteId/AL7210020742 99.0 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.0 \n", - "epaSuperfundSiteId/AK4170024323 1.0 \n", - "epaSuperfundSiteId/AL3210020027 1.0 \n", - "epaSuperfundSiteId/AL6210020008 1.0 \n", - "epaSuperfundSiteId/AL7210020742 1.0 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_WildfireEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.000 \n", - "epaSuperfundSiteId/AK4170024323 6.039 \n", - "epaSuperfundSiteId/AL3210020027 99.000 \n", - "epaSuperfundSiteId/AL6210020008 69.070 \n", - "epaSuperfundSiteId/AL7210020742 1.000 \n", - "\n", - " NaturalHazardExposureScore_SuperfundSite \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 5.870 \n", - "epaSuperfundSiteId/AK4170024323 2.064 \n", - "epaSuperfundSiteId/AL3210020027 82.369 \n", - "epaSuperfundSiteId/AL6210020008 64.979 \n", - "epaSuperfundSiteId/AL7210020742 92.155 \n", - "\n", - " ... \\\n", - "place ... \n", - "epaSuperfundSiteId/AK0001897602 ... \n", - "epaSuperfundSiteId/AK4170024323 ... \n", - "epaSuperfundSiteId/AL3210020027 ... \n", - "epaSuperfundSiteId/AL6210020008 ... \n", - "epaSuperfundSiteId/AL7210020742 ... \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_LandslideEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 1.000 \n", - "epaSuperfundSiteId/AK4170024323 1.000 \n", - "epaSuperfundSiteId/AL3210020027 25.147 \n", - "epaSuperfundSiteId/AL6210020008 14.994 \n", - "epaSuperfundSiteId/AL7210020742 21.540 \n", - "\n", - " NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 75.696 \n", - "epaSuperfundSiteId/AK4170024323 37.392 \n", - "epaSuperfundSiteId/AL3210020027 73.927 \n", - "epaSuperfundSiteId/AL6210020008 72.603 \n", - "epaSuperfundSiteId/AL7210020742 65.770 \n", - "\n", - " containedInPlace \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 geoId/02, geoId/0200, geoId/02198, geoId/02198... \n", - "epaSuperfundSiteId/AK4170024323 geoId/02, geoId/0200, geoId/0200065, geoId/020... \n", - "epaSuperfundSiteId/AL3210020027 geoId/01, geoId/01015, geoId/0101590099, geoId... \n", - "epaSuperfundSiteId/AL6210020008 geoId/01, geoId/0103, geoId/01121, geoId/01121... \n", - "epaSuperfundSiteId/AL7210020742 geoId/01, geoId/0105, geoId/01089, geoId/01089... \n", - "\n", - " epaRegionCode epaSuperfundSiteId \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 10 AK0001897602 \n", - "epaSuperfundSiteId/AK4170024323 10 AK4170024323 \n", - "epaSuperfundSiteId/AL3210020027 4 AL3210020027 \n", - "epaSuperfundSiteId/AL6210020008 4 AL6210020008 \n", - "epaSuperfundSiteId/AL7210020742 4 AL7210020742 \n", - "\n", - " establishmentOwnership \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 \n", - "epaSuperfundSiteId/AK4170024323 FederalGovernmentOwned \n", - "epaSuperfundSiteId/AL3210020027 FederalGovernmentOwned \n", - "epaSuperfundSiteId/AL6210020008 FederalGovernmentOwned \n", - "epaSuperfundSiteId/AL7210020742 FederalGovernmentOwned \n", - "\n", - " location \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 latLong/5562644_-13255885 \n", - "epaSuperfundSiteId/AK4170024323 latLong/5187750_-17665250 \n", - "epaSuperfundSiteId/AL3210020027 latLong/3365944_-8596944 \n", - "epaSuperfundSiteId/AL6210020008 latLong/3333810_-8632680 \n", - "epaSuperfundSiteId/AL7210020742 latLong/3464694_-8667305 \n", - "\n", - " name \\\n", - "place \n", - "epaSuperfundSiteId/AK0001897602 Salt Chuck Mine \n", - "epaSuperfundSiteId/AK4170024323 Adak Naval Air Station \n", - "epaSuperfundSiteId/AL3210020027 Anniston Army Depot (Southeast Industrial Area) \n", - "epaSuperfundSiteId/AL6210020008 Alabama Army Ammunition Plant \n", - "epaSuperfundSiteId/AL7210020742 Redstone Arsenal (USARMY/NASA) \n", - "\n", - " provenance typeOf \n", - "place \n", - "epaSuperfundSiteId/AK0001897602 dc/999wb02 SuperfundSite \n", - "epaSuperfundSiteId/AK4170024323 dc/999wb02 SuperfundSite \n", - "epaSuperfundSiteId/AL3210020027 dc/999wb02 SuperfundSite \n", - "epaSuperfundSiteId/AL6210020008 dc/999wb02 SuperfundSite \n", - "epaSuperfundSiteId/AL7210020742 dc/999wb02 SuperfundSite \n", - "\n", - "[5 rows x 23 columns]" - ] - }, - "metadata": {}, - "execution_count": 5 - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Join with other stats in Data Commons\n", - "\n", - "We can now join the Superfund data with various statistics in DC (across Demographics, Economics, Climate, Health, and so on) for places like US\n", - "Census tracts, cities, counties, etc.\n", - "\n", - "This can be done by starting with the list of places containing the Superfund sites (found in the `containedInPlace` column in `site_df`), and then using the `build_multivariate_dataframe` API to get stats for the relevant variables. This is illustrated in detail in the [extended notebook](https://colab.research.google.com/github/pradh/api-python/blob/superfund1/Analyzing_SuperfundSites_with_Data_Commons.ipynb#scrollTo=Bdada1GF-VgS)." - ], - "metadata": { - "id": "VYp-2EpfNBiS" - } - } - ] -} \ No newline at end of file diff --git a/Analyzing_SuperfundSites_with_Data_Commons.ipynb b/Analyzing_SuperfundSites_with_Data_Commons.ipynb deleted file mode 100644 index 77718dda..00000000 --- a/Analyzing_SuperfundSites_with_Data_Commons.ipynb +++ /dev/null @@ -1,4486 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "OJ_kWT4iDMaM" - }, - "source": [ - "Copyright 2022 Google LLC.\n", - "SPDX-License-Identifier: Apache-2.0\n", - "\n", - "**Notebook Version** - 1.0.0" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "QJoxQoY48gHc" - }, - "source": [ - "## Analyzing SuperfundSites with Data Commons\n", - "\n", - "This information, stored in Data Commons, is available to everyone for data science projects, education, and exploration. \n", - "\n", - "This tutorial introduces the Data Commons graph and two of its tools: (1) the [browser](https://browser.datacommons.org/) and (2) the [Pandas API](https://github.com/datacommonsorg/api-pandas).\n", - "\n", - "### Data Commons Browser\n", - "\n", - "The [Data Commons browser](https://browser.datacommons.org/) provides a way to explore the data in a human-readable format. It is the best way to explore what is in Data Commons. \n", - "\n", - "An important property for all entities is the **`dcid`**. The `dcid` (Data Commons identifier) is a unique identifier assigned to each entity in the knowledge graph. With this identifier, one will be able to search for and query information on the given entity in ways that we will discuss later. The `dcid` is listed at the top of the page next to \"About: \" and also in the list of properties.\n", - "\n", - "### Accessing statistics through APIs\n", - "Currently there are three ways in which statistics from then Data Commons graph can be obtained, namely:\n", - "\n", - "1. [Python API](https://docs.datacommons.org/api/python/) - a lightweight python wrapper \n", - "2. The [Pandas API](https://github.com/datacommonsorg/api-pandas) provides functions for users to extract structured information from Data Commons programmatically and view them in different formats such as Python dicts and [pandas](https://pandas.pydata.org/) DataFrames. DataFrames allow access to all the data processing, analytical and visualization tools provided by packages such as pandas, NumPy, SciPy, and Matplotlib.\n", - "3. [REST API endpoints](https://docs.datacommons.org/api/rest/) - a common, language agnostic means to access stats\n", - "\n", - "### About this notebook\n", - "This notebook presents how different Data Commons APIs work with example snippets to extract statistics from the knowledge graph. The notebook will provide code snippets that can better showcase how data can be used for visualization and analysis. Specifically, the notebook uses statistics available on Superfund Sites and Demographics as examples, but the snippets can be used for statistics in other verticals like Climate, Economics, Health, etc.\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "vD2mErj68Q1F" - }, - "outputs": [], - "source": [ - "# Refer: https://docs.datacommons.org/api/pandas/\n", - "!pip install datacommons_pandas datacommons geopandas plotly descartes --upgrade --quiet\n", - "\n", - "# Import Data Commons\n", - "import datacommons as dc\n", - "import datacommons_pandas as dpd\n", - "\n", - "# Import other required libraries\n", - "import matplotlib.pyplot as plt\n", - "import matplotlib.patches as mpatches\n", - "import pandas as pd\n", - "import geopandas as gpd\n", - "from shapely.geometry import Point\n", - "import plotly.express as px\n", - "from descartes import PolygonPatch\n", - "\n", - "import ipywidgets as widgets\n", - "import pprint\n", - "import requests\n", - "import json\n", - "\n", - "# setting place scope to US\n", - "_USA = 'country/USA'" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ocd8TI35EA06" - }, - "source": [ - "### Querying Statistics from Data Commons\n", - "\n", - "Data Commons has a large corpus of statistical data, which can be queried and joined with other statistics. For example, we can query the median income of women living in Berkeley, California or the number of individuals who are insured in Maryland. \n", - "\n", - "Before we explore how to do this, we need to understand how Data Commons stores statistical data. In particular, there are two types of entities: [StatisticalVariable](https://browser.datacommons.org/kg?dcid=StatisticalVariable) and [StatVarObservation](https://browser.datacommons.org/kg?dcid=StatVarObservation).\n", - "\n", - "A StatisticalVariable represents any type of statistical metric that can be measured at a place and time. Some examples include: median income, median income of females, number of high school graduates, unemployment rate, prevalence of diabetes, essentially anything one might call a metric, statistic, or measure. A StatVarObservation represents an actual measurement of a StatisticalVariable in a given place and time.\n", - "\n", - "One example of a StatisticalVariable is the median age of people in San Antonio, Texas in 2014. The statistical metric, time, and place here are median age, 2014, and San Antonio respectively. A list of StatisticalVariables can be found [here](http://docs.datacommons.org/statistical_variables.html). To read more about StatisticalVariable and StatVarObservation, please see [representing_statistics.md](https://github.com/datacommonsorg/data/blob/master/docs/representing_statistics.md).\n", - "\n", - "Data Commons defines APIs allowing us to fetch data over these two types. To begin with, we can use the [**`build_multivariate_dataframe`**](https://docs.datacommons.org/api/pandas/multivariate_dataframe.html) function to build a dataframe with the latest StatVarObservations of multiple StatisticalVariables for multiple places.\n", - "\n", - "Now, we start of with some code snippets where we use the Data Commons API to pull out statistics from the Data Commons graph." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "SbnQVUDN-CzH" - }, - "source": [ - "## Demo 1 - List of all superfund sites\n", - "\n", - "In this first demo, we will be starting off by getting all the [superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) that are located across the United States. Since, we will be fetching statistics from the United States, we have pre-defined the base place in variable `usa` with the value `country/USA`. \n", - "\n", - "Note: `country/USA` is a unique identifier to a node on the Data Commons Graph which defines [United States](https://datacommons.org/browser/country/USA)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "VqybWC6XKr6j", - "cellView": "form" - }, - "outputs": [], - "source": [ - "#@title Select place types\n", - "\n", - "#@markdown *Select `Runtime > Run all` from the menu above after filling up the values.*\n", - "\n", - "#@markdown Select a geo-level for querying statistics. Select 'State' for a quick demo\n", - "US_GEO_LEVEL = 'State' #@param [\"State\", \"Country\", \"County\"] {allow-input: true}" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "t0VGnxiSR6aD" - }, - "source": [ - "Now, that a GEO_LEVEL is selected for viewing different statistics, we shall fetch all the places within the GEO_LEVEL that are present in the Data Commons Graph.\n", - "\n", - "### Get places contained in the selected place type\n", - "\n", - "So, if \"State\" is selected as the GEO_LEVEL, we will get a list of Data Common Graph ids for all the States in the US. Where each place id refers to a unique node on the graph which describes the place with different constraint properties, like the `typeOf` place which quantifies if the place is a State, or other administrative division applicable. \n", - "\n", - "This is done using the [`get_places_in`](https://docs.datacommons.org/api/python/place_in.html) API method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "i8dsWq92MpzA", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "14ad9b3b-0253-4b3c-ca63-ba79b785999d" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "['geoId/01', 'geoId/02', 'geoId/04', 'geoId/05', 'geoId/06']\n" - ] - } - ], - "source": [ - "# get the dcids for all the places in the selected place type across US\n", - "if US_GEO_LEVEL == 'Country':\n", - " # if geo-level is a country, then we look at the US\n", - " _PLACE_DCID = _USA\n", - "else:\n", - " # else, we extract the place ids for the selected geo-level\n", - " _PLACE_DCID = dc.get_places_in([_USA], US_GEO_LEVEL)[_USA]\n", - "\n", - "# printing the first 5 places that we fetch from Data Commons\n", - "if type(_PLACE_DCID) is list:\n", - " print(_PLACE_DCID[:5])\n", - "else:\n", - " print(_PLACE_DCID)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "s71ffKOHdEsn" - }, - "source": [ - "### Select a place by name\n", - "\n", - "While querying the Data Commons Graph for statistics about a place we will use a place's id like [`geoId/01`](https://datacommons.org/browser/geoId/01) is for the state of Alabama, US.\n", - "\n", - ">TIP: While looking to browse the statistics available for a particular place, one can use the URL constructed as `https://datacommons.org/browser/`. Here `` refers to the unique id for a node in the above example, it will be `geoId/01`.\n", - "\n", - "To make the queried place ids human-readable, we can extract the `name` property of the place node which can be searched on the [graph browser](https://datacommons.org/browser/geoId/01), using the [`get_property_values`](https://docs.datacommons.org/api/python/property_value.html) API method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "VcEKb7spT5rU", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 101, - "referenced_widgets": [ - "e86121a3dee84467911d601c450f076f", - "2f1164c04f504f80beb625de92bbfa17", - "2e5a9eb31a424a8db158822f155d85db" - ] - }, - "outputId": "97fa64cf-d554-4199-f0fb-1a448b24baf6" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Fetching the place will take time based on the summary level and number of place nodes.....Done.\n", - "\n", - "Select a place from the list to use for the remainder of the notebook.\n" - ] - }, - { - "output_type": "display_data", - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "e86121a3dee84467911d601c450f076f", - "version_minor": 0, - "version_major": 2 - }, - "text/plain": [ - "Dropdown(options=('Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delawa…" - ] - }, - "metadata": {} - } - ], - "source": [ - "# populate a list of options based on name for non-country GEO-LEVELS\n", - "\n", - "def get_names_for_place_ids(place_id_list):\n", - " \"\"\"\n", - " This function takes as input a list of place ids and returns the corresponding place names from the Data Commons Graph\n", - " \"\"\"\n", - " print(\"Fetching the place will take time based on the summary level and number of place nodes\", end=\".....\", flush=True)\n", - " try:\n", - " # get the place names for non-country GEO-LEVELS\n", - " place_name_list = [dc.get_property_values([place_id], 'name')[place_id][0] for place_id in place_id_list]\n", - " except:\n", - " place_name_list = dc.get_property_values([_USA], 'name')[_USA]\n", - "\n", - " print('Done.\\n', flush=True)\n", - " return place_name_list\n", - "\n", - "_PLACE_NAMES = get_names_for_place_ids(_PLACE_DCID)\n", - "\n", - "print(\"Select a place from the list to use for the remainder of the notebook.\")\n", - "selected_place = widgets.Dropdown(options=_PLACE_NAMES, value=_PLACE_NAMES[0])\n", - "display(selected_place)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "kexiYzYvT5-l" - }, - "outputs": [], - "source": [ - "# get the value of the selected place from the drop-down\n", - "selected_place_choice = selected_place.value\n", - "\n", - "# get the place's id on the Data Commons Graph by name\n", - "if type(_PLACE_DCID) == list:\n", - " place_dcid = _PLACE_DCID[_PLACE_NAMES.index(selected_place_choice)]\n", - "else:\n", - " place_dcid = _PLACE_DCID" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "b9tRRw_JT6G5", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 35 - }, - "outputId": "bb208982-dba0-4845-f395-dd117d77d0b2" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "application/vnd.google.colaboratory.intrinsic+json": { - "type": "string" - }, - "text/plain": [ - "'geoId/01'" - ] - }, - "metadata": {}, - "execution_count": 6 - } - ], - "source": [ - "place_dcid" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Xx9lfzi8hJLP" - }, - "source": [ - "### Get all superfund sites (by id) in the selected place\n", - "\n", - "Now, let us get a list of all the superfund sites that are found in the selected place.\n", - "\n", - "For this we use the [`get_places_in`](https://docs.datacommons.org/api/python/place_in.html) API method but set the placeType or the second argument to the function call to be [`SuperfundSite`](https://datacommons.org/browser/SuperfundSite)\n", - "\n", - "---\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "8ceIHqoy9wa3", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "04274c8d-a742-4a4d-b1e8-9337583dd8a3" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "['epaSuperfundSiteId/AL3210020027',\n", - " 'epaSuperfundSiteId/AL6210020008',\n", - " 'epaSuperfundSiteId/AL7210020742',\n", - " 'epaSuperfundSiteId/ALD001221902',\n", - " 'epaSuperfundSiteId/ALD004022448']" - ] - }, - "metadata": {}, - "execution_count": 17 - } - ], - "source": [ - "superfund_sites = dc.get_places_in([place_dcid], 'SuperfundSite')[place_dcid]\n", - "\n", - "# printing the first 5 superfund sites that we fetch from Data Commons\n", - "superfund_sites[:5]" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "o2AOdt78qUg_" - }, - "source": [ - "### Get all superfund sites (by name) in the selected place\n", - "\n", - "Similar to how the place names were looked up for place dcids associated with a geo-level, the same to fetch names of superfund sites, as shown in this snippet of code." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "CsCeNsjFRhzp", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "3f28301f-dbc5-49ba-bc1c-cd0618d9f94d" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Fetching the place will take time based on the summary level and number of place nodes.....Done.\n", - "\n" - ] - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "['Anniston Army Depot (Southeast Industrial Area)',\n", - " 'Alabama Army Ammunition Plant',\n", - " 'Redstone Arsenal (USARMY/NASA)',\n", - " 'Ciba-Geigy Corp. (McIntosh Plant)',\n", - " 'Alabama Plating Company Inc.']" - ] - }, - "metadata": {}, - "execution_count": 18 - } - ], - "source": [ - "# get names for superfund sites in the selected place\n", - "site_names = get_names_for_place_ids(superfund_sites)\n", - "\n", - "# printing the names of first 5 superfund sites that we fetch from Data Commons\n", - "site_names[:5]" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "zxRBNf5s-JzS" - }, - "source": [ - "## Demo 2 - Pick a property for all superfund sites\n", - "\n", - "In this demo example, we continue exploring a superfund site node.\n", - "\n", - "### Select a superfund site" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "8h6ktcK2vQGd", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 66, - "referenced_widgets": [ - "8794d888dc834c1cad49e577a95736a4", - "e1eb411fba2a42b783282223aa7c6ce7", - "d5670d1d5dda4c479d70627d752ba8c1" - ] - }, - "outputId": "1373981f-4c0a-4054-86bc-8353f0405614" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Select a superfund site from the list to use for the remainder of the notebook.\n" - ] - }, - { - "output_type": "display_data", - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "8794d888dc834c1cad49e577a95736a4", - "version_minor": 0, - "version_major": 2 - }, - "text/plain": [ - "Dropdown(options=('Anniston Army Depot (Southeast Industrial Area)', 'Alabama Army Ammunition Plant', 'Redston…" - ] - }, - "metadata": {} - } - ], - "source": [ - "print(\"Select a superfund site from the list to use for the remainder of the notebook.\")\n", - "selected_site = widgets.Dropdown(options=site_names, value=site_names[0])\n", - "display(selected_site)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "LqizAnV5vkCn", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 35 - }, - "outputId": "b117b668-f79d-45ee-c7ed-c18f98ad4a3c" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "application/vnd.google.colaboratory.intrinsic+json": { - "type": "string" - }, - "text/plain": [ - "'epaSuperfundSiteId/AL3210020027'" - ] - }, - "metadata": {}, - "execution_count": 20 - } - ], - "source": [ - "# get the value of the selected place from the drop-down\n", - "selected_site_choice = selected_site.value\n", - "\n", - "# get the place's id on the Data Commons Graph by name\n", - "site_dcid = superfund_sites[site_names.index(selected_site_choice)]\n", - "\n", - "# print the site_dcid\n", - "site_dcid" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Y2xWmEdVv_Hg" - }, - "source": [ - "### Understanding how superfund sites are represented in Data Commons\n", - "\n", - "\n", - "Let us start by getting all the properties a superfund site node has in the Data Commons Graph.\n", - "\n", - "For example the [Tar Creek](https://datacommons.org/browser/epaSuperfundSiteId/OKD980629844) superfund site has the following properties:\n", - "1. 'containedInPlace' - list of places within which the site is contained. Example: Ottawa County, Oklahoma State, US.\n", - "2. 'epaRegionCode' - integer value representing the epaRegionCode for the site. For Tar Creek, the EPA region is 9.\n", - "3. 'epaSuperfundSiteId' - a unique identifier property for each site, which is constructed by prefixing the EPA ID for a superfund site with `epaSuperfundSiteId`. For Tar Creek, this property has the value `epaSuperfundSiteId/OKD980629844`\n", - "4. 'location' - An autogenearted node reference which is generated using the latitude and longitude of the site\n", - "5. 'name' - name of the site\n", - "6. 'typeOf' - indicates the type of the node: `SuperfundSite`\n", - "7. 'provenance' - indicates the domain for the dataset source to generate the triple of (subject, predicate, object) \n", - "\n", - "For any node on the Data Commons Graph, the properties it has can be queried using the [`get_property_labels`](https://docs.datacommons.org/api/python/property_label.html) API method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "dLq0ZVZM-PHr", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "82149662-7f8f-4148-aa3a-72d8b5256a9b" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "{'epaSuperfundSiteId/AL3210020027': ['containedInPlace',\n", - " 'epaRegionCode',\n", - " 'epaSuperfundSiteId',\n", - " 'establishmentOwnership',\n", - " 'location',\n", - " 'name',\n", - " 'provenance',\n", - " 'typeOf']}" - ] - }, - "metadata": {}, - "execution_count": 21 - } - ], - "source": [ - "dc.get_property_labels([site_dcid], out=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "GkDR0tlWvEtQ" - }, - "source": [ - "### Get values of properties of a superfund site\n", - "\n", - "Similar to getting the properties of superfund site, it is also possible to get the values associated with the different properties. \n", - "\n", - "To get the values associated with the properties for the selected superfund site, we use the [`get_property_values`](https://docs.datacommons.org/api/python/property_label.html) API method.\n", - "\n", - "For example, let us see the values for the `containedInPlace` property which gives a list of places within which the superfund site lies in:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "KUeehObcQ49-", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "10057c88-dadc-4fdb-9cd7-7c8a585d25fe" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "{'epaSuperfundSiteId/AL3210020027': ['geoId/01',\n", - " 'geoId/01015',\n", - " 'geoId/0101590099',\n", - " 'geoId/01015981901',\n", - " 'geoId/0103']}" - ] - }, - "metadata": {}, - "execution_count": 22 - } - ], - "source": [ - "dc.get_property_values([site_dcid], prop='containedInPlace', out=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "48YFNK-RcaT8" - }, - "source": [ - "The values of `containedInPlace` is a list of the places ids in Data Commons. We can do another query on the list of places to get their names using the same API, as shown in this example," - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "DI28GsHOCcGL", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "5a12c3d7-f86b-47ee-dea5-20062d0bbb35" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "{'geoId/01': ['Alabama'],\n", - " 'geoId/01015': ['Calhoun County'],\n", - " 'geoId/0101590099': ['Anniston CCD', 'Anniston CCD, Calhoun County, Alabama'],\n", - " 'geoId/01015981901': ['Census Tract 9819.01, Calhoun County, Alabama'],\n", - " 'geoId/0103': ['Congressional District 3 (113th Congress), Alabama']}" - ] - }, - "metadata": {}, - "execution_count": 23 - } - ], - "source": [ - "## get a list of places for containedInPlace\n", - "contained_places = dc.get_property_values([site_dcid], prop='containedInPlace', out=True)[site_dcid]\n", - "dc.get_property_values(contained_places, prop='name', out=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "IYSLPSYy4vgl" - }, - "source": [ - "Similarly, we can see the type of place using the `typeOf` property for the above example" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "QLsiziy744wM", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "25b305fb-dab3-49e6-9f76-37ab84619a4d" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "{'geoId/01': ['AdministrativeArea1', 'State'],\n", - " 'geoId/01015': ['AdministrativeArea2', 'County'],\n", - " 'geoId/0101590099': ['CensusCountyDivision'],\n", - " 'geoId/01015981901': ['CensusTract'],\n", - " 'geoId/0103': ['CongressionalDistrict']}" - ] - }, - "metadata": {}, - "execution_count": 24 - } - ], - "source": [ - "contained_places = dc.get_property_values([site_dcid], prop='containedInPlace', out=True)[site_dcid]\n", - "dc.get_property_values(contained_places, prop='typeOf', out=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "cv5z6QAOw6hE" - }, - "source": [ - "### Loading values into a pandas dataframe\n", - "\n", - "We can extend this example to make a `pandas` dataframe where we populate the different properties of the superfund site nodes as columns for all sites across the US.\n", - "\n", - "The following block of code, serves as a recap to the different API methods that were introduced thus far;" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 548 - }, - "id": "9Wujk2KMxUpP", - "outputId": "d1bbd03c-4871-4b9b-c3ad-b7cfdd3fd503" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "This method will take some time since the API queries depend on number of sites ..................................................................................................................................Done.\n" - ] - }, - { - "output_type": "execute_result", - "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", - "
containedInPlaceepaRegionCodeepaSuperfundSiteIdestablishmentOwnershiplatitudelongitudenameprovenancetypeOf
0[geoId/01, geoId/01015, geoId/0101590099, geoI...4AL3210020027FederalGovernmentOwned33.659439-85.969439Anniston Army Depot (Southeast Industrial Area)dc/999wb02SuperfundSite
1[geoId/01, geoId/0103, geoId/01121, geoId/0112...4AL6210020008FederalGovernmentOwned33.3381-86.3268Alabama Army Ammunition Plantdc/999wb02SuperfundSite
2[geoId/01, geoId/0105, geoId/01089, geoId/0108...4AL7210020742FederalGovernmentOwned34.646944-86.673055Redstone Arsenal (USARMY/NASA)dc/999wb02SuperfundSite
3[geoId/01, geoId/0101, geoId/01129, geoId/0112...4ALD001221902PrivatelyOwned31.279-87.9955Ciba-Geigy Corp. (McIntosh Plant)dc/999wb02SuperfundSite
4[geoId/01, geoId/0106, geoId/01117, geoId/0111...4ALD004022448PrivatelyOwned33.399722-86.405Alabama Plating Company Inc.dc/999wb02SuperfundSite
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " containedInPlace epaRegionCode \\\n", - "0 [geoId/01, geoId/01015, geoId/0101590099, geoI... 4 \n", - "1 [geoId/01, geoId/0103, geoId/01121, geoId/0112... 4 \n", - "2 [geoId/01, geoId/0105, geoId/01089, geoId/0108... 4 \n", - "3 [geoId/01, geoId/0101, geoId/01129, geoId/0112... 4 \n", - "4 [geoId/01, geoId/0106, geoId/01117, geoId/0111... 4 \n", - "\n", - " epaSuperfundSiteId establishmentOwnership latitude longitude \\\n", - "0 AL3210020027 FederalGovernmentOwned 33.659439 -85.969439 \n", - "1 AL6210020008 FederalGovernmentOwned 33.3381 -86.3268 \n", - "2 AL7210020742 FederalGovernmentOwned 34.646944 -86.673055 \n", - "3 ALD001221902 PrivatelyOwned 31.279 -87.9955 \n", - "4 ALD004022448 PrivatelyOwned 33.399722 -86.405 \n", - "\n", - " name provenance typeOf \n", - "0 Anniston Army Depot (Southeast Industrial Area) dc/999wb02 SuperfundSite \n", - "1 Alabama Army Ammunition Plant dc/999wb02 SuperfundSite \n", - "2 Redstone Arsenal (USARMY/NASA) dc/999wb02 SuperfundSite \n", - "3 Ciba-Geigy Corp. (McIntosh Plant) dc/999wb02 SuperfundSite \n", - "4 Alabama Plating Company Inc. dc/999wb02 SuperfundSite " - ] - }, - "metadata": {}, - "execution_count": 25 - } - ], - "source": [ - "def populate_superfund_site_df(site_id_list):\n", - " \"\"\"\n", - " Populate a pandas dataframe based on the list of superfund site ids\n", - " \"\"\"\n", - " superfund_site_df = pd.DataFrame() # initalizing an empty dataframe\n", - " print(\"This method will take some time since the API queries depend on number of sites\", end=\" ...\", flush=True)\n", - " for site in site_id_list:\n", - " # get all the properties associated for a superfund site\n", - " site_props = dc.get_property_labels([site], out=True)[site]\n", - "\n", - " # a dictionary to map a property to its corresponding value\n", - " row_dict = {}\n", - "\n", - " # populate the row_dict map\n", - " for i in range(len(site_props)):\n", - " print(end=\".\")\n", - " # get all the values for each property associated with a superfund site\n", - " prop_val = dc.get_property_values([site], prop=site_props[i], out=True)[site]\n", - " # handle the case where containedInPlace is a list whereas the other props are string values\n", - " if site_props[i] == 'containedInPlace':\n", - " row_dict[site_props[i]] = prop_val\n", - " elif site_props[i] == 'location':\n", - " prop_val = ''.join(prop_val)\n", - " # location is an autogenerated internal node, and we will need an additional API call to get the latitude and longitude of the site\n", - " row_dict['latitude'] = dc.get_property_values([prop_val], prop=\"latitude\", out=True)[prop_val][0]\n", - " row_dict['longitude'] = dc.get_property_values([prop_val], prop=\"longitude\", out=True)[prop_val][0]\n", - " else:\n", - " row_dict[site_props[i]] = ''.join(prop_val)\n", - " # populate the dataframe\n", - " superfund_site_df = superfund_site_df.append(row_dict, ignore_index=True)\n", - " print(\"Done.\", flush=True)\n", - " return superfund_site_df\n", - "\n", - "\n", - "site_df = populate_superfund_site_df(superfund_sites)\n", - "site_df.head(5)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "_IjeSnmpdgZM" - }, - "source": [ - "### Downloading csv files from this colab\n", - "\n", - "We can download different datasets from this colab to a csv file for offline processing. The following snippet of code will select the columns `epaSuperfundSiteId`, `name`, `latitude` and `longitude` to make a csv file which can be downloaded" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 17 - }, - "id": "Uv-IQkJad410", - "outputId": "2813c57d-42f3-43f3-f6b2-e654e71b9a57" - }, - "outputs": [ - { - "output_type": "display_data", - "data": { - "application/javascript": [ - "\n", - " async function download(id, filename, size) {\n", - " if (!google.colab.kernel.accessAllowed) {\n", - " return;\n", - " }\n", - " const div = document.createElement('div');\n", - " const label = document.createElement('label');\n", - " label.textContent = `Downloading \"${filename}\": `;\n", - " div.appendChild(label);\n", - " const progress = document.createElement('progress');\n", - " progress.max = size;\n", - " div.appendChild(progress);\n", - " document.body.appendChild(div);\n", - "\n", - " const buffers = [];\n", - " let downloaded = 0;\n", - "\n", - " const channel = await google.colab.kernel.comms.open(id);\n", - " // Send a message to notify the kernel that we're ready.\n", - " channel.send({})\n", - "\n", - " for await (const message of channel.messages) {\n", - " // Send a message to notify the kernel that we're ready.\n", - " channel.send({})\n", - " if (message.buffers) {\n", - " for (const buffer of message.buffers) {\n", - " buffers.push(buffer);\n", - " downloaded += buffer.byteLength;\n", - " progress.value = downloaded;\n", - " }\n", - " }\n", - " }\n", - " const blob = new Blob(buffers, {type: 'application/binary'});\n", - " const a = document.createElement('a');\n", - " a.href = window.URL.createObjectURL(blob);\n", - " a.download = filename;\n", - " div.appendChild(a);\n", - " a.click();\n", - " div.remove();\n", - " }\n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { - "application/javascript": [ - "download(\"download_cea8e883-1268-411c-9ea8-1c7f18d89ab4\", \"superfund_sites_locations_in_Alabama.csv\", 1056)" - ], - "text/plain": [ - "" - ] - }, - "metadata": {} - } - ], - "source": [ - "# filter `site_df` dataframe to required columns\n", - "required_cols = ['epaSuperfundSiteId', 'name', 'latitude', 'longitude']\n", - "sites_filtered = site_df[required_cols]\n", - "sites_filtered.to_csv(f\"./superfund_sites_locations_in_{selected_place_choice}.csv\", index=False)\n", - "\n", - "# direct download with script\n", - "from google.colab import files\n", - "files.download(f\"./superfund_sites_locations_in_{selected_place_choice}.csv\") " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "CWiXXJjMe1ab" - }, - "source": [ - "> TIP: alternatively, one can download files in a no-code way by clickling on the 📁 icon for viewing the files associated with this colab, and click the `menu` shown with three-dots to `Downlaod` the file.\n", - "\n", - "### Visualizing the superfund sites on an external map (plotly)\n", - "\n", - "Now, that we have extracted all the values associated with a superfund site, we can visualize each superfund site on a map. \n", - "\n", - "Visualizations can be made using different plotting libraries like `plotly`, `bokeh` etc. In this example, we view the location of the superfund sites in the selected place using `plotly`. \n", - "\n", - "> NOTE: The basemap is a low-res world map, please zoom to the appropriate zoom level to view the plots better." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 542 - }, - "id": "cdv6gMAdxK2d", - "outputId": "27b91465-8c88-4181-ff7f-700f90af85af" - }, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "
\n", - "
\n", - "\n", - "" - ] - }, - "metadata": {} - } - ], - "source": [ - "fig = px.scatter_geo(sites_filtered,lat='latitude',lon='longitude', hover_name=\"name\")\n", - "fig.update_layout(title = f'superfund site locations in {selected_place_choice}', title_x=0.5)\n", - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "548WYoBAQNxN" - }, - "source": [ - "The visualization of sites on the world map has a very large spatial area in comparison to the areas of interest, which can either be the area the US or a particular state, county or city in the US. The map data for these places are available in the Data Commons Graph.\n", - "\n", - "### Spatial visualization of superfund sites with map data available in Data Commons\n", - "\n", - "The map data for a place if available, can be queried using the API using the place id as the identifier and the property `geoJsonCoordinates`. \n", - "For example, the map of the US can be queried using the snippet,\n", - "\n", - "```python\n", - "dc.get_property_values(['country/USA'], prop='geoJsonCoordinates', out=True)['country/USA']\n", - "```\n", - "\n", - "> TIP: To check if the map exists for the place selected in the menu, please replace `['country/USA']` with the value of the `place_dcid` variable enclosed within `[]`, something like `[place_dcid]`.\n", - "\n", - "Now, let us view the geoJSON for the current place selected from the drop-down menu earlier." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "kyHSeFIXNhLH" - }, - "outputs": [], - "source": [ - "print(f\"GeoJSON for {selected_place_choice} which has the place id: {place_dcid}\\n\\n\")\n", - "dc.get_property_values([place_dcid], prop='geoJsonCoordinates', out=True)[place_dcid][0]" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "lDalaOEiRq_9" - }, - "source": [ - "What we have obtained is a string representation of the map in GeoJSON format, which we can load for making the base-map to visualize the locations of the suprefund sites.\n", - "\n", - "The objective is to recreate the visualizations of the location of superfund sites but this time instead of using the world map we will be using the map of the selected place.\n", - "\n", - "Before, we visualize the sites, we will need to make a few transformations on the location of the sites to make sure they can be visualized on a map. For this we will be converting the `sites_filtered` dataframe to a `geopandas.GeoDataFrame`. The `geopandas.GeoDataFrame` is similar to a `pandas.DataFrame` instance but has the spatial information stored in the geometry column.\n", - "\n", - "The following snippet of code can be used as a recepie to convert a pandas dataframe with location information to a `GeoDataFrame`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 873 - }, - "id": "naH5LSL1Wnuo", - "outputId": "2f31b578-ac22-4690-9d2e-254f856da073" - }, - "outputs": [ - { - "output_type": "execute_result", - "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", - "
epaSuperfundSiteIdnamelatitudelongitudeCoordinates
0AL3210020027Anniston Army Depot (Southeast Industrial Area)33.659439-85.969439POINT (-85.96944 33.65944)
1AL6210020008Alabama Army Ammunition Plant33.3381-86.3268POINT (-86.32680 33.33810)
2AL7210020742Redstone Arsenal (USARMY/NASA)34.646944-86.673055POINT (-86.67306 34.64694)
3ALD001221902Ciba-Geigy Corp. (McIntosh Plant)31.279-87.9955POINT (-87.99550 31.27900)
4ALD004022448Alabama Plating Company Inc.33.399722-86.405POINT (-86.40500 33.39972)
5ALD007454085T.H. Agriculture & Nutrition Co. (Montgomery P...32.3761-86.3791POINT (-86.37910 32.37610)
6ALD008161176Stauffer Chemical Co. (LeMoyne Plant)30.969439-88.0175POINT (-88.01750 30.96944)
7ALD008188708Olin Corp. (McIntosh Plant)31.263889-87.99445POINT (-87.99445 31.26389)
8ALD031618069Mowbray Engineering Co.31.831669-86.61305POINT (-86.61305 31.83167)
9ALD041906173Interstate Lead Co. (ILCO)33.688889-86.633333POINT (-86.63333 33.68889)
10ALD095688875Stauffer Chemical Co. (Cold Creek Plant)30.975-88.021389POINT (-88.02139 30.97500)
11ALD980728703Perdido Ground Water Contamination31.0125-87.625POINT (-87.62500 31.01250)
12ALD980844385Redwing Carriers Inc. (Saraland)30.808331-88.073061POINT (-88.07306 30.80833)
13ALD981868466American Brass31.325-85.404167POINT (-85.40417 31.32500)
14ALD983166299Triana/Tennessee River34.508888-86.638194POINT (-86.63819 34.50889)
15ALN00041075035th Avenue33.557464-86.799671POINT (-86.79967 33.55746)
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " epaSuperfundSiteId name \\\n", - "0 AL3210020027 Anniston Army Depot (Southeast Industrial Area) \n", - "1 AL6210020008 Alabama Army Ammunition Plant \n", - "2 AL7210020742 Redstone Arsenal (USARMY/NASA) \n", - "3 ALD001221902 Ciba-Geigy Corp. (McIntosh Plant) \n", - "4 ALD004022448 Alabama Plating Company Inc. \n", - "5 ALD007454085 T.H. Agriculture & Nutrition Co. (Montgomery P... \n", - "6 ALD008161176 Stauffer Chemical Co. (LeMoyne Plant) \n", - "7 ALD008188708 Olin Corp. (McIntosh Plant) \n", - "8 ALD031618069 Mowbray Engineering Co. \n", - "9 ALD041906173 Interstate Lead Co. (ILCO) \n", - "10 ALD095688875 Stauffer Chemical Co. (Cold Creek Plant) \n", - "11 ALD980728703 Perdido Ground Water Contamination \n", - "12 ALD980844385 Redwing Carriers Inc. (Saraland) \n", - "13 ALD981868466 American Brass \n", - "14 ALD983166299 Triana/Tennessee River \n", - "15 ALN000410750 35th Avenue \n", - "\n", - " latitude longitude Coordinates \n", - "0 33.659439 -85.969439 POINT (-85.96944 33.65944) \n", - "1 33.3381 -86.3268 POINT (-86.32680 33.33810) \n", - "2 34.646944 -86.673055 POINT (-86.67306 34.64694) \n", - "3 31.279 -87.9955 POINT (-87.99550 31.27900) \n", - "4 33.399722 -86.405 POINT (-86.40500 33.39972) \n", - "5 32.3761 -86.3791 POINT (-86.37910 32.37610) \n", - "6 30.969439 -88.0175 POINT (-88.01750 30.96944) \n", - "7 31.263889 -87.99445 POINT (-87.99445 31.26389) \n", - "8 31.831669 -86.61305 POINT (-86.61305 31.83167) \n", - "9 33.688889 -86.633333 POINT (-86.63333 33.68889) \n", - "10 30.975 -88.021389 POINT (-88.02139 30.97500) \n", - "11 31.0125 -87.625 POINT (-87.62500 31.01250) \n", - "12 30.808331 -88.073061 POINT (-88.07306 30.80833) \n", - "13 31.325 -85.404167 POINT (-85.40417 31.32500) \n", - "14 34.508888 -86.638194 POINT (-86.63819 34.50889) \n", - "15 33.557464 -86.799671 POINT (-86.79967 33.55746) " - ] - }, - "metadata": {}, - "execution_count": 29 - } - ], - "source": [ - "# copy of the pandas dataframe which we will transform into a GeoDataFrame\n", - "gdf = sites_filtered.copy()\n", - "\n", - "# convertying the latitude and longitude columns to a Point geometry \n", - "gdf[\"Coordinates\"] = list(zip(gdf.longitude.astype(float), gdf.latitude.astype(float)))\n", - "gdf[\"Coordinates\"] = gdf[\"Coordinates\"].apply(Point)\n", - "gdf.drop(columns=['latitude', 'longitude']) # deleting redudance\n", - "\n", - "# converting to GeoDataFrame\n", - "gdf = gpd.GeoDataFrame(gdf, geometry=\"Coordinates\")\n", - "gdf" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "zlOvnPKla6ve" - }, - "source": [ - "With the `GeoDataFrame` now ready, we shall visualize the location of the sites using code snippet below:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 499 - }, - "id": "VYOPuhVeltN3", - "outputId": "50ab308c-d356-4558-d9ab-0aa07ce8bd9c" - }, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "# Get the geojson for the selected place from the Data Commons Graph\n", - "place_map = dc.get_property_values([place_dcid], prop='geoJsonCoordinates', out=True)[place_dcid][0]\n", - "place_map = json.loads(place_map)\n", - "\n", - "# set the colors and initialize the empty figure object for drawing the map\n", - "BLUE = '#6699cc'\n", - "fig = plt.figure(figsize=(12, 8)) \n", - "ax = fig.gca() \n", - "\n", - "# Draw the geojson fetched from the Data Commons Graph\n", - "ax.add_patch(PolygonPatch(place_map, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2 ))\n", - "ax.axis('scaled')\n", - "\n", - "# Add the locations of the superfund sites from the GeoDataFrame\n", - "gdf.plot(ax=ax, color='red', alpha = 0.5)\n", - "plt.title (f'superfund site locations in {selected_place_choice}')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Demo 3 - Lookup timeseries for a specific superfund site\n", - "\n", - "In this demo example, we will dive into accessing StatVarObservations for Statistical Variables related to superfund sites.\n", - "\n", - "Currently, the Data Commons graph has the following statistics about superfund sites." - ], - "metadata": { - "id": "jZZ5u5_CjXGM" - } - }, - { - "cell_type": "markdown", - "source": [ - "### For all superfund sites on the NPL\n", - "\n", - "|Statistical Variable|Data Source|Status|\n", - "|-------|-----------|------|\n", - "|[CRSI Score](https://datacommons.org/browser/CrsiScore_SuperfundSite)|[Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location)|Available|\n", - "|[Natural Hazard Exposure Score](https://datacommons.org/browser/NaturalHazardExposureScore_SuperfundSite)|[Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location)|Available|\n", - "|[Natural Hazard Risk Score](https://datacommons.org/browser/NaturalHazardRiskScore_SuperfundSite)|[Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location)|Available|\n", - "|[`Natural Hazard Risk Score by `](https://datacommons.org/browser/NaturalHazardRiskScore_SuperfundSite_WildfireEvent)|[Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location)|Available|" - ], - "metadata": { - "id": "SoZNqx5MTQKy" - } - }, - { - "cell_type": "markdown", - "source": [ - "### Statistics available for Tar Creek superfund site\n", - "\n", - "Statistics for the Tar Creek superfund site are obtained the [6th five-year review report](https://semspub.epa.gov/work/06/100021610.pdf).This report measures concentration of contaminants in GroundWater across sampling wells withing and across the site. The concentration of contaminants are presented as [Total concentration](https://datacommons.org/browser/Concentration_Iron_BodyOfWater_GroundWater) and [Dissolved concentration](https://datacommons.org/browser/Concentration_DissolvedContaminant_Iron_BodyOfWater_GroundWater) statistical variables for:\n", - "- [Iron](https://datacommons.org/browser/Concentration_Iron_BodyOfWater_GroundWater)\n", - "- [Zinc](https://datacommons.org/browser/Concentration_Zinc_BodyOfWater_GroundWater)\n", - "- [Lead](https://datacommons.org/browser/Concentration_Lead_BodyOfWater_GroundWater)\n", - "- [Cadmium](https://datacommons.org/browser/Concentration_Cadmium_BodyOfWater_GroundWater)\n", - "- [Sulfate](https://datacommons.org/browser/Concentration_Sulfate_BodyOfWater_GroundWater)\n", - "\n", - "The report also has\n", - "measurements on water properties in GroundWaterlike:\n", - "- [hardness](https://datacommons.org/browser/WaterHardness_BodyOfWater_GroundWater)\n", - "- [pH](https://datacommons.org/browser/otentialOfHydrogen_BodyOfWater_GroundWater)\n", - "- [dissolved oxygen](https://datacommons.org/browser/DissolvedOxygen_BodyOfWater_GroundWater)\n", - "- [electrical conductivity](https://datacommons.org/browser/ElectricalConductivity_BodyOfWater_GroundWater)\n", - "- [temperature](https://datacommons.org/browser/Temperature_BodyOfWater_GroundWater)\n", - "\n", - "The statistics are available for 4 sampling wells across Tar Creek namely: [Quapaw #4](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Quapaw_4), [Commerce #5](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Commerce_5), [Picher #5](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Picher_5-MW) and [Picher #7](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Picher_7-MW)\n", - "\n", - "### Accessing and Visualizing Statistics for Tar Creek" - ], - "metadata": { - "id": "uzCLbAGIkplu" - } - }, - { - "cell_type": "code", - "source": [ - "## get a list of measurement sites that are in and around Tar Creek\n", - "tar_creek = 'epaSuperfundSiteId/OKD980629844'\n", - "measurement_sites = dc.get_places_in([tar_creek], 'SuperfundMeasurementSite')[tar_creek]\n", - "measurement_sites" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "50rGzwbhnCtt", - "outputId": "33d1270a-2986-4765-8720-6af0140348a7" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "['epaSuperfundMeasurementSite/OKD980629844/Commerce_5',\n", - " 'epaSuperfundMeasurementSite/OKD980629844/Picher_5-MW',\n", - " 'epaSuperfundMeasurementSite/OKD980629844/Picher_7-MW',\n", - " 'epaSuperfundMeasurementSite/OKD980629844/Quapaw_4']" - ] - }, - "metadata": {}, - "execution_count": 31 - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "List of statistical variables that are available for a measurement site can be obtained on the Graph Browser page for measurement sites ([example](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Picher_7-MW))." - ], - "metadata": { - "id": "dZWRPC3bobV3" - } - }, - { - "cell_type": "code", - "source": [ - "# List of statistics that are available for each measurement site\n", - "measurement_sites_statvars_list = ['Concentration_Sulfate_BodyOfWater_GroundWater',\n", - " 'Concentration_Lead_BodyOfWater_GroundWater',\n", - " 'Concentration_Cadmium_BodyOfWater_GroundWater',\n", - " 'Concentration_DissolvedContaminant_Cadmium_BodyOfWater_GroundWater',\n", - " 'Concentration_DissolvedContaminant_Iron_BodyOfWater_GroundWater',\n", - " 'Concentration_DissolvedContaminant_Lead_BodyOfWater_GroundWater',\n", - " 'Concentration_DissolvedContaminant_Zinc_BodyOfWater_GroundWater',\n", - " 'Concentration_Iron_BodyOfWater_GroundWater',\n", - " 'DissolvedOxygen_BodyOfWater_GroundWater',\n", - " 'Concentration_Zinc_BodyOfWater_GroundWater',\n", - " 'PotentialOfHydrogen_BodyOfWater_GroundWater',\n", - " 'ElectricalConductivity_BodyOfWater_GroundWater',\n", - " 'Temperature_BodyOfWater_GroundWater',\n", - " 'WaterHardness_BodyOfWater_GroundWater']" - ], - "metadata": { - "id": "5X6mRwAaoya_" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Now, we will be to query the Data Commons graph for all statistics available for a particular sampling well and a particular statistical variable.\n", - "\n", - "Please note that statistics for Tar Creek are time-series of observed characteristics of contaminated ground water and the concentration of different contaminants. The following code snippet uses the [`build_time_series_dataframe`](https://docs.datacommons.org/api/pandas/time_series_dataframe.html) API method to show one statistical variables available from the above list for the sampling well called [`Quapaw #4`](https://datacommons.org/browser/epaSuperfundMeasurementSite/OKD980629844/Quapaw_4) near Tar Creek." - ], - "metadata": { - "id": "vGx2hgEeoyiT" - } - }, - { - "cell_type": "code", - "source": [ - "tar_creek_contamiantion_statvar_df = dpd.build_time_series_dataframe(['epaSuperfundMeasurementSite/OKD980629844/Quapaw_4'], measurement_sites_statvars_list[0])\n", - "\n", - "tar_creek_contamiantion_statvar_df.head(5)" - ], - "metadata": { - "id": "bkCWV7Jioyty", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 193 - }, - "outputId": "cf1b2c07-d3a3-41a5-85ff-e4bcc7bf22c5" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "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", - "
2003-11-062004-04-282004-10-132005-04-262005-10-182006-04-122006-11-092007-05-092007-10-242008-04-222010-03-252010-11-112011-11-032012-11-082013-10-312017-03-142018-04-252019-04-30
place
epaSuperfundMeasurementSite/OKD980629844/Quapaw_411.111.812.813.516.415.22012.614.313.214.815.714.315.714.316.318.815.6
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " 2003-11-06 2004-04-28 \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 11.1 11.8 \n", - "\n", - " 2004-10-13 2005-04-26 \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 12.8 13.5 \n", - "\n", - " 2005-10-18 2006-04-12 \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 16.4 15.2 \n", - "\n", - " 2006-11-09 2007-05-09 \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 20 12.6 \n", - "\n", - " 2007-10-24 2008-04-22 \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 14.3 13.2 \n", - "\n", - " 2010-03-25 2010-11-11 \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 14.8 15.7 \n", - "\n", - " 2011-11-03 2012-11-08 \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 14.3 15.7 \n", - "\n", - " 2013-10-31 2017-03-14 \\\n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 14.3 16.3 \n", - "\n", - " 2018-04-25 2019-04-30 \n", - "place \n", - "epaSuperfundMeasurementSite/OKD980629844/Quapaw_4 18.8 15.6 " - ] - }, - "metadata": {}, - "execution_count": 33 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "7u8ApO7RybLd" - }, - "source": [ - "### Accessing and visualizing statistics available for all superfund sites in Data Commons\n", - "\n", - "Next, we shall use the list of statistical variables for a superfund site, we can now make visualizations of the different StatVarObservations that are made for superfund sites.\n", - "\n", - "We fetch the time-series of StatVarObservations using the [`pandas`](https://docs.datacommons.org/api/pandas) API method [`build_time_series_dataframe`](https://docs.datacommons.org/api/pandas/time_series_dataframe.html) which returns a pandas datafarme of the time-series that are available for a particular place and a particular statistical variable." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "referenced_widgets": [ - "9cf7730acc784ae48e5f17c86e92a261", - "518586f83b35495aa1215c5dbd1cd79d", - "fb9e80f4aea842e390f3341a488d14d8" - ], - "base_uri": "https://localhost:8080/", - "height": 66 - }, - "id": "r5kDa_y4aQga", - "outputId": "f42ab9f7-fbc7-44c7-f19f-1e0af943a304" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Select a statistical variable\n" - ] - }, - { - "output_type": "display_data", - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "9cf7730acc784ae48e5f17c86e92a261", - "version_minor": 0, - "version_major": 2 - }, - "text/plain": [ - "Dropdown(options=('CrsiScore_SuperfundSite', 'NaturalHazardExposureScore_SuperfundSite', 'NaturalHazardRiskSco…" - ] - }, - "metadata": {} - } - ], - "source": [ - "print(\"Select a statistical variable\")\n", - "\n", - "# list of statistical variables that we shall use for this notebook\n", - "stat_var_list = [\n", - " 'CrsiScore_SuperfundSite',\n", - " 'NaturalHazardExposureScore_SuperfundSite',\n", - " 'NaturalHazardRiskScore_SuperfundSite',\n", - " 'NaturalHazardRiskScore_SuperfundSite_CoastalFloodEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_DroughtEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_FloodEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_HailEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_HighWindEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_HurricaneEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_LandslideEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_TornadoEvent',\n", - " 'NaturalHazardRiskScore_SuperfundSite_WildfireEvent'\n", - " ]\n", - "# Populating the select dropdown\n", - "stat_var_select = widgets.Dropdown(options=stat_var_list, value=stat_var_list[0])\n", - "display(stat_var_select)" - ] - }, - { - "cell_type": "code", - "source": [ - "stat_var_list" - ], - "metadata": { - "id": "cKX-ign5TEhk" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 112 - }, - "id": "AK0kS14J-UOZ", - "outputId": "c1e2c8db-fb19-4a3e-ecfe-24ff32462b09" - }, - "outputs": [ - { - "output_type": "execute_result", - "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", - "
2021
place
epaSuperfundSiteId/AL32100200270.327246
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " 2021\n", - "place \n", - "epaSuperfundSiteId/AL3210020027 0.327246" - ] - }, - "metadata": {}, - "execution_count": 36 - } - ], - "source": [ - "chosen_statvar = stat_var_select.value\n", - "site_statvar_df = dpd.build_time_series_dataframe([site_dcid], chosen_statvar)\n", - "site_statvar_df.head(5)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "iXBgV3SV2G8e" - }, - "source": [ - "#### Getting statistics to a `pandas` DataFrame\n", - "Using the same `build_time_series_dataframe` API method, get the StatVarObservations for the selected statistical variable across all superfund sites." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 238 - }, - "id": "Kg7fHa4O2EAM", - "outputId": "bc05727f-0ebc-4ace-c691-55658a1dc5d4" - }, - "outputs": [ - { - "output_type": "execute_result", - "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", - "
2021
place
epaSuperfundSiteId/AL32100200270.327246
epaSuperfundSiteId/AL62100200080.600902
epaSuperfundSiteId/AL72100207420.610158
epaSuperfundSiteId/ALD0012219020.962115
epaSuperfundSiteId/ALD0040224480.951963
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " 2021\n", - "place \n", - "epaSuperfundSiteId/AL3210020027 0.327246\n", - "epaSuperfundSiteId/AL6210020008 0.600902\n", - "epaSuperfundSiteId/AL7210020742 0.610158\n", - "epaSuperfundSiteId/ALD001221902 0.962115\n", - "epaSuperfundSiteId/ALD004022448 0.951963" - ] - }, - "metadata": {}, - "execution_count": 37 - } - ], - "source": [ - "site_statvar_df = dpd.build_time_series_dataframe(superfund_sites, chosen_statvar)\n", - "site_statvar_df.head(5)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "1Jh7IU9z2iEK" - }, - "source": [ - "In both examples, the dataframe is still not human readable, let us add the name to the superfund sites. To add the names to the dataframe, we will query the superfund site's node and extract the `name` property using the `get_property_values` API method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 238 - }, - "id": "jV8qIKOlTv2g", - "outputId": "6cbe00c4-5e87-4463-e1a3-31d957b40d28" - }, - "outputs": [ - { - "output_type": "execute_result", - "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", - "
2021name
place
epaSuperfundSiteId/AL32100200270.327246Anniston Army Depot (Southeast Industrial Area)
epaSuperfundSiteId/AL62100200080.600902Alabama Army Ammunition Plant
epaSuperfundSiteId/AL72100207420.610158Redstone Arsenal (USARMY/NASA)
epaSuperfundSiteId/ALD0012219020.962115Ciba-Geigy Corp. (McIntosh Plant)
epaSuperfundSiteId/ALD0040224480.951963Alabama Plating Company Inc.
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " 2021 \\\n", - "place \n", - "epaSuperfundSiteId/AL3210020027 0.327246 \n", - "epaSuperfundSiteId/AL6210020008 0.600902 \n", - "epaSuperfundSiteId/AL7210020742 0.610158 \n", - "epaSuperfundSiteId/ALD001221902 0.962115 \n", - "epaSuperfundSiteId/ALD004022448 0.951963 \n", - "\n", - " name \n", - "place \n", - "epaSuperfundSiteId/AL3210020027 Anniston Army Depot (Southeast Industrial Area) \n", - "epaSuperfundSiteId/AL6210020008 Alabama Army Ammunition Plant \n", - "epaSuperfundSiteId/AL7210020742 Redstone Arsenal (USARMY/NASA) \n", - "epaSuperfundSiteId/ALD001221902 Ciba-Geigy Corp. (McIntosh Plant) \n", - "epaSuperfundSiteId/ALD004022448 Alabama Plating Company Inc. " - ] - }, - "metadata": {}, - "execution_count": 38 - } - ], - "source": [ - "def add_name_col(df):\n", - " # Add a new column called name, where each value is the name for the place dcid in the index.\n", - " df['name'] = df.index.map(dc.get_property_values(df.index, 'name'))\n", - " \n", - " # Keep just the first name, instead of a list of all names.\n", - " df['name'] = df['name'].str[0]\n", - "\n", - "add_name_col(site_statvar_df)\n", - "site_statvar_df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "8B6hna663EJe" - }, - "source": [ - "#### Visualizing StatVarObservations for superfund site statistics\n", - "Now, let us try visualizing the StatVarObservations.\n", - "\n", - "\n", - "The statistical variables that are currently available on superfund sites across the country is from the [Intersection of Natural Hazard Vulnerability and Superfund Site Location](https://catalog.data.gov/dataset/intersection-of-natural-hazard-vulnerability-and-superfund-site-location) paper and has only one data-point. \n", - "\n", - "Hence, we visualize the sites with highest natural hazard vulnerability as a bar chart." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 367 - }, - "id": "0iSaf-uqT0M5", - "outputId": "9c9f323a-d421-436a-bf97-cc7a4d10267d" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "" - ] - }, - "metadata": {}, - "execution_count": 39 - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "# sort the dataframe by the value column in descending order\n", - "site_vulnerability = site_statvar_df.sort_values(by='2021', ascending=False)\n", - "\n", - "# set the threshold on the number sites to visualize - since there are 1,300 odd superfund sites\n", - "num_sites = 10\n", - "site_vulnerability = site_vulnerability[:num_sites]\n", - "site_vulnerability.plot(kind='bar', x='name', y='2021', figsize=(25,5))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "a8MLVfg84mV-" - }, - "source": [ - "If two statistical variables need to be compared together for correlations for a particular place, please consider using the [`build_multivariate_dataframe`](https://docs.datacommons.org/api/pandas/multivariate_dataframe.html) API method.\n", - "\n", - "For example, we shall compare the CRSI score (stat_var_id: `CrsiScore_SuperfundSite`) with the natural hazard risk score (stat_var_id: `NaturalHazardRiskScore_SuperfundSite`) across superfund sites in the US.\n", - "\n", - "> The [Climate Resilience Screening Index](https://www.iisd.org/system/files/meterial/US%20EPA%20CSIN%20webinar%203.pdf) (CRSI) score which measures the resilience of socio-ecological systems, (superfund sites) in the context of governance and risk to natural hazard events.\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 488 - }, - "id": "xFF1ZuOx6iCQ", - "outputId": "25af47d9-e0db-47c1-a5b8-8ada7dce3d29" - }, - "outputs": [ - { - "output_type": "execute_result", - "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", - "
NaturalHazardRiskScore_SuperfundSiteCrsiScore_SuperfundSite
place
epaSuperfundSiteId/AL321002002766.9450.327246
epaSuperfundSiteId/AL621002000830.3320.600902
epaSuperfundSiteId/AL721002074280.3830.610158
epaSuperfundSiteId/ALD00122190235.1740.962115
epaSuperfundSiteId/ALD00402244853.1490.951963
epaSuperfundSiteId/ALD00745408551.8941.011869
epaSuperfundSiteId/ALD00816117653.5650.750292
epaSuperfundSiteId/ALD00818870835.1740.962115
epaSuperfundSiteId/ALD04190617391.4560.394343
epaSuperfundSiteId/ALD09568887553.5650.750292
epaSuperfundSiteId/ALD98186846622.6230.458104
epaSuperfundSiteId/ALD98316629942.5340.827992
epaSuperfundSiteId/ALN00041075091.4560.394343
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " NaturalHazardRiskScore_SuperfundSite \\\n", - "place \n", - "epaSuperfundSiteId/AL3210020027 66.945 \n", - "epaSuperfundSiteId/AL6210020008 30.332 \n", - "epaSuperfundSiteId/AL7210020742 80.383 \n", - "epaSuperfundSiteId/ALD001221902 35.174 \n", - "epaSuperfundSiteId/ALD004022448 53.149 \n", - "epaSuperfundSiteId/ALD007454085 51.894 \n", - "epaSuperfundSiteId/ALD008161176 53.565 \n", - "epaSuperfundSiteId/ALD008188708 35.174 \n", - "epaSuperfundSiteId/ALD041906173 91.456 \n", - "epaSuperfundSiteId/ALD095688875 53.565 \n", - "epaSuperfundSiteId/ALD981868466 22.623 \n", - "epaSuperfundSiteId/ALD983166299 42.534 \n", - "epaSuperfundSiteId/ALN000410750 91.456 \n", - "\n", - " CrsiScore_SuperfundSite \n", - "place \n", - "epaSuperfundSiteId/AL3210020027 0.327246 \n", - "epaSuperfundSiteId/AL6210020008 0.600902 \n", - "epaSuperfundSiteId/AL7210020742 0.610158 \n", - "epaSuperfundSiteId/ALD001221902 0.962115 \n", - "epaSuperfundSiteId/ALD004022448 0.951963 \n", - "epaSuperfundSiteId/ALD007454085 1.011869 \n", - "epaSuperfundSiteId/ALD008161176 0.750292 \n", - "epaSuperfundSiteId/ALD008188708 0.962115 \n", - "epaSuperfundSiteId/ALD041906173 0.394343 \n", - "epaSuperfundSiteId/ALD095688875 0.750292 \n", - "epaSuperfundSiteId/ALD981868466 0.458104 \n", - "epaSuperfundSiteId/ALD983166299 0.827992 \n", - "epaSuperfundSiteId/ALN000410750 0.394343 " - ] - }, - "metadata": {}, - "execution_count": 40 - } - ], - "source": [ - "multi_statvar_df = dpd.build_multivariate_dataframe(superfund_sites,[\"CrsiScore_SuperfundSite\", \"NaturalHazardRiskScore_SuperfundSite\"])\n", - "multi_statvar_df" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "JnGHbrqy7Uv5" - }, - "source": [ - "For the comparison, we shall make a scatter plot across the two statistical variables namely: \"CrsiScore_SuperfundSite\" and \"NaturalHazardRiskScore_SuperfundSite\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 514 - }, - "id": "05oEIsh27J55", - "outputId": "47e8eb3a-409a-4be6-9281-e138c8c1451d" - }, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "# Scatter plot the information\n", - "multi_statvar_df.plot(kind='scatter', x='NaturalHazardRiskScore_SuperfundSite', y='CrsiScore_SuperfundSite', figsize=(12, 8))\n", - "plt.title(f\"Natural Hazard Risk Score vs CRSI score for sites in {selected_place_choice}\")\n", - "plt.xlabel(\"NaturalHazardRiskScore_SuperfundSite\")\n", - "plt.ylabel(\"CrsiScore_SuperfundSite\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Bdada1GF-VgS" - }, - "source": [ - "## Demo 4 - Comparing superfund statistics with other statistics in Data Commons\n", - "\n", - "This demo example is probably the most interesting one since, we will compare superfund statistics with other statistics in Data Commons. \n", - "\n", - "In this example, we will compare the `CRSI score` of a superfund site and the impact seen on the tribal population living in cities in and around the site. The tribal population statistics come from the US census and the CRSI score is the same statistical variable we used in the previous examples.\n", - "\n", - "This is advantage which Data Commons offers, where it is easy to make such cross-domain, cross-place, cross-statistics analysis.\n", - "\n", - "\n", - "Before making the visualization let us first take a look at how the dataset will look and what will the pre-processing that is required" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 238 - }, - "id": "DFNDoYxE_Dpj", - "outputId": "0c3d67a0-6445-41ba-bef3-1650c6d320b7" - }, - "outputs": [ - { - "output_type": "execute_result", - "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", - "
2021
place
epaSuperfundSiteId/AL32100200270.327246
epaSuperfundSiteId/AL62100200080.600902
epaSuperfundSiteId/AL72100207420.610158
epaSuperfundSiteId/ALD0012219020.962115
epaSuperfundSiteId/ALD0040224480.951963
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " 2021\n", - "place \n", - "epaSuperfundSiteId/AL3210020027 0.327246\n", - "epaSuperfundSiteId/AL6210020008 0.600902\n", - "epaSuperfundSiteId/AL7210020742 0.610158\n", - "epaSuperfundSiteId/ALD001221902 0.962115\n", - "epaSuperfundSiteId/ALD004022448 0.951963" - ] - }, - "metadata": {}, - "execution_count": 42 - } - ], - "source": [ - "superfund_sites = dc.get_places_in([place_dcid], 'SuperfundSite')[place_dcid]\n", - "dpd.build_time_series_dataframe(superfund_sites, 'CrsiScore_SuperfundSite').head(5)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 238 - }, - "id": "RKVLyWgR_0R7", - "outputId": "0d82a3a7-b8eb-4ceb-a359-fb680b18033e" - }, - "outputs": [ - { - "output_type": "execute_result", - "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", - "
200020102020
place
geoId/0100100NaN0.00.0
geoId/01001240.02.05.0
geoId/010046020.023.031.0
geoId/01004841.00.09.0
geoId/01006760.00.00.0
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " 2000 2010 2020\n", - "place \n", - "geoId/0100100 NaN 0.0 0.0\n", - "geoId/0100124 0.0 2.0 5.0\n", - "geoId/0100460 20.0 23.0 31.0\n", - "geoId/0100484 1.0 0.0 9.0\n", - "geoId/0100676 0.0 0.0 0.0" - ] - }, - "metadata": {}, - "execution_count": 43 - } - ], - "source": [ - "cities = dpd.get_places_in([place_dcid], 'City')[place_dcid]\n", - "dpd.build_time_series_dataframe(cities, 'Count_Person_AmericanIndianAndAlaskaNativeAlone').head(5)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "NEaZRTT6BaXn" - }, - "source": [ - "From the two dataframes, it is clear that we have statistics from different years and the number of places across the two dataframes are not consistent.\n", - "\n", - "Let's get started....\n", - "\n", - "#### Understanding the hierarchy in which places are nested in Data Commons\n", - "\n", - "For getting the city which has a superfund site, we will be using the `site_df` dataframe, which we created in the begining. This dataframe has a column called `containedInPlace` which is a list.\n", - "\n", - "An example of the `containedInPlace` list looks as follows:\n", - "```python\n", - "['geoId/01',\n", - " 'geoId/01015',\n", - " 'geoId/0101590099',\n", - " 'geoId/01015981901',\n", - " 'geoId/0103']\n", - "```\n", - "The list essentially lists the place ids based on the administrative area division. An example of getting the `typeOf` places for a list of place ids is shown as an example in the beginning sections of the notebook.\n", - "\n", - "In this case, the interpretation of the list is done as follows:\n", - "```python\n", - "['geoId/01', #state's place_id\n", - " 'geoId/01015', # county's place_id\n", - " 'geoId/0101590099', # city's place_id\n", - " 'geoId/01015981901', # census tract's place_id\n", - " 'geoId/0103' # congressional district's place_id\n", - " ]\n", - "```" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Preparing the datasets for comparison\n", - "From this list we pick the third element which corresponds to the city's place_id.\n", - "\n", - "> The structure of this list is consistent at the high-level some sites have finer geo-level like Zip Code Tabulation Area (ZCTA) codes.\n", - "\n", - "First let us make a dataframe based off the `site_df` dataframe. To this dataframe, we will add different statistics which we will visualize.\n", - "\n", - "The recipe we plan to do is the following:\n", - "1. From the `site_df` dataframe, create a new dataframe where the superfund sites are located in a city.\n", - "2. To this dataframe, we shall merge the StatVarObservations for the `CrsiScore_SuperfundSite` statistical variable based on the superfund site id\n", - "3. To the merged dataframe, we shall do another merge but this time with StatVarObservations for the `Count_Person_AmericanIndianAndAlaskaNativeAlone` statistical variable based on the `containedInPlace` city id\n", - "4. Visualize!" - ], - "metadata": { - "id": "zr4BOZ7d10Ia" - } - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 629 - }, - "id": "QH6Hlo2MCUaU", - "outputId": "a82a0b0f-c389-4018-9ce3-b5d66a45de0a" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stderr", - "text": [ - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:9: SettingWithCopyWarning:\n", - "\n", - "\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", - "\n", - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:10: SettingWithCopyWarning:\n", - "\n", - "\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", - "\n" - ] - }, - { - "output_type": "execute_result", - "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", - "
epaSuperfundSiteIdcontainedInPlace
1epaSuperfundSiteId/AL6210020008geoId/0114464
4epaSuperfundSiteId/ALD004022448geoId/0179008
5epaSuperfundSiteId/ALD007454085geoId/0151000
8epaSuperfundSiteId/ALD031618069geoId/0131912
9epaSuperfundSiteId/ALD041906173geoId/0115256
11epaSuperfundSiteId/ALD980728703geoId/0159064
12epaSuperfundSiteId/ALD980844385geoId/0168160
13epaSuperfundSiteId/ALD981868466geoId/0133856
15epaSuperfundSiteId/ALN000410750geoId/0107000
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " epaSuperfundSiteId containedInPlace\n", - "1 epaSuperfundSiteId/AL6210020008 geoId/0114464\n", - "4 epaSuperfundSiteId/ALD004022448 geoId/0179008\n", - "5 epaSuperfundSiteId/ALD007454085 geoId/0151000\n", - "8 epaSuperfundSiteId/ALD031618069 geoId/0131912\n", - "9 epaSuperfundSiteId/ALD041906173 geoId/0115256\n", - "11 epaSuperfundSiteId/ALD980728703 geoId/0159064\n", - "12 epaSuperfundSiteId/ALD980844385 geoId/0168160\n", - "13 epaSuperfundSiteId/ALD981868466 geoId/0133856\n", - "15 epaSuperfundSiteId/ALN000410750 geoId/0107000" - ] - }, - "metadata": {}, - "execution_count": 44 - } - ], - "source": [ - "## Step 1: Making dataframe with the superfund site id and the id of the city where the site is present\n", - "def get_city_id(elem_list, fips_code_len=7):\n", - " for e in elem_list:\n", - " if len(e.split('/')[1]) == fips_code_len:\n", - " return e\n", - " return ''\n", - "\n", - "site_place_df = site_df[['epaSuperfundSiteId', 'containedInPlace']]\n", - "site_place_df['epaSuperfundSiteId'] = site_place_df['epaSuperfundSiteId'].apply(lambda elem: 'epaSuperfundSiteId/' + elem)\n", - "site_place_df['containedInPlace'] = site_place_df['containedInPlace'].apply(get_city_id)\n", - "site_place_df = site_place_df[site_place_df['containedInPlace'] != '']\n", - "site_place_df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 332 - }, - "id": "POaCwvhXGBBr", - "outputId": "8ab2dff3-40b5-40bc-c82e-9d880db830d4" - }, - "outputs": [ - { - "output_type": "execute_result", - "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", - "
epaSuperfundSiteIdcontainedInPlaceCrsiScore_SuperfundSite200020102020
0epaSuperfundSiteId/AL6210020008geoId/01144640.60090216.021.08
1epaSuperfundSiteId/ALD004022448geoId/01790080.95196314.07.010
2epaSuperfundSiteId/ALD007454085geoId/01510001.011869500.0512.0713
3epaSuperfundSiteId/ALD031618069geoId/0131912NaN20.04.09
4epaSuperfundSiteId/ALD041906173geoId/01152560.39434315.029.038
5epaSuperfundSiteId/ALD980728703geoId/0159064NaNNaNNaN21
6epaSuperfundSiteId/ALD980844385geoId/0168160NaN69.0104.0228
7epaSuperfundSiteId/ALD981868466geoId/01338560.4581047.018.06
8epaSuperfundSiteId/ALN000410750geoId/01070000.394343422.0445.0755
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " epaSuperfundSiteId containedInPlace CrsiScore_SuperfundSite \\\n", - "0 epaSuperfundSiteId/AL6210020008 geoId/0114464 0.600902 \n", - "1 epaSuperfundSiteId/ALD004022448 geoId/0179008 0.951963 \n", - "2 epaSuperfundSiteId/ALD007454085 geoId/0151000 1.011869 \n", - "3 epaSuperfundSiteId/ALD031618069 geoId/0131912 NaN \n", - "4 epaSuperfundSiteId/ALD041906173 geoId/0115256 0.394343 \n", - "5 epaSuperfundSiteId/ALD980728703 geoId/0159064 NaN \n", - "6 epaSuperfundSiteId/ALD980844385 geoId/0168160 NaN \n", - "7 epaSuperfundSiteId/ALD981868466 geoId/0133856 0.458104 \n", - "8 epaSuperfundSiteId/ALN000410750 geoId/0107000 0.394343 \n", - "\n", - " 2000 2010 2020 \n", - "0 16.0 21.0 8 \n", - "1 14.0 7.0 10 \n", - "2 500.0 512.0 713 \n", - "3 20.0 4.0 9 \n", - "4 15.0 29.0 38 \n", - "5 NaN NaN 21 \n", - "6 69.0 104.0 228 \n", - "7 7.0 18.0 6 \n", - "8 422.0 445.0 755 " - ] - }, - "metadata": {}, - "execution_count": 45 - } - ], - "source": [ - "# Step 2: Merging the StatVarObservations for the `CrsiScore_SuperfundSite` statistical variable to `site_data_df`\n", - "site_data_df = site_place_df.copy()\n", - "# Get the list of superfundsites that are contained in a city\n", - "contained_site_list = site_data_df['epaSuperfundSiteId'].values.tolist()\n", - "# with the list of superfund sites' place_ids query Data Commons to stats for CrsiScore_SuperfundSite statistical variable\n", - "superfund_data_df = dpd.build_time_series_dataframe(contained_site_list, 'CrsiScore_SuperfundSite')\n", - "# rename the column to make it readable\n", - "superfund_data_df.columns = ['CrsiScore_SuperfundSite']\n", - "# merge\n", - "site_data_df = pd.merge(site_data_df, superfund_data_df, left_on='epaSuperfundSiteId', right_on='place', how='left')\n", - "\n", - "\n", - "# Step 3: Merging the StatVarObservations for the `Count_Person_AmericanIndianAndAlaskaNativeAlone` statistical variable to `site_data_df`\n", - "# Get the list of cities that have superfund sites\n", - "contained_cities_list = site_data_df['containedInPlace'].values.tolist()\n", - "# with the list of cities' place_ids query Data Commons to stats for Count_Person_AmericanIndianAndAlaskaNativeAlone statistical variable\n", - "demographic_data_df = dpd.build_time_series_dataframe(contained_cities_list, 'Count_Person_AmericanIndianAndAlaskaNativeAlone')\n", - "# merge\n", - "site_data_df = pd.merge(site_data_df, demographic_data_df, left_on='containedInPlace', right_on='place', how='left')\n", - "site_data_df" - ] - }, - { - "cell_type": "markdown", - "source": [ - "#### Example to create custom data aggregations and normalizations\n", - "\n", - "We have the dataset where the superfund related statistic ranges from 0-1 but the count of the American Indian and Alaska Native population is an absolute value. We will need to normalize the count of the American Indian and Alaska Native population with the total population in the selected place. \n", - "\n", - "This can done easily with the [`build_multivaritate_dataframe`](https://docs.datacommons.org/api/pandas/multivariate_dataframe.html) API method as shown in the following code snippet." - ], - "metadata": { - "id": "uWifdZFthuXI" - } - }, - { - "cell_type": "code", - "source": [ - "# api call to get the total population and population of the American Indian and Alaska Natives\n", - "multivariate_dataframe = dpd.build_multivariate_dataframe(places=contained_cities_list, stat_vars=['Count_Person', 'Count_Person_AmericanIndianAndAlaskaNativeAlone'])\n", - "multivariate_dataframe = multivariate_dataframe.reset_index()\n", - "\n", - "# computing per capita population\n", - "multivariate_dataframe['perCapitaPopulation'] = multivariate_dataframe['Count_Person_AmericanIndianAndAlaskaNativeAlone'] / multivariate_dataframe['Count_Person']\n", - "\n", - "# merge the computed per_capita values to the site_data_df\n", - "site_data_df = pd.merge(site_data_df, multivariate_dataframe[['place', 'perCapitaPopulation']], left_on='containedInPlace', right_on='place', how='left')\n", - "site_data_df" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 396 - }, - "id": "59jf2xIWhuBD", - "outputId": "26ed34aa-b033-4622-8a2c-cfc1180ab56e" - }, - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "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", - "
epaSuperfundSiteIdcontainedInPlaceCrsiScore_SuperfundSite200020102020placeperCapitaPopulation
0epaSuperfundSiteId/AL6210020008geoId/01144640.60090216.021.08geoId/01144640.001683
1epaSuperfundSiteId/ALD004022448geoId/01790080.95196314.07.010geoId/01790080.005045
2epaSuperfundSiteId/ALD007454085geoId/01510001.011869500.0512.0713geoId/01510000.003554
3epaSuperfundSiteId/ALD031618069geoId/0131912NaN20.04.09geoId/01319120.001221
4epaSuperfundSiteId/ALD041906173geoId/01152560.39434315.029.038geoId/01152560.003693
5epaSuperfundSiteId/ALD980728703geoId/0159064NaNNaNNaN21geoId/01590640.028767
6epaSuperfundSiteId/ALD980844385geoId/0168160NaN69.0104.0228geoId/01681600.014099
7epaSuperfundSiteId/ALD981868466geoId/01338560.4581047.018.06geoId/01338560.001207
8epaSuperfundSiteId/ALN000410750geoId/01070000.394343422.0445.0755geoId/01070000.003761
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " epaSuperfundSiteId containedInPlace CrsiScore_SuperfundSite \\\n", - "0 epaSuperfundSiteId/AL6210020008 geoId/0114464 0.600902 \n", - "1 epaSuperfundSiteId/ALD004022448 geoId/0179008 0.951963 \n", - "2 epaSuperfundSiteId/ALD007454085 geoId/0151000 1.011869 \n", - "3 epaSuperfundSiteId/ALD031618069 geoId/0131912 NaN \n", - "4 epaSuperfundSiteId/ALD041906173 geoId/0115256 0.394343 \n", - "5 epaSuperfundSiteId/ALD980728703 geoId/0159064 NaN \n", - "6 epaSuperfundSiteId/ALD980844385 geoId/0168160 NaN \n", - "7 epaSuperfundSiteId/ALD981868466 geoId/0133856 0.458104 \n", - "8 epaSuperfundSiteId/ALN000410750 geoId/0107000 0.394343 \n", - "\n", - " 2000 2010 2020 place perCapitaPopulation \n", - "0 16.0 21.0 8 geoId/0114464 0.001683 \n", - "1 14.0 7.0 10 geoId/0179008 0.005045 \n", - "2 500.0 512.0 713 geoId/0151000 0.003554 \n", - "3 20.0 4.0 9 geoId/0131912 0.001221 \n", - "4 15.0 29.0 38 geoId/0115256 0.003693 \n", - "5 NaN NaN 21 geoId/0159064 0.028767 \n", - "6 69.0 104.0 228 geoId/0168160 0.014099 \n", - "7 7.0 18.0 6 geoId/0133856 0.001207 \n", - "8 422.0 445.0 755 geoId/0107000 0.003761 " - ] - }, - "metadata": {}, - "execution_count": 46 - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Visualizing the comparison on a scatter plot" - ], - "metadata": { - "id": "eqMS7NXo2LnF" - } - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 514 - }, - "id": "me2TjmV2Hhjv", - "outputId": "46a5db38-544d-4a7d-ccde-a72823f5376b" - }, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "def plot_data(title, pd_table, x, y):\n", - " \"\"\" Generate a scatter plot comparing CrsiScore_SuperfundSite and Count_Person_AmericanIndianAndAlaskaNativeAlone. \"\"\"\n", - " plt.figure(figsize=(12, 8))\n", - " plt.title(title)\n", - " plt.xlabel('CrsiScore_SuperfundSite')\n", - " plt.ylabel('Count_Person_AmericanIndianAndAlaskaNativeAlone')\n", - " \n", - " # Scatter plot the information\n", - " ax = plt.gca()\n", - " ax.scatter(pd_table[x], pd_table[y], alpha=0.7)\n", - "\n", - "# Generate the plot for state data\n", - "title = 'CRSI score vs Count of American Indian and Alaska Native population (per Capita)'\n", - "plot_data(title, site_data_df, x='CrsiScore_SuperfundSite', y='perCapitaPopulation')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "zbjmGtocOLHg" - }, - "source": [ - "### What's Next?\n", - "Congratulations 🎉 on completing the tutorial. Next, please free to explore other Data Commons notebooks to get ideas for querying and joining data from the graph" - ] - } - ], - "metadata": { - "colab": { - "collapsed_sections": [], - "name": "Analyzing SuperfundSites with Data Commons", - "provenance": [], - "toc_visible": true, - "include_colab_link": true - }, - "kernelspec": { - "display_name": "Python 3", - "name": "python3" - }, - "language_info": { - "name": "python" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "e86121a3dee84467911d601c450f076f": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DropdownModel", - "model_module_version": "1.5.0", - "state": { - "_options_labels": [ - "Alabama", - "Alaska", - "Arizona", - "Arkansas", - "California", - "Colorado", - "Connecticut", - "Delaware", - "District of Columbia", - "Florida", - "Georgia", - "Hawaii", - "Idaho", - "Illinois", - "Indiana", - "Iowa", - "Kansas", - "Kentucky", - "Louisiana", - "Maine", - "Maryland", - "Massachusetts", - "Michigan", - "Minnesota", - "Mississippi", - "Missouri", - "Montana", - "Nebraska", - "Nevada", - "New Hampshire", - "New Jersey", - "New Mexico", - "New York", - "North Carolina", - "North Dakota", - "Ohio", - "Oklahoma", - "Oregon", - "Pennsylvania", - "Rhode Island", - "South Carolina", - "South Dakota", - "Tennessee", - "Texas", - "Utah", - "Vermont", - "Virginia", - "Washington", - "West Virginia", - "Wisconsin", - "Wyoming", - "Puerto Rico" - ], - "_view_name": "DropdownView", - "style": "IPY_MODEL_2f1164c04f504f80beb625de92bbfa17", - "_dom_classes": [], - "description": "", - "_model_name": "DropdownModel", - "index": 0, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "disabled": false, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_2e5a9eb31a424a8db158822f155d85db" - } - }, - "2f1164c04f504f80beb625de92bbfa17": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "2e5a9eb31a424a8db158822f155d85db": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "8794d888dc834c1cad49e577a95736a4": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DropdownModel", - "model_module_version": "1.5.0", - "state": { - "_options_labels": [ - "Anniston Army Depot (Southeast Industrial Area)", - "Alabama Army Ammunition Plant", - "Redstone Arsenal (USARMY/NASA)", - "Ciba-Geigy Corp. (McIntosh Plant)", - "Alabama Plating Company Inc.", - "T.H. Agriculture & Nutrition Co. (Montgomery Plant)", - "Stauffer Chemical Co. (LeMoyne Plant)", - "Olin Corp. (McIntosh Plant)", - "Mowbray Engineering Co.", - "Interstate Lead Co. (ILCO)", - "Stauffer Chemical Co. (Cold Creek Plant)", - "Perdido Ground Water Contamination", - "Redwing Carriers Inc. (Saraland)", - "American Brass", - "Triana/Tennessee River", - "35th Avenue" - ], - "_view_name": "DropdownView", - "style": "IPY_MODEL_e1eb411fba2a42b783282223aa7c6ce7", - "_dom_classes": [], - "description": "", - "_model_name": "DropdownModel", - "index": 0, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "disabled": false, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_d5670d1d5dda4c479d70627d752ba8c1" - } - }, - "e1eb411fba2a42b783282223aa7c6ce7": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "d5670d1d5dda4c479d70627d752ba8c1": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "9cf7730acc784ae48e5f17c86e92a261": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DropdownModel", - "model_module_version": "1.5.0", - "state": { - "_options_labels": [ - "CrsiScore_SuperfundSite", - "NaturalHazardExposureScore_SuperfundSite", - "NaturalHazardRiskScore_SuperfundSite", - "NaturalHazardRiskScore_SuperfundSite_CoastalFloodEvent", - "NaturalHazardRiskScore_SuperfundSite_DroughtEvent", - "NaturalHazardRiskScore_SuperfundSite_EarthquakeEvent", - "NaturalHazardRiskScore_SuperfundSite_ExcessiveHeatEvent", - "NaturalHazardRiskScore_SuperfundSite_ExtremeColdWindChillEvent", - "NaturalHazardRiskScore_SuperfundSite_FloodEvent", - "NaturalHazardRiskScore_SuperfundSite_HailEvent", - "NaturalHazardRiskScore_SuperfundSite_HighWindEvent", - "NaturalHazardRiskScore_SuperfundSite_HurricaneEvent", - "NaturalHazardRiskScore_SuperfundSite_LandslideEvent", - "NaturalHazardRiskScore_SuperfundSite_TornadoEvent", - "NaturalHazardRiskScore_SuperfundSite_WildfireEvent" - ], - "_view_name": "DropdownView", - "style": "IPY_MODEL_518586f83b35495aa1215c5dbd1cd79d", - "_dom_classes": [], - "description": "", - "_model_name": "DropdownModel", - "index": 0, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "disabled": false, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_fb9e80f4aea842e390f3341a488d14d8" - } - }, - "518586f83b35495aa1215c5dbd1cd79d": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "fb9e80f4aea842e390f3341a488d14d8": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - } - } - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} \ No newline at end of file diff --git a/notebooks/README.md b/notebooks/README.md index 8c744144..c359e99e 100644 --- a/notebooks/README.md +++ b/notebooks/README.md @@ -15,6 +15,7 @@ Notebook | Description [`analyzing_genomic_data.ipynb`](https://colab.research.google.com/drive/1Io7EDr4LjfPLl_l2JYY8__WbfitfNlOf) | A notebook that analyzes genetic variants within RUNX1 (provided by multiple datasets from UCSC Genome Browser, NCBI/gene, and ClinVar). [`Drug_Discovery_With_Data_Commons.ipynb`](https://colab.research.google.com/drive/1dSKYiRMn3mbDsInorQzYM0yk7sqv6fIV) | A notebook performing drug discovery by identifying novel applications of previously approved drugs using Biomedical Data Commons. [`protein-charts.ipynb`](https://colab.research.google.com/drive/1Kh-ufqobdChZ2qQgEY0rdPA2_DBmOiSG) | A notebook summarizing various protein properties and interactions using graphical visualizations. +[Accessing Superfund sites (basic)](Accessing_Superfund_data_from_Data_Commons.ipynb), [Analyzing Superfund sites (extended)](Analyzing_SuperfundSites_with_Data_Commons.ipynb) | Notebooks that illustrate access and analysis of [Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) data in Data Commons. ## Maintenance From 0a6d60a66af96a057ec839ea071a6b95da8d3f3b Mon Sep 17 00:00:00 2001 From: Prashanth Radhakrishnan Date: Thu, 10 Mar 2022 02:47:48 +0000 Subject: [PATCH 08/13] Update README --- notebooks/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/README.md b/notebooks/README.md index c359e99e..c4cc9b66 100644 --- a/notebooks/README.md +++ b/notebooks/README.md @@ -15,7 +15,7 @@ Notebook | Description [`analyzing_genomic_data.ipynb`](https://colab.research.google.com/drive/1Io7EDr4LjfPLl_l2JYY8__WbfitfNlOf) | A notebook that analyzes genetic variants within RUNX1 (provided by multiple datasets from UCSC Genome Browser, NCBI/gene, and ClinVar). [`Drug_Discovery_With_Data_Commons.ipynb`](https://colab.research.google.com/drive/1dSKYiRMn3mbDsInorQzYM0yk7sqv6fIV) | A notebook performing drug discovery by identifying novel applications of previously approved drugs using Biomedical Data Commons. [`protein-charts.ipynb`](https://colab.research.google.com/drive/1Kh-ufqobdChZ2qQgEY0rdPA2_DBmOiSG) | A notebook summarizing various protein properties and interactions using graphical visualizations. -[Accessing Superfund sites (basic)](Accessing_Superfund_data_from_Data_Commons.ipynb), [Analyzing Superfund sites (extended)](Analyzing_SuperfundSites_with_Data_Commons.ipynb) | Notebooks that illustrate access and analysis of [Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) data in Data Commons. +[Superfund sites Access (basic)](Accessing_Superfund_data_from_Data_Commons.ipynb)
[Superfund sites Analysis (extended)](Analyzing_SuperfundSites_with_Data_Commons.ipynb) | Notebooks that illustrate access and analysis of [Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) data in Data Commons. ## Maintenance From 57a14665c1e7eda5d8f872ce5e773b35d56df7c7 Mon Sep 17 00:00:00 2001 From: Prashanth Radhakrishnan Date: Thu, 10 Mar 2022 02:50:08 +0000 Subject: [PATCH 09/13] Update README --- notebooks/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/notebooks/README.md b/notebooks/README.md index c4cc9b66..8b7ea16b 100644 --- a/notebooks/README.md +++ b/notebooks/README.md @@ -15,7 +15,8 @@ Notebook | Description [`analyzing_genomic_data.ipynb`](https://colab.research.google.com/drive/1Io7EDr4LjfPLl_l2JYY8__WbfitfNlOf) | A notebook that analyzes genetic variants within RUNX1 (provided by multiple datasets from UCSC Genome Browser, NCBI/gene, and ClinVar). [`Drug_Discovery_With_Data_Commons.ipynb`](https://colab.research.google.com/drive/1dSKYiRMn3mbDsInorQzYM0yk7sqv6fIV) | A notebook performing drug discovery by identifying novel applications of previously approved drugs using Biomedical Data Commons. [`protein-charts.ipynb`](https://colab.research.google.com/drive/1Kh-ufqobdChZ2qQgEY0rdPA2_DBmOiSG) | A notebook summarizing various protein properties and interactions using graphical visualizations. -[Superfund sites Access (basic)](Accessing_Superfund_data_from_Data_Commons.ipynb)
[Superfund sites Analysis (extended)](Analyzing_SuperfundSites_with_Data_Commons.ipynb) | Notebooks that illustrate access and analysis of [Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) data in Data Commons. +[Superfund sites Access (basic)](Accessing_Superfund_data_from_Data_Commons.ipynb) | A notebook that illustrates basic access to [Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) data in Data Commons. +[Superfund sites Analysis (extended)](Analyzing_SuperfundSites_with_Data_Commons.ipynb) | A notebook that includes extended analysis using [Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) data in Data Commons. ## Maintenance From f097de2d9599a7a6adef11948a49b1369163a003 Mon Sep 17 00:00:00 2001 From: Prashanth Radhakrishnan Date: Thu, 10 Mar 2022 02:51:44 +0000 Subject: [PATCH 10/13] Update README --- notebooks/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/notebooks/README.md b/notebooks/README.md index 8b7ea16b..a543abfd 100644 --- a/notebooks/README.md +++ b/notebooks/README.md @@ -15,8 +15,8 @@ Notebook | Description [`analyzing_genomic_data.ipynb`](https://colab.research.google.com/drive/1Io7EDr4LjfPLl_l2JYY8__WbfitfNlOf) | A notebook that analyzes genetic variants within RUNX1 (provided by multiple datasets from UCSC Genome Browser, NCBI/gene, and ClinVar). [`Drug_Discovery_With_Data_Commons.ipynb`](https://colab.research.google.com/drive/1dSKYiRMn3mbDsInorQzYM0yk7sqv6fIV) | A notebook performing drug discovery by identifying novel applications of previously approved drugs using Biomedical Data Commons. [`protein-charts.ipynb`](https://colab.research.google.com/drive/1Kh-ufqobdChZ2qQgEY0rdPA2_DBmOiSG) | A notebook summarizing various protein properties and interactions using graphical visualizations. -[Superfund sites Access (basic)](Accessing_Superfund_data_from_Data_Commons.ipynb) | A notebook that illustrates basic access to [Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) data in Data Commons. -[Superfund sites Analysis (extended)](Analyzing_SuperfundSites_with_Data_Commons.ipynb) | A notebook that includes extended analysis using [Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) data in Data Commons. +[Superfund sites (basic)](Accessing_Superfund_data_from_Data_Commons.ipynb) | A notebook that illustrates basic access to [Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) data in Data Commons. +[Superfund sites (extended)](Analyzing_SuperfundSites_with_Data_Commons.ipynb) | A notebook that includes extended analysis using [Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) data in Data Commons. ## Maintenance From 140de48fdce8f561455655b5a5f0de20a9503684 Mon Sep 17 00:00:00 2001 From: Prashanth Radhakrishnan Date: Thu, 10 Mar 2022 02:53:33 +0000 Subject: [PATCH 11/13] Update README --- notebooks/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/notebooks/README.md b/notebooks/README.md index a543abfd..60d6636b 100644 --- a/notebooks/README.md +++ b/notebooks/README.md @@ -15,8 +15,8 @@ Notebook | Description [`analyzing_genomic_data.ipynb`](https://colab.research.google.com/drive/1Io7EDr4LjfPLl_l2JYY8__WbfitfNlOf) | A notebook that analyzes genetic variants within RUNX1 (provided by multiple datasets from UCSC Genome Browser, NCBI/gene, and ClinVar). [`Drug_Discovery_With_Data_Commons.ipynb`](https://colab.research.google.com/drive/1dSKYiRMn3mbDsInorQzYM0yk7sqv6fIV) | A notebook performing drug discovery by identifying novel applications of previously approved drugs using Biomedical Data Commons. [`protein-charts.ipynb`](https://colab.research.google.com/drive/1Kh-ufqobdChZ2qQgEY0rdPA2_DBmOiSG) | A notebook summarizing various protein properties and interactions using graphical visualizations. -[Superfund sites (basic)](Accessing_Superfund_data_from_Data_Commons.ipynb) | A notebook that illustrates basic access to [Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) data in Data Commons. -[Superfund sites (extended)](Analyzing_SuperfundSites_with_Data_Commons.ipynb) | A notebook that includes extended analysis using [Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) data in Data Commons. +[`Superfund sites (basic)`](Accessing_Superfund_data_from_Data_Commons.ipynb) | A notebook that illustrates basic access to [Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) data in Data Commons. +[`Superfund sites (extended)`](Analyzing_SuperfundSites_with_Data_Commons.ipynb) | A notebook that includes extended analysis using [Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) data in Data Commons. ## Maintenance From fe4172d606d85b138581d2ec6075550f5dcf5740 Mon Sep 17 00:00:00 2001 From: Prashanth R Date: Wed, 9 Mar 2022 19:39:44 -0800 Subject: [PATCH 12/13] Created using Colaboratory --- notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb b/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb index 838ab73b..4f78da27 100644 --- a/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb +++ b/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb @@ -46,7 +46,7 @@ "\n", "[Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) are US locations contaminated with hazardous substances that the [EPA](https://epa.gov/) seeks to investigate and clean up. Data Commons (DC) includes data about Superfund sites, and this notebook illustrates how that can be accessed using the [DC python APIs](https://docs.datacommons.org/api/python/) with [Pandas extension](https://docs.datacommons.org/api/pandas/).\n", "\n", - "An extended version of this notebook that does some analysis with the extracted Superfund data can be found [here](https://colab.research.google.com/github/pradh/api-python/blob/superfund1/Analyzing_SuperfundSites_with_Data_Commons.ipynb)." + "An extended version of this notebook that does some analysis with the extracted Superfund data can be found [here](https://colab.research.google.com/github/pradh/api-python/blob/superfund1/notebooks/Analyzing_SuperfundSites_with_Data_Commons.ipynb)." ], "metadata": { "id": "xIaPIPE7aYSv" @@ -1391,7 +1391,7 @@ "We can now join the Superfund data with various statistics in DC (across Demographics, Economics, Climate, Health, and so on) for places like US\n", "Census tracts, cities, counties, etc.\n", "\n", - "This can be done by starting with the list of places containing the Superfund sites (found in the `containedInPlace` column in `site_df`), and then using the `build_multivariate_dataframe` API to get stats for the relevant variables. This is illustrated in detail in the [extended notebook](https://colab.research.google.com/github/pradh/api-python/blob/superfund1/Analyzing_SuperfundSites_with_Data_Commons.ipynb#scrollTo=Bdada1GF-VgS)." + "This can be done by starting with the list of places containing the Superfund sites (found in the `containedInPlace` column in `site_df`), and then using the `build_multivariate_dataframe` API to get stats for the relevant variables. This is illustrated in detail in the [extended notebook](https://colab.research.google.com/github/pradh/api-python/blob/superfund1/notebooks/Analyzing_SuperfundSites_with_Data_Commons.ipynb#scrollTo=Bdada1GF-VgS)." ], "metadata": { "id": "VYp-2EpfNBiS" From 628a931464d4f3dce04a73d88d6db5468c62844e Mon Sep 17 00:00:00 2001 From: Prashanth R Date: Thu, 10 Mar 2022 09:28:17 -0800 Subject: [PATCH 13/13] Created using Colaboratory --- notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb b/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb index 4f78da27..8c30b240 100644 --- a/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb +++ b/notebooks/Accessing_Superfund_data_from_Data_Commons.ipynb @@ -46,7 +46,7 @@ "\n", "[Superfund sites](https://en.wikipedia.org/wiki/List_of_Superfund_sites) are US locations contaminated with hazardous substances that the [EPA](https://epa.gov/) seeks to investigate and clean up. Data Commons (DC) includes data about Superfund sites, and this notebook illustrates how that can be accessed using the [DC python APIs](https://docs.datacommons.org/api/python/) with [Pandas extension](https://docs.datacommons.org/api/pandas/).\n", "\n", - "An extended version of this notebook that does some analysis with the extracted Superfund data can be found [here](https://colab.research.google.com/github/pradh/api-python/blob/superfund1/notebooks/Analyzing_SuperfundSites_with_Data_Commons.ipynb)." + "An extended version of this notebook that does some analysis with the extracted Superfund data can be found [here](https://colab.research.google.com/github/datacommonsorg/api-python/blob/master/notebooks/Analyzing_SuperfundSites_with_Data_Commons.ipynb)." ], "metadata": { "id": "xIaPIPE7aYSv" @@ -1391,7 +1391,7 @@ "We can now join the Superfund data with various statistics in DC (across Demographics, Economics, Climate, Health, and so on) for places like US\n", "Census tracts, cities, counties, etc.\n", "\n", - "This can be done by starting with the list of places containing the Superfund sites (found in the `containedInPlace` column in `site_df`), and then using the `build_multivariate_dataframe` API to get stats for the relevant variables. This is illustrated in detail in the [extended notebook](https://colab.research.google.com/github/pradh/api-python/blob/superfund1/notebooks/Analyzing_SuperfundSites_with_Data_Commons.ipynb#scrollTo=Bdada1GF-VgS)." + "This can be done by starting with the list of places containing the Superfund sites (found in the `containedInPlace` column in `site_df`), and then using the `build_multivariate_dataframe` API to get stats for the relevant variables. This is illustrated in detail in the [extended notebook](https://colab.research.google.com/github/datacommonsorg/api-python/blob/master/notebooks/Analyzing_SuperfundSites_with_Data_Commons.ipynb#scrollTo=Bdada1GF-VgS)." ], "metadata": { "id": "VYp-2EpfNBiS"