{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Houston flood zone analysis\n", "\n", "By [Ben Welsh](http://www.latimes.com/la-bio-ben-welsh-staff.html)\n", "\n", "A geospatial analysis of Houston property records conducted for the Nov. 8, 2017 Los Angeles Times story [\"How Houston’s newest homes survived Hurricane Harvey\"](http://www.latimes.com/projects/la-na-houston-harvey-home-survivors/). \n", "\n", "Nearly a quarter of new Houston homes in the past decade were built within a federal flood zone. To look at damage there, the Times chose five neighborhoods built inside a flood zone over the last decade and asked a sample of homeowners in each area how they fared. In case after case, owners of the newer homes rode out the hurricane safely.\n", "\n", "The brunt of the damage appears to be borne by older houses — sometimes just doors away from newer, unscathed real estate — that predate federal and local anti-flooding regulations and account for 79% of the nearly 129,000 houses located in the federal flood zones.\n", "\n", "To learn more about the survey, the context and our findings, [read the story](http://www.latimes.com/projects/la-na-houston-harvey-home-survivors/). Below you can find the Python code that analyzed and where, and when, homes were built inside federal flood zones." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Download the source data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our sources were:\n", "\n", "1. Flood zone maps from the Federal Emergency Management Agency\n", "2. Property records and parcel maps from the Harris County Appraisal District" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%run ./01_download.ipynb" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some of the source files must be downloaded and unpackaged manually. To recreate the analysis you should refer to the documentation in the [download notebook](01_download.ipynb) and unpack them yourself." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Transform the source data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[The next notebook](02_transform.ipynb) converts the source data files into comma-delimited format, standardizes geospatial reference systems, computes additional columns, filters out superfluous records and trims off unneeded metadata." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%run ./02_transform.ipynb" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Merge the source data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[This notebook](03_merge.ipynb) mints files ready for analysis for merging the buildings data with parcel maps" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%run ./03_merge.ipynb" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Spatially join buildings data with flood zones " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we begin the analysis by importing our Python tools." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "import geopandas as gpd\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Prepare utilities for opening files" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "get_output_path = lambda x: os.path.join(\"./output\", x)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "get_gdf = lambda x: gpd.read_file(get_output_path(x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because the source data files are so large, a single spatial join is difficult to execute. To work around the limitations of our available hardware, the following code splits up the shapefiles into chunks based on the year each building was built." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "year_list = gpd.pd.np.arange(1800, 2017)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def split_year(df_name, func):\n", " \"\"\"\n", " Split the provided dataframe into separate files using all the years in our dataset.\n", " \"\"\"\n", " # Open the dataframe\n", " df = get_gdf(df_name)\n", " \n", " # Loop through all the years we're watching\n", " for year in year_list:\n", " \n", " # For each year pass the dataframe to the provided function (for filtering or analysis)\n", " year_df = func(df, year)\n", " \n", " # Write out the results\n", " if len(year_df) > 0:\n", " year_name = \"{}-{}\".format(year, df_name)\n", " year_path = get_output_path(year_name)\n", " year_df.to_file(year_path)\n", " \n", " # Pass back out the dataframe since it's already open. We might reuse it.\n", " return df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The master shapefile is read in and split into many pieces." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "buildings = split_year(\"buildings-and-parcels.shp\", lambda x, y: x[x.erected == y])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each year's file is then spatial joined with the flood zones and output into a file with the matches." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def read_year(year, name_template=\"{}-buildings-and-parcels.shp\"):\n", " \"\"\"\n", " Returns the split slice of residential parcels for the given year.\n", " \"\"\"\n", " try:\n", " # Go grab the file for this year\n", " return get_gdf(name_template.format(year))\n", " except IOError:\n", " # If there's no file, just return None\n", " return None" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def sjoin_year(parcels, flood_zones):\n", " \"\"\"\n", " Conducts a spatial join between the provided parcels and flood zones.\n", " \n", " Returns parcels that intersect with the zones.\n", " \"\"\"\n", " if isinstance(parcels, type(None)):\n", " return gpd.GeoDataFrame()\n", " sjoin = gpd.sjoin(parcels, flood_zones, how=\"inner\", op='intersects')\n", " return parcels[parcels.account.isin(sjoin.account)]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "zones_500 = split_year(\"five-hundred-year-flood-zones.shp\", lambda shp, y: sjoin_year(read_year(y), shp))\n", "zones_100 = split_year(\"one-hundred-year-flood-zones.shp\", lambda shp, y: sjoin_year(read_year(y), shp))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All the matches are read in and combined into a single shapefile with all of the buildings found within a flood zone." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def concat_years(df_name):\n", " \"\"\"\n", " Combine all files split by year with the provided pattern into a single dataframe.\n", " \"\"\"\n", " # Pull all the annual files\n", " df_list = [\n", " read_year(year, \"{}-%s\" % df_name)\n", " for year in year_list\n", " ]\n", " \n", " # Lump them together into one big dataframe \n", " df = gpd.pd.concat([i for i in df_list if isinstance(i, gpd.GeoDataFrame)])\n", " \n", " # Convert the dataframe into a geodataframe\n", " geometry = df['geometry']\n", " df = df.drop('geometry', axis=1)\n", " crs = {'init': 'epsg:4269'}\n", " gdf = gpd.GeoDataFrame(df, crs=crs, geometry=geometry)\n", " \n", " # Return the result\n", " return gdf" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "in_zone_500 = concat_years(\"five-hundred-year-flood-zones.shp\")\n", "in_zone_100 = concat_years(\"one-hundred-year-flood-zones.shp\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some buildings intersect partially with both a 100 year and 500 year flood zone. We remove the duplicates using a conservative methodology that places buildings in both within the less risky 500 year zone." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "in_zone_100_only = in_zone_100[~(in_zone_100.account.isin(in_zone_500.account))]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a combined dataframe with both types after the duplicates have been excised." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "in_any_zone = gpd.pd.concat([in_zone_500, in_zone_100_only])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Reset indexes to tidy up the data." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "in_zone_500 = in_zone_500.reset_index()\n", "in_zone_100 = in_zone_100.reset_index()\n", "in_zone_100_only = in_zone_100_only.reset_index()\n", "in_any_zone = in_any_zone.reset_index()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Write out shapefiles of the results." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "in_zone_500.to_file(get_output_path(\"./buildings-in-five-hundred-year-flood-zones.shp\"))\n", "in_zone_100_only.to_file(get_output_path(\"./buildings-in-one-hundred-year-flood-zones.shp\"))\n", "in_any_zone.to_file(get_output_path(\"./buildings-in-any-flood-zone.shp\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Filter down to just single-family homes, as instructed by officials at the Harris County Appraisal District." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "homes_in_zone_500 = in_zone_500[in_zone_500.use == 'A1']\n", "homes_in_zone_100_only = in_zone_100_only[in_zone_100_only.use == 'A1']\n", "homes_in_any_zone = in_any_zone[in_any_zone.use == 'A1']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Write out shapefiles of those." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "homes_in_zone_500.to_file(get_output_path(\"./homes-in-five-hundred-year-flood-zones.shp\"))\n", "homes_in_zone_100_only.to_file(get_output_path(\"./homes-in-one-hundred-year-flood-zones.shp\"))\n", "homes_in_any_zone.to_file(get_output_path(\"./homes-in-any-flood-zone.shp\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Filter down again to just homes that fall within the Houston city limits, as instructed by officials at the Harris County Appraisal District." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "houston_homes_in_zone_500 = homes_in_zone_500[homes_in_zone_500.houston == 'True']\n", "houston_homes_in_zone_100_only = homes_in_zone_100_only[homes_in_zone_100_only.houston == 'True']\n", "houston_homes_in_any_zone = homes_in_any_zone[homes_in_any_zone.houston == 'True']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Write out shapefiles of those." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "houston_homes_in_zone_500.to_file(get_output_path(\"./houston-homes-in-five-hundred-year-flood-zones.shp\"))\n", "houston_homes_in_zone_100_only.to_file(get_output_path(\"./houston-homes-in-one-hundred-year-flood-zones.shp\"))\n", "houston_homes_in_any_zone.to_file(get_output_path(\"./houston-homes-in-any-flood-zone.shp\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Clear out split files generated above." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!rm ./output/18*-*\n", "!rm ./output/19*-*\n", "!rm ./output/20*-*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calculate annual totals" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Prepare functions for running the numbers." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "def groupby_year(df, value_name):\n", " \"\"\"\n", " Returns a regrouped dataframe using the 'erected' field that contains year of construction.\n", " \"\"\"\n", " grouped = df.groupby(\"erected\").size().reset_index()\n", " grouped.columns = ['year', value_name]\n", " return grouped" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "def crosstab(universe_df, in_zone_500_df, in_zone_100_df, func=groupby_year, on=\"year\"):\n", " \"\"\"\n", " Returns a dataframe crosstab with counts and percentages of buildings constructed within flood zones.\n", " \"\"\"\n", " # Group all three sets by year\n", " universe_by_func = func(universe_df, \"total\")\n", " in_zone_500_by_func = func(in_zone_500_df, \"in_zone_500\")\n", " in_zone_100_by_func = func(in_zone_100_df, \"in_zone_100\")\n", "\n", " # Create a crosstab\n", " crosstab = gpd.pd.merge(\n", " universe_by_func,\n", " gpd.pd.merge(in_zone_100_by_func, in_zone_500_by_func, how=\"outer\", on=on),\n", " how=\"left\",\n", " on=on\n", " )\n", " \n", " # Clean it up\n", " crosstab.fillna(0, inplace=True)\n", " \n", " # Add total and percentage columns\n", " crosstab['in_zone'] = crosstab['in_zone_100'] + crosstab['in_zone_500']\n", " crosstab['in_zone_percent'] = crosstab['in_zone'] / crosstab['total']\n", " \n", " # Trim it\n", " trimmed = crosstab[((crosstab[on] > 1500) & (crosstab[on] < 2017))]\n", " \n", " # Pass it back\n", " return trimmed" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run the totals for all homes in Harris County" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "homes = buildings[buildings.use == 'A1']\n", "homes_by_year = crosstab(homes, homes_in_zone_500, homes_in_zone_100_only)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run the totals for homes in the Houston city limits." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "houston_homes = homes[homes.houston == 'True']\n", "houston_homes_by_year = crosstab(houston_homes, houston_homes_in_zone_500, houston_homes_in_zone_100_only)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Interview the data" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "def compare(numerator, denominator):\n", " print \"{:,} / {:,} ({:.2%})\".format(numerator, denominator, numerator / denominator)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### What's the total number of homes in flood zones?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Overall" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "264,411.0 / 1,038,244 (25.47%)\n", "128,864.0 / 429,387 (30.01%)\n" ] } ], "source": [ "compare(homes_by_year['in_zone'].sum(), homes_by_year['total'].sum())\n", "compare(houston_homes_by_year['in_zone'].sum(), houston_homes_by_year['total'].sum())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "100 year zone" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "87,978.0 / 1,038,244 (8.47%)\n", "48,569.0 / 429,387 (11.31%)\n" ] } ], "source": [ "compare(homes_by_year['in_zone_100'].sum(), homes_by_year['total'].sum())\n", "compare(houston_homes_by_year['in_zone_100'].sum(), houston_homes_by_year['total'].sum())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "500 year zone" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "176,433.0 / 1,038,244 (16.99%)\n", "80,295.0 / 429,387 (18.70%)\n" ] } ], "source": [ "compare(homes_by_year['in_zone_500'].sum(), homes_by_year['total'].sum())\n", "compare(houston_homes_by_year['in_zone_500'].sum(), houston_homes_by_year['total'].sum())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### What are those same numbers over the past 10 years?" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "homes_since_2007 = homes_by_year[homes_by_year.year >= 2007]\n", "houston_homes_since_2007 = houston_homes_by_year[houston_homes_by_year.year >= 2007]" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "30,687.0 / 145,500 (21.09%)\n", "8,744.0 / 38,862 (22.50%)\n" ] } ], "source": [ "compare(homes_since_2007['in_zone'].sum(), homes_since_2007['total'].sum())\n", "compare(houston_homes_since_2007['in_zone'].sum(), houston_homes_since_2007['total'].sum())" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "9,198.0 / 145,500 (6.32%)\n", "3,215.0 / 38,862 (8.27%)\n" ] } ], "source": [ "compare(homes_since_2007['in_zone_100'].sum(), homes_since_2007['total'].sum())\n", "compare(houston_homes_since_2007['in_zone_100'].sum(), houston_homes_since_2007['total'].sum())" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "21,489.0 / 145,500 (14.77%)\n", "5,529.0 / 38,862 (14.23%)\n" ] } ], "source": [ "compare(homes_since_2007['in_zone_500'].sum(), homes_since_2007['total'].sum())\n", "compare(houston_homes_since_2007['in_zone_500'].sum(), houston_homes_since_2007['total'].sum())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### What share of Houston homes in flood zones were built before 1985?\n", "\n", "That's the year when Houston's local ordinances regulating flood zone elevations went into effect." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "homes_before_rules = homes_by_year[homes_by_year.year < 1985]\n", "houston_homes_before_rules = houston_homes_by_year[houston_homes_by_year.year < 1985]" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "169,217.0 / 264,411.0 (64.00%)\n", "101,320.0 / 128,864.0 (78.63%)\n" ] } ], "source": [ "compare(homes_before_rules['in_zone'].sum(), homes_by_year['in_zone'].sum())\n", "compare(houston_homes_before_rules['in_zone'].sum(), houston_homes_by_year['in_zone'].sum())" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "63,395.0 / 87,978.0 (72.06%)\n", "41,602.0 / 48,569.0 (85.66%)\n" ] } ], "source": [ "compare(homes_before_rules['in_zone_100'].sum(), homes_by_year['in_zone_100'].sum())\n", "compare(houston_homes_before_rules['in_zone_100'].sum(), houston_homes_by_year['in_zone_100'].sum())" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "105,822.0 / 176,433.0 (59.98%)\n", "59,718.0 / 80,295.0 (74.37%)\n" ] } ], "source": [ "compare(homes_before_rules['in_zone_500'].sum(), homes_by_year['in_zone_500'].sum())\n", "compare(houston_homes_before_rules['in_zone_500'].sum(), houston_homes_by_year['in_zone_500'].sum())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Chart the trend over time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Filter down the data to the time range we want to chart." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "start_year = 1930" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Total buildings countywide by year" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "chart_df = homes_by_year[(homes_by_year.year > start_year)]" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nvbkjW3/zFvioqgEAAABWMheBUpJLkhzt7nuTpKpuSXJFkm0fKMHpGK3eUu0FAADAWpqXQOncJPct\neX5/kks3aSwbar3/0BckAAAAAGutunuzx5CqemWSvd39L6bnr01yaXdff1K/a5NcOz39u0k+v6ED\nhdV5dpKvbvYggJm5Z2HrcL9jEnxAAAAFeUlEQVTC1uKehfn2t7t790qd5qVC6XiS85c8P29q+2u6\n+8YkN27UoGAtVdWR7t6z2eMAZuOeha3D/Qpbi3sWtocnbfYAJncmubCqLqiqpyS5MsnBTR4TAAAA\nAMuYiwql7n6sqq5PcluSM5Lc1N13bfKwAAAAAFjGXARKSdLdh5Mc3uxxwDoyXRO2FvcsbB3uV9ha\n3LOwDczFotwAAAAAbB3zsoYSAAAAAFuEQAlWoapuqqoHq+pzS9p+vKr+d1V9tqr+e1U986RznlNV\nf15V/2pJ296q+nxVHa2q/Rv5GmCnGL1fq+rvT8fumo4/bWp/wfT8aFW9s6pqM14PbHcj92xVPbmq\nbp7a76mqNy05x3ssrLOqOr+qPlpVd0/vmz83tT+rqm6vqi9M38+a2mt6Dz1aVZ+pqucvudbVU/8v\nVNXVm/WagJUJlGB13ptk70ltv5lkf3f/WJLfTfKvTzr+9iS/f+JJVZ2R5F1JXpbkoiSvrqqL1mvA\nsIO9NzPer1W1K8l/TfIvu/u5SV6U5C+nc96d5GeSXDh9nXxNYG28N7O/x/50kqdO7S9I8rNVteA9\nFjbMY0ne0N0XJbksyXXTvbY/yUe6+8IkH5meJ4v35In30Wuz+N6aqnpWkhuSXJrkkiQ3nAihgPkj\nUIJV6O6PJXn4pOYfSfKx6fHtSf7JiQNV9YokX0yydBfDS5Ic7e57u/s7SW5JcsW6DRp2qMH79fIk\nn+nuP5nO/Vp3P15V5yR5Znff0YuLEL4vySvWf/Sw8wzes53k+6Yw+OlJvpPkG/EeCxuiux/o7k9N\nj7+Z5J4k52bxfrt56nZzvvueeUWS9/WiO5KcOb3HvjTJ7d39cHc/ksX73Ac3MKcESrD27sp3f1n9\n6STnJ0lVPSPJG5P88kn9z01y35Ln909twPpb9n7N4h+tXVW3VdWnqurfTO3nZvEePcH9ChvrVPfs\nB5P83yQPJPmzJP++ux+O91jYcFW1kOR5ST6e5OzufmA69OUkZ0+PT3VvumdhCxEowdr750leX1Wf\nTPL9WfyUNEl+Kck7uvvPN2tgwPc41f26K8lPJPmn0/efqqqXbM4QgSVOdc9ekuTxJH8ryQVJ3lBV\nf2dzhgg71/QB6u8k+fnu/sbSY1Nlry3GYRvZtdkDgO2mu/80i9NlUlU/kmTfdOjSJK+sqn+X5Mwk\nf1VVf5Hkk/nuJ6xJcl6S4xs3Yti5nuB+vT/Jx7r7q9Oxw0men8V1lc5bcgn3K2ygJ7hnX5PkD7r7\nL5M8WFX/K8meLFY6eI+FDVBVT85imPTb3f2hqfkrVXVOdz8wTWl7cGo/nuXvzeNZXLdwafsfrue4\ngdOnQgnWWFX94PT9SUl+Mcl/SpLu/ofdvdDdC0n+Q5J/293/McmdSS6sqguq6ilJrkxycFMGDzvM\nqe7XJLcl+bGq+hvTmiz/KMndU9n+N6rqsml3t6uSfHgThg470hPcs3+W5MXTse/L4qLAfxrvsbAh\npvfE9yS5p7vfvuTQwSQndmq7Ot99zzyY5Kppt7fLkjw6vcfeluTyqjprWoz78qkNmEMqlGAVqur9\nWfwU5dlVdX8Wd6V4RlVdN3X5UJLfeqJrdPdjVXV9Ft8sz0hyU3ff9UTnAONG7tfufqSq3p7FP0Y7\nyeHuPjT1e30Wd596ehZ3bPz/uzYCa2fwPfZdSX6rqu5KUkl+q7s/M13HeyysvxcmeW2Sz1bVp6e2\nX0hyIMmtVXVNki8ledV07HCSlyc5muRbSV6XJN39cFW9JYvvv0ny5mk9NGAO1eJUVgAAAACYjSlv\nAAAAAAwRKAEAAAAwRKAEAAAAwBCBEgAAAABDBEoAAAAADBEoAQAAADBEoAQAAADAEIESAAAAAEP+\nH3e5xe4e+wRdAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(20, 10))\n", "ax = plt.bar(gpd.pd.np.arange(start_year, 2016), chart_df.total)\n", "ax = plt.bar(gpd.pd.np.arange(start_year, 2016), chart_df.in_zone)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Total buildings in Houston by year" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "houston_chart_df = houston_homes_by_year[(houston_homes_by_year.year > start_year)]" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABJQAAAJCCAYAAACWHZ1NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3XGMZWd93+Hvz16IaSiyiR3LtU3X\nTTaVnKRxYGVbSqrSoBqD/7CjEgSuwKUUp8JWE4m2WVAkp5BEm6ohBZVQOWGDraZxUEKEGztxLYsK\ntaqJ14QajBOxIku8lsEO69ikqCGmv/4xZ8PNZnb3vjNzZ+7MPI80mjvvPffOO/acvTOfec851d0B\nAAAAgHmdtdUTAAAAAGB7EZQAAAAAGCIoAQAAADBEUAIAAABgiKAEAAAAwBBBCQAAAIAhghIAAAAA\nQwQlAAAAAIYISgAAAAAM2bPVE1ir888/v/fu3bvV0wAAAADYMR5++OE/6e4LzrTdGYNSVV2a5M4k\nFybpJLd39/uq6qeSvC3J09Om7+rue6fHvDPJW5N8I8m/7O77pvFrk7wvydlJfrm7D07jlyW5K8m3\nJXk4yZu6++unm9fevXtz+PDhM00fAAAAgDlV1Rfn2W6eQ96eT/KO7r48ydVJbqmqy6f7fqG7r5je\nTsSky5O8Icl3J7k2yS9W1dlVdXaSDyR5TZLLk7xx5nl+bnqu70zyTFZiFAAAAABL6IxBqbuf7O5P\nTbe/muSxJBef5iHXJ7mru/+8u/8oyZEkV05vR7r7C9Pqo7uSXF9VleSHkvzG9Pg7ktyw1i8IAAAA\ngMUaOil3Ve1N8v1JPjkN3VpVj1TVoao6bxq7OMnjMw87No2davzbkvxpdz9/0vhqn//mqjpcVYef\nfvrp1TYBAAAAYMHmDkpV9eIkv5nkx7v7uSQfTPIdSa5I8mSSn1/IDGd09+3dvb+7919wwRnPDwUA\nAADAAsx1lbeqekFWYtKvdvdHk6S7vzxz/y8l+e3pwyeSXDrz8EumsZxi/CtJzq2qPdMqpdntAQAA\nAFgyZ1yhNJ3j6ENJHuvu986MXzSz2Q8n+ex0++4kb6iqb5mu3rYvye8leSjJvqq6rKpemJUTd9/d\n3Z3k40leNz3+piQfW9+XBQAAAMCizLNC6QeSvCnJZ6rq09PYu7JylbYrknSSo0l+NEm6+9Gq+kiS\nz2XlCnG3dPc3kqSqbk1yX5Kzkxzq7ken5/uJJHdV1U8n+f2sBCwAAAAAllCtLBDafvbv39+HDx/e\n6mkAAAAA7BhV9XB37z/TdkNXeQMAAAAAQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAA\nABgiKAEAAAAwRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAA\nABgiKAEAAAAwRFACAAAAYMierZ4AwFbae+CeubY7evC6Bc8EAABg+7BCCQAAAIAhghIAAAAAQwQl\nAAAAAIYISgAAAAAMEZQAAAAAGCIoAQAAADBEUAIAAABgiKAEAAAAwBBBCQAAAIAhghIAAAAAQwQl\nAAAAAIYISgAAAAAMEZQAAAAAGCIoAQAAADBEUAIAAABgiKAEAAAAwBBBCQAAAIAhghIAAAAAQwQl\nAAAAAIYISgAAAAAMEZQAAAAAGCIoAQAAADBEUAIAAABgiKAEAAAAwBBBCQAAAIAhghIAAAAAQwQl\nAAAAAIYISgAAAAAMEZQAAAAAGCIoAQAAADBEUAIAAABgiKAEAAAAwBBBCQAAAIAhghIAAAAAQwQl\nAAAAAIYISgAAAAAMEZQAAAAAGCIoAQAAADBEUAIAAABgiKAEAAAAwBBBCQAAAIAhghIAAAAAQwQl\nAAAAAIYISgAAAAAMEZQAAAAAGCIoAQAAADBEUAIAAABgiKAEAAAAwBBBCQAAAIAhghIAAAAAQwQl\nAAAAAIYISgAAAAAMEZQAAAAAGCIoAQAAADBEUAIAAABgiKAEAAAAwBBBCQAAAIAhghIAAAAAQwQl\nAAAAAIYISgAAAAAMEZQAAAAAGCIoAQAAADBEUAIAAABgiKAEAAAAwBBBCQAAAIAhghIAAAAAQwQl\nAAAAAIYISgAAAAAMEZQAAAAAGCIoAQAAADBEUAIAAABgiKAEAAAAwBBBCQAAAIAhghIAAAAAQwQl\nAAAAAIYISgAAAAAMEZQAAAAAGCIoAQAAADBEUAIAAABgiKAEAAAAwBBBCQAAAIAhghIAAAAAQ84Y\nlKrq0qr6eFV9rqoeraofm8ZfWlX3V9Xnp/fnTeNVVe+vqiNV9UhVvXzmuW6atv98Vd00M/6KqvrM\n9Jj3V1Ut4osFAAAAYP3mWaH0fJJ3dPflSa5OcktVXZ7kQJIHuntfkgemj5PkNUn2TW83J/lgshKg\nktyW5KokVya57USEmrZ528zjrl3/lwYAAADAIpwxKHX3k939qen2V5M8luTiJNcnuWPa7I4kN0y3\nr09yZ694MMm5VXVRklcnub+7j3f3M0nuT3LtdN9LuvvB7u4kd848FwAAAABLZugcSlW1N8n3J/lk\nkgu7+8npri8luXC6fXGSx2cedmwaO934sVXGV/v8N1fV4ao6/PTTT49MHQAAAIANsmfeDavqxUl+\nM8mPd/dzs6c56u6uql7A/P6K7r49ye1Jsn///oV/PoCdZO+Be+ba7ujB6xY8EwAAYLuba4VSVb0g\nKzHpV7v7o9Pwl6fD1TK9f2oafyLJpTMPv2QaO934JauMAwAAALCE5rnKWyX5UJLHuvu9M3fdneTE\nldpuSvKxmfE3T1d7uzrJs9OhcfcluaaqzptOxn1Nkvum+56rqqunz/XmmecCAAAAYMnMc8jbDyR5\nU5LPVNWnp7F3JTmY5CNV9dYkX0zy+um+e5O8NsmRJF9L8pYk6e7jVfWeJA9N2727u49Pt9+e5MNJ\nXpTkd6Y3AAAAAJbQGYNSd/+PJHWKu1+1yvad5JZTPNehJIdWGT+c5HvONBcAAAAAtt7QVd4AAAAA\nQFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEAAAAw\nRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEAAAAw\nRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEAAAAw\nRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEAAAAw\nRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEAAAAw\nRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEAAAAw\nRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEAAAAw\nRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABgiKAEAAAAw\nRFACAAAAYMierZ4AAGy0vQfumWu7owevW/BMAABgZ7JCCQAAAIAhVijBnOZZ8WC1AwAAALuBFUoA\nAAAADBGUAAAAABgiKAEAAAAwRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoA\nAAAADBGUAAAAABgiKAEAAAAwRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoA\nAAAADBGUAAAAABgiKAEAAAAwRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoA\nAAAADBGUAAAAABgiKAEAAAAwRFACAAAAYIigBAAAAMAQQQkAAACAIWcMSlV1qKqeqqrPzoz9VFU9\nUVWfnt5eO3PfO6vqSFX9YVW9emb82mnsSFUdmBm/rKo+OY3/elW9cCO/QAAAAAA21jwrlD6c5NpV\nxn+hu6+Y3u5Nkqq6PMkbknz39JhfrKqzq+rsJB9I8poklyd547Rtkvzc9FzfmeSZJG9dzxcEAAAA\nwGKdMSh19yeSHJ/z+a5Pcld3/3l3/1GSI0munN6OdPcXuvvrSe5Kcn1VVZIfSvIb0+PvSHLD4NcA\nAAAAwCZazzmUbq2qR6ZD4s6bxi5O8vjMNsemsVONf1uSP+3u508aX1VV3VxVh6vq8NNPP72OqQMA\nAACwVmsNSh9M8h1JrkjyZJKf37AZnUZ3397d+7t7/wUXXLAZnxIAAACAk+xZy4O6+8snblfVLyX5\n7enDJ5JcOrPpJdNYTjH+lSTnVtWeaZXS7PYAAAAALKE1rVCqqotmPvzhJCeuAHd3kjdU1bdU1WVJ\n9iX5vSQPJdk3XdHthVk5cffd3d1JPp7kddPjb0rysbXMCQAAAIDNccYVSlX1a0lemeT8qjqW5LYk\nr6yqK5J0kqNJfjRJuvvRqvpIks8leT7JLd39jel5bk1yX5Kzkxzq7kenT/ETSe6qqp9O8vtJPrRh\nXx0AAAAAG+6MQam737jK8CmjT3f/TJKfWWX83iT3rjL+haxcBQ4AAACAbWA9V3kDAAAAYBcSlAAA\nAAAYIigBAAAAMERQAgAAAGCIoAQAAADAEEEJAAAAgCGCEgAAAABDBCUAAAAAhghKAAAAAAwRlAAA\nAAAYIigBAAAAMERQAgAAAGCIoAQAAADAEEEJAAAAgCGCEgAAAABDBCUAAAAAhghKAAAAAAwRlAAA\nAAAYIigBAAAAMERQAgAAAGCIoAQAAADAEEEJAAAAgCGCEgAAAABDBCUAAAAAhghKAAAAAAwRlAAA\nAAAYIigBAAAAMERQAgAAAGCIoAQAAADAEEEJAAAAgCGCEgAAAABDBCUAAAAAhghKAAAAAAwRlAAA\nAAAYIigBAAAAMERQAgAAAGCIoAQAAADAEEEJAAAAgCGCEgAAAABDBCUAAAAAhghKAAAAAAwRlAAA\nAAAYIigBAAAAMERQAgAAAGCIoAQAAADAEEEJAAAAgCGCEgAAAABDBCUAAAAAhghKAAAAAAwRlAAA\nAAAYIigBAAAAMERQAgAAAGCIoAQAAADAEEEJAAAAgCGCEgAAAABDBCUAAAAAhghKAAAAAAwRlAAA\nAAAYIigBAAAAMERQAgAAAGCIoAQAAADAEEEJAAAAgCGCEgAAAABDBCUAAAAAhghKAAAAAAwRlAAA\nAAAYIigBAAAAMERQAgAAAGCIoAQAAADAEEEJAAAAgCGCEgAAAABDBCUAAAAAhghKAAAAAAwRlAAA\nAAAYIigBAAAAMERQAgAAAGCIoAQAAADAEEEJAAAAgCGCEgAAAABD9mz1BAAA5rX3wD1n3Obowes2\nYSYAALubFUoAAAAADBGUAAAAABgiKAEAAAAwRFACAAAAYIigBAAAAMAQQQkAAACAIYISAAAAAEME\nJQAAAACGCEoAAAAADBGUAAAAABiyZ6snAACs3d4D98y13dGD1y14JgAA7CZWKAEAAAAwRFACAAAA\nYIigBAAAAMAQQQkAAACAIYISAAAAAEMEJQAAAACGCEoAAAAADBGUAAAAABhyxqBUVYeq6qmq+uzM\n2Eur6v6q+vz0/rxpvKrq/VV1pKoeqaqXzzzmpmn7z1fVTTPjr6iqz0yPeX9V1UZ/kQAAAABsnHlW\nKH04ybUnjR1I8kB370vywPRxkrwmyb7p7eYkH0xWAlSS25JcleTKJLediFDTNm+bedzJnwsAAACA\nJXLGoNTdn0hy/KTh65PcMd2+I8kNM+N39ooHk5xbVRcleXWS+7v7eHc/k+T+JNdO972kux/s7k5y\n58xzAQAAALCE1noOpQu7+8np9peSXDjdvjjJ4zPbHZvGTjd+bJXxVVXVzVV1uKoOP/3002ucOgAA\nAADrse6Tck8ri3oD5jLP57q9u/d39/4LLrhgMz4lAAAAACdZa1D68nS4Wqb3T03jTyS5dGa7S6ax\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(20, 10))\n", "ax = plt.bar(gpd.pd.np.arange(start_year, 2016), houston_chart_df.total)\n", "ax = plt.bar(gpd.pd.np.arange(start_year, 2016), houston_chart_df.in_zone)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Percentage of buildings in flood zones countywide by year" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABIQAAAJCCAYAAACxsxylAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAHaxJREFUeJzt3XusZed51/HfE09Sl1yaFk+r4Atj\nxARhKCjpyIkUUCJyYZJKcVGTYhua0KYx0BgVNRRcqJziSigtKIUK02La3ArEmFJgUKaYqKSKVNWR\nJ72kGbumg+vEYwx2LnIoUXBcHv44283JycycPTP7XJ/PRxp577Xf2fvdx7Nmz/med61V3R0AAAAA\n5njGTk8AAAAAgO0lCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEA\nAAAMIwgBAAAADHNgp174sssu60OHDu3UywMAAADsOx/72Mc+3d0HNxu3Y0Ho0KFDOXHixE69PAAA\nAMC+U1WfXGacQ8YAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAA\nhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACG\nEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACG2TQIVdW7q+qxqvrEWR6v\nqvqJqjpVVR+vqhevfpoAAAAArMoyK4Tem+ToOR5/bZLDi183JfnJi58WAAAAAFtl0yDU3R9J8tlz\nDLkuyft7zT1Jnl9VL1jVBAEAAABYrQMreI7Lkzy87v7pxbZHNw6sqpuytoooV1111Qpeenc4dMsH\nNx3z0Du/9YLGLzN2t42/0Pd6vuN3w3s93/GTvjaT3uv5jve12XzsVo/3Xnf3eF+bzcdu9fhJ7/V8\nx0/62uyG93q+431tNh+71eO919093tdm87GTbOtJpbv7ju4+0t1HDh48uJ0vDQAAAMDCKoLQI0mu\nXHf/isU2AAAAAHahVQShY0netLja2EuTPNHdX3W4GAAAAAC7w6bnEKqqDyR5RZLLqup0knckeWaS\ndPdPJTme5HVJTiX5QpLv2qrJAgAAAHDxNg1C3X3DJo93kretbEYAAAAAbKltPak0AAAAADtPEAIA\nAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAA\nABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAA\nGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAY\nRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhG\nEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQ\nAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhAC\nAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIA\nAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAA\nABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAA\nGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAY\nRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhG\nEAIAAAAYRhACAAAAGEYQAgAAABhmqSBUVUer6oGqOlVVt5zh8auq6sNV9WtV9fGqet3qpwoAAADA\nKmwahKrqkiS3J3ltkmuS3FBV12wY9kNJ7uruFyW5Psk/W/VEAQAAAFiNZVYIXZvkVHc/2N1PJrkz\nyXUbxnSS5y1uf12S/7G6KQIAAACwSgeWGHN5kofX3T+d5CUbxvxwkv9SVX8jybOTvGolswMAAABg\n5VZ1Uukbkry3u69I8rokP1tVX/XcVXVTVZ2oqhOPP/74il4aAAAAgPOxTBB6JMmV6+5fsdi23luS\n3JUk3f0rSS5NctnGJ+ruO7r7SHcfOXjw4IXNGAAAAICLskwQujfJ4aq6uqqelbWTRh/bMOZTSV6Z\nJFX1x7MWhCwBAgAAANiFNg1C3f1UkpuT3J3k/qxdTexkVd1WVa9fDHt7krdW1W8k+UCSv9LdvVWT\nBgAAAODCLXNS6XT38STHN2y7dd3t+5K8bLVTAwAAAGArrOqk0gAAAADsEYIQAAAAwDCCEAAAAMAw\nghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCC\nEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQ\nAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAA\nAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAA\nAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAA\nwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADA\nMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAw\nghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCC\nEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQ\nAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAA\nAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAA\nAMAwghAAAADAMIIQAAAAwDBLBaGqOlpVD1TVqaq65SxjvqOq7quqk1X1r1c7TQAAAABW5cBmA6rq\nkiS3J3l1ktNJ7q2qY91937oxh5P8YJKXdffnquobt2rCAAAAAFycZVYIXZvkVHc/2N1PJrkzyXUb\nxrw1ye3d/bkk6e7HVjtNAAAAAFZlmSB0eZKH190/vdi23guTvLCqfrmq7qmqo2d6oqq6qapOVNWJ\nxx9//MJmDAAAAMBFWdVJpQ8kOZzkFUluSPIvqur5Gwd19x3dfaS7jxw8eHBFLw0AAADA+VgmCD2S\n5Mp1969YbFvvdJJj3f2l7v6dJP8ta4EIAAAAgF1mmSB0b5LDVXV1VT0ryfVJjm0Y8x+ytjooVXVZ\n1g4he3CF8wQAAABgRTYNQt39VJKbk9yd5P4kd3X3yaq6rapevxh2d5LPVNV9ST6c5Ae6+zNbNWkA\nAAAALtyml51Pku4+nuT4hm23rrvdSb5/8QsAAACAXWxVJ5UGAAAAYI8QhAAAAACGEYQAAAAAhhGE\nAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQA\nAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAA\nAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAA\nAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAA\nhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACG\nEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYR\nhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGE\nAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGObDTEwCA/eahS29cYtQTWz4PAAA4GyuE\nAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQAAAAAhhGEAAAAAIYRhAAAAACGEYQA\nAAAAhhGEAAAAAIY5sNMTAIBVeOjSG5cY9cSWzwMAAPYCK4QAAAAAhhGEAAAAAIZxyBgAbGK5w9GS\niYek+doAAOxNVggBAAAADGOFEACwazlZOADA1rBCCAAAAGAYQQgAAABgGEEIAAAAYBhBCAAAAGAY\nQQgAAABgGEEIAAAAYBhBCAAAAGAYQQgAAABgGEEIAAAAYBhBCAAAAGCYAzs9AQBg6zx06Y1Ljnxi\n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\nYQQhAAAAgGEEIQAAAIBhBCEAAACAYQQhAAAAgGEEIQAAAIBhBCEAAACAYQQhAAAAgGEEIQAAAIBh\nBCEAAACAYQ7s9ATYWx669MYlRj2x5fMAAAAALpwVQgAAAADDCEIAAAAAwwhCAAAAAMMIQgAAAADD\nCEIAAAAAwwhCAAAAAMMIQgAAAADDCEIAAAAAwwhCAAAAAMMIQgAAAADDCEIAAAAAwwhCAAAAAMMI\nQgAAAADDCEIAAAAAwwhCAAAAAMMIQgAAAADDCEIAAAAAwwhCAAAAAMMIQgAAAADDCEIAAAAAwxzY\n6QkAy3no0huXGPXEls8DAACAvc8KIQAAAIBhBCEAAACAYQQhAAAAgGEEIQAAAIBhBCEAAACAYQQh\nAAAAgGEEIQAAAIBhBCEAAACAYQQhAAAAgGEEIQAAAIBhBCEAAACAYQQhAAAAgGEEIQAAAIBhBCEA\nAACAYQQhAAAAgGEEIQAAAIBhBCEAAACAYQQhAAAAgGEEIQAAAIBhBCEAAACAYQQhAAAAgGEEIQAA\nAIBhBCEAAACAYQQhAAAAgGEEIQAAAIBhBCEAAACAYQQhAAAAgGEEIQAAAIBhBCEAAACAYQQhAAAA\ngGEEIQAAAIBhBCEAAACAYQQhAAAAgGEEIQAAAIBhBCEAAACAYQQhAAAAgGEEIQAAAIBhBCEAAACA\nYQQhAAAAgGEEIQAAAIBhBCEAAACAYQQhAAAAgGEEIQAAAIBhBCEAAACAYQQhAAAAgGEEIQAAAIBh\nBCEAAACAYQQhAAAAgGGWCkJVdbSqHqiqU1V1yxke/5qq+jeLxz9aVYdWPVEAAAAAVmPTIFRVlyS5\nPclrk1yT5IaqumbDsLck+Vx3/9EkP57kR1c9UQAAAABWY5kVQtcmOdXdD3b3k0nuTHLdhjHXJXnf\n4vbPJXllVdXqpgkAAADAqiwThC5P8vC6+6cX2844prufSvJEkj+4igkCAAAAsFrV3eceUPWGJEe7\n+3sW978zyUu6++Z1Yz6xGHN6cf+/L8Z8esNz3ZTkpsXdP5bkgVW9EdgmlyX59KajgN3A/gp7i30W\n9g77K+xuf7i7D2426MAST/RIkivX3b9ise1MY05X1YEkX5fkMxufqLvvSHLHEq8Ju1JVnejuIzs9\nD2Bz9lfYW+yzsHfYX2F/WOaQsXuTHK6qq6vqWUmuT3Jsw5hjSd68uP2GJP+1N1t6BAAAAMCO2HSF\nUHc/VVU3J7k7ySVJ3t3dJ6vqtiQnuvtYkp9J8rNVdSrJZ7MWjQAAAADYhZY5ZCzdfTzJ8Q3bbl13\n+4tJ3rjaqcGu5JBH2Dvsr7C32Gdh77C/wj6w6UmlAQAAANhfljmHEAAAAAD7iCDEaFX17qp6rKo+\nsW7bn66qX6mq36yq/1RVz9vwe66qqt+tqr+1btvRqnqgqk5V1S3b+R5gkvPdZ6vqTy0eO7l4/NLF\n9m9Z3D9VVT9RVbUT7wf2s/PZX6vqmVX1vsX2+6vqB9f9Hp+xsMWq6sqq+nBV3bf4zPy+xfZvqKoP\nVdVvL/779Yvttfj8PFVVH6+qF697rjcvxv92Vb35bK8J7DxBiOnem+Tohm0/neSW7v7mJP8+yQ9s\nePxdSX7h6TtVdUmS25O8Nsk1SW6oqmu2asIw3Huz5D5bVQeS/Mskf627/0SSVyT50uL3/GSStyY5\nvPi18TmBi/feLP8Z+8YkX7PY/i1J/mpVHfIZC9vmqSRv7+5rkrw0ydsW+9otSX6xuw8n+cXF/WRt\nn3z6M/SmrH2upqq+Ick7krwkybVJ3vF0RAJ2H0GI0br7I1m7Mt56L0zykcXtDyX59qcfqKpvS/I7\nSU6uG39tklPd/WB3P5nkziTXbdmkYbDz3Gdfk+Tj3f0bi9/7me7+vap6QZLndfc9vXYivfcn+bat\nnz3Mcp77ayd59iLkfm2SJ5N8Pj5jYVt096Pd/auL2/87yf1JLs/a/va+xbD35cufl9cleX+vuSfJ\n8xefr38+yYe6+7Pd/bms7ed+6AK7lCAEX+1kvvyPzTcmuTJJquo5Sf5Okr+/YfzlSR5ed//0Yhuw\nPc64z2btG8+uqrur6ler6m8vtl+etf30afZZ2D5n219/Lsn/SfJokk8l+Ufd/dn4jIVtV1WHkrwo\nyUeTfFN3P7p46H8m+abF7bPtm/ZZ2EMEIfhq353ke6vqY0mem7WfUibJDyf58e7+3Z2aGHBGZ9tn\nDyT5M0n+0uK/f6GqXrkzUwQWzra/Xpvk95L8oSRXJ3l7Vf2RnZkizLX4Aei/S/I3u/vz6x9brKp1\niWrYRw7s9ARgt+nu38raoSapqhcm+dbFQy9J8oaq+rEkz0/y/6rqi0k+li//hDNJrkjyyPbNGGY7\nxz57OslHuvvTi8eOJ3lx1s4rdMW6p7DPwjY5x/56Y5L/3N1fSvJYVf1ykiNZW2ngMxa2QVU9M2sx\n6F91988vNv+vqnpBdz+6OCTsscX2R3LmffORrJ2zb/32X9rKeQMXzgoh2KCqvnHx32ck+aEkP5Uk\n3f1nu/tQdx9K8o+T/IPu/qdJ7k1yuKqurqpnJbk+ybEdmTwMdLZ9NsndSb65qv7A4rwkL09y32Lp\n++er6qWLq4u9Kcl/3IGpwzjn2F8/leTPLR57dtZOavtb8RkL22LxefgzSe7v7nete+hYkqevFPbm\nfPnz8liSNy2uNvbSJE8sPl/vTvKaqvr6xcmkX7PYBuxCVggxWlV9IGs/xbisqk5n7aoIz6mqty2G\n/HyS95zrObr7qaq6OWsfdpckeXd3nzzX7wEuzPnss939uap6V9a+oewkx7v7g4tx35u1KyB9bdau\nGvj7Vw4EVuM8P2NvT/KeqjqZpJK8p7s/vngen7Gw9V6W5DuT/GZV/fpi299N8s4kd1XVW5J8Msl3\nLB47nuR1SU4l+UKS70qS7v5sVf1I1j57k+S2xfnAgF2o1g4FBQAAAGAKh4wBAAAADCMIAQAAAAwj\nCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAzz/wHssrNBxlq8KwAAAABJ\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(20, 10))\n", "ax = plt.bar(gpd.pd.np.arange(start_year, 2016), [1 for i in gpd.pd.np.arange(start_year, 2016)])\n", "ax = plt.bar(gpd.pd.np.arange(start_year, 2016), chart_df.in_zone_percent)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Percentage of Houston buildings in flood zones by year" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABIQAAAJCCAYAAACxsxylAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAHcBJREFUeJzt3X+s5Xl91/HXmx3oVqCldacN7g9n\njYtxtDXQyUKCpkQQZ2nC1hSa3dWCLWU1ZU1NaXWrDdRtYmhrqDaurWvLr6qsiFXHMHUlFULSFLJD\nf1Bmt2vH7cLOiu7yI4OV4LL17R/3TLm9zMw9M3Puz/fjkUzmnu/5zDmfe+G7597n/Xw/p7o7AAAA\nAMzxtJ2eAAAAAADbSxACAAAAGEYQAgAAABhGEAIAAAAYRhACAAAAGEYQAgAAABhGEAIAAAAYRhAC\nAAAAGEYQAgAAABjmwE498VVXXdWHDh3aqacHAAAA2Hc++tGPfrq7D242bseC0KFDh3LixImdenoA\nAACAfaeqPrHMOJeMAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAA\nAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAA\nDCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADLNpEKqqt1XV41X18fPc\nX1X101V1qqo+VlUvWP00AQAAAFiVZVYIvSPJ0Qvcf1OSGxZ/bk/yM5c/LQAAAAC2yqZBqLs/lOSz\nFxhyc5J39ZoPJ3lOVT13VRMEAAAAYLUOrOAxrk7y6LrbpxfHPrVxYFXdnrVVRLnuuutW8NS7w6E7\n37fpmEfe8m2XNH6Zsbtt/KV+rhc7fjd8rhc7ftLXZtLnerHjfW02H7vV432uu3u8r83mY7d6/KTP\n9WLHT/ra7IbP9WLH+9psPnarx/tcd/d4X5vNx06yrZtKd/c93X2ku48cPHhwO58aAAAAgIVVBKHH\nkly77vY1i2MAAAAA7EKrCELHkrxm8W5jL0pypru/4nIxAAAAAHaHTfcQqqp3J3lJkquq6nSSNyd5\nepJ0988mOZ7kFUlOJflCku/eqskCAAAAcPk2DULdfesm93eSN6xsRgAAAABsqW3dVBoAAACAnScI\nAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgB\nAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEA\nAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAA\nAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAA\nDCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAM\nIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwj\nCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMI\nAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgB\nAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEA\nAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAA\nAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAADCMIAQAAAAwjCAEAAAAMIwgBAAAA\nDCMIAQAAAAwjCAEAAAAMIwgBAAAADLNUEKqqo1X1UFWdqqo7z3H/dVX1gar69ar6WFW9YvVTBQAA\nAGAVNg1CVXVFkruT3JTkcJJbq+rwhmE/kuQ93f38JLck+WernigAAAAAq7HMCqEbk5zq7oe7+8kk\n9ya5ecOYTvI1i4+/Nsn/WN0UAQAAAFilA0uMuTrJo+tun07ywg1jfjTJf6mqv5XkmUletpLZAQAA\nALByq9pU+tYk7+jua5K8IskvVNVXPHZV3V5VJ6rqxBNPPLGipwYAAADgYiwThB5Lcu2629csjq33\nuiTvSZLu/tUkVya5auMDdfc93X2ku48cPHjw0mYMAAAAwGVZJgjdn+SGqrq+qp6RtU2jj20Y88kk\nL02SqvrTWQtClgABAAAA7EKbBqHufirJHUnuS/Jg1t5N7GRV3VVVr1wMe2OS11fVbyZ5d5K/3t29\nVZMGAAAA4NIts6l0uvt4kuMbjr1p3ccPJHnxaqcGAAAAwFZY1abSAAAAAOwRghAAAADAMIIQAAAA\nwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADA\nMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAw\nghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCC\nEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQ\nAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAA\nAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAA\nAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAA\nwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADA\nMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAw\nghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCC\nEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQAAAAwDCCEAAAAMAwghAAAADAMIIQ\nAAAAwDCCEAAAAMAwghAAAADAMEsFoao6WlUPVdWpqrrzPGO+s6oeqKqTVfWvVztNAAAAAFblwGYD\nquqKJHcn+UtJTie5v6qOdfcD68bckOSHk7y4uz9XVd+wVRMGAAAA4PIss0LoxiSnuvvh7n4yyb1J\nbt4w5vVJ7u7uzyVJdz++2mkCAAAAsCrLBKGrkzy67vbpxbH1npfkeVX1K1X14ao6eq4Hqqrbq+pE\n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\nAAAAgGH+P2Nfo4hZ9gFwAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(20, 10))\n", "ax = plt.bar(gpd.pd.np.arange(start_year, 2016), [1 for i in gpd.pd.np.arange(start_year, 2016)])\n", "ax = plt.bar(gpd.pd.np.arange(start_year, 2016), houston_chart_df.in_zone_percent)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Write out the data for graphics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ultimately we smoothed data before 1975 to five-year averages due to imprecisions described by officials at the Harris County Appraisal District." ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "homes_by_year.to_csv(\"./output/homes-by-year.csv\")" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [], "source": [ "houston_homes_by_year.to_csv(\"./output/houston-homes-by-year.csv\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.14" } }, "nbformat": 4, "nbformat_minor": 2 }