{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"variables": {
"foo": "foo"
}
},
"source": [
"# Mapping neighbourhood compost units in Amsterdam\n",
"\n",
"In the last year [several worm hotels popped up in Amsterdam](https://www.amsterdam.nl/wonen-leefomgeving/zelfbeheer/compost-maken-buurt/). This grassroot initiative lets the neighbourhood turn green waste into compost.\n",
"\n",
"Using [open data from the municipality of Amsterdam](https://data.amsterdam.nl), I will see what I can find out about these worm hotels. I will dig into the following:\n",
"\n",
"### Where is the nearest worm hotel to my house?\n",
"\n",
"* Show a map with the worm hotels and isochrones (isochrones are circles around a point that show the distance that can be traveled in a certain time)\n",
"\n",
"\n",
"### How reachable are the worm hotels for residences in Amsterdam?\n",
"\n",
"* Use a routing machine to calculate the shortest walking duration and distance to the nearest worm hotel for all addresses in Amsterdam. Keep only residences (and throw out companies, schools, museums and the like).\n",
"\n",
"* Create a function which takes in an address or coordinates, and returns the walking duration to the nearest worm hotel, and all information about the nearest worm hotel.\n",
"\n",
"Then I can do things like:\n",
"\n",
"* Calculate the percentage of residences within a 5 minute walk of a worm hotel, show histogram.\n",
"\n",
"* Score neighbourhoods and boroughs on reachability. Take into account the population per neigbourhood. Show a choropleth with the scores.\n",
"\n",
"\n",
"#### Notes\n",
"\n",
"* **Please note that this is a pet project and an exercise in using open data and software for data analysis. Advice about placement of worm hotels should be taken with a grain of salt: worm hotels have a limited number of participants. If you’re interested in joining a worm hotel, check [this website](https://www.amsterdam.nl/wonen-leefomgeving/zelfbeheer/compost-maken-buurt/), or use the function in this notebook to find out the nearest hotel and email address.**\n",
"* This should be relatively easy to generalize with any 2 datasets that have a 'location_cleaned' column with lng/lat coordinates as a single string, with a point as decimal seperator and comma as seperator between the coordinates.\n",
"* To look up the walking times for all addresses in Amsterdam, I use [OSRM](http://project-osrm.org/). I go the file for the Netherlands from [Geofabrik](http://www.geofabrik.de/), built it for the foot profile, and ran [the docker image provided by project-osrm](https://hub.docker.com/r/osrm/osrm-backend/) via [the docker application](https://www.docker.com/what-docker).\n",
"* I use the free tier of [openrouteservice.org](https://openrouteservice.org/) to calculate the Isochrones around the worm hotels.\n",
"* For mapping I use [Folium](https://github.com/python-visualization/folium), a Python wrapper for [Leaflet](http://leafletjs.com/).\n",
"\n",
"\n",
"#### Possible improvements\n",
"\n",
"* The OSRM lookup could be much faster with duplicate detection. Pandas can then fill down the missing values.\n",
"\n",
"* I would like to turn the data part into an API and run a web front end on this, to lookup addresses.\n",
"\n",
"* I'd like to create a matrix optimization function that returns the perfect placement for a new hotel (probably inside a designated area). I think I need to cover the area in random points, and pick the one with the greatest walking distance to all nearby wormhotels. \n",
"\n",
"#### Datasets used\n",
"\n",
"* [Addresses in Amsterdam](https://data.amsterdam.nl/index.html#?dsd=bag&dsp=1&dsv=TABLE&mpb=topografie&mpz=11&mpv=52.3731081:4.8932945)\n",
"* [Neighbourhood compost map and data](https://maps.amsterdam.nl/open_geodata/?LANG=en)\n",
"* [Population data Amsterdam](https://data.amsterdam.nl/#?dte=catalogus%2Fapi%2F3%2Faction%2Fpackage_show%3Fid%3Db51154d8-2eca-4dd9-932d-63bca9ef0bf2&dtfs=T&dsf=groups::bevolking&mpb=topografie&mpz=11&mpv=52.3731081:4.8932945)\n",
"* [GeoJSON of 'gebieden' (larger neighbourhoods) in Amsterdam](https://maps.amsterdam.nl/open_geodata/?LANG=nl) (simplified with [Mapshaper](http://mapshaper.org/))"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import requests\n",
"import folium\n",
"from folium.plugins import HeatMap\n",
"import geojson\n",
"import seaborn as sns\n",
"from decimal import Decimal, ROUND_HALF_UP\n",
"\n",
"\n",
"\n",
"# set interactivity to 'all' so I can easily print more than 1 outputs in 1 cell\n",
"from IPython.core.interactiveshell import InteractiveShell\n",
"InteractiveShell.ast_node_interactivity = \"all\"\n",
"\n",
"# Supress 'SettingWithCopyWarning'\n",
"pd.options.mode.chained_assignment = None # default='warn'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Nearest worm hotel to my house\n",
"\n",
"### 1.1 Preparing the data"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Load afvalcontainers from Amsterdam site\n",
"df_buurtcompost_import = pd.read_csv('http://maps.amsterdam.nl/open_geodata/excel.php?KAARTLAAG=BUURTCOMPOST&THEMA=buurtcompost', encoding='latin-1', sep=\";\")\n",
"df_buurtcompost = df_buurtcompost_import"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# Clean up the coordinates column. I need a string formatted a coord string \n",
"# with decimals points, comma seperated, formatted as '{lng},{lat}'.\n",
"df_buurtcompost = df_buurtcompost_import\n",
"df_buurtcompost['locatie_cleaned'] = df_buurtcompost_import['COORDS'].str.replace('POINT\\(','').str.replace('\\)','')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
OBJECTNUMMER
\n",
"
Straatnaam
\n",
"
Initiatiefnemer
\n",
"
Email
\n",
"
Aantal_bewoners
\n",
"
Soort_afval
\n",
"
Gebruik
\n",
"
Startjaar
\n",
"
Foto
\n",
"
COORDS
\n",
"
LNG
\n",
"
LAT
\n",
"
Unnamed: 12
\n",
"
locatie_cleaned
\n",
"
lng
\n",
"
lat
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
4
\n",
"
Frans Halsstraat
\n",
"
Peter Jan Brouwer
\n",
"
amsterdam+C001@wormenhotel.nl
\n",
"
20
\n",
"
GF
\n",
"
Toestemming van initiatiefnemer
\n",
"
2015
\n",
"
frans hals .jpeg
\n",
"
POINT(4.888706,52.356007)
\n",
"
4,888706
\n",
"
52,356007
\n",
"
NaN
\n",
"
4.888706,52.356007
\n",
"
4.888706
\n",
"
52.356007
\n",
"
\n",
"
\n",
"
1
\n",
"
5
\n",
"
hoek saffierstraat jozef israelkade
\n",
"
christien & anneke
\n",
"
amsterdam+c002@wormenhotel.nl
\n",
"
7
\n",
"
GF
\n",
"
Toestemming van initiatiefnemer
\n",
"
2016
\n",
"
NaN
\n",
"
POINT(4.908527,52.349857)
\n",
"
4,908527
\n",
"
52,349857
\n",
"
NaN
\n",
"
4.908527,52.349857
\n",
"
4.908527
\n",
"
52.349857
\n",
"
\n",
"
\n",
"
2
\n",
"
6
\n",
"
zaanstraat t/o 300
\n",
"
soeptuinen bredius
\n",
"
www.soeptuinen.nl
\n",
"
0
\n",
"
GFT
\n",
"
Vrij inleveren
\n",
"
2016
\n",
"
NaN
\n",
"
POINT(4.871422,52.391292)
\n",
"
4,871422
\n",
"
52,391292
\n",
"
NaN
\n",
"
4.871422,52.391292
\n",
"
4.871422
\n",
"
52.391292
\n",
"
\n",
"
\n",
"
3
\n",
"
7
\n",
"
kramatweg 51
\n",
"
oost indisch groen
\n",
"
info@oostindischgroen.nl
\n",
"
0
\n",
"
GFT
\n",
"
Vrij inleveren
\n",
"
2016
\n",
"
NaN
\n",
"
POINT(4.945789,52.36213)
\n",
"
4,945789
\n",
"
52,36213
\n",
"
NaN
\n",
"
4.945789,52.36213
\n",
"
4.945789
\n",
"
52.362130
\n",
"
\n",
"
\n",
"
4
\n",
"
8
\n",
"
IJplein
\n",
"
buurtbak voedseltuin
\n",
"
ireen@balkonton.nl
\n",
"
6
\n",
"
GF
\n",
"
Toestemming van initiatiefnemer
\n",
"
2016
\n",
"
NaN
\n",
"
POINT(4.910984,52.382154)
\n",
"
4,910984
\n",
"
52,382154
\n",
"
NaN
\n",
"
4.910984,52.382154
\n",
"
4.910984
\n",
"
52.382154
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" OBJECTNUMMER Straatnaam Initiatiefnemer \\\n",
"0 4 Frans Halsstraat Peter Jan Brouwer \n",
"1 5 hoek saffierstraat jozef israelkade christien & anneke \n",
"2 6 zaanstraat t/o 300 soeptuinen bredius \n",
"3 7 kramatweg 51 oost indisch groen \n",
"4 8 IJplein buurtbak voedseltuin \n",
"\n",
" Email Aantal_bewoners Soort_afval \\\n",
"0 amsterdam+C001@wormenhotel.nl 20 GF \n",
"1 amsterdam+c002@wormenhotel.nl 7 GF \n",
"2 www.soeptuinen.nl 0 GFT \n",
"3 info@oostindischgroen.nl 0 GFT \n",
"4 ireen@balkonton.nl 6 GF \n",
"\n",
" Gebruik Startjaar Foto \\\n",
"0 Toestemming van initiatiefnemer 2015 frans hals .jpeg \n",
"1 Toestemming van initiatiefnemer 2016 NaN \n",
"2 Vrij inleveren 2016 NaN \n",
"3 Vrij inleveren 2016 NaN \n",
"4 Toestemming van initiatiefnemer 2016 NaN \n",
"\n",
" COORDS LNG LAT Unnamed: 12 \\\n",
"0 POINT(4.888706,52.356007) 4,888706 52,356007 NaN \n",
"1 POINT(4.908527,52.349857) 4,908527 52,349857 NaN \n",
"2 POINT(4.871422,52.391292) 4,871422 52,391292 NaN \n",
"3 POINT(4.945789,52.36213) 4,945789 52,36213 NaN \n",
"4 POINT(4.910984,52.382154) 4,910984 52,382154 NaN \n",
"\n",
" locatie_cleaned lng lat \n",
"0 4.888706,52.356007 4.888706 52.356007 \n",
"1 4.908527,52.349857 4.908527 52.349857 \n",
"2 4.871422,52.391292 4.871422 52.391292 \n",
"3 4.945789,52.36213 4.945789 52.362130 \n",
"4 4.910984,52.382154 4.910984 52.382154 "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a function to create lng and lat float columns from 'location_cleaned' column\n",
"def create_lng_lat_columns ( df ) :\n",
" df['lng'] = df['LNG'].str.replace(',','.').astype(float)\n",
" df['lat'] = df['LAT'].str.replace(',','.').astype(float)\n",
" return df\n",
"\n",
"df_buurtcompost = create_lng_lat_columns(df_buurtcompost)\n",
"df_buurtcompost.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.2 Where are these hotels?\n",
"\n",
"Let's do some mapping! I'll use Folium to plot all hotels, and also plot the approximate location to myet house in Amsterdam.\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# Temporarily turn of showing all output for folium mapping, needs to be in seperate cell\n",
"InteractiveShell.ast_node_interactivity = \"last_expr\""
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"
"
],
"text/plain": [
""
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"buurtcompostlocaties_markers = list(zip(df_buurtcompost.lat.values, df_buurtcompost.lng.values, df_buurtcompost.Straatnaam))\n",
"hmap = folium.Map(location=[52.3824856,4.877951499999995], zoom_start=12, tiles='stamentoner',)\n",
"\n",
"feature_group = folium.FeatureGroup(\"Locations\")\n",
"for lat, lon, name in buurtcompostlocaties_markers:\n",
" feature_group.add_child(folium.Marker(location=[lat,lon],popup=name))\n",
"\n",
"my_house = folium.FeatureGroup(\"Locations\")\n",
"my_house.add_child(folium.Marker([52.381994, 4.876480], popup=\"My house (approx.)\", icon=folium.Icon(color='red',icon='info-sign'))) \n",
" \n",
"hmap.add_child(my_house)\n",
"hmap.add_child(feature_group)\n",
"hmap.save('01-locations.html')\n",
"hmap"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I can see a worm hotel is near the house (it's so closeby the red marker is obscured by it).\n",
"\n",
"## 2. How reachable are the worm hotels for everyone living in Amsterdam?\n",
"\n",
"First, let's see the how much over Amsterdam is covered within a 5 minute walk from the worm hotels by looking at some [isochrones](https://en.wikipedia.org/wiki/Isochrone_map).\n",
"\n",
"### 2.1 Mapping Isochrones of 5 minute walks around the worm hotels\n",
"\n",
"There is no way to plot Isochrones with OSRM, so I'll use the [Openrouteservice](https://openrouteservice.org/) instead. It only allows 5 calls at a time for their free tier, so this will be a bit clunky."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"InteractiveShell.ast_node_interactivity = \"all\" # Turn on all output again"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7.8"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create array with coords in format [['lat,lng'], ['lat,lng']]\n",
"buurtcompostlocaties_arrays = list(df_buurtcompost.locatie_cleaned)\n",
"# Divide length by 5 to see how many calls I need to make to openrouteservice.org. Shows 7.8, so 8 calls.\n",
"len(buurtcompostlocaties_arrays) / 5\n",
"# Put groups of 3-5 coordinates together in an array for building the API request URLs\n",
"buurtcompostlocaties_arrays_5 = [buurtcompostlocaties_arrays[i:i+5] for i in range(0, len(buurtcompostlocaties_arrays), 5)]\n",
"# print('Calls I need to make to openrouteservice API: ' + str(len(buurtcompostlocaties_arrays_5))) # Shows 8"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"# Create a function to create the GeoJSON files with isochrones\n",
"def create_isochrone_json(range_seconds, filename):\n",
"\n",
" isochrone_features = []\n",
"\n",
" for i in range(len(buurtcompostlocaties_arrays_5)):\n",
" coords = '|'.join(buurtcompostlocaties_arrays_5[i])\n",
" requestURL = 'https://private-anon-e7e15c7342-openrouteservice.apiary-proxy.com/isochrones' + \\\n",
" '?api_key=58d904a497c67e00015b45fc892c214578cd4fae9ea5f36e23e8cb2f&profile=foot-walking' + \\\n",
" '&range=' + range_seconds + '&location_type=destination&locations=' + coords\n",
" features = requests.get(requestURL).json()['features']\n",
" isochrone_features.append(features)\n",
"\n",
" isochrone_featurecollection = {\n",
" \"type\": \"FeatureCollection\",\n",
" \"features\": []\n",
" }\n",
"\n",
" for i in range(len(isochrone_features)):\n",
" isochrone_featurecollection['features'].extend(isochrone_features[i])\n",
"\n",
" with open(filename, 'w') as file:\n",
" geojson.dump(isochrone_featurecollection, file, indent=4, sort_keys=False)\n",
"\n",
"# Create isochrone GeoJSON\n",
"create_isochrone_json('300', 'data/isochrone_featurecollection_300.geojson')\n",
"create_isochrone_json('600', 'data/isochrone_featurecollection_600.geojson')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"InteractiveShell.ast_node_interactivity = \"last_expr\""
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"
"
],
"text/plain": [
""
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"buurtcompostlocaties_markers = list(zip(df_buurtcompost.lat.values, df_buurtcompost.lng.values, df_buurtcompost.Straatnaam))\n",
"hmap = folium.Map(location=[52.3824856,4.877951499999995], zoom_start=12, tiles='stamentoner',)\n",
"\n",
"feature_group = folium.FeatureGroup(\"Locations\")\n",
"for lat, lon, name in buurtcompostlocaties_markers:\n",
" feature_group.add_child(folium.Marker(location=[lat,lon],popup=name))\n",
" hmap.add_child(feature_group)\n",
"\n",
"folium.GeoJson(open(\"data/isochrone_featurecollection_300.geojson\",encoding = \"utf-8-sig\").read(), name='geojson').add_to(hmap)\n",
"# folium.GeoJson(open(\"data/isochrone_featurecollection_600.geojson\",encoding = \"utf-8-sig\").read(), name='geojson').add_to(hmap)\n",
"\n",
"hmap.save('02-locations-isochrones.html')\n",
"hmap\n"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [],
"source": [
"InteractiveShell.ast_node_interactivity = \"all\" # Turn on all output again"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some neighbourhoods have decent coverage. It's notable that the city center does not have any hotels. Let's look at the data on all addresses in Amsterdam!\n",
"\n",
"\n",
"\n",
"### 2.2 Loading in all addresses in Amsterdam"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Naam openbare ruimte
\n",
"
Huisnummer
\n",
"
Huisletter
\n",
"
Huisnummertoevoeging
\n",
"
Postcode
\n",
"
Woonplaats
\n",
"
Naam stadsdeel
\n",
"
Code stadsdeel
\n",
"
Naam gebiedsgerichtwerkengebied
\n",
"
Code gebiedsgerichtwerkengebied
\n",
"
...
\n",
"
Verblijfsobjectstatus
\n",
"
Openbareruimte-identificatie
\n",
"
Pandidentificatie
\n",
"
Verblijfsobjectidentificatie
\n",
"
Ligplaatsidentificatie
\n",
"
Standplaatsidentificatie
\n",
"
Nummeraanduidingidentificatie
\n",
"
lng
\n",
"
lat
\n",
"
locatie_cleaned
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
Eerste Constantijn Huygensstraat
\n",
"
15
\n",
"
NaN
\n",
"
1
\n",
"
1054BP
\n",
"
NaN
\n",
"
West
\n",
"
E
\n",
"
Oud West / De Baarsjes
\n",
"
DX05
\n",
"
...
\n",
"
Verblijfsobject in gebruik
\n",
"
363300000002537
\n",
"
['0363100012159829']
\n",
"
3.630100e+14
\n",
"
NaN
\n",
"
NaN
\n",
"
363200000007060
\n",
"
4.874401
\n",
"
52.364906
\n",
"
4.8744013,52.3649059
\n",
"
\n",
"
\n",
"
1
\n",
"
Eerste Helmersstraat
\n",
"
188
\n",
"
NaN
\n",
"
3
\n",
"
1054EL
\n",
"
NaN
\n",
"
West
\n",
"
E
\n",
"
Oud West / De Baarsjes
\n",
"
DX05
\n",
"
...
\n",
"
Verblijfsobject in gebruik
\n",
"
363300000002541
\n",
"
['0363100012120031']
\n",
"
3.630100e+14
\n",
"
NaN
\n",
"
NaN
\n",
"
363200000007846
\n",
"
4.864202
\n",
"
52.360826
\n",
"
4.8642015,52.3608257
\n",
"
\n",
"
\n",
"
2
\n",
"
Eerste Anjeliersdwarsstraat
\n",
"
1
\n",
"
NaN
\n",
"
2
\n",
"
1015NR
\n",
"
NaN
\n",
"
Centrum
\n",
"
A
\n",
"
Centrum-West
\n",
"
DX01
\n",
"
...
\n",
"
Verblijfsobject in gebruik
\n",
"
363300000002529
\n",
"
['0363100012174784']
\n",
"
3.630100e+14
\n",
"
NaN
\n",
"
NaN
\n",
"
363200000006112
\n",
"
4.883470
\n",
"
52.378220
\n",
"
4.8834704,52.3782196
\n",
"
\n",
"
\n",
"
3
\n",
"
Eerste Constantijn Huygensstraat
\n",
"
19
\n",
"
NaN
\n",
"
2
\n",
"
1054BP
\n",
"
NaN
\n",
"
West
\n",
"
E
\n",
"
Oud West / De Baarsjes
\n",
"
DX05
\n",
"
...
\n",
"
Verblijfsobject in gebruik
\n",
"
363300000002537
\n",
"
['0363100012157570']
\n",
"
3.630100e+14
\n",
"
NaN
\n",
"
NaN
\n",
"
363200000007066
\n",
"
4.874329
\n",
"
52.364798
\n",
"
4.8743292,52.3647977
\n",
"
\n",
"
\n",
"
4
\n",
"
Eerste Helmersstraat
\n",
"
190
\n",
"
NaN
\n",
"
3
\n",
"
1054EL
\n",
"
NaN
\n",
"
West
\n",
"
E
\n",
"
Oud West / De Baarsjes
\n",
"
DX05
\n",
"
...
\n",
"
Verblijfsobject in gebruik
\n",
"
363300000002541
\n",
"
['0363100012120432']
\n",
"
3.630100e+14
\n",
"
NaN
\n",
"
NaN
\n",
"
363200000007852
\n",
"
4.864099
\n",
"
52.360816
\n",
"
4.8640988,52.3608163
\n",
"
\n",
" \n",
"
\n",
"
5 rows Ă— 34 columns
\n",
"
"
],
"text/plain": [
" Naam openbare ruimte Huisnummer Huisletter \\\n",
"0 Eerste Constantijn Huygensstraat 15 NaN \n",
"1 Eerste Helmersstraat 188 NaN \n",
"2 Eerste Anjeliersdwarsstraat 1 NaN \n",
"3 Eerste Constantijn Huygensstraat 19 NaN \n",
"4 Eerste Helmersstraat 190 NaN \n",
"\n",
" Huisnummertoevoeging Postcode Woonplaats Naam stadsdeel Code stadsdeel \\\n",
"0 1 1054BP NaN West E \n",
"1 3 1054EL NaN West E \n",
"2 2 1015NR NaN Centrum A \n",
"3 2 1054BP NaN West E \n",
"4 3 1054EL NaN West E \n",
"\n",
" Naam gebiedsgerichtwerkengebied Code gebiedsgerichtwerkengebied \\\n",
"0 Oud West / De Baarsjes DX05 \n",
"1 Oud West / De Baarsjes DX05 \n",
"2 Centrum-West DX01 \n",
"3 Oud West / De Baarsjes DX05 \n",
"4 Oud West / De Baarsjes DX05 \n",
"\n",
" ... Verblijfsobjectstatus \\\n",
"0 ... Verblijfsobject in gebruik \n",
"1 ... Verblijfsobject in gebruik \n",
"2 ... Verblijfsobject in gebruik \n",
"3 ... Verblijfsobject in gebruik \n",
"4 ... Verblijfsobject in gebruik \n",
"\n",
" Openbareruimte-identificatie Pandidentificatie \\\n",
"0 363300000002537 ['0363100012159829'] \n",
"1 363300000002541 ['0363100012120031'] \n",
"2 363300000002529 ['0363100012174784'] \n",
"3 363300000002537 ['0363100012157570'] \n",
"4 363300000002541 ['0363100012120432'] \n",
"\n",
" Verblijfsobjectidentificatie Ligplaatsidentificatie \\\n",
"0 3.630100e+14 NaN \n",
"1 3.630100e+14 NaN \n",
"2 3.630100e+14 NaN \n",
"3 3.630100e+14 NaN \n",
"4 3.630100e+14 NaN \n",
"\n",
" Standplaatsidentificatie Nummeraanduidingidentificatie lng \\\n",
"0 NaN 363200000007060 4.874401 \n",
"1 NaN 363200000007846 4.864202 \n",
"2 NaN 363200000006112 4.883470 \n",
"3 NaN 363200000007066 4.874329 \n",
"4 NaN 363200000007852 4.864099 \n",
"\n",
" lat locatie_cleaned \n",
"0 52.364906 4.8744013,52.3649059 \n",
"1 52.360826 4.8642015,52.3608257 \n",
"2 52.378220 4.8834704,52.3782196 \n",
"3 52.364798 4.8743292,52.3647977 \n",
"4 52.360816 4.8640988,52.3608163 \n",
"\n",
"[5 rows x 34 columns]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"count 510436\n",
"unique 314880\n",
"top 4.8507211,52.3574849\n",
"freq 145\n",
"Name: locatie_cleaned, dtype: object"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Loading from disk because file is 17mb, loading from site takes too long\n",
"df_adressen = pd.read_csv('data/export_20180227_122333.zip', encoding='latin-1', sep=\";\")\n",
"# Convert lat and long values to float\n",
"df_adressen['lng'] = df_adressen['Longitude (WGS84)'].str.replace(',', '.').astype(float)\n",
"df_adressen['lat'] = df_adressen['Latitude (WGS84)'].str.replace(',', '.').astype(float)\n",
"# A few rows have NaN as longtitude or lattitude, let's remove those\n",
"df_adressen = df_adressen[pd.notnull(df_adressen['lng'])]\n",
"df_adressen = df_adressen[pd.notnull(df_adressen['lat'])]\n",
"# Now combine the coordinates into a string\n",
"df_adressen['locatie_cleaned'] = df_adressen['lng'].map(str) + \",\" + df_adressen['lat'].map(str)\n",
"df_adressen.head()\n",
"df_adressen['locatie_cleaned'].describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3 Which residences are within the 5-minute isochrones?\n",
"\n",
"Let's calculate who lives inside the isochrones I calculated earlier. Using [the even–odd rule](https://en.wikipedia.org/wiki/Even–odd_rule) I can determine if a point is inside a polygon or not."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"# Put geojson in variable\n",
"with open('data/isochrone_featurecollection_300.geojson') as geojson_file: \n",
" isochrones_300 = geojson.load(geojson_file)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"# Create even-odd rule function, see https://en.wikipedia.org/wiki/Even–odd_rule\n",
"def is_point_in_path(x, y, poly):\n",
" \"\"\"\n",
" x, y -- x and y coordinates of point\n",
" poly -- a list of tuples [(x, y), (x, y), ...]\n",
" \"\"\"\n",
" num = len(poly)\n",
" i = 0\n",
" j = num - 1\n",
" c = False\n",
" for i in range(num):\n",
" if ((poly[i][1] > y) != (poly[j][1] > y)) and \\\n",
" (x < poly[i][0] + (poly[j][0] - poly[i][0]) * (y - poly[i][1]) /\n",
" (poly[j][1] - poly[i][1])):\n",
" c = not c\n",
" j = i\n",
" return c"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"# Create function that outputs an Array with the names of the nearest worm hotel, or 'Not found'\n",
"def is_point_in_isochrones(isochrone_geojson,lng,lat):\n",
" geos = []\n",
" for i in range(len(isochrone_geojson['features'])):\n",
" geos.append(list(geojson.utils.coords(isochrone_geojson['features'][i])))\n",
" coordinates = []\n",
" for i in range(len(geos)):\n",
" if is_point_in_path(lng,lat,geos[i]):\n",
" coordinates.append(df_buurtcompost.Straatnaam.iloc[i])\n",
" return coordinates or [\"Not found\"]\n",
"\n",
"# Create a function with a single argument I can apply to the pandas dataframe\n",
"def is_point_in_isochrones_300(locatie_cleaned):\n",
" isochrone_geojson = isochrones_300\n",
" array_string = locatie_cleaned.split(',')\n",
" lng = float(array_string[0])\n",
" lat = float(array_string[1])\n",
" return is_point_in_isochrones(isochrone_geojson, lng, lat)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Test the function"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['hoek jacob catskade - de wittenstraat']"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"['Frans Halsstraat', 'daniel stalpertstraat', 'quellijnstraat']"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"['Frans Halsstraat', 'sarphatipark/sweelinckstraat']"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"is_point_in_isochrones(isochrones_300, 4.876480, 52.381994) # Near my house\n",
"is_point_in_isochrones(isochrones_300, 4.88718,52.357117) # Address which is within 3 polygons\n",
"is_point_in_isochrones_300(df_adressen.locatie_cleaned[4433]) # Testing the function to use with Pandas"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Apply function to all addresses"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"# Calculate this for all residences. Warning: this will take a while (10 minutes on my computer)\n",
"df_adressen['wormhotel_within_5_minutes'] = df_adressen['locatie_cleaned'].apply(\n",
" np.vectorize(is_point_in_isochrones_300))\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Naam openbare ruimte
\n",
"
Huisnummer
\n",
"
Huisletter
\n",
"
Huisnummertoevoeging
\n",
"
Postcode
\n",
"
Woonplaats
\n",
"
Naam stadsdeel
\n",
"
Code stadsdeel
\n",
"
Naam gebiedsgerichtwerkengebied
\n",
"
Code gebiedsgerichtwerkengebied
\n",
"
...
\n",
"
Openbareruimte-identificatie
\n",
"
Pandidentificatie
\n",
"
Verblijfsobjectidentificatie
\n",
"
Ligplaatsidentificatie
\n",
"
Standplaatsidentificatie
\n",
"
Nummeraanduidingidentificatie
\n",
"
lng
\n",
"
lat
\n",
"
locatie_cleaned
\n",
"
wormhotel_within_5_minutes
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
Eerste Constantijn Huygensstraat
\n",
"
15
\n",
"
NaN
\n",
"
1
\n",
"
1054BP
\n",
"
NaN
\n",
"
West
\n",
"
E
\n",
"
Oud West / De Baarsjes
\n",
"
DX05
\n",
"
...
\n",
"
363300000002537
\n",
"
['0363100012159829']
\n",
"
3.630100e+14
\n",
"
NaN
\n",
"
NaN
\n",
"
363200000007060
\n",
"
4.874401
\n",
"
52.364906
\n",
"
4.8744013,52.3649059
\n",
"
[Not found]
\n",
"
\n",
"
\n",
"
1
\n",
"
Eerste Helmersstraat
\n",
"
188
\n",
"
NaN
\n",
"
3
\n",
"
1054EL
\n",
"
NaN
\n",
"
West
\n",
"
E
\n",
"
Oud West / De Baarsjes
\n",
"
DX05
\n",
"
...
\n",
"
363300000002541
\n",
"
['0363100012120031']
\n",
"
3.630100e+14
\n",
"
NaN
\n",
"
NaN
\n",
"
363200000007846
\n",
"
4.864202
\n",
"
52.360826
\n",
"
4.8642015,52.3608257
\n",
"
[Not found]
\n",
"
\n",
"
\n",
"
2
\n",
"
Eerste Anjeliersdwarsstraat
\n",
"
1
\n",
"
NaN
\n",
"
2
\n",
"
1015NR
\n",
"
NaN
\n",
"
Centrum
\n",
"
A
\n",
"
Centrum-West
\n",
"
DX01
\n",
"
...
\n",
"
363300000002529
\n",
"
['0363100012174784']
\n",
"
3.630100e+14
\n",
"
NaN
\n",
"
NaN
\n",
"
363200000006112
\n",
"
4.883470
\n",
"
52.378220
\n",
"
4.8834704,52.3782196
\n",
"
[Not found]
\n",
"
\n",
"
\n",
"
3
\n",
"
Eerste Constantijn Huygensstraat
\n",
"
19
\n",
"
NaN
\n",
"
2
\n",
"
1054BP
\n",
"
NaN
\n",
"
West
\n",
"
E
\n",
"
Oud West / De Baarsjes
\n",
"
DX05
\n",
"
...
\n",
"
363300000002537
\n",
"
['0363100012157570']
\n",
"
3.630100e+14
\n",
"
NaN
\n",
"
NaN
\n",
"
363200000007066
\n",
"
4.874329
\n",
"
52.364798
\n",
"
4.8743292,52.3647977
\n",
"
[Not found]
\n",
"
\n",
"
\n",
"
4
\n",
"
Eerste Helmersstraat
\n",
"
190
\n",
"
NaN
\n",
"
3
\n",
"
1054EL
\n",
"
NaN
\n",
"
West
\n",
"
E
\n",
"
Oud West / De Baarsjes
\n",
"
DX05
\n",
"
...
\n",
"
363300000002541
\n",
"
['0363100012120432']
\n",
"
3.630100e+14
\n",
"
NaN
\n",
"
NaN
\n",
"
363200000007852
\n",
"
4.864099
\n",
"
52.360816
\n",
"
4.8640988,52.3608163
\n",
"
[Not found]
\n",
"
\n",
" \n",
"
\n",
"
5 rows Ă— 35 columns
\n",
"
"
],
"text/plain": [
" Naam openbare ruimte Huisnummer Huisletter \\\n",
"0 Eerste Constantijn Huygensstraat 15 NaN \n",
"1 Eerste Helmersstraat 188 NaN \n",
"2 Eerste Anjeliersdwarsstraat 1 NaN \n",
"3 Eerste Constantijn Huygensstraat 19 NaN \n",
"4 Eerste Helmersstraat 190 NaN \n",
"\n",
" Huisnummertoevoeging Postcode Woonplaats Naam stadsdeel Code stadsdeel \\\n",
"0 1 1054BP NaN West E \n",
"1 3 1054EL NaN West E \n",
"2 2 1015NR NaN Centrum A \n",
"3 2 1054BP NaN West E \n",
"4 3 1054EL NaN West E \n",
"\n",
" Naam gebiedsgerichtwerkengebied Code gebiedsgerichtwerkengebied \\\n",
"0 Oud West / De Baarsjes DX05 \n",
"1 Oud West / De Baarsjes DX05 \n",
"2 Centrum-West DX01 \n",
"3 Oud West / De Baarsjes DX05 \n",
"4 Oud West / De Baarsjes DX05 \n",
"\n",
" ... Openbareruimte-identificatie \\\n",
"0 ... 363300000002537 \n",
"1 ... 363300000002541 \n",
"2 ... 363300000002529 \n",
"3 ... 363300000002537 \n",
"4 ... 363300000002541 \n",
"\n",
" Pandidentificatie Verblijfsobjectidentificatie Ligplaatsidentificatie \\\n",
"0 ['0363100012159829'] 3.630100e+14 NaN \n",
"1 ['0363100012120031'] 3.630100e+14 NaN \n",
"2 ['0363100012174784'] 3.630100e+14 NaN \n",
"3 ['0363100012157570'] 3.630100e+14 NaN \n",
"4 ['0363100012120432'] 3.630100e+14 NaN \n",
"\n",
" Standplaatsidentificatie Nummeraanduidingidentificatie lng \\\n",
"0 NaN 363200000007060 4.874401 \n",
"1 NaN 363200000007846 4.864202 \n",
"2 NaN 363200000006112 4.883470 \n",
"3 NaN 363200000007066 4.874329 \n",
"4 NaN 363200000007852 4.864099 \n",
"\n",
" lat locatie_cleaned wormhotel_within_5_minutes \n",
"0 52.364906 4.8744013,52.3649059 [Not found] \n",
"1 52.360826 4.8642015,52.3608257 [Not found] \n",
"2 52.378220 4.8834704,52.3782196 [Not found] \n",
"3 52.364798 4.8743292,52.3647977 [Not found] \n",
"4 52.360816 4.8640988,52.3608163 [Not found] \n",
"\n",
"[5 rows x 35 columns]"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_adressen.head()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"# Also create a true/false column for easy plotting\n",
"def wormhotel_within_5_minutes_true_false(array):\n",
" if array[0] == \"Not found\":\n",
" return False\n",
" else:\n",
" return True\n",
"\n",
"df_adressen['is_wormhotel_within_5_minutes'] = df_adressen['wormhotel_within_5_minutes'].apply(wormhotel_within_5_minutes_true_false)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Plot: how many people are within a 5 minute walk according to the isochrones?\n",
"\n",
"We're only interested in residences (addresses where people live). Let's select those."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"df_adressen_woning = df_adressen[df_adressen['Feitelijk gebruik'].str.contains(\"woning\", na=False)]"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"438028"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"False 334937\n",
"True 103091\n",
"Name: is_wormhotel_within_5_minutes, dtype: int64"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"len(df_adressen_woning)\n",
"df_adressen_woning.is_wormhotel_within_5_minutes.value_counts()\n",
"p = sns.countplot(data=df_adressen_woning, x = 'is_wormhotel_within_5_minutes')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is quite surprising! 24% of all residence addresses are within a 5 minute walk of a worm hotel.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.4 Calculating a route to the nearest worm hotel for all addresses with OSRM\n",
"\n",
"Seeing which addresses are within a 5 minute walk from a worm hotel is a nice start, but let's go deeper! I can calculate how far **every** address needs to walk to the nearest worm hotel. If I know this, I can be much more precise in \n",
"\n",
"To get walking distances for all addresses, I need a routing service. I installed the excellent OSRM project locally with docker via http://router.project-osrm.org/ and used the latest information for\n",
"The Netherlands via http://download.geofabrik.de.\n",
"\n",
"OSRM lets you create a matrix that shows the walking duration for a series of points. I can create a 1 by many matrix for each address, and pick out the worm hotel with the shortest walking duration. The OSMR [doesn't return distance](https://github.com/Project-OSRM/osrm-backend/issues/1353), but since walking speed is set at 5 km/h by default and walking penalties are only given for sandy terrain and the like, I can reasonably calculate the distance in meters from the duration information.\n",
"\n",
"I'll first explore how to get the right information from the API, and then create a function which picks the nearest worm hotel for an address, and also prints the walking duration in minutes and distance in meters.\n",
"\n",
"#### First some exploration by hand\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Example of URL to send the API call with: http://0.0.0.0:5000/table/v1/foot/4.876480,52.381994;4.888706,52.356007;4.908527,52.349857;4.871422,52.391292;4.945789,52.36213;4.910984,52.382154;4.864346,52.3687925;4.926176,52.3370046;4.971355,52.37154;5.004663,52.345872;4.861766,52.376636;4.923331,52.366302;4.9177,52.351515;4.887118,52.356278;4.887075,52.35694;5.000672,52.353723;4.9758081,52.3612775;4.9457027,52.3681734;4.9939396,52.3572812;4.9520167,52.3340925;4.877403,52.313325;4.9121,52.3511739;4.8247244,52.3604001;4.8815228,52.3514622;4.9442745,52.3920048;4.9464001,52.3773338;4.8999979,52.4053634;4.9392225,52.3594959;4.7711392,52.3800813;4.9461426,52.3742948;4.8538532,52.3676329;4.8515358,52.2839112;4.9365725,52.3703089;4.8761048,52.3900331;4.8761638,52.3813059;4.8487945,52.3403283;4.8980131,52.355381;4.9840798,52.2981711;4.9370124,52.3571305;4.9071004,52.3491685?sources=0\n"
]
},
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"All distances I get from the test url: [2602, 3748.6, 1119.6, 4334.4, 2271.9, 1586.6, 5376.6, 7132.4, 8087.9, 1292, 3097.4, 4021.7, 2553.4, 2505, 8017.2, 5816.8, 4204.5, 8434.5, 6620.2, 7349.9, 3681.9, 3936.7, 2952.7, 4164.8, 4094.8, 4238.1, 4239.7, 5938.3, 3923.9, 2215.6, 9138.1, 3642.4, 891.9, 59.4, 4627.8, 2997.8, 10855.8, 4395.8, 3726.4]\n",
"Index of the wormhotel in the wormhotel dataset: 33\n",
"Seconds I have to walk to the nearest hotel: 59.4\n"
]
},
{
"data": {
"text/plain": [
"OBJECTNUMMER 42\n",
"Straatnaam hoek jacob catskade - de wittenstraat\n",
"Initiatiefnemer hilde\n",
"Email amsterdam+a209@wormenhotel.nl\n",
"Aantal_bewoners 15\n",
"Soort_afval GF\n",
"Gebruik Toestemming van initiatiefnemer\n",
"Startjaar 2017\n",
"Foto NaN\n",
"COORDS POINT(4.8761638,52.3813059)\n",
"LNG 4,8761638\n",
"LAT 52,3813059\n",
"Unnamed: 12 NaN\n",
"locatie_cleaned 4.8761638,52.3813059\n",
"lng 4.87616\n",
"lat 52.3813\n",
"Name: 33, dtype: object"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"close_to_my_address = \"4.877951499999995,52.3824856\"\n",
"close_to_my_address = \"4.876480,52.381994\"\n",
"buurtcompostlocaties = df_buurtcompost.locatie_cleaned.values\n",
"buurtcompostlocaties_string = \";\".join(buurtcompostlocaties)\n",
"\n",
"profile = \"foot\"\n",
"\n",
"# URL format for a htpp API call for getting a matrix is http://0.0.0.0:5000/table/v1/walking/\n",
"# 52.3548300687;4.7856975691585,52.349415837928;4.7941351619763,52.357223885252?sources=0\n",
"# 'sources=0' indicates that I only want the distances from the first set of coordinates\n",
"# to all the others. As a test I construct a URL that gives me the walking duration from my\n",
"# address to all the worm hotels.\n",
" \n",
"testURL_wormhotel_distance_from_my_address = \"http://0.0.0.0:5000/table/v1/\" + profile + \"/\" \\\n",
" + close_to_my_address + \";\" \\\n",
" + buurtcompostlocaties_string \\\n",
" + \"?sources=0\"\n",
" \n",
"print(\"Example of URL to send the API call with: \" + testURL_wormhotel_distance_from_my_address)\n",
"\n",
"\n",
"# Let's run a request and only select the duration array\n",
"distances_from_testURL = requests.get(testURL_wormhotel_distance_from_my_address).json()[\"durations\"][0]\n",
"\n",
"# This gives us a durations array. The first is 0 and the duration to my own address, so I can remove that:\n",
"distances_from_testURL.pop(0)\n",
"print(\"All distances I get from the test url: \" + str(distances_from_testURL))\n",
"\n",
"# Give us the duration and the index of the wormhotel that's closest\n",
"print(\"Index of the wormhotel in the wormhotel dataset: \" + str(distances_from_testURL.index(min(distances_from_testURL))))\n",
"print(\"Seconds I have to walk to the nearest hotel: \" + str(min(distances_from_testURL)))\n",
"\n",
"# Let's find out where the nearest wormhotel to my house is! 🎉\n",
"df_buurtcompost.iloc[33]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"Turns out I only have to walk a minute to the nearest hotel!\n",
"\n",
"#### Creating a function\n",
"\n",
"Let's wrap this up in a function so I can encode the whole dataset with this information."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"39"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"buurtcompostlocaties = df_buurtcompost.locatie_cleaned.values\n",
"buurtcompostlocaties_string = \";\".join(buurtcompostlocaties)\n",
"\n",
"len(buurtcompostlocaties)\n",
"\n",
"def compute_nearest_target_information(cell):\n",
" current_coordinates = cell\n",
" profile = \"foot\"\n",
" requestURL = \"http://0.0.0.0:5000/table/v1/\" + profile + \"/\" \\\n",
" + current_coordinates + \";\" \\\n",
" + buurtcompostlocaties_string \\\n",
" + \"?sources=0\"\n",
" distances = requests.get(requestURL).json()[\"durations\"][0]\n",
" distances.pop(0)\n",
" seconds = min(distances)\n",
" meters = seconds * 1.388888889\n",
" index = distances.index(min(distances))\n",
" buurtcompost_values = df_buurtcompost.iloc[index].values \n",
" return (seconds, meters, index, buurtcompost_values)\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(162.2,\n",
" 225.27777779579998,\n",
" 33,\n",
" array([42, 'hoek jacob catskade - de wittenstraat', 'hilde',\n",
" 'amsterdam+a209@wormenhotel.nl', 15, 'GF',\n",
" 'Toestemming van initiatiefnemer', 2017, nan,\n",
" 'POINT(4.8761638,52.3813059)', '4,8761638', '52,3813059', nan,\n",
" '4.8761638,52.3813059', 4.8761637999999996, 52.381305900000001], dtype=object))"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"(949.3, 1318.4722223277, 5, array([9, 'schimmelstraat 44',\n",
" 'stadsboerderij zimmerhoeve, annelijn van amsterdam',\n",
" 'info@zimmerhoeve.nl', 0, 'GF', 'Toestemming van initiatiefnemer',\n",
" 0, nan, 'POINT(4.864346,52.3687925)', '4,864346', '52,3687925', nan,\n",
" '4.864346,52.3687925', 4.8643460000000003, 52.368792499999998], dtype=object))"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Test output with my and someone else's house (or rather near it)\n",
"compute_nearest_target_information(\"4.877951499999995,52.3824856\")\n",
"compute_nearest_target_information(\"4.8796727,52.3712739\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Success!**\n",
"\n",
"#### Applying the router to all addresses in Amsterdam\n",
"\n",
"Neat! Now I can apply this function to the addresses in Amsterdam. First, lets apply this to small amount of people and also time it, so I can see how long our computer needs to work on the whole dataset.\n",
"\n",
"*Note: Because this takes a while, I ran this seperately and wrote the output to a CSV, which I'll import here instead.*"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"# %%time\n",
"# df_adressen.is_copy = False\n",
"# df_adressen['Nearest wormhotel information'] = df_adressen['locatie_cleaned'].apply(\n",
"# np.vectorize(compute_nearest_target_information))\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I now need to split the output from the function over new columns in the dataset. I also add the information from the nearest hotel as new columns to the dataset."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"# # Let's split it! Value inside df_adressen['Nearest wormhotel information'] are\n",
"# # 'seconds, meters, index, buurtcompost_values', and buurtcompostvalues are\n",
"# # 'OBJECTNUMMER', 'Straatnaam', 'Initiatiefnemer', 'Email', 'Aantal_bewoners', 'Soort_afval',\n",
"# # 'Gebruik', 'Startjaar', 'Foto', 'COORDS', 'LNG', 'LAT', 'Unnamed: 12', 'locatie_cleaned''\n",
"\n",
"# df_adressen['nearest_hotel_duration'], df_adressen['nearest_hotel_meters'], df_adressen[\n",
"# 'nearest_hotel_index'], df_adressen['nearest_hotel_values'] = zip(*df_adressen['Nearest wormhotel information'])\n",
"\n",
"# df_adressen['hotel_OBJECTNUMMER'], df_adressen['hotel_Straatnaam'], df_adressen['hotel_Initiatiefnemer'], \\\n",
"# df_adressen['hotel_Email'], df_adressen['hotel_Aantal_bewoners'], df_adressen['hotel_Soort_afval', ], \\\n",
"# df_adressen['hotel_Gebruik'], df_adressen['hotel_Startjaar'], df_adressen['hotel_Foto'], \\\n",
"# df_adressen['hotel_COORDS'], df_adressen['hotel_LNG'], df_adressen['hotel_LAT'], df_adressen['hotel_Unnamed: 12'], \\\n",
"# df_adressen['hotel_locatie_cleaned'], df_adressen['hotel_lng'], df_adressen['hotel_lat'] = zip(*df_adressen['nearest_hotel_values'])\n",
"\n",
"# df_adressen.to_csv('data/df_adressen.csv')\n"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Naam openbare ruimte
\n",
"
Huisnummer
\n",
"
Huisletter
\n",
"
Huisnummertoevoeging
\n",
"
Postcode
\n",
"
Woonplaats
\n",
"
Naam stadsdeel
\n",
"
Code stadsdeel
\n",
"
Naam gebiedsgerichtwerkengebied
\n",
"
Code gebiedsgerichtwerkengebied
\n",
"
...
\n",
"
hotel_Foto
\n",
"
hotel_COORDS
\n",
"
hotel_LNG
\n",
"
hotel_LAT
\n",
"
hotel_Unnamed: 12
\n",
"
hotel_locatie_cleaned
\n",
"
hotel_lng
\n",
"
hotel_lat
\n",
"
wormhotel_within_5_minutes
\n",
"
is_wormhotel_within_5_minutes
\n",
"
\n",
" \n",
" \n",
"
\n",
"
509940
\n",
"
Goudsbloemstraat
\n",
"
91
\n",
"
NaN
\n",
"
1
\n",
"
1015JK
\n",
"
NaN
\n",
"
Centrum
\n",
"
A
\n",
"
Centrum-West
\n",
"
DX01
\n",
"
...
\n",
"
NaN
\n",
"
POINT(4.8761638,52.3813059)
\n",
"
4,8761638
\n",
"
52,3813059
\n",
"
NaN
\n",
"
4.8761638,52.3813059
\n",
"
4.876164
\n",
"
52.381306
\n",
"
['Not found']
\n",
"
False
\n",
"
\n",
"
\n",
"
510067
\n",
"
John Franklinstraat
\n",
"
69
\n",
"
NaN
\n",
"
H
\n",
"
1056TA
\n",
"
NaN
\n",
"
West
\n",
"
E
\n",
"
Oud West / De Baarsjes
\n",
"
DX05
\n",
"
...
\n",
"
magalhaens.jpeg
\n",
"
POINT(4.8538532,52.3676329)
\n",
"
4,8538532
\n",
"
52,3676329
\n",
"
NaN
\n",
"
4.8538532,52.3676329
\n",
"
4.853853
\n",
"
52.367633
\n",
"
['Not found']
\n",
"
False
\n",
"
\n",
"
\n",
"
510117
\n",
"
Retiefstraat
\n",
"
22
\n",
"
A
\n",
"
NaN
\n",
"
1092XD
\n",
"
NaN
\n",
"
Oost
\n",
"
M
\n",
"
Oud-Oost
\n",
"
DX13
\n",
"
...
\n",
"
NaN
\n",
"
POINT(4.9177,52.351515)
\n",
"
4,9177
\n",
"
52,351515
\n",
"
NaN
\n",
"
4.9177,52.351515
\n",
"
4.917700
\n",
"
52.351515
\n",
"
['Not found']
\n",
"
False
\n",
"
\n",
"
\n",
"
510188
\n",
"
Tweede Atjehstraat
\n",
"
40
\n",
"
NaN
\n",
"
4
\n",
"
1094LH
\n",
"
NaN
\n",
"
Oost
\n",
"
M
\n",
"
Indische Buurt / Oostelijk Havengebied
\n",
"
DX14
\n",
"
...
\n",
"
halma.jpeg
\n",
"
POINT(4.9392225,52.3594959)
\n",
"
4,9392225
\n",
"
52,3594959
\n",
"
NaN
\n",
"
4.9392225,52.3594959
\n",
"
4.939222
\n",
"
52.359496
\n",
"
['Not found']
\n",
"
False
\n",
"
\n",
"
\n",
"
510354
\n",
"
De Lairessestraat
\n",
"
13
\n",
"
A
\n",
"
NaN
\n",
"
1071NR
\n",
"
NaN
\n",
"
Zuid
\n",
"
K
\n",
"
Oud Zuid
\n",
"
DX10
\n",
"
...
\n",
"
hartmonie.jpg
\n",
"
POINT(4.8815228,52.3514622)
\n",
"
4,8815228
\n",
"
52,3514622
\n",
"
NaN
\n",
"
4.8815228,52.3514622
\n",
"
4.881523
\n",
"
52.351462
\n",
"
['Not found']
\n",
"
False
\n",
"
\n",
" \n",
"
\n",
"
5 rows Ă— 57 columns
\n",
"
"
],
"text/plain": [
" Naam openbare ruimte Huisnummer Huisletter Huisnummertoevoeging \\\n",
"509940 Goudsbloemstraat 91 NaN 1 \n",
"510067 John Franklinstraat 69 NaN H \n",
"510117 Retiefstraat 22 A NaN \n",
"510188 Tweede Atjehstraat 40 NaN 4 \n",
"510354 De Lairessestraat 13 A NaN \n",
"\n",
" Postcode Woonplaats Naam stadsdeel Code stadsdeel \\\n",
"509940 1015JK NaN Centrum A \n",
"510067 1056TA NaN West E \n",
"510117 1092XD NaN Oost M \n",
"510188 1094LH NaN Oost M \n",
"510354 1071NR NaN Zuid K \n",
"\n",
" Naam gebiedsgerichtwerkengebied \\\n",
"509940 Centrum-West \n",
"510067 Oud West / De Baarsjes \n",
"510117 Oud-Oost \n",
"510188 Indische Buurt / Oostelijk Havengebied \n",
"510354 Oud Zuid \n",
"\n",
" Code gebiedsgerichtwerkengebied ... \\\n",
"509940 DX01 ... \n",
"510067 DX05 ... \n",
"510117 DX13 ... \n",
"510188 DX14 ... \n",
"510354 DX10 ... \n",
"\n",
" hotel_Foto hotel_COORDS hotel_LNG hotel_LAT \\\n",
"509940 NaN POINT(4.8761638,52.3813059) 4,8761638 52,3813059 \n",
"510067 magalhaens.jpeg POINT(4.8538532,52.3676329) 4,8538532 52,3676329 \n",
"510117 NaN POINT(4.9177,52.351515) 4,9177 52,351515 \n",
"510188 halma.jpeg POINT(4.9392225,52.3594959) 4,9392225 52,3594959 \n",
"510354 hartmonie.jpg POINT(4.8815228,52.3514622) 4,8815228 52,3514622 \n",
"\n",
" hotel_Unnamed: 12 hotel_locatie_cleaned hotel_lng hotel_lat \\\n",
"509940 NaN 4.8761638,52.3813059 4.876164 52.381306 \n",
"510067 NaN 4.8538532,52.3676329 4.853853 52.367633 \n",
"510117 NaN 4.9177,52.351515 4.917700 52.351515 \n",
"510188 NaN 4.9392225,52.3594959 4.939222 52.359496 \n",
"510354 NaN 4.8815228,52.3514622 4.881523 52.351462 \n",
"\n",
" wormhotel_within_5_minutes is_wormhotel_within_5_minutes \n",
"509940 ['Not found'] False \n",
"510067 ['Not found'] False \n",
"510117 ['Not found'] False \n",
"510188 ['Not found'] False \n",
"510354 ['Not found'] False \n",
"\n",
"[5 rows x 57 columns]"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Using zip to bypass github's filesize limit of 100mb\n",
"df_adressen = pd.read_csv('data/df_adressen_schoon.zip')\n",
"df_adressen_woning = df_adressen[df_adressen['Feitelijk gebruik'].str.contains(\"woning\", na=False)]\n",
"df_adressen_woning.tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The address dataset is complete!\n",
"\n",
"### 2.5 Fast lookup of worm hotel closest to address\n",
"\n",
"Now I can build a simple function which queries the dataset for a streetname and number, and returns information about the nearest worm hotel:\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Nearest Worm hotel name: hoek jacob catskade - de wittenstraat, Walking duration: 0.82 minutes. Contact amsterdam+a209@wormenhotel.nl for more information. Openrouteservice.org URL: https://maps.openrouteservice.org/directions?a=52.3818921,4.8763493,52.3813059,4.8761638&b=2&c=0&g1=-1&g2=0&k1=en-US&k2=km'"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"'Nearest Worm hotel name: schimmelstraat 44, Walking duration: 15.83 minutes. Contact info@zimmerhoeve.nl for more information. Openrouteservice.org URL: https://maps.openrouteservice.org/directions?a=52.3711914,4.8793065,52.3687925,4.864346&b=2&c=0&g1=-1&g2=0&k1=en-US&k2=km'"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"'Nothing found'"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"'Nearest Worm hotel name: sarphatipark/sweelinckstraat, Walking duration: 23.79 minutes. Contact wormenhotelsweelinck@gmail.com for more information. Openrouteservice.org URL: https://maps.openrouteservice.org/directions?a=52.3695584,4.8991772,52.355381,4.8980131&b=2&c=0&g1=-1&g2=0&k1=en-US&k2=km'"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def lookup_nearest_worm_hotel(straatnaam, nummer):\n",
" index = 0\n",
" index = df_adressen_woning.loc[(df_adressen_woning['Naam openbare ruimte'] == straatnaam) & (df_adressen_woning['Huisnummer'] == nummer)].nearest_hotel_index\n",
" if len(index) == 0:\n",
" return \"Nothing found\"\n",
" else:\n",
" duration = df_adressen_woning.loc[(df_adressen_woning['Naam openbare ruimte'] == straatnaam) & (df_adressen_woning['Huisnummer'] == nummer)].nearest_hotel_duration.iloc[0]\n",
" hotel_name = df_adressen_woning.loc[(df_adressen_woning['Naam openbare ruimte'] == straatnaam) & (df_adressen_woning['Huisnummer'] == nummer)].hotel_Straatnaam.iloc[0]\n",
" contact = df_adressen_woning.loc[(df_adressen_woning['Naam openbare ruimte'] == straatnaam) & (df_adressen_woning['Huisnummer'] == nummer)].hotel_Email.iloc[0]\n",
" hotel_latlong = str(df_adressen_woning.loc[(df_adressen_woning['Naam openbare ruimte'] == straatnaam) & (df_adressen_woning['Huisnummer'] == nummer)].hotel_lat.iloc[0]) + \",\" + str(df_adressen_woning.loc[(df_adressen_woning['Naam openbare ruimte'] == straatnaam) & (df_adressen_woning['Huisnummer'] == nummer)].hotel_lng.iloc[0])\n",
" adres_latlong = str(df_adressen_woning.loc[(df_adressen_woning['Naam openbare ruimte'] == straatnaam) & (df_adressen_woning['Huisnummer'] == nummer)].lat.iloc[0]) + \",\" + str(df_adressen_woning.loc[(df_adressen_woning['Naam openbare ruimte'] == straatnaam) & (df_adressen_woning['Huisnummer'] == nummer)].lng.iloc[0])\n",
" return \"Nearest Worm hotel name: \" + hotel_name + \", Walking duration: \" + str(round(duration / 60,2)) + \" minutes. Contact \" + str(contact) + \" for more information. Openrouteservice.org URL: https://maps.openrouteservice.org/directions?a=\" + str(adres_latlong) + \",\" + str(hotel_latlong) + \"&b=2&c=0&g1=-1&g2=0&k1=en-US&k2=km\"\n",
" # return \"Nearest Worm hotel name: \" + hotel_name + \", Walking duration: \" + str(round(duration / 60,2)) + \" minutes. Contact \" + str(contact) + \" for more information. Google maps URL: http://maps.google.com/maps?q=\" + str(hotel_latlong) + \" .\"\n",
"\n",
"lookup_nearest_worm_hotel(\"De Wittenstraat\",174)\n",
"lookup_nearest_worm_hotel(\"Lauriergracht\",112)\n",
"lookup_nearest_worm_hotel(\"The Wittenstraat\",172) # Intentionally incorrect streetname to test error handling\n",
"lookup_nearest_worm_hotel(\"Groenburgwal\", 1)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.6 Comparison of the OSRM and Openrouteservice calculations\n",
"\n",
"Let's see if the numbers from the isochrones compare to the information I have now."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"438028"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"False 334765\n",
"True 103263\n",
"Name: is_wormhotel_within_5_minutes, dtype: int64"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"len(df_adressen_woning)\n",
"df_adressen_woning.is_wormhotel_within_5_minutes.value_counts()\n",
"isochrones = sns.countplot(data=df_adressen_woning, x = 'is_wormhotel_within_5_minutes')"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"438028"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"False 386897\n",
"True 51131\n",
"Name: nearest_hotel_duration_under_300, dtype: int64"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_adressen_woning['nearest_hotel_duration_under_300'] = df_adressen_woning['nearest_hotel_duration'].transform(lambda x: x < 300.5)\n",
"len(df_adressen_woning)\n",
"df_adressen_woning.nearest_hotel_duration_under_300.value_counts()\n",
"\n",
"p = sns.countplot(data=df_adressen_woning, x = 'nearest_hotel_duration_under_300')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"They don't! According to our routing through OSRM, only 12% of the residence addresses are within a 5 minute walk of a worm hotel, as opposed to the 24% I calculated with openrouteservice.org. Your mileage may vary!\n",
"\n",
"Digging into the data generated by OSRM a bit more, I noticed that OSRM missed a few nearby worm hotels for a few neighbourhoods. When I tested the route between an address and a nearby worm hotel in IJburg, the frontend gave me this:\n",
"\n",
"![](osrm-mishap.png)\n",
"\n",
"The route is completely off, so the results get skewed here. I don't know how to solve this, and it's strange that openrouteservice.org gives a different result with the isochrones, but also gives a weird (and different!) route when routing addresses in IJburg:\n",
"\n",
"![](ors-mishap.png)\n",
"\n",
"Google Maps does work, and shows this:\n",
"\n",
"![](maps-success.png)\n",
"\n",
"I notified Openstreetmap of this error.\n",
"\n",
"I can also see this when I plot a histogram of the nearest times calculated by OSRM. Look at the tail over 10000 seconds (a 2.8 hour walk!):\n"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = sns.distplot(df_adressen_woning['nearest_hotel_duration'], kde=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ideally this would be addressed at openstreetmap and temporarily solved by using as the crow flies for IJburg, but for the purpose of the analysis of the whole city, I'll exclude IJburg for now. Luckily IJburg is already nicely covered with 3 worm hotels."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"df_adressen_woning_not_ijburg = df_adressen_woning[df_adressen_woning['Naam Wijk'].str.contains('IJburg') == False]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Also, openrouteservice.org seems to give much shorter times when calculating an isochrone than when using the router option. For example 'Amaliastraat 10' in Amsterdam is supposed to be less than 300 seconds away from the nearest hotel according to our earlier isochrone calculations, but according to their own router, it's a 480 second walk. That's a good explanation why the OSRM calculation shows much less worm hotels within a 5 minute walk radius.\n",
"\n",
"If I expand the radius of the OSRM calculation to 500 seconds, I get about the same distribution as I got from the isochrone calculation. I think 500 seconds is a good upper maximum: an 8 minute walk is doable for early adopters, and by bike it's even faster."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"429179"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"False 321889\n",
"True 107290\n",
"Name: nearest_hotel_duration_under_500, dtype: int64"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"len(df_adressen_woning_not_ijburg)\n",
"df_adressen_woning_not_ijburg['nearest_hotel_duration_under_500'] = df_adressen_woning_not_ijburg['nearest_hotel_duration'].transform(lambda x: x < 500.5)\n",
"df_adressen_woning_not_ijburg.nearest_hotel_duration_under_500.value_counts()\n",
"p = sns.countplot(data=df_adressen_woning_not_ijburg, x = 'nearest_hotel_duration_under_500')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"### 2.7 Percentages, histograms, and bins\n",
"\n",
"The percentage of the number of hotels within a 500 second radius according to OSRM is 33.3%:\n"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'33.3%'"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"str(int((df_adressen_woning_not_ijburg.nearest_hotel_duration_under_500.value_counts()[1] / df_adressen_woning_not_ijburg.nearest_hotel_duration_under_500.value_counts()[0]) * 1000) / 10) + \"%\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Looking at the histogram, I see a lot of times below 1000 seconds (16.7 minutes)."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = sns.distplot(df_adressen_woning_not_ijburg['nearest_hotel_duration'], kde=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's zoom in on the most comon durations:"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [],
"source": [
"woning_not_ijburg_durations_below_3000 = df_adressen_woning_not_ijburg['nearest_hotel_duration'][df_adressen_woning_not_ijburg['nearest_hotel_duration'] < 3000]"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = sns.distplot(woning_not_ijburg_durations_below_3000)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And use our own bins:"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = sns.distplot(woning_ijburg_durations_below_3000, bins=[0, 500, 1000, 1500, 2000,3000])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"### 2.7 Mapping the OSRM output: creating a chloropleth per neighbourhood\n",
"\n",
"Let's compute the average duration per (larger) neighbourhood, normalize that into a score, and create a cloropleth map. I used the so called 'gebiedsgerichtwerkengebied', a larger neighbourhood, instead of 'normal' neighbourhoods, because [the address data of the municipality](https://data.amsterdam.nl/#?dsd=bag&dsp=1&dsv=TABLE&mpb=topografie&mpz=11&mpv=52.3731081:4.8932945) is out of date with [the 'new' neighbourhood borders of 2015](https://www.ois.amsterdam.nl/nieuwsarchief/2015/nieuwe-gebiedsindeling-voor-amsterdam).\n",
"\n",
"#### Pivot table\n",
"\n",
"First, I'll create a pivot table of the neigbourhoods and mean walking duration in seconds:"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
nearest_hotel_duration
\n",
"
\n",
"
\n",
"
Naam gebiedsgerichtwerkengebied
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
Indische Buurt / Oostelijk Havengebied
\n",
"
395.445561
\n",
"
\n",
"
\n",
"
Westerpark
\n",
"
434.300928
\n",
"
\n",
"
\n",
"
De Pijp / Rivierenbuurt
\n",
"
494.153409
\n",
"
\n",
"
\n",
"
Oud-Oost
\n",
"
516.719633
\n",
"
\n",
"
\n",
"
Oud West / De Baarsjes
\n",
"
562.601836
\n",
"
\n",
"
\n",
"
Ijburg / Eiland Zeeburg
\n",
"
676.957284
\n",
"
\n",
"
\n",
"
Oud-Noord
\n",
"
793.821163
\n",
"
\n",
"
\n",
"
Centrum-Oost
\n",
"
798.746384
\n",
"
\n",
"
\n",
"
Watergraafsmeer
\n",
"
804.365915
\n",
"
\n",
"
\n",
"
Bos en Lommer
\n",
"
848.735375
\n",
"
\n",
"
\n",
"
Oud Zuid
\n",
"
902.842803
\n",
"
\n",
"
\n",
"
Slotervaart
\n",
"
925.571860
\n",
"
\n",
"
\n",
"
Centrum-West
\n",
"
937.145351
\n",
"
\n",
"
\n",
"
Oost
\n",
"
1169.752248
\n",
"
\n",
"
\n",
"
Gaasperdam / Driemond
\n",
"
1290.230570
\n",
"
\n",
"
\n",
"
West
\n",
"
1538.622201
\n",
"
\n",
"
\n",
"
Buitenveldert / Zuidas
\n",
"
1627.046032
\n",
"
\n",
"
\n",
"
Osdorp
\n",
"
1775.954414
\n",
"
\n",
"
\n",
"
Geuzenveld-Slotermeer-Sloterdijken
\n",
"
1885.094372
\n",
"
\n",
"
\n",
"
Bijlmer Centrum
\n",
"
2109.461601
\n",
"
\n",
"
\n",
"
De Aker, Sloten en Nieuw Sloten
\n",
"
2264.087821
\n",
"
\n",
"
\n",
"
Bijlmer Oost
\n",
"
3200.194357
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" nearest_hotel_duration\n",
"Naam gebiedsgerichtwerkengebied \n",
"Indische Buurt / Oostelijk Havengebied 395.445561\n",
"Westerpark 434.300928\n",
"De Pijp / Rivierenbuurt 494.153409\n",
"Oud-Oost 516.719633\n",
"Oud West / De Baarsjes 562.601836\n",
"Ijburg / Eiland Zeeburg 676.957284\n",
"Oud-Noord 793.821163\n",
"Centrum-Oost 798.746384\n",
"Watergraafsmeer 804.365915\n",
"Bos en Lommer 848.735375\n",
"Oud Zuid 902.842803\n",
"Slotervaart 925.571860\n",
"Centrum-West 937.145351\n",
"Oost 1169.752248\n",
"Gaasperdam / Driemond 1290.230570\n",
"West 1538.622201\n",
"Buitenveldert / Zuidas 1627.046032\n",
"Osdorp 1775.954414\n",
"Geuzenveld-Slotermeer-Sloterdijken 1885.094372\n",
"Bijlmer Centrum 2109.461601\n",
"De Aker, Sloten en Nieuw Sloten 2264.087821\n",
"Bijlmer Oost 3200.194357"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"22"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_neighbourhood_nearest_hotel_duration = df_adressen_woning_not_ijburg.pivot_table( \\\n",
" columns='Naam gebiedsgerichtwerkengebied', values='nearest_hotel_duration').transpose()\n",
"df_neighbourhood_nearest_hotel_duration.sort_values(by=\"nearest_hotel_duration\")\n",
"len(df_neighbourhood_nearest_hotel_duration.sort_values(by=\"nearest_hotel_duration\"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Plotting mean neighbourhoods with a mean duration of < 500 seconds\n",
"\n",
"Now I can also see the percentage of neighbourhoods where the mean walking time for residence addresses is less than 500 seconds (13.6%, or 3 out of 19)"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"22"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"False 19\n",
"True 3\n",
"Name: nearest_hotel_duration_under_500, dtype: int64"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"'Percentage neighbourhoods under 500 second walk: 13.6363636364%'"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_neighbourhood_nearest_hotel_duration['nearest_hotel_duration_under_500'] = \\\n",
"df_neighbourhood_nearest_hotel_duration['nearest_hotel_duration'].transform(lambda x: x < 500.5)\n",
"len(df_neighbourhood_nearest_hotel_duration)\n",
"df_neighbourhood_nearest_hotel_duration.nearest_hotel_duration_under_500.value_counts()\n",
"\n",
"\"Percentage neighbourhoods under 500 second walk: \" + str(df_neighbourhood_nearest_hotel_duration.nearest_hotel_duration_under_500.value_counts()[1] / len(df_neighbourhood_nearest_hotel_duration) * 100) + \"%\" \n",
"\n",
"\n",
"\n",
"p = sns.countplot(data=df_neighbourhood_nearest_hotel_duration, x = 'nearest_hotel_duration_under_500')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Normalizing the duration data\n",
"\n",
"To make the cloropleth useful, I'll normalize the data to an inversed score, so that a shorter mean duration translates to a higher score."
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"