Skip to content

Instantly share code, notes, and snippets.

@mjpieters
Created March 25, 2020 17:48
Show Gist options
  • Save mjpieters/345f6d187d11fc501d9033aaa5c0670a to your computer and use it in GitHub Desktop.
Save mjpieters/345f6d187d11fc501d9033aaa5c0670a to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import re\n",
"import string\n",
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"_nums = re.compile(\"\\d+\")\n",
"_lscore = {l: s for s, l in enumerate(string.ascii_uppercase, 1)}\n",
"\n",
"\n",
"def pcscore(postcode, _nums=_nums.findall, _ls_get=_lscore.get):\n",
" return (\n",
" sum(_ls_get(c, 0) for c in postcode) +\n",
" sum(map(int, _nums(postcode)))\n",
" )\n",
"\n",
"\n",
"URL = \"https://www.doogal.co.uk/files/postcodes.zip\"\n",
"string_cols = dict.fromkeys(\n",
" (\n",
" \"Postcode\", \"Grid Ref\", \"County\", \"District\", \"Ward\", \"District Code\",\n",
" \"Ward Code\", \"Country\", \"County Code\", \"Constituency\", \"Parish\",\n",
" \"National Park\", \"Built up area\", \"Built up sub-division\",\n",
" \"Lower layer super output area\", \"Rural/urban\", \"Region\", \"LSOA Code\",\n",
" \"Local authority\", \"MSOA Code\", \"Middle layer super output area\",\n",
" \"Parish Code\", \"Census output area\", \"Constituency Code\",\n",
" \"Nearest station\", \"Postcode area\", \"Postcode district\",\n",
" \"Police force\", \"Water company\", \"Plus Code\"\n",
" ), pd.StringDtype()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"postcodes = pd.read_csv(\n",
" URL,\n",
" dtype={\n",
" \"In Use?\": np.bool,\n",
" \"Easting\": \"UInt32\",\n",
" \"Northing\": \"UInt32\",\n",
" \"Population\": \"UInt16\",\n",
" \"Households\": \"UInt16\",\n",
" \"Index of Multiple Deprivation\": \"UInt16\",\n",
" \"London zone\": \"UInt8\",\n",
" \"Quality\": \"UInt8\",\n",
" \"User Type\": \"UInt8\",\n",
" \"Altitude\": \"Int16\",\n",
" **string_cols,\n",
" },\n",
" true_values=[\"Yes\"],\n",
" false_values=[\"No\"],\n",
" parse_dates=[\"Introduced\", \"Terminated\", \"Last updated\"],\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"postcodes[\"Score\"] = postcodes.Postcode.apply(pcscore).astype(np.uint8)\n",
"in_use = postcodes[postcodes[\"In Use?\"]]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x113fe87f0>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"in_use.Score.plot.hist()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"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></th>\n",
" <th>Postcode</th>\n",
" <th>Score</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">Lowest (any)</th>\n",
" <th>0</th>\n",
" <td>AB1 0AA</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50092</th>\n",
" <td>B1 1AA</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>111228</th>\n",
" <td>BA1 0AA</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"4\" valign=\"top\">Lowest (in use)</th>\n",
" <th>50100</th>\n",
" <td>B1 1BA</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50358</th>\n",
" <td>B1 2AA</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>111592</th>\n",
" <td>BA1 1AA</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>120328</th>\n",
" <td>BA2 0AA</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Highest</th>\n",
" <th>2592524</th>\n",
" <td>WV99 1ZZ</td>\n",
" <td>197</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Postcode Score\n",
"Lowest (any) 0 AB1 0AA 6\n",
" 50092 B1 1AA 6\n",
" 111228 BA1 0AA 6\n",
"Lowest (in use) 50100 B1 1BA 7\n",
" 50358 B1 2AA 7\n",
" 111592 BA1 1AA 7\n",
" 120328 BA2 0AA 7\n",
"Highest 2592524 WV99 1ZZ 197"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.concat(\n",
" (\n",
" postcodes[postcodes.Score == postcodes.Score.min()][[\"Postcode\", \"Score\"]],\n",
" in_use[in_use.Score == in_use.Score.min()][[\"Postcode\", \"Score\"]],\n",
" in_use[in_use.Score == in_use.Score.max()][[\"Postcode\", \"Score\"]]\n",
" ), keys=[\"Lowest (any)\", \"Lowest (in use)\", \"Highest\"]\n",
")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.1"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment