Created
August 20, 2018 00:46
-
-
Save hunterowens/ba9165e9a3a96ccd9cd1da41ef526a43 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 35, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"ename": "AttributeError", | |
"evalue": "module 'altair.vegalite.v2.theme' has no attribute 'enable'", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<ipython-input-35-abafa3a7d362>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0maltair\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0malt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0malt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrenderers\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0menable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'notebook'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0malt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtheme\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0menable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'opaque'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", | |
"\u001b[0;31mAttributeError\u001b[0m: module 'altair.vegalite.v2.theme' has no attribute 'enable'" | |
] | |
} | |
], | |
"source": [ | |
"import pandas as pd\n", | |
"import geopandas as gpd \n", | |
"import geocoder \n", | |
"import altair as alt\n", | |
"alt.renderers.enable('notebook')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Date</th>\n", | |
" <th>Case Number</th>\n", | |
" <th>Address</th>\n", | |
" <th>Neighborhood Council</th>\n", | |
" <th>Community Plan</th>\n", | |
" <th>Type</th>\n", | |
" <th>Icon</th>\n", | |
" <th>Total Units</th>\n", | |
" <th>Parking Spaces</th>\n", | |
" <th>Project Description</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2017-10-10</td>\n", | |
" <td>DIR-2017-4059-TOC</td>\n", | |
" <td>432 E FLORENCE AVE 90003</td>\n", | |
" <td>Community and Neighbors for Ninth District Unity</td>\n", | |
" <td>Southeast Los Angeles</td>\n", | |
" <td>Affordable</td>\n", | |
" <td>large_blue</td>\n", | |
" <td>51.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>DEMO OF (E) AUTO REPAIR GARAGE TO CONSTRUCT (N...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2017-11-01</td>\n", | |
" <td>DIR-2017-4421-TOC</td>\n", | |
" <td>1015 E VENICE BLVD 90291</td>\n", | |
" <td>Venice</td>\n", | |
" <td>Venice</td>\n", | |
" <td>NaN</td>\n", | |
" <td>large_red</td>\n", | |
" <td>56.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>DEMOLITION OF 3 EXISTING MULTIFAMILY UNITS TO ...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2017-11-02</td>\n", | |
" <td>DIR-2017-4451-TOC</td>\n", | |
" <td>10604 W SANTA MONICA BLVD 90025</td>\n", | |
" <td>Westside</td>\n", | |
" <td>West Los Angeles</td>\n", | |
" <td>NaN</td>\n", | |
" <td>large_red</td>\n", | |
" <td>28.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>TOC PROJECT TO DEVELOP 28 UNITS APARTMENT WITH...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2017-11-07</td>\n", | |
" <td>DIR-2017-4551-TOC</td>\n", | |
" <td>5122 W MAPLEWOOD AVE 90004</td>\n", | |
" <td>Greater Wilshire</td>\n", | |
" <td>Wilshire</td>\n", | |
" <td>NaN</td>\n", | |
" <td>large_red</td>\n", | |
" <td>24.0</td>\n", | |
" <td>31.0</td>\n", | |
" <td>DEMOLITION OF AN EXISTING 1 SF AND 1 DUPLEX FO...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2017-11-07</td>\n", | |
" <td>DIR-2017-4561-TOC</td>\n", | |
" <td>226 N LAKE ST 90026</td>\n", | |
" <td>Greater Echo Park Elysian</td>\n", | |
" <td>Westlake</td>\n", | |
" <td>NaN</td>\n", | |
" <td>large_red</td>\n", | |
" <td>36.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>TRANSIT ORIENTED COMMUNITIES PROJECT, PERMITTI...</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Date Case Number Address \\\n", | |
"0 2017-10-10 DIR-2017-4059-TOC 432 E FLORENCE AVE 90003 \n", | |
"1 2017-11-01 DIR-2017-4421-TOC 1015 E VENICE BLVD 90291 \n", | |
"2 2017-11-02 DIR-2017-4451-TOC 10604 W SANTA MONICA BLVD 90025 \n", | |
"3 2017-11-07 DIR-2017-4551-TOC 5122 W MAPLEWOOD AVE 90004 \n", | |
"4 2017-11-07 DIR-2017-4561-TOC 226 N LAKE ST 90026 \n", | |
"\n", | |
" Neighborhood Council Community Plan \\\n", | |
"0 Community and Neighbors for Ninth District Unity Southeast Los Angeles \n", | |
"1 Venice Venice \n", | |
"2 Westside West Los Angeles \n", | |
"3 Greater Wilshire Wilshire \n", | |
"4 Greater Echo Park Elysian Westlake \n", | |
"\n", | |
" Type Icon Total Units Parking Spaces \\\n", | |
"0 Affordable large_blue 51.0 NaN \n", | |
"1 NaN large_red 56.0 NaN \n", | |
"2 NaN large_red 28.0 NaN \n", | |
"3 NaN large_red 24.0 31.0 \n", | |
"4 NaN large_red 36.0 NaN \n", | |
"\n", | |
" Project Description \n", | |
"0 DEMO OF (E) AUTO REPAIR GARAGE TO CONSTRUCT (N... \n", | |
"1 DEMOLITION OF 3 EXISTING MULTIFAMILY UNITS TO ... \n", | |
"2 TOC PROJECT TO DEVELOP 28 UNITS APARTMENT WITH... \n", | |
"3 DEMOLITION OF AN EXISTING 1 SF AND 1 DUPLEX FO... \n", | |
"4 TRANSIT ORIENTED COMMUNITIES PROJECT, PERMITTI... " | |
] | |
}, | |
"execution_count": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"toc = pd.read_excel('./Transit-Oriented Communities (TOC) Guidelines Case Reports.xlsx')\n", | |
"toc.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"zoning = gpd.read_file('./zoning.geojson')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"toc['location'] = toc.Address.apply(lambda x: geocoder.google(x))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"toc['Lat'] = toc.location.apply(lambda x: x.lat)\n", | |
"toc['Long'] = toc.location.apply(lambda x: x.lng)\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"\n", | |
"from shapely.geometry import Point\n", | |
"\n", | |
"geometry = [Point(xy) for xy in zip(toc.Long, toc.Lat)]\n", | |
"toc = toc.drop(['Long', 'Lat'], axis=1)\n", | |
"crs = {'init': 'epsg:4326'}\n", | |
"gdf = gpd.GeoDataFrame(toc, crs=crs, geometry=geometry)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"Index(['OBJECTID', 'ZONE_CMPLT', 'ZONE_CLASS', 'ZONE_SMRY', 'Shape__Area',\n", | |
" 'Shape__Length', 'geometry'],\n", | |
" dtype='object')" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"zoning.columns" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/Users/hunterowens/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py:2831: RuntimeWarning: invalid value encountered in ? (vectorized)\n", | |
" outputs = ufunc(*inputs)\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Date</th>\n", | |
" <th>Case Number</th>\n", | |
" <th>Address</th>\n", | |
" <th>Neighborhood Council</th>\n", | |
" <th>Community Plan</th>\n", | |
" <th>Type</th>\n", | |
" <th>Icon</th>\n", | |
" <th>Total Units</th>\n", | |
" <th>Parking Spaces</th>\n", | |
" <th>Project Description</th>\n", | |
" <th>location</th>\n", | |
" <th>geometry</th>\n", | |
" <th>index_right</th>\n", | |
" <th>ZONE_CLASS</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2017-10-10</td>\n", | |
" <td>DIR-2017-4059-TOC</td>\n", | |
" <td>432 E FLORENCE AVE 90003</td>\n", | |
" <td>Community and Neighbors for Ninth District Unity</td>\n", | |
" <td>Southeast Los Angeles</td>\n", | |
" <td>Affordable</td>\n", | |
" <td>large_blue</td>\n", | |
" <td>51.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>DEMO OF (E) AUTO REPAIR GARAGE TO CONSTRUCT (N...</td>\n", | |
" <td>[[432 E Florence Ave, Los Angeles, CA 90003, U...</td>\n", | |
" <td>POINT (-118.2668019 33.9744023)</td>\n", | |
" <td>11476</td>\n", | |
" <td>C2</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>26</th>\n", | |
" <td>2017-11-29</td>\n", | |
" <td>ADM-2017-4967-TOC</td>\n", | |
" <td>410 E FLORENCE AVE 90003</td>\n", | |
" <td>Community and Neighbors for Ninth District Unity</td>\n", | |
" <td>Southeast Los Angeles</td>\n", | |
" <td>NaN</td>\n", | |
" <td>measle_brown</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>PRELIMINARY REVIEW OF A POTENTIAL TOC PROJECT</td>\n", | |
" <td>[[410 E Florence Ave, Los Angeles, CA 90003, U...</td>\n", | |
" <td>POINT (-118.2670627 33.9744009)</td>\n", | |
" <td>11476</td>\n", | |
" <td>C2</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2017-11-01</td>\n", | |
" <td>DIR-2017-4421-TOC</td>\n", | |
" <td>1015 E VENICE BLVD 90291</td>\n", | |
" <td>Venice</td>\n", | |
" <td>Venice</td>\n", | |
" <td>NaN</td>\n", | |
" <td>large_red</td>\n", | |
" <td>56.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>DEMOLITION OF 3 EXISTING MULTIFAMILY UNITS TO ...</td>\n", | |
" <td>[[1015 Venice Blvd, Venice, CA 90291, USA]]</td>\n", | |
" <td>POINT (-118.4525205 33.994505)</td>\n", | |
" <td>2147</td>\n", | |
" <td>R4</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2017-11-02</td>\n", | |
" <td>DIR-2017-4451-TOC</td>\n", | |
" <td>10604 W SANTA MONICA BLVD 90025</td>\n", | |
" <td>Westside</td>\n", | |
" <td>West Los Angeles</td>\n", | |
" <td>NaN</td>\n", | |
" <td>large_red</td>\n", | |
" <td>28.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>TOC PROJECT TO DEVELOP 28 UNITS APARTMENT WITH...</td>\n", | |
" <td>[[10604 Santa Monica Blvd, Los Angeles, CA 900...</td>\n", | |
" <td>POINT (-118.4295707 34.0532145)</td>\n", | |
" <td>14269</td>\n", | |
" <td>C2</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>31</th>\n", | |
" <td>2017-11-30</td>\n", | |
" <td>ADM-2017-4983-TOC</td>\n", | |
" <td>10604 W SANTA MONICA BLVD 90025</td>\n", | |
" <td>Westside</td>\n", | |
" <td>West Los Angeles</td>\n", | |
" <td>NaN</td>\n", | |
" <td>measle_brown</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>PRELIMINARY REVIEW OF A POTENTIAL TOC PROJECT</td>\n", | |
" <td>[[10604 Santa Monica Blvd, Los Angeles, CA 900...</td>\n", | |
" <td>POINT (-118.4295707 34.0532145)</td>\n", | |
" <td>14269</td>\n", | |
" <td>C2</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Date Case Number Address \\\n", | |
"0 2017-10-10 DIR-2017-4059-TOC 432 E FLORENCE AVE 90003 \n", | |
"26 2017-11-29 ADM-2017-4967-TOC 410 E FLORENCE AVE 90003 \n", | |
"1 2017-11-01 DIR-2017-4421-TOC 1015 E VENICE BLVD 90291 \n", | |
"2 2017-11-02 DIR-2017-4451-TOC 10604 W SANTA MONICA BLVD 90025 \n", | |
"31 2017-11-30 ADM-2017-4983-TOC 10604 W SANTA MONICA BLVD 90025 \n", | |
"\n", | |
" Neighborhood Council Community Plan \\\n", | |
"0 Community and Neighbors for Ninth District Unity Southeast Los Angeles \n", | |
"26 Community and Neighbors for Ninth District Unity Southeast Los Angeles \n", | |
"1 Venice Venice \n", | |
"2 Westside West Los Angeles \n", | |
"31 Westside West Los Angeles \n", | |
"\n", | |
" Type Icon Total Units Parking Spaces \\\n", | |
"0 Affordable large_blue 51.0 NaN \n", | |
"26 NaN measle_brown NaN NaN \n", | |
"1 NaN large_red 56.0 NaN \n", | |
"2 NaN large_red 28.0 NaN \n", | |
"31 NaN measle_brown NaN NaN \n", | |
"\n", | |
" Project Description \\\n", | |
"0 DEMO OF (E) AUTO REPAIR GARAGE TO CONSTRUCT (N... \n", | |
"26 PRELIMINARY REVIEW OF A POTENTIAL TOC PROJECT \n", | |
"1 DEMOLITION OF 3 EXISTING MULTIFAMILY UNITS TO ... \n", | |
"2 TOC PROJECT TO DEVELOP 28 UNITS APARTMENT WITH... \n", | |
"31 PRELIMINARY REVIEW OF A POTENTIAL TOC PROJECT \n", | |
"\n", | |
" location \\\n", | |
"0 [[432 E Florence Ave, Los Angeles, CA 90003, U... \n", | |
"26 [[410 E Florence Ave, Los Angeles, CA 90003, U... \n", | |
"1 [[1015 Venice Blvd, Venice, CA 90291, USA]] \n", | |
"2 [[10604 Santa Monica Blvd, Los Angeles, CA 900... \n", | |
"31 [[10604 Santa Monica Blvd, Los Angeles, CA 900... \n", | |
"\n", | |
" geometry index_right ZONE_CLASS \n", | |
"0 POINT (-118.2668019 33.9744023) 11476 C2 \n", | |
"26 POINT (-118.2670627 33.9744009) 11476 C2 \n", | |
"1 POINT (-118.4525205 33.994505) 2147 R4 \n", | |
"2 POINT (-118.4295707 34.0532145) 14269 C2 \n", | |
"31 POINT (-118.4295707 34.0532145) 14269 C2 " | |
] | |
}, | |
"execution_count": 8, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"joined = gpd.sjoin(gdf, zoning[['ZONE_CLASS', 'geometry']], op='within')\n", | |
"joined.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 35, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Succesfully found 192 Zoning Codes out of 210 TOC Developments\n" | |
] | |
} | |
], | |
"source": [ | |
"print(\"Succesfully found {} Zoning Codes out of {} TOC Developments\".format(\n", | |
"len(joined), len(gdf)\n", | |
"))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 42, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div class=\"vega-embed\" id=\"68a4b949-f521-47fd-99e3-5a54b320eb5f\"></div>\n", | |
"\n", | |
"<style>\n", | |
".vega-embed .error p {\n", | |
" color: firebrick;\n", | |
" font-size: 14px;\n", | |
"}\n", | |
"</style>\n" | |
] | |
}, | |
"metadata": { | |
"jupyter-vega": "#68a4b949-f521-47fd-99e3-5a54b320eb5f" | |
}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"application/javascript": [ | |
"var spec = {\"config\": {\"view\": {\"width\": 400, \"height\": 300}}, \"data\": {\"name\": \"data-ffa00febca8a39495d8c8975367d2021\"}, \"mark\": \"bar\", \"background\": \"white\", \"encoding\": {\"x\": {\"type\": \"nominal\", \"field\": \"Zone Type\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Number of Developments\"}}, \"title\": \"Number of TOC developments by Zone Typology\", \"$schema\": \"https://vega.github.io/schema/vega-lite/v2.6.0.json\", \"datasets\": {\"data-ffa00febca8a39495d8c8975367d2021\": [{\"Zone Type\": \"C2\", \"Number of Developments\": 68}, {\"Zone Type\": \"R3\", \"Number of Developments\": 47}, {\"Zone Type\": \"R4\", \"Number of Developments\": 40}, {\"Zone Type\": \"C4\", \"Number of Developments\": 11}, {\"Zone Type\": \"CM\", \"Number of Developments\": 5}, {\"Zone Type\": \"CW\", \"Number of Developments\": 4}, {\"Zone Type\": \"RD1.5\", \"Number of Developments\": 3}, {\"Zone Type\": \"CR\", \"Number of Developments\": 3}, {\"Zone Type\": \"R2\", \"Number of Developments\": 2}, {\"Zone Type\": \"RAS4\", \"Number of Developments\": 1}, {\"Zone Type\": \"C1.5\", \"Number of Developments\": 1}, {\"Zone Type\": \"RD2\", \"Number of Developments\": 1}, {\"Zone Type\": \"PF\", \"Number of Developments\": 1}]}};\n", | |
"var opt = {};\n", | |
"var selector = \"#68a4b949-f521-47fd-99e3-5a54b320eb5f\";\n", | |
"var type = \"vega-lite\";\n", | |
"\n", | |
"var output_area = this;\n", | |
"\n", | |
"require(['nbextensions/jupyter-vega/index'], function(vega) {\n", | |
" vega.render(selector, spec, type, opt, output_area);\n", | |
"}, function (err) {\n", | |
" if (err.requireType !== 'scripterror') {\n", | |
" throw(err);\n", | |
" }\n", | |
"});\n" | |
] | |
}, | |
"metadata": { | |
"jupyter-vega": "#68a4b949-f521-47fd-99e3-5a54b320eb5f" | |
}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/plain": [] | |
}, | |
"execution_count": 42, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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z/Krr76SPn36SOPGjU1WkOmoUaOMZxkr0aNUqYGZiUDGI6AiSkx769WrJy+99JK8//77MmnSJPnss8+kZcuWgukxYojahMWcwoULGzFLliwxHisIskaNGsaTPHDggNStW1cWL14sZcqUkUWLFsnChQuPKhbTd7/T4KlLZd+BQ2qxRQsVkNG9GqjlUAARIALuEIh2xPIdgauYQNq7d680bNhQbrzxRkNgjRo1kptuukkaNGggy5YtUxPlzp07pVq1agI2L1++vFm0qVy5splijx07VubPny/wZjt16mQ82GLFitGjTEBv/IQIEIHkEFB5lChq+PDhJmaIhBXqu+66y/w7J+JKpopPPfWUIV+kpk2byltvvWU8x969e8vUqVPN75cvX24823iJU+9kEOe3RIAIRCOgJkoI/PzzzyVfvnxy1llnmYWctm3bSqVKlXxDe/fu3QLvtWzZstlkbtu2TYoXLy4lS5bMsSwSpW+qoCAikJEIqIgSM/S+ffuahRV4e0i7du2SZs2amTghPL8gJBJlELTAOhCB8CLgmShnz55t9jfGShUqVDD7HEmUiRlGscIFZdaILol9zK+IABFIOQKeiXLevHnyzDPPyMsvvyytW7c2p2WQsBJ+2mmnmSODRYoUSXmDYhVIjzIQamAliEBoEfBMlLbFIEps16levXpgQSBRBlY1rBgRCAUCaqJctWqV2ey9b9++rAbj31iRxoUVQUgkyiBogXUgAuFFQEWUODnTqlUrs8k7MjFGmZxBMEaZHF78mgikGgEVUdqTOdhHidt7QJw24Sq0oCR6lEHRBOtBBMKJgIoosT3oyiuvNJu9Bw8ebPZSkiiTNwR6lMljxhxEIJUIqIgSFcUeysmTJ3PqrdAaiVIBXppknTV/pRw8dFjdmkIFC0jXVrXUciggOwJqohw/frysWbNG8ufPnyUZizkPP/xwridmUqUMTr1ThTTL8YoAb8v3ilxq8qmJEtVcuXKlub3n9NNPN+SIfZRB2UOJ+pEoU2NMLMU7AiRK79ilIqeaKLGPEhfqIj377LPyySefyE8//SSvvvqqFChQIBVtyLUMEmWuEPGDPEaARJnHCsileBVR2mvWOnToYJ5hwEUYuBatffv28s0332R7viEvYSBR5iX6LDsRBEiUiaCUd9+oiNJuD3rxxRdlx44d8v3335vbyHHDuR/3UfoF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" | |
}, | |
"metadata": { | |
"jupyter-vega": "#68a4b949-f521-47fd-99e3-5a54b320eb5f" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"df = pd.DataFrame(joined.ZONE_CLASS.value_counts()).reset_index()\n", | |
"df.rename(index=str, columns= {'index': 'Zone Type', 'ZONE_CLASS': 'Number of Developments'}, inplace=True)\n", | |
"alt.Chart(df, title=\"Number of TOC developments by Zone Typology\",\n", | |
" background='white').mark_bar().encode(\n", | |
" x='Zone Type',\n", | |
" y='Number of Developments'\n", | |
")\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 49, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Zone Type</th>\n", | |
" <th>Number of Developments</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>C2</td>\n", | |
" <td>68</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>R3</td>\n", | |
" <td>47</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>R4</td>\n", | |
" <td>40</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>C4</td>\n", | |
" <td>11</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>CM</td>\n", | |
" <td>5</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>5</th>\n", | |
" <td>CW</td>\n", | |
" <td>4</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>6</th>\n", | |
" <td>RD1.5</td>\n", | |
" <td>3</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>7</th>\n", | |
" <td>CR</td>\n", | |
" <td>3</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>8</th>\n", | |
" <td>R2</td>\n", | |
" <td>2</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>9</th>\n", | |
" <td>RAS4</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>10</th>\n", | |
" <td>C1.5</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>11</th>\n", | |
" <td>RD2</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>12</th>\n", | |
" <td>PF</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Zone Type Number of Developments\n", | |
"0 C2 68\n", | |
"1 R3 47\n", | |
"2 R4 40\n", | |
"3 C4 11\n", | |
"4 CM 5\n", | |
"5 CW 4\n", | |
"6 RD1.5 3\n", | |
"7 CR 3\n", | |
"8 R2 2\n", | |
"9 RAS4 1\n", | |
"10 C1.5 1\n", | |
"11 RD2 1\n", | |
"12 PF 1" | |
] | |
}, | |
"execution_count": 49, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.sort_values(by='Number of Developments', ascending=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"zone_groups = zoning[['ZONE_CLASS', 'geometry']]\n", | |
"zone_groups.dissolve(by='ZONE_CLASS')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment