{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"References:\n",
" \n",
"* [ONS Code History Database](http://geoportal.statistics.gov.uk/datasets?q=Code+History+Database&sort_by=name&sort_order=asc)\n",
"* [Boundaries](http://geoportal.statistics.gov.uk/datasets/clinical-commissioning-groups-april-2017-full-clipped-boundaries-in-england-v4)\n",
"* [CCG to LOSA lookups](http://geoportal.statistics.gov.uk/datasets/lsoa-2011-to-clinical-commissioning-groups-to-sustainability-and-transformation-partnerships-april-2017-lookup-in-england)\n",
"* [GP Practice Details](https://digital.nhs.uk/organisation-data-service/data-downloads/gp-data)\n",
"* [NHS Postcode Directory Centroids](http://geoportal.statistics.gov.uk/datasets/675f07b52292428992709d0af98d86d9_0)\n",
"\n",
" \n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import geopandas as gpd\n",
"from shapely.geometry import Point"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"headers = [\n",
" 'code','name','postcode','status_code','ccg','setting']\n",
"epraccur = pd.read_csv(\"epraccur_may_2017.csv\", names=headers, usecols=[0,1,9,12,23,25])"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"
\n",
" \n",
" \n",
" | \n",
" code | \n",
" name | \n",
" postcode | \n",
" status_code | \n",
" ccg | \n",
" setting | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" A81001 | \n",
" THE DENSHAM SURGERY | \n",
" TS18 1HU | \n",
" A | \n",
" 00K | \n",
" 4 | \n",
"
\n",
" \n",
" 1 | \n",
" A81002 | \n",
" QUEENS PARK MEDICAL CENTRE | \n",
" TS18 2AW | \n",
" A | \n",
" 00K | \n",
" 4 | \n",
"
\n",
" \n",
" 2 | \n",
" A81003 | \n",
" VICTORIA MEDICAL PRACTICE | \n",
" TS26 8DB | \n",
" D | \n",
" 00K | \n",
" 4 | \n",
"
\n",
" \n",
" 3 | \n",
" A81004 | \n",
" WOODLANDS ROAD SURGERY | \n",
" TS1 3BE | \n",
" A | \n",
" 00M | \n",
" 4 | \n",
"
\n",
" \n",
" 4 | \n",
" A81005 | \n",
" SPRINGWOOD SURGERY | \n",
" TS14 7DJ | \n",
" A | \n",
" 00M | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" code name postcode status_code ccg setting\n",
"0 A81001 THE DENSHAM SURGERY TS18 1HU A 00K 4\n",
"1 A81002 QUEENS PARK MEDICAL CENTRE TS18 2AW A 00K 4\n",
"2 A81003 VICTORIA MEDICAL PRACTICE TS26 8DB D 00K 4\n",
"3 A81004 WOODLANDS ROAD SURGERY TS1 3BE A 00M 4\n",
"4 A81005 SPRINGWOOD SURGERY TS14 7DJ A 00M 4"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"epraccur.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"lsoa_lookup = pd.read_csv(\n",
" \"LSOA_2011_to_Clinical_Commissioning_Groups_to_Sustainability_and_Transformation_Partnerships_April_2017_Lookup_in_England.csv\",\n",
" names=['lsoa','ccg17cd', 'ccg','name'],\n",
" header=0,\n",
" usecols=[0,2,3,4]\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" lsoa | \n",
" ccg17cd | \n",
" ccg | \n",
" name | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" E01021729 | \n",
" E38000117 | \n",
" 06T | \n",
" NHS North East Essex CCG | \n",
"
\n",
" \n",
" 1 | \n",
" E01021730 | \n",
" E38000117 | \n",
" 06T | \n",
" NHS North East Essex CCG | \n",
"
\n",
" \n",
" 2 | \n",
" E01029950 | \n",
" E38000204 | \n",
" 07K | \n",
" NHS West Suffolk CCG | \n",
"
\n",
" \n",
" 3 | \n",
" E01021731 | \n",
" E38000117 | \n",
" 06T | \n",
" NHS North East Essex CCG | \n",
"
\n",
" \n",
" 4 | \n",
" E01021732 | \n",
" E38000117 | \n",
" 06T | \n",
" NHS North East Essex CCG | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" lsoa ccg17cd ccg name\n",
"0 E01021729 E38000117 06T NHS North East Essex CCG\n",
"1 E01021730 E38000117 06T NHS North East Essex CCG\n",
"2 E01029950 E38000204 07K NHS West Suffolk CCG\n",
"3 E01021731 E38000117 06T NHS North East Essex CCG\n",
"4 E01021732 E38000117 06T NHS North East Essex CCG"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lsoa_lookup.head()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"boundaries = gpd.read_file('Clinical_Commissioning_Groups_April_2017_Full_Clipped_Boundaries_in_England_V4.shp')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" bng_e | \n",
" bng_n | \n",
" ccg17cd | \n",
" ccg17nm | \n",
" geometry | \n",
" lat | \n",
" long | \n",
" objectid | \n",
" st_areasha | \n",
" st_lengths | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 393990 | \n",
" 462191 | \n",
" E38000001 | \n",
" NHS Airedale, Wharfedale and Craven CCG | \n",
" POLYGON ((385565.5894845667 483953.6485985344,... | \n",
" 54.055599 | \n",
" -2.093300 | \n",
" 1 | \n",
" 1.220633e+09 | \n",
" 221998.415512 | \n",
"
\n",
" \n",
" 1 | \n",
" 597640 | \n",
" 140644 | \n",
" E38000002 | \n",
" NHS Ashford CCG | \n",
" POLYGON ((606433.5512145269 156322.4880208465,... | \n",
" 51.131001 | \n",
" 0.823374 | \n",
" 2 | \n",
" 5.806172e+08 | \n",
" 149424.217436 | \n",
"
\n",
" \n",
" 2 | \n",
" 481343 | \n",
" 219317 | \n",
" E38000003 | \n",
" NHS Aylesbury Vale CCG | \n",
" POLYGON ((472043.0687303017 242900.0443609316,... | \n",
" 51.866501 | \n",
" -0.820020 | \n",
" 3 | \n",
" 9.790281e+08 | \n",
" 278005.394431 | \n",
"
\n",
" \n",
" 3 | \n",
" 547758 | \n",
" 185109 | \n",
" E38000004 | \n",
" NHS Barking and Dagenham CCG | \n",
" (POLYGON ((548883.1758077047 190820.2720849307... | \n",
" 51.545502 | \n",
" 0.129493 | \n",
" 4 | \n",
" 3.609104e+07 | \n",
" 40663.923224 | \n",
"
\n",
" \n",
" 4 | \n",
" 523471 | \n",
" 191753 | \n",
" E38000005 | \n",
" NHS Barnet CCG | \n",
" POLYGON ((525815.8440469442 198211.9265971188,... | \n",
" 51.611099 | \n",
" -0.218220 | \n",
" 5 | \n",
" 8.673644e+07 | \n",
" 50837.784444 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" bng_e bng_n ccg17cd ccg17nm \\\n",
"0 393990 462191 E38000001 NHS Airedale, Wharfedale and Craven CCG \n",
"1 597640 140644 E38000002 NHS Ashford CCG \n",
"2 481343 219317 E38000003 NHS Aylesbury Vale CCG \n",
"3 547758 185109 E38000004 NHS Barking and Dagenham CCG \n",
"4 523471 191753 E38000005 NHS Barnet CCG \n",
"\n",
" geometry lat long \\\n",
"0 POLYGON ((385565.5894845667 483953.6485985344,... 54.055599 -2.093300 \n",
"1 POLYGON ((606433.5512145269 156322.4880208465,... 51.131001 0.823374 \n",
"2 POLYGON ((472043.0687303017 242900.0443609316,... 51.866501 -0.820020 \n",
"3 (POLYGON ((548883.1758077047 190820.2720849307... 51.545502 0.129493 \n",
"4 POLYGON ((525815.8440469442 198211.9265971188,... 51.611099 -0.218220 \n",
"\n",
" objectid st_areasha st_lengths \n",
"0 1 1.220633e+09 221998.415512 \n",
"1 2 5.806172e+08 149424.217436 \n",
"2 3 9.790281e+08 278005.394431 \n",
"3 4 3.609104e+07 40663.923224 \n",
"4 5 8.673644e+07 50837.784444 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"boundaries.head()"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"boundaries.plot()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"postcode_lookup = pd.read_csv(\n",
" \"NHS_Postcode_Directory_Latest_Centroids.csv\",\n",
" usecols=[0,1,2,3,4,19]\n",
")\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"ccg_lookup = lsoa_lookup[['ccg17cd', 'ccg']].drop_duplicates().set_index('ccg17cd')\n",
"boundaries.set_index('ccg17cd', inplace=True)\n",
"boundaries_with_ccg = boundaries.join(ccg_lookup)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" bng_e | \n",
" bng_n | \n",
" ccg17nm | \n",
" geometry | \n",
" lat | \n",
" long | \n",
" objectid | \n",
" st_areasha | \n",
" st_lengths | \n",
" ccg | \n",
"
\n",
" \n",
" ccg17cd | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" E38000001 | \n",
" 393990 | \n",
" 462191 | \n",
" NHS Airedale, Wharfedale and Craven CCG | \n",
" POLYGON ((385565.5894845667 483953.6485985344,... | \n",
" 54.055599 | \n",
" -2.093300 | \n",
" 1 | \n",
" 1.220633e+09 | \n",
" 221998.415512 | \n",
" 02N | \n",
"
\n",
" \n",
" E38000002 | \n",
" 597640 | \n",
" 140644 | \n",
" NHS Ashford CCG | \n",
" POLYGON ((606433.5512145269 156322.4880208465,... | \n",
" 51.131001 | \n",
" 0.823374 | \n",
" 2 | \n",
" 5.806172e+08 | \n",
" 149424.217436 | \n",
" 09C | \n",
"
\n",
" \n",
" E38000003 | \n",
" 481343 | \n",
" 219317 | \n",
" NHS Aylesbury Vale CCG | \n",
" POLYGON ((472043.0687303017 242900.0443609316,... | \n",
" 51.866501 | \n",
" -0.820020 | \n",
" 3 | \n",
" 9.790281e+08 | \n",
" 278005.394431 | \n",
" 10Y | \n",
"
\n",
" \n",
" E38000004 | \n",
" 547758 | \n",
" 185109 | \n",
" NHS Barking and Dagenham CCG | \n",
" (POLYGON ((548883.1758077047 190820.2720849307... | \n",
" 51.545502 | \n",
" 0.129493 | \n",
" 4 | \n",
" 3.609104e+07 | \n",
" 40663.923224 | \n",
" 07L | \n",
"
\n",
" \n",
" E38000005 | \n",
" 523471 | \n",
" 191753 | \n",
" NHS Barnet CCG | \n",
" POLYGON ((525815.8440469442 198211.9265971188,... | \n",
" 51.611099 | \n",
" -0.218220 | \n",
" 5 | \n",
" 8.673644e+07 | \n",
" 50837.784444 | \n",
" 07M | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" bng_e bng_n ccg17nm \\\n",
"ccg17cd \n",
"E38000001 393990 462191 NHS Airedale, Wharfedale and Craven CCG \n",
"E38000002 597640 140644 NHS Ashford CCG \n",
"E38000003 481343 219317 NHS Aylesbury Vale CCG \n",
"E38000004 547758 185109 NHS Barking and Dagenham CCG \n",
"E38000005 523471 191753 NHS Barnet CCG \n",
"\n",
" geometry lat \\\n",
"ccg17cd \n",
"E38000001 POLYGON ((385565.5894845667 483953.6485985344,... 54.055599 \n",
"E38000002 POLYGON ((606433.5512145269 156322.4880208465,... 51.131001 \n",
"E38000003 POLYGON ((472043.0687303017 242900.0443609316,... 51.866501 \n",
"E38000004 (POLYGON ((548883.1758077047 190820.2720849307... 51.545502 \n",
"E38000005 POLYGON ((525815.8440469442 198211.9265971188,... 51.611099 \n",
"\n",
" long objectid st_areasha st_lengths ccg \n",
"ccg17cd \n",
"E38000001 -2.093300 1 1.220633e+09 221998.415512 02N \n",
"E38000002 0.823374 2 5.806172e+08 149424.217436 09C \n",
"E38000003 -0.820020 3 9.790281e+08 278005.394431 10Y \n",
"E38000004 0.129493 4 3.609104e+07 40663.923224 07L \n",
"E38000005 -0.218220 5 8.673644e+07 50837.784444 07M "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"boundaries_with_ccg.head()"
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#postcode_lookup = postcode_lookup.set_index('pcd2')\n",
"epraccur_with_centroids = epraccur.merge(postcode_lookup, left_on='postcode', right_on='pcds', how='left')\n",
"#epraccur_with_centroids = postcode_lookup.join(epraccur, how='left', on='postcode', rsuffix='postcode')"
]
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" code | \n",
" name | \n",
" postcode | \n",
" status_code | \n",
" ccg_x | \n",
" setting | \n",
" X | \n",
" Y | \n",
" objectid | \n",
" pcd2 | \n",
" pcds | \n",
" ccg_y | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" A81001 | \n",
" THE DENSHAM SURGERY | \n",
" TS18 1HU | \n",
" A | \n",
" 00K | \n",
" 4 | \n",
" -1.318999 | \n",
" 54.561637 | \n",
" 2361079.0 | \n",
" TS18 1HU | \n",
" TS18 1HU | \n",
" 00K | \n",
"
\n",
" \n",
" 1 | \n",
" A81002 | \n",
" QUEENS PARK MEDICAL CENTRE | \n",
" TS18 2AW | \n",
" A | \n",
" 00K | \n",
" 4 | \n",
" -1.313893 | \n",
" 54.569175 | \n",
" 2361300.0 | \n",
" TS18 2AW | \n",
" TS18 2AW | \n",
" 00K | \n",
"
\n",
" \n",
" 2 | \n",
" A81003 | \n",
" VICTORIA MEDICAL PRACTICE | \n",
" TS26 8DB | \n",
" D | \n",
" 00K | \n",
" 4 | \n",
" -1.217613 | \n",
" 54.685250 | \n",
" 2369245.0 | \n",
" TS26 8DB | \n",
" TS26 8DB | \n",
" 00K | \n",
"
\n",
" \n",
" 3 | \n",
" A81004 | \n",
" WOODLANDS ROAD SURGERY | \n",
" TS1 3BE | \n",
" A | \n",
" 00M | \n",
" 4 | \n",
" -1.232269 | \n",
" 54.571822 | \n",
" 2354363.0 | \n",
" TS1 3BE | \n",
" TS1 3BE | \n",
" 00M | \n",
"
\n",
" \n",
" 4 | \n",
" A81005 | \n",
" SPRINGWOOD SURGERY | \n",
" TS14 7DJ | \n",
" A | \n",
" 00M | \n",
" 4 | \n",
" -1.055459 | \n",
" 54.532610 | \n",
" 2358498.0 | \n",
" TS14 7DJ | \n",
" TS14 7DJ | \n",
" 00M | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" code name postcode status_code ccg_x setting \\\n",
"0 A81001 THE DENSHAM SURGERY TS18 1HU A 00K 4 \n",
"1 A81002 QUEENS PARK MEDICAL CENTRE TS18 2AW A 00K 4 \n",
"2 A81003 VICTORIA MEDICAL PRACTICE TS26 8DB D 00K 4 \n",
"3 A81004 WOODLANDS ROAD SURGERY TS1 3BE A 00M 4 \n",
"4 A81005 SPRINGWOOD SURGERY TS14 7DJ A 00M 4 \n",
"\n",
" X Y objectid pcd2 pcds ccg_y \n",
"0 -1.318999 54.561637 2361079.0 TS18 1HU TS18 1HU 00K \n",
"1 -1.313893 54.569175 2361300.0 TS18 2AW TS18 2AW 00K \n",
"2 -1.217613 54.685250 2369245.0 TS26 8DB TS26 8DB 00K \n",
"3 -1.232269 54.571822 2354363.0 TS1 3BE TS1 3BE 00M \n",
"4 -1.055459 54.532610 2358498.0 TS14 7DJ TS14 7DJ 00M "
]
},
"execution_count": 144,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"epraccur_with_centroids.head()"
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" code | \n",
" name | \n",
" postcode | \n",
" status_code | \n",
" ccg_x | \n",
" setting | \n",
" X | \n",
" Y | \n",
" objectid | \n",
" pcd2 | \n",
" pcds | \n",
" ccg_y | \n",
" geometry | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" A81001 | \n",
" THE DENSHAM SURGERY | \n",
" TS18 1HU | \n",
" A | \n",
" 00K | \n",
" 4 | \n",
" -1.318999 | \n",
" 54.561637 | \n",
" 2361079.0 | \n",
" TS18 1HU | \n",
" TS18 1HU | \n",
" 00K | \n",
" POINT (-1.318998500227571 54.56163711943564) | \n",
"
\n",
" \n",
" 1 | \n",
" A81002 | \n",
" QUEENS PARK MEDICAL CENTRE | \n",
" TS18 2AW | \n",
" A | \n",
" 00K | \n",
" 4 | \n",
" -1.313893 | \n",
" 54.569175 | \n",
" 2361300.0 | \n",
" TS18 2AW | \n",
" TS18 2AW | \n",
" 00K | \n",
" POINT (-1.313892735075778 54.56917529964024) | \n",
"
\n",
" \n",
" 2 | \n",
" A81003 | \n",
" VICTORIA MEDICAL PRACTICE | \n",
" TS26 8DB | \n",
" D | \n",
" 00K | \n",
" 4 | \n",
" -1.217613 | \n",
" 54.685250 | \n",
" 2369245.0 | \n",
" TS26 8DB | \n",
" TS26 8DB | \n",
" 00K | \n",
" POINT (-1.217613081180904 54.68524956577383) | \n",
"
\n",
" \n",
" 3 | \n",
" A81004 | \n",
" WOODLANDS ROAD SURGERY | \n",
" TS1 3BE | \n",
" A | \n",
" 00M | \n",
" 4 | \n",
" -1.232269 | \n",
" 54.571822 | \n",
" 2354363.0 | \n",
" TS1 3BE | \n",
" TS1 3BE | \n",
" 00M | \n",
" POINT (-1.232269492241478 54.57182217067488) | \n",
"
\n",
" \n",
" 4 | \n",
" A81005 | \n",
" SPRINGWOOD SURGERY | \n",
" TS14 7DJ | \n",
" A | \n",
" 00M | \n",
" 4 | \n",
" -1.055459 | \n",
" 54.532610 | \n",
" 2358498.0 | \n",
" TS14 7DJ | \n",
" TS14 7DJ | \n",
" 00M | \n",
" POINT (-1.055459266614189 54.53260970143794) | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" code name postcode status_code ccg_x setting \\\n",
"0 A81001 THE DENSHAM SURGERY TS18 1HU A 00K 4 \n",
"1 A81002 QUEENS PARK MEDICAL CENTRE TS18 2AW A 00K 4 \n",
"2 A81003 VICTORIA MEDICAL PRACTICE TS26 8DB D 00K 4 \n",
"3 A81004 WOODLANDS ROAD SURGERY TS1 3BE A 00M 4 \n",
"4 A81005 SPRINGWOOD SURGERY TS14 7DJ A 00M 4 \n",
"\n",
" X Y objectid pcd2 pcds ccg_y \\\n",
"0 -1.318999 54.561637 2361079.0 TS18 1HU TS18 1HU 00K \n",
"1 -1.313893 54.569175 2361300.0 TS18 2AW TS18 2AW 00K \n",
"2 -1.217613 54.685250 2369245.0 TS26 8DB TS26 8DB 00K \n",
"3 -1.232269 54.571822 2354363.0 TS1 3BE TS1 3BE 00M \n",
"4 -1.055459 54.532610 2358498.0 TS14 7DJ TS14 7DJ 00M \n",
"\n",
" geometry \n",
"0 POINT (-1.318998500227571 54.56163711943564) \n",
"1 POINT (-1.313892735075778 54.56917529964024) \n",
"2 POINT (-1.217613081180904 54.68524956577383) \n",
"3 POINT (-1.232269492241478 54.57182217067488) \n",
"4 POINT (-1.055459266614189 54.53260970143794) "
]
},
"execution_count": 145,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"epraccur_with_centroids = epraccur_with_centroids[epraccur_with_centroids.X.notnull()]\n",
"epraccur_with_centroids['geometry'] = epraccur_with_centroids.apply(lambda z: Point(z.X, z.Y), axis=1)\n",
"epraccur_with_centroids = gpd.GeoDataFrame(epraccur_with_centroids)\n",
"epraccur_with_centroids.head()"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {},
"outputs": [],
"source": [
"epraccur_with_centroids.crs = {'init' :'epsg:4326'}\n",
"boundaries_with_ccg.crs = {'init' :'epsg:27700'}\n",
"epraccur_with_centroids = epraccur_with_centroids.to_crs({'init': 'epsg:27700'})\n"
]
},
{
"cell_type": "code",
"execution_count": 147,
"metadata": {},
"outputs": [],
"source": [
"practices_with_ccg = gpd.sjoin(epraccur_with_centroids, boundaries_with_ccg.reset_index(), how=\"left\")"
]
},
{
"cell_type": "code",
"execution_count": 148,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" code | \n",
" name | \n",
" postcode | \n",
" status_code | \n",
" ccg_x | \n",
" setting | \n",
" X | \n",
" Y | \n",
" objectid_left | \n",
" pcd2 | \n",
" ... | \n",
" ccg17cd | \n",
" bng_e | \n",
" bng_n | \n",
" ccg17nm | \n",
" lat | \n",
" long | \n",
" objectid_right | \n",
" st_areasha | \n",
" st_lengths | \n",
" ccg | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" A81001 | \n",
" THE DENSHAM SURGERY | \n",
" TS18 1HU | \n",
" A | \n",
" 00K | \n",
" 4 | \n",
" -1.318999 | \n",
" 54.561637 | \n",
" 2361079.0 | \n",
" TS18 1HU | \n",
" ... | \n",
" E38000075 | \n",
" 445468.0 | \n",
" 523188.0 | \n",
" NHS Hartlepool and Stockton-on-Tees CCG | \n",
" 54.601799 | \n",
" -1.29771 | \n",
" 70.0 | \n",
" 2.977915e+08 | \n",
" 204336.251976 | \n",
" 00K | \n",
"
\n",
" \n",
" 1 | \n",
" A81002 | \n",
" QUEENS PARK MEDICAL CENTRE | \n",
" TS18 2AW | \n",
" A | \n",
" 00K | \n",
" 4 | \n",
" -1.313893 | \n",
" 54.569175 | \n",
" 2361300.0 | \n",
" TS18 2AW | \n",
" ... | \n",
" E38000075 | \n",
" 445468.0 | \n",
" 523188.0 | \n",
" NHS Hartlepool and Stockton-on-Tees CCG | \n",
" 54.601799 | \n",
" -1.29771 | \n",
" 70.0 | \n",
" 2.977915e+08 | \n",
" 204336.251976 | \n",
" 00K | \n",
"
\n",
" \n",
" 2 | \n",
" A81003 | \n",
" VICTORIA MEDICAL PRACTICE | \n",
" TS26 8DB | \n",
" D | \n",
" 00K | \n",
" 4 | \n",
" -1.217613 | \n",
" 54.685250 | \n",
" 2369245.0 | \n",
" TS26 8DB | \n",
" ... | \n",
" E38000075 | \n",
" 445468.0 | \n",
" 523188.0 | \n",
" NHS Hartlepool and Stockton-on-Tees CCG | \n",
" 54.601799 | \n",
" -1.29771 | \n",
" 70.0 | \n",
" 2.977915e+08 | \n",
" 204336.251976 | \n",
" 00K | \n",
"
\n",
" \n",
" 3 | \n",
" A81004 | \n",
" WOODLANDS ROAD SURGERY | \n",
" TS1 3BE | \n",
" A | \n",
" 00M | \n",
" 4 | \n",
" -1.232269 | \n",
" 54.571822 | \n",
" 2354363.0 | \n",
" TS1 3BE | \n",
" ... | \n",
" E38000162 | \n",
" 461718.0 | \n",
" 519597.0 | \n",
" NHS South Tees CCG | \n",
" 54.567799 | \n",
" -1.04695 | \n",
" 150.0 | \n",
" 2.987713e+08 | \n",
" 113083.598127 | \n",
" 00M | \n",
"
\n",
" \n",
" 4 | \n",
" A81005 | \n",
" SPRINGWOOD SURGERY | \n",
" TS14 7DJ | \n",
" A | \n",
" 00M | \n",
" 4 | \n",
" -1.055459 | \n",
" 54.532610 | \n",
" 2358498.0 | \n",
" TS14 7DJ | \n",
" ... | \n",
" E38000162 | \n",
" 461718.0 | \n",
" 519597.0 | \n",
" NHS South Tees CCG | \n",
" 54.567799 | \n",
" -1.04695 | \n",
" 150.0 | \n",
" 2.987713e+08 | \n",
" 113083.598127 | \n",
" 00M | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 24 columns
\n",
"
"
],
"text/plain": [
" code name postcode status_code ccg_x setting \\\n",
"0 A81001 THE DENSHAM SURGERY TS18 1HU A 00K 4 \n",
"1 A81002 QUEENS PARK MEDICAL CENTRE TS18 2AW A 00K 4 \n",
"2 A81003 VICTORIA MEDICAL PRACTICE TS26 8DB D 00K 4 \n",
"3 A81004 WOODLANDS ROAD SURGERY TS1 3BE A 00M 4 \n",
"4 A81005 SPRINGWOOD SURGERY TS14 7DJ A 00M 4 \n",
"\n",
" X Y objectid_left pcd2 ... ccg17cd bng_e \\\n",
"0 -1.318999 54.561637 2361079.0 TS18 1HU ... E38000075 445468.0 \n",
"1 -1.313893 54.569175 2361300.0 TS18 2AW ... E38000075 445468.0 \n",
"2 -1.217613 54.685250 2369245.0 TS26 8DB ... E38000075 445468.0 \n",
"3 -1.232269 54.571822 2354363.0 TS1 3BE ... E38000162 461718.0 \n",
"4 -1.055459 54.532610 2358498.0 TS14 7DJ ... E38000162 461718.0 \n",
"\n",
" bng_n ccg17nm lat long \\\n",
"0 523188.0 NHS Hartlepool and Stockton-on-Tees CCG 54.601799 -1.29771 \n",
"1 523188.0 NHS Hartlepool and Stockton-on-Tees CCG 54.601799 -1.29771 \n",
"2 523188.0 NHS Hartlepool and Stockton-on-Tees CCG 54.601799 -1.29771 \n",
"3 519597.0 NHS South Tees CCG 54.567799 -1.04695 \n",
"4 519597.0 NHS South Tees CCG 54.567799 -1.04695 \n",
"\n",
" objectid_right st_areasha st_lengths ccg \n",
"0 70.0 2.977915e+08 204336.251976 00K \n",
"1 70.0 2.977915e+08 204336.251976 00K \n",
"2 70.0 2.977915e+08 204336.251976 00K \n",
"3 150.0 2.987713e+08 113083.598127 00M \n",
"4 150.0 2.987713e+08 113083.598127 00M \n",
"\n",
"[5 rows x 24 columns]"
]
},
"execution_count": 148,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"practices_with_ccg.head()"
]
},
{
"cell_type": "code",
"execution_count": 152,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"There are 3278 practices whose inferred CCG (based on location) does not match their stated one\n"
]
}
],
"source": [
"matching = practices_with_ccg[practices_with_ccg.ccg_x == practices_with_ccg.ccg]\n",
"non_matching = practices_with_ccg[practices_with_ccg.ccg_x != practices_with_ccg.ccg]\n",
"print \"There are %s practices whose inferred CCG (based on location) does not match their stated one\" % len(non_matching)"
]
},
{
"cell_type": "code",
"execution_count": 156,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" code | \n",
" name | \n",
" postcode | \n",
" status_code | \n",
" ccg_x | \n",
" ccg | \n",
"
\n",
" \n",
" \n",
" \n",
" 74 | \n",
" A81630 | \n",
" FULCRUM MEDICAL PRACTICE | \n",
" TS5 4EQ | \n",
" A | \n",
" 112 | \n",
" 00M | \n",
"
\n",
" \n",
" 87 | \n",
" A82011 | \n",
" HARTINGTON STREET MEDICAL PRACTICE | \n",
" LA14 5SL | \n",
" C | \n",
" 01H | \n",
" 01K | \n",
"
\n",
" \n",
" 145 | \n",
" A82619 | \n",
" NELSON STREET SURGERY | \n",
" LA15 8AF | \n",
" C | \n",
" 01H | \n",
" 01K | \n",
"
\n",
" \n",
" 153 | \n",
" A82642 | \n",
" HAWKSHEAD MEDICAL PRACTICE | \n",
" LA22 0NU | \n",
" D | \n",
" 01H | \n",
" 01K | \n",
"
\n",
" \n",
" 240 | \n",
" A83642 | \n",
" RECOVERY CENTRE DURHAM | \n",
" DH1 3BQ | \n",
" A | \n",
" 116 | \n",
" 00J | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" code name postcode status_code ccg_x \\\n",
"74 A81630 FULCRUM MEDICAL PRACTICE TS5 4EQ A 112 \n",
"87 A82011 HARTINGTON STREET MEDICAL PRACTICE LA14 5SL C 01H \n",
"145 A82619 NELSON STREET SURGERY LA15 8AF C 01H \n",
"153 A82642 HAWKSHEAD MEDICAL PRACTICE LA22 0NU D 01H \n",
"240 A83642 RECOVERY CENTRE DURHAM DH1 3BQ A 116 \n",
"\n",
" ccg \n",
"74 00M \n",
"87 01K \n",
"145 01K \n",
"153 01K \n",
"240 00J "
]
},
"execution_count": 156,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# discard uninteresting columns\n",
"non_matching = non_matching[['code', 'name', 'postcode', 'status_code', 'ccg_x', 'ccg']]\n",
"non_matching.head()"
]
},
{
"cell_type": "code",
"execution_count": 159,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"status_code\n",
"A 2540\n",
"C 694\n",
"D 43\n",
"P 1\n",
"Name: code, dtype: int64"
]
},
"execution_count": 159,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"non_matching.groupby('status_code').code.agg('count')"
]
},
{
"cell_type": "code",
"execution_count": 161,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" code | \n",
" name | \n",
" postcode | \n",
" status_code | \n",
" ccg_x | \n",
" ccg | \n",
"
\n",
" \n",
" \n",
" \n",
" 74 | \n",
" A81630 | \n",
" FULCRUM MEDICAL PRACTICE | \n",
" TS5 4EQ | \n",
" A | \n",
" 112 | \n",
" 00M | \n",
"
\n",
" \n",
" 240 | \n",
" A83642 | \n",
" RECOVERY CENTRE DURHAM | \n",
" DH1 3BQ | \n",
" A | \n",
" 116 | \n",
" 00J | \n",
"
\n",
" \n",
" 243 | \n",
" A83645 | \n",
" RECOVERY CENTRE CONSETT | \n",
" DH8 5RL | \n",
" A | \n",
" 116 | \n",
" 00J | \n",
"
\n",
" \n",
" 357 | \n",
" A86041 | \n",
" SWARLAND AVENUE SURGERY | \n",
" NE7 7TD | \n",
" A | \n",
" 99C | \n",
" 13T | \n",
"
\n",
" \n",
" 466 | \n",
" A91020 | \n",
" LARKHILL MEDICAL CENTRE | \n",
" SP4 8QY | \n",
" A | \n",
" 13Q | \n",
" 99N | \n",
"
\n",
" \n",
" 467 | \n",
" A91021 | \n",
" CRANWELL MEDICAL CENTRE | \n",
" NG34 8HB | \n",
" A | \n",
" 13Q | \n",
" 04Q | \n",
"
\n",
" \n",
" 468 | \n",
" A91022 | \n",
" BOVINGTON MEDICAL CENTRE | \n",
" BH20 6JA | \n",
" A | \n",
" 13Q | \n",
" 11J | \n",
"
\n",
" \n",
" 469 | \n",
" A91023 | \n",
" BULFORD MEDICAL CENTRE | \n",
" SP4 9AD | \n",
" A | \n",
" 13Q | \n",
" 99N | \n",
"
\n",
" \n",
" 470 | \n",
" A91024 | \n",
" CATTERICK MEDICAL CENTRE | \n",
" DL9 3PZ | \n",
" A | \n",
" 13Q | \n",
" 03D | \n",
"
\n",
" \n",
" 471 | \n",
" A91025 | \n",
" PIRBRIGHT MEDICAL CENTRE | \n",
" GU24 0QQ | \n",
" A | \n",
" 13Q | \n",
" 09N | \n",
"
\n",
" \n",
" 472 | \n",
" A91026 | \n",
" SANDHURST MEDICAL CENTRE | \n",
" GU15 4PQ | \n",
" A | \n",
" 13Q | \n",
" 10G | \n",
"
\n",
" \n",
" 473 | \n",
" A91027 | \n",
" TIDWORTH MEDICAL CENTRE | \n",
" SP9 7EA | \n",
" A | \n",
" 13Q | \n",
" 99N | \n",
"
\n",
" \n",
" 474 | \n",
" A91028 | \n",
" WARMINSTER MEDICAL CENTRE | \n",
" BA12 0DJ | \n",
" A | \n",
" 13Q | \n",
" 99N | \n",
"
\n",
" \n",
" 475 | \n",
" A91029 | \n",
" BENSON MEDICAL CENTRE | \n",
" OX10 6AA | \n",
" A | \n",
" 13Q | \n",
" 10Q | \n",
"
\n",
" \n",
" 476 | \n",
" A91030 | \n",
" BRIZE NORTON MEDICAL CENTRE | \n",
" OX18 3LX | \n",
" A | \n",
" 13Q | \n",
" 10Q | \n",
"
\n",
" \n",
" 477 | \n",
" A91031 | \n",
" CONINGSBY MEDICAL CENTRE | \n",
" LN4 4SY | \n",
" A | \n",
" 13Q | \n",
" 03T | \n",
"
\n",
" \n",
" 478 | \n",
" A91032 | \n",
" COSFORD MEDICAL CENTRE | \n",
" WV7 3EX | \n",
" A | \n",
" 13Q | \n",
" 05N | \n",
"
\n",
" \n",
" 479 | \n",
" A91033 | \n",
" LYNEHAM MEDICAL CENTRE | \n",
" SN15 4PZ | \n",
" A | \n",
" 13Q | \n",
" 99N | \n",
"
\n",
" \n",
" 480 | \n",
" A91034 | \n",
" HEADLEY MEDICAL REHABILITATION CENTRE | \n",
" KT18 6JW | \n",
" A | \n",
" 13Q | \n",
" 99H | \n",
"
\n",
" \n",
" 481 | \n",
" A91035 | \n",
" LINTON-ON-OUSE MEDICAL CENTRE | \n",
" YO30 2AJ | \n",
" A | \n",
" 13Q | \n",
" 03Q | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" code name postcode status_code \\\n",
"74 A81630 FULCRUM MEDICAL PRACTICE TS5 4EQ A \n",
"240 A83642 RECOVERY CENTRE DURHAM DH1 3BQ A \n",
"243 A83645 RECOVERY CENTRE CONSETT DH8 5RL A \n",
"357 A86041 SWARLAND AVENUE SURGERY NE7 7TD A \n",
"466 A91020 LARKHILL MEDICAL CENTRE SP4 8QY A \n",
"467 A91021 CRANWELL MEDICAL CENTRE NG34 8HB A \n",
"468 A91022 BOVINGTON MEDICAL CENTRE BH20 6JA A \n",
"469 A91023 BULFORD MEDICAL CENTRE SP4 9AD A \n",
"470 A91024 CATTERICK MEDICAL CENTRE DL9 3PZ A \n",
"471 A91025 PIRBRIGHT MEDICAL CENTRE GU24 0QQ A \n",
"472 A91026 SANDHURST MEDICAL CENTRE GU15 4PQ A \n",
"473 A91027 TIDWORTH MEDICAL CENTRE SP9 7EA A \n",
"474 A91028 WARMINSTER MEDICAL CENTRE BA12 0DJ A \n",
"475 A91029 BENSON MEDICAL CENTRE OX10 6AA A \n",
"476 A91030 BRIZE NORTON MEDICAL CENTRE OX18 3LX A \n",
"477 A91031 CONINGSBY MEDICAL CENTRE LN4 4SY A \n",
"478 A91032 COSFORD MEDICAL CENTRE WV7 3EX A \n",
"479 A91033 LYNEHAM MEDICAL CENTRE SN15 4PZ A \n",
"480 A91034 HEADLEY MEDICAL REHABILITATION CENTRE KT18 6JW A \n",
"481 A91035 LINTON-ON-OUSE MEDICAL CENTRE YO30 2AJ A \n",
"\n",
" ccg_x ccg \n",
"74 112 00M \n",
"240 116 00J \n",
"243 116 00J \n",
"357 99C 13T \n",
"466 13Q 99N \n",
"467 13Q 04Q \n",
"468 13Q 11J \n",
"469 13Q 99N \n",
"470 13Q 03D \n",
"471 13Q 09N \n",
"472 13Q 10G \n",
"473 13Q 99N \n",
"474 13Q 99N \n",
"475 13Q 10Q \n",
"476 13Q 10Q \n",
"477 13Q 03T \n",
"478 13Q 05N \n",
"479 13Q 99N \n",
"480 13Q 99H \n",
"481 13Q 03Q "
]
},
"execution_count": 161,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"non_matching[non_matching.status_code == 'A'].head(20)"
]
},
{
"cell_type": "code",
"execution_count": 164,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"code 189\n",
"name 189\n",
"postcode 189\n",
"status_code 189\n",
"ccg 189\n",
"setting 189\n",
"dtype: int64"
]
},
"execution_count": 164,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"epraccur[epraccur.ccg == '13Q'].count()"
]
},
{
"cell_type": "code",
"execution_count": 165,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"lsoa 0\n",
"ccg17cd 0\n",
"ccg 0\n",
"name 0\n",
"dtype: int64"
]
},
"execution_count": 165,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lsoa_lookup[lsoa_lookup.ccg == '13Q'].count()"
]
},
{
"cell_type": "code",
"execution_count": 169,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"00D\n",
"00F\n",
"00J\n",
"00L\n",
"00M\n",
"00N\n",
"00P\n",
"00Q\n",
"00W\n",
"00X\n",
"00Y\n",
"01A\n",
"01C\n",
"01D\n",
"01E\n",
"01F\n",
"01H\n",
"01J\n",
"01K\n",
"01M\n",
"01N\n",
"01T\n",
"01V\n",
"01X\n",
"02A\n",
"02D\n",
"02F\n",
"02G\n",
"02H\n",
"02M\n",
"02N\n",
"02P\n",
"02Q\n",
"02R\n",
"02T\n",
"02V\n",
"02W\n",
"02Y\n",
"03A\n",
"03C\n",
"03G\n",
"03J\n",
"03K\n",
"03M\n",
"03N\n",
"03Q\n",
"03R\n",
"03T\n",
"03V\n",
"03W\n",
"03Y\n",
"04C\n",
"04D\n",
"04E\n",
"04G\n",
"04H\n",
"04J\n",
"04K\n",
"04L\n",
"04M\n",
"04N\n",
"04Q\n",
"04V\n",
"04X\n",
"04Y\n",
"05C\n",
"05D\n",
"05G\n",
"05H\n",
"05J\n",
"05L\n",
"05N\n",
"05P\n",
"05Q\n",
"05V\n",
"05W\n",
"05X\n",
"06A\n",
"06D\n",
"06F\n",
"06H\n",
"06M\n",
"06N\n",
"06P\n",
"06Q\n",
"06V\n",
"06W\n",
"06Y\n",
"07G\n",
"07H\n",
"07J\n",
"07K\n",
"07L\n",
"07M\n",
"07N\n",
"07P\n",
"07Q\n",
"07R\n",
"07T\n",
"07V\n",
"07W\n",
"07Y\n",
"08C\n",
"08D\n",
"08E\n",
"08F\n",
"08H\n",
"08J\n",
"08K\n",
"08L\n",
"08M\n",
"08Q\n",
"08R\n",
"08T\n",
"08X\n",
"08Y\n",
"09A\n",
"09C\n",
"09D\n",
"09E\n",
"09F\n",
"09H\n",
"09J\n",
"09L\n",
"09N\n",
"09W\n",
"09X\n",
"09Y\n",
"106\n",
"107\n",
"109\n",
"10A\n",
"10C\n",
"10D\n",
"10E\n",
"10H\n",
"10J\n",
"10K\n",
"10M\n",
"10N\n",
"10R\n",
"10V\n",
"10W\n",
"10X\n",
"110\n",
"111\n",
"112\n",
"113\n",
"114\n",
"116\n",
"117\n",
"11A\n",
"11C\n",
"11D\n",
"11E\n",
"11H\n",
"11J\n",
"11T\n",
"12A\n",
"12G\n",
"12J\n",
"12K\n",
"12R\n",
"12V\n",
"13C\n",
"13N\n",
"13P\n",
"13Q\n",
"13R\n",
"13T\n",
"13V\n",
"13W\n",
"13X\n",
"14A\n",
"14E\n",
"14F\n",
"14G\n",
"14H\n",
"14K\n",
"14L\n",
"209\n",
"211\n",
"212\n",
"215\n",
"216\n",
"218\n",
"219\n",
"305\n",
"310\n",
"311\n",
"313\n",
"319\n",
"322\n",
"413\n",
"414\n",
"480\n",
"5A3\n",
"5A5\n",
"5A7\n",
"5C1\n",
"5C3\n",
"5C4\n",
"5C9\n",
"5CN\n",
"5CQ\n",
"5D7\n",
"5D8\n",
"5E1\n",
"5EM\n",
"5ET\n",
"5F1\n",
"5F5\n",
"5F7\n",
"5FE\n",
"5FL\n",
"5H1\n",
"5HG\n",
"5HP\n",
"5HQ\n",
"5HX\n",
"5J2\n",
"5J9\n",
"5JE\n",
"5K3\n",
"5K5\n",
"5K7\n",
"5K8\n",
"5K9\n",
"5KG\n",
"5KM\n",
"5L1\n",
"5LA\n",
"5LD\n",
"5LE\n",
"5LF\n",
"5LH\n",
"5M1\n",
"5M2\n",
"5M3\n",
"5M6\n",
"5M7\n",
"5MD\n",
"5MX\n",
"5N1\n",
"5N3\n",
"5N4\n",
"5N5\n",
"5N6\n",
"5N7\n",
"5N9\n",
"5NC\n",
"5NE\n",
"5NG\n",
"5NH\n",
"5NJ\n",
"5NK\n",
"5NL\n",
"5NP\n",
"5NR\n",
"5NT\n",
"5NV\n",
"5NW\n",
"5NY\n",
"5P1\n",
"5P2\n",
"5P5\n",
"5P6\n",
"5P7\n",
"5P8\n",
"5P9\n",
"5PA\n",
"5PC\n",
"5PD\n",
"5PE\n",
"5PF\n",
"5PG\n",
"5PH\n",
"5PJ\n",
"5PK\n",
"5PL\n",
"5PM\n",
"5PN\n",
"5PP\n",
"5PQ\n",
"5PR\n",
"5PT\n",
"5PV\n",
"5PX\n",
"5PY\n",
"5QA\n",
"5QC\n",
"5QE\n",
"5QF\n",
"5QG\n",
"5QH\n",
"5QJ\n",
"5QM\n",
"5QN\n",
"5QQ\n",
"5QR\n",
"609\n",
"613\n",
"615\n",
"704\n",
"720\n",
"723\n",
"725\n",
"7A1\n",
"7A2\n",
"7A3\n",
"7A4\n",
"7A5\n",
"7A6\n",
"7A7\n",
"905\n",
"909\n",
"99C\n",
"99D\n",
"99E\n",
"99F\n",
"99G\n",
"99J\n",
"99K\n",
"99M\n",
"99N\n",
"99Q\n",
"AA8\n",
"AAR\n",
"AAX\n",
"AC2\n",
"AC6\n",
"ACD\n",
"ACH\n",
"ACV\n",
"AD9\n",
"ADH\n",
"ADP\n",
"AE8\n",
"AER\n",
"AH7\n",
"AJ3\n",
"AJ9\n",
"AJQ\n",
"AJT\n",
"AKQ\n",
"AKV\n",
"ALK\n",
"ALM\n",
"AND\n",
"AP2\n",
"AQM\n",
"ARD\n",
"ARF\n",
"ARG\n",
"AT0\n",
"ATK\n",
"ATR\n",
"AVQ\n",
"AWH\n",
"AXM\n",
"AYN\n",
"DA8\n",
"DAA\n",
"DAN\n",
"DDC\n",
"DEC\n",
"DG3\n",
"NAG\n",
"NCN\n",
"NDA\n",
"NDJ\n",
"NDL\n",
"NEN\n",
"NHT\n",
"NI3\n",
"NKB\n",
"NKI\n",
"NL1\n",
"NL8\n",
"NLE\n",
"NLG\n",
"NLL\n",
"NLO\n",
"NLW\n",
"NLX\n",
"NMC\n",
"NMG\n",
"NMK\n",
"NMS\n",
"NNC\n",
"NNS\n",
"NO0\n",
"NPR\n",
"NQ7\n",
"NQA\n",
"NQH\n",
"NQL\n",
"NQT\n",
"NQV\n",
"NR3\n",
"NR5\n",
"NRX\n",
"NT4\n",
"NTP\n",
"NTV\n",
"NV1\n",
"NVC\n",
"NVE\n",
"NVK\n",
"NW0\n",
"NWC\n",
"NWE\n",
"NX1\n",
"NYF\n",
"NYG\n",
"Q65\n",
"Q78\n",
"Q80\n",
"Q81\n",
"Q82\n",
"Q99\n",
"R1A\n",
"R1C\n",
"R1D\n",
"R1E\n",
"R1F\n",
"R1H\n",
"R1J\n",
"R1K\n",
"R1L\n",
"RA9\n",
"RAJ\n",
"RBL\n",
"RBZ\n",
"RCB\n",
"RCD\n",
"RCF\n",
"RCU\n",
"RDD\n",
"RDR\n",
"RE9\n",
"RFR\n",
"RFS\n",
"RGD\n",
"RGQ\n",
"RGR\n",
"RH5\n",
"RH8\n",
"RHA\n",
"RJ1\n",
"RJ2\n",
"RJ7\n",
"RJ8\n",
"RJC\n",
"RJN\n",
"RL4\n",
"RLQ\n",
"RLY\n",
"RM3\n",
"RMC\n",
"RMY\n",
"RN3\n",
"RNA\n",
"RNN\n",
"RNU\n",
"RPG\n",
"RQ3\n",
"RQX\n",
"RRE\n",
"RRF\n",
"RRV\n",
"RT2\n",
"RTD\n",
"RTF\n",
"RTG\n",
"RTQ\n",
"RTR\n",
"RTV\n",
"RV3\n",
"RV9\n",
"RVJ\n",
"RVR\n",
"RVW\n",
"RW1\n",
"RW5\n",
"RW6\n",
"RWE\n",
"RWK\n",
"RWX\n",
"RX3\n",
"RX4\n",
"RX6\n",
"RXA\n",
"RXC\n",
"RXE\n",
"RXG\n",
"RXH\n",
"RXK\n",
"RXL\n",
"RXM\n",
"RXQ\n",
"RXX\n",
"RY1\n",
"RY2\n",
"RY3\n",
"RY4\n",
"RY5\n",
"RY6\n",
"RY7\n",
"RY8\n",
"RYA\n",
"RYF\n",
"RYG\n",
"RYJ\n",
"RYW\n",
"RYX\n",
"RYY\n",
"TAD\n",
"TAJ\n",
"TAK\n",
"YAE\n"
]
}
],
"source": [
"for group, df in non_matching.groupby('ccg_x'):\n",
" print group"
]
},
{
"cell_type": "code",
"execution_count": 171,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" code | \n",
" name | \n",
" postcode | \n",
" status_code | \n",
" ccg_x | \n",
" ccg | \n",
"
\n",
" \n",
" \n",
" \n",
" 7693 | \n",
" P81181 | \n",
" KINGSFOLD MEDICAL CENTRE | \n",
" PR1 9BX | \n",
" A | \n",
" 00X | \n",
" 01E | \n",
"
\n",
" \n",
" 7735 | \n",
" P81687 | \n",
" NEW LONGTON SURGERY | \n",
" PR4 4LU | \n",
" A | \n",
" 00X | \n",
" 01E | \n",
"
\n",
" \n",
" 7739 | \n",
" P81692 | \n",
" BEECHES MEDICAL CENTRE | \n",
" PR4 5AB | \n",
" A | \n",
" 00X | \n",
" 01E | \n",
"
\n",
" \n",
" 12641 | \n",
" Y04939 | \n",
" EATING DISORDER SERVICE | \n",
" PR1 3SG | \n",
" A | \n",
" 00X | \n",
" 01E | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" code name postcode status_code ccg_x ccg\n",
"7693 P81181 KINGSFOLD MEDICAL CENTRE PR1 9BX A 00X 01E\n",
"7735 P81687 NEW LONGTON SURGERY PR4 4LU A 00X 01E\n",
"7739 P81692 BEECHES MEDICAL CENTRE PR4 5AB A 00X 01E\n",
"12641 Y04939 EATING DISORDER SERVICE PR1 3SG A 00X 01E"
]
},
"execution_count": 171,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"non_matching[non_matching.ccg_x == '00X']"
]
},
{
"cell_type": "code",
"execution_count": 172,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" code | \n",
" name | \n",
" postcode | \n",
" status_code | \n",
" ccg_x | \n",
" ccg | \n",
"
\n",
" \n",
" \n",
" \n",
" 312 | \n",
" A85025 | \n",
" 1 RAWLING ROAD(THE MEDICAL CENTRE) | \n",
" NE8 4QS | \n",
" C | \n",
" 00F | \n",
" 13T | \n",
"
\n",
" \n",
" 314 | \n",
" A85601 | \n",
" BIRTLEY LANE SURGERY | \n",
" DH3 1AX | \n",
" C | \n",
" 00F | \n",
" 13T | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" code name postcode status_code ccg_x \\\n",
"312 A85025 1 RAWLING ROAD(THE MEDICAL CENTRE) NE8 4QS C 00F \n",
"314 A85601 BIRTLEY LANE SURGERY DH3 1AX C 00F \n",
"\n",
" ccg \n",
"312 13T \n",
"314 13T "
]
},
"execution_count": 172,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"non_matching[non_matching.ccg_x == '00F']"
]
},
{
"cell_type": "code",
"execution_count": 174,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" code | \n",
" name | \n",
" postcode | \n",
" status_code | \n",
" ccg_x | \n",
" ccg | \n",
"
\n",
" \n",
" \n",
" \n",
" 11438 | \n",
" Y03733 | \n",
" NHS CORBY CCG | \n",
" NN3 6BF | \n",
" A | \n",
" 03V | \n",
" 04G | \n",
"
\n",
" \n",
" 11951 | \n",
" Y04248 | \n",
" PRIMECARE CORBY | \n",
" NN1 5DQ | \n",
" A | \n",
" 03V | \n",
" 04G | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" code name postcode status_code ccg_x ccg\n",
"11438 Y03733 NHS CORBY CCG NN3 6BF A 03V 04G\n",
"11951 Y04248 PRIMECARE CORBY NN1 5DQ A 03V 04G"
]
},
"execution_count": 174,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"non_matching[non_matching.ccg_x == '03V']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"13Q is the \"National Commissioning Hub\"\n",
"\n",
"00X: NHS CHORLEY AND SOUTH RIBBLE CCG\n",
"01E: NHS GREATER PRESTON CCG\n",
"\n",
"00F: NHS GATESHEAD CCG\n",
"13T: NHS NEWCASTLE GATESHEAD CCG\n",
"\n",
"03V: NHS CORBY CCG\n",
"04G: NHS NENE CCG\n",
"\n",
"Either practices are assigned to CCG that they're not geographically in; or using centroids of postcodes for locating a practice is not good enough\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.13"
}
},
"nbformat": 4,
"nbformat_minor": 2
}