{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Numbers of Patients Registered at a GP Practice\n", "21/2/17\n", "Number of patients registred with a particular GP who live in a particular LSOA (/via Carl Baker, HoC Library)\n", "\n", "Demo sketch of opening data into an interactive *Google Map*." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#Original data source\n", "#http:§§//www.content.digital.nhs.uk/catalogue/PUB23139" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2017-02-21 14:02:29-- http://www.content.digital.nhs.uk/catalogue/PUB23139/gp-reg-patients-LSOA-alt-tall.csv\n", "Resolving www.content.digital.nhs.uk... 194.189.27.28\n", "Connecting to www.content.digital.nhs.uk|194.189.27.28|:80... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 38732373 (37M) [application/octet-stream]\n", "Saving to: 'data/gp-reg-patients-LSOA-alt-tall.csv'\n", "\n", "gp-reg-patients-LSO 100%[=====================>] 36.94M 1.45MB/s in 30s \n", "\n", "2017-02-21 14:03:02 (1.22 MB/s) - 'data/gp-reg-patients-LSOA-alt-tall.csv' saved [38732373/38732373]\n", "\n" ] } ], "source": [ "#Get the datafile\n", "!wget -P data http://www.content.digital.nhs.uk/catalogue/PUB23139/gp-reg-patients-LSOA-alt-tall.csv" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#Import best ever data handling package\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PRACTICE_CODENAMELSOA_CODEMALE_PATIENTSFEMALE_PATIENTSALL_PATIENTS
0A81001THE DENSHAM SURGERYE01012187044
1A81001THE DENSHAM SURGERYE01012188424587
2A81001THE DENSHAM SURGERYE01012189222850
3A81001THE DENSHAM SURGERYE010121906386149
4A81001THE DENSHAM SURGERYE010121917183154
\n", "
" ], "text/plain": [ " PRACTICE_CODE NAME LSOA_CODE MALE_PATIENTS \\\n", "0 A81001 THE DENSHAM SURGERY E01012187 0 \n", "1 A81001 THE DENSHAM SURGERY E01012188 42 \n", "2 A81001 THE DENSHAM SURGERY E01012189 22 \n", "3 A81001 THE DENSHAM SURGERY E01012190 63 \n", "4 A81001 THE DENSHAM SURGERY E01012191 71 \n", "\n", " FEMALE_PATIENTS ALL_PATIENTS \n", "0 4 4 \n", "1 45 87 \n", "2 28 50 \n", "3 86 149 \n", "4 83 154 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Load downloaded CSV file\n", "df=pd.read_csv('data/gp-reg-patients-LSOA-alt-tall.csv')\n", "#Preview first few lines\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Previously, I have created a simple sqlite3 database containing administrative open data from NHS Digital ([database generator script](https://github.com/psychemedia/openHealthDataDoodles/blob/master/notebooks/NHS%20and%20GP%20Administrative%20Data.ipynb)).\n", "\n", "Connect to local copy of the db." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import sqlite3\n", "\n", "#Use homebrew database of NHS administrative info\n", "con = sqlite3.connect(\"nhsadmin.sqlite\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Look up the GP practices on the Isle of Wight... (We could search for the code but I happen to know it...)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Organisation CodeNameNational GroupingHigh Level Health GeographyAddress Line 1Address Line 2Address Line 3Address Line 4Address Line 5Postcode...Close DateStatus CodeOrganisation Sub-Type codeCommissionerJoin Provider/Purchaser DateLeft Provider/Purchaser DateContact Telephone NumberAmended Record IndicatorProvider/PurchaserPrescribing Setting
0J84003VENTNOR MEDICAL CENTREY57Q70VENTNOR MEDICAL CENTRE3 ALBERT STREETVENTNORISLE OF WIGHTNonePO38 1EZ...NoneAB10L2013-04-01 00:00:00None01983 857288010L4
1J84004EAST COWES MEDICAL CENTREY57Q70EAST COWES MEDICAL CENTRECHURCH PATHEAST COWESISLE OF WIGHTNonePO32 6RP...NoneAB10L2013-04-01 00:00:00None01983 284333010L4
2J84005ESPLANADE SURGERYY57Q70THE ESPLANADE SURGERY19 THE ESPLANADERYDEISLE OF WIGHTNonePO33 2EH...NoneAB10L2013-04-01 00:00:00None01983 618388010L4
3J84007ST.HELENS MEDICAL CENTREY57Q70ST.HELENS MEDICAL CENTREUPPER GREEN ROADST.HELENSISLE OF WIGHTNonePO33 1UG...NoneAB10L2013-04-01 00:00:00None01983 871828010L4
4J84008ARGYLL HOUSEY57Q70ARGYLL HOUSEWEST STREETRYDEISLE OF WIGHTNonePO33 2QG...NoneAB10L2013-04-01 00:00:00None01983 562955010L4
5J84010SHANKLIN MEDICAL CENTREY57Q70SHANKLIN MEDICAL CENTRECARTER ROADSHANKLINISLE OF WIGHTNonePO37 7HR...NoneAB10L2013-04-01 00:00:00None01983 862245010L4
6J84011CARISBROOKE HEALTH CENTREY57Q70CARISBROOKE HEALTH CENTRE22 CARISBROOKE HIGH ST.CARISBROOKE, NEWPORTISLE OF WIGHTNonePO30 1NR...NoneAB10L2013-04-01 00:00:00None01983 522150010L4
7J84012TOWER HOUSE SURGERYY57Q70TOWER HOUSE SURGERYRINK ROADRYDEISLE OF WIGHTNonePO33 1LP...NoneAB10L2013-04-01 00:00:00None01983 817200010L4
8J84013SANDOWN HEALTH CENTREY57Q70SANDOWN HEALTH CENTREBROADWAYSANDOWNISLE OF WIGHTNonePO36 9GA...NoneAB10L2013-04-01 00:00:00None01938 409292010L4
9J84014THE DOWER HOUSEY57Q70THE DOWER HOUSE27 PYLE STREETNEWPORTISLE OF WIGHTNonePO30 1JW...NoneAB10L2013-04-01 00:00:00None01983 523525010L4
10J84015COWES MEDICAL CENTREY57Q70COWES MEDICAL CENTRE200 NEWPORT ROADCOWESISLE OF WIGHTNonePO31 7ER...NoneAB10L2013-04-01 00:00:00None01983 295251010L4
11J84016SOUTH WIGHT MEDICAL PRACTICEY57Q70THE SURGERYBLACKGANG ROADNITONISLE OF WIGHTNonePO38 2BN...NoneAB10L2013-04-01 00:00:00None01983 740219010L4
12J84017MEDINA HEALTHCAREY57Q70MEDINA HEALTHCARE16 WEST STREETNEWPORTISLE OF WIGHTNonePO30 1PR...NoneAB10L2013-04-01 00:00:00None01983 522198010L4
13J84018GROVE HOUSE SURGERYY57Q70GROVE HOUSE SURGERY102 ALBERT STREETVENTNORISLE OF WIGHTNonePO38 1EU...NoneAB10L2013-04-01 00:00:00None01983 852427010L4
14J84019WEST WIGHT MEDICAL PRACTICEY57Q70BROOKSIDE HEALTH CENTREQUEENS ROADFRESHWATERISLE OF WIGHTNonePO40 9DT...NoneAB10L2013-04-01 00:00:00None01983 758998010L4
15J84020BEECH GROVE SURGERYY57Q70BEECH GROVE SURGERYTHE MALLBRADINGISLE OF WIGHTNonePO36 0DE...NoneAB10L2013-04-01 00:00:00None01983 407558010L4
16J84602GARFIELD ROAD SURGERYY57Q7018 GARFIELD ROADRYDEISLE OF WIGHTNoneNonePO33 2PT...NoneDB10L2013-04-01 00:00:00None01983 565103010L4
17J84606DR IRISY57Q70102 CARISBROOKE ROADNEWPORTISLE OF WIGHTNoneNonePO30 1DB...NoneAB10L2013-04-01 00:00:00None01983 526654010L8
18Y00355RYDE OUTPATIENTS DEPARTMENTY57Q70SWANMORE ROADRYDEISLE OF WIGHTNoneNonePO33 2TG...NoneAB10L2013-04-01 00:00:00None01983 524081010L10
19Y00438INTERMEDIATE CARE SERVICESY57Q70OLD GATCOMBE WARDST MARY'S HOSPITALNEWPORTISLE OF WIGHTNonePO30 5TG...NoneAB10L2013-04-01 00:00:00None01983 535439010L0
20Y00588ISLAND HEALTH LINEY57Q70ST MARY'S HOSPITALPARKHURST ROADNEWPORTISLE OF WIGHTNonePO30 5TG...NoneAB10L2013-04-01 00:00:00None01983 534171010L0
21Y01856STOMA CARE (ST MARY'S HOSPITAL)Y57Q70ST MARY'S HOSPITALNoneNEWPORTISLE OF WIGHTNonePO30 5TG...NoneAB10L2013-04-01 00:00:00None01983 534009010L10
22Y01857PARKINSON'S DISEASE SPECIALIST CLINICY57Q70ST MARY'S HOSPITALNoneNEWPORTISLE OF WIGHTNonePO30 5TG...NoneAB10L2013-04-01 00:00:00None01983 524081010L0
23Y01858PRIMARY CARE PRESCRIBING TEAMY57Q70IOW NHS PCT,SOUTH BLOCKST MARY'S HOSPITALNEWPORTISLE OF WIGHTNonePO30 5TG...NoneAB10L2013-04-01 00:00:00None01983 552466010L0
24Y02694COMMUNITY DERMATOLOGY SERVICEY57Q70THE BEACON HEALTH CENTREPARKHURST ROADNEWPORTISLE OF WIGHTNonePO30 5TG...NoneAB10L2013-04-01 00:00:00None01983 532590010L9
25Y02758BEACON HEALTHY57Q70ST MARY'S HOSPITALNoneNEWPORTISLE OF WIGHTNonePO30 5TG...NoneAB10L2013-04-01 00:00:00None01983 821170010L1
26Y03833ISLE OF WIGHT NHS TRUST NMPY57Q70ST MARY'S HOSPITALNoneNEWPORTISLE OF WIGHTNonePO30 5TG...NoneAB10L2013-04-01 00:00:00None01983 5240810R1F0
\n", "

27 rows × 21 columns

\n", "
" ], "text/plain": [ " Organisation Code Name National Grouping \\\n", "0 J84003 VENTNOR MEDICAL CENTRE Y57 \n", "1 J84004 EAST COWES MEDICAL CENTRE Y57 \n", "2 J84005 ESPLANADE SURGERY Y57 \n", "3 J84007 ST.HELENS MEDICAL CENTRE Y57 \n", "4 J84008 ARGYLL HOUSE Y57 \n", "5 J84010 SHANKLIN MEDICAL CENTRE Y57 \n", "6 J84011 CARISBROOKE HEALTH CENTRE Y57 \n", "7 J84012 TOWER HOUSE SURGERY Y57 \n", "8 J84013 SANDOWN HEALTH CENTRE Y57 \n", "9 J84014 THE DOWER HOUSE Y57 \n", "10 J84015 COWES MEDICAL CENTRE Y57 \n", "11 J84016 SOUTH WIGHT MEDICAL PRACTICE Y57 \n", "12 J84017 MEDINA HEALTHCARE Y57 \n", "13 J84018 GROVE HOUSE SURGERY Y57 \n", "14 J84019 WEST WIGHT MEDICAL PRACTICE Y57 \n", "15 J84020 BEECH GROVE SURGERY Y57 \n", "16 J84602 GARFIELD ROAD SURGERY Y57 \n", "17 J84606 DR IRIS Y57 \n", "18 Y00355 RYDE OUTPATIENTS DEPARTMENT Y57 \n", "19 Y00438 INTERMEDIATE CARE SERVICES Y57 \n", "20 Y00588 ISLAND HEALTH LINE Y57 \n", "21 Y01856 STOMA CARE (ST MARY'S HOSPITAL) Y57 \n", "22 Y01857 PARKINSON'S DISEASE SPECIALIST CLINIC Y57 \n", "23 Y01858 PRIMARY CARE PRESCRIBING TEAM Y57 \n", "24 Y02694 COMMUNITY DERMATOLOGY SERVICE Y57 \n", "25 Y02758 BEACON HEALTH Y57 \n", "26 Y03833 ISLE OF WIGHT NHS TRUST NMP Y57 \n", "\n", " High Level Health Geography Address Line 1 \\\n", "0 Q70 VENTNOR MEDICAL CENTRE \n", "1 Q70 EAST COWES MEDICAL CENTRE \n", "2 Q70 THE ESPLANADE SURGERY \n", "3 Q70 ST.HELENS MEDICAL CENTRE \n", "4 Q70 ARGYLL HOUSE \n", "5 Q70 SHANKLIN MEDICAL CENTRE \n", "6 Q70 CARISBROOKE HEALTH CENTRE \n", "7 Q70 TOWER HOUSE SURGERY \n", "8 Q70 SANDOWN HEALTH CENTRE \n", "9 Q70 THE DOWER HOUSE \n", "10 Q70 COWES MEDICAL CENTRE \n", "11 Q70 THE SURGERY \n", "12 Q70 MEDINA HEALTHCARE \n", "13 Q70 GROVE HOUSE SURGERY \n", "14 Q70 BROOKSIDE HEALTH CENTRE \n", "15 Q70 BEECH GROVE SURGERY \n", "16 Q70 18 GARFIELD ROAD \n", "17 Q70 102 CARISBROOKE ROAD \n", "18 Q70 SWANMORE ROAD \n", "19 Q70 OLD GATCOMBE WARD \n", "20 Q70 ST MARY'S HOSPITAL \n", "21 Q70 ST MARY'S HOSPITAL \n", "22 Q70 ST MARY'S HOSPITAL \n", "23 Q70 IOW NHS PCT,SOUTH BLOCK \n", "24 Q70 THE BEACON HEALTH CENTRE \n", "25 Q70 ST MARY'S HOSPITAL \n", "26 Q70 ST MARY'S HOSPITAL \n", "\n", " Address Line 2 Address Line 3 Address Line 4 \\\n", "0 3 ALBERT STREET VENTNOR ISLE OF WIGHT \n", "1 CHURCH PATH EAST COWES ISLE OF WIGHT \n", "2 19 THE ESPLANADE RYDE ISLE OF WIGHT \n", "3 UPPER GREEN ROAD ST.HELENS ISLE OF WIGHT \n", "4 WEST STREET RYDE ISLE OF WIGHT \n", "5 CARTER ROAD SHANKLIN ISLE OF WIGHT \n", "6 22 CARISBROOKE HIGH ST. CARISBROOKE, NEWPORT ISLE OF WIGHT \n", "7 RINK ROAD RYDE ISLE OF WIGHT \n", "8 BROADWAY SANDOWN ISLE OF WIGHT \n", "9 27 PYLE STREET NEWPORT ISLE OF WIGHT \n", "10 200 NEWPORT ROAD COWES ISLE OF WIGHT \n", "11 BLACKGANG ROAD NITON ISLE OF WIGHT \n", "12 16 WEST STREET NEWPORT ISLE OF WIGHT \n", "13 102 ALBERT STREET VENTNOR ISLE OF WIGHT \n", "14 QUEENS ROAD FRESHWATER ISLE OF WIGHT \n", "15 THE MALL BRADING ISLE OF WIGHT \n", "16 RYDE ISLE OF WIGHT None \n", "17 NEWPORT ISLE OF WIGHT None \n", "18 RYDE ISLE OF WIGHT None \n", "19 ST MARY'S HOSPITAL NEWPORT ISLE OF WIGHT \n", "20 PARKHURST ROAD NEWPORT ISLE OF WIGHT \n", "21 None NEWPORT ISLE OF WIGHT \n", "22 None NEWPORT ISLE OF WIGHT \n", "23 ST MARY'S HOSPITAL NEWPORT ISLE OF WIGHT \n", "24 PARKHURST ROAD NEWPORT ISLE OF WIGHT \n", "25 None NEWPORT ISLE OF WIGHT \n", "26 None NEWPORT ISLE OF WIGHT \n", "\n", " Address Line 5 Postcode ... Close Date Status Code \\\n", "0 None PO38 1EZ ... None A \n", "1 None PO32 6RP ... None A \n", "2 None PO33 2EH ... None A \n", "3 None PO33 1UG ... None A \n", "4 None PO33 2QG ... None A \n", "5 None PO37 7HR ... None A \n", "6 None PO30 1NR ... None A \n", "7 None PO33 1LP ... None A \n", "8 None PO36 9GA ... None A \n", "9 None PO30 1JW ... None A \n", "10 None PO31 7ER ... None A \n", "11 None PO38 2BN ... None A \n", "12 None PO30 1PR ... None A \n", "13 None PO38 1EU ... None A \n", "14 None PO40 9DT ... None A \n", "15 None PO36 0DE ... None A \n", "16 None PO33 2PT ... None D \n", "17 None PO30 1DB ... None A \n", "18 None PO33 2TG ... None A \n", "19 None PO30 5TG ... None A \n", "20 None PO30 5TG ... None A \n", "21 None PO30 5TG ... None A \n", "22 None PO30 5TG ... None A \n", "23 None PO30 5TG ... None A \n", "24 None PO30 5TG ... None A \n", "25 None PO30 5TG ... None A \n", "26 None PO30 5TG ... None A \n", "\n", " Organisation Sub-Type code Commissioner Join Provider/Purchaser Date \\\n", "0 B 10L 2013-04-01 00:00:00 \n", "1 B 10L 2013-04-01 00:00:00 \n", "2 B 10L 2013-04-01 00:00:00 \n", "3 B 10L 2013-04-01 00:00:00 \n", "4 B 10L 2013-04-01 00:00:00 \n", "5 B 10L 2013-04-01 00:00:00 \n", "6 B 10L 2013-04-01 00:00:00 \n", "7 B 10L 2013-04-01 00:00:00 \n", "8 B 10L 2013-04-01 00:00:00 \n", "9 B 10L 2013-04-01 00:00:00 \n", "10 B 10L 2013-04-01 00:00:00 \n", "11 B 10L 2013-04-01 00:00:00 \n", "12 B 10L 2013-04-01 00:00:00 \n", "13 B 10L 2013-04-01 00:00:00 \n", "14 B 10L 2013-04-01 00:00:00 \n", "15 B 10L 2013-04-01 00:00:00 \n", "16 B 10L 2013-04-01 00:00:00 \n", "17 B 10L 2013-04-01 00:00:00 \n", "18 B 10L 2013-04-01 00:00:00 \n", "19 B 10L 2013-04-01 00:00:00 \n", "20 B 10L 2013-04-01 00:00:00 \n", "21 B 10L 2013-04-01 00:00:00 \n", "22 B 10L 2013-04-01 00:00:00 \n", "23 B 10L 2013-04-01 00:00:00 \n", "24 B 10L 2013-04-01 00:00:00 \n", "25 B 10L 2013-04-01 00:00:00 \n", "26 B 10L 2013-04-01 00:00:00 \n", "\n", " Left Provider/Purchaser Date Contact Telephone Number \\\n", "0 None 01983 857288 \n", "1 None 01983 284333 \n", "2 None 01983 618388 \n", "3 None 01983 871828 \n", "4 None 01983 562955 \n", "5 None 01983 862245 \n", "6 None 01983 522150 \n", "7 None 01983 817200 \n", "8 None 01938 409292 \n", "9 None 01983 523525 \n", "10 None 01983 295251 \n", "11 None 01983 740219 \n", "12 None 01983 522198 \n", "13 None 01983 852427 \n", "14 None 01983 758998 \n", "15 None 01983 407558 \n", "16 None 01983 565103 \n", "17 None 01983 526654 \n", "18 None 01983 524081 \n", "19 None 01983 535439 \n", "20 None 01983 534171 \n", "21 None 01983 534009 \n", "22 None 01983 524081 \n", "23 None 01983 552466 \n", "24 None 01983 532590 \n", "25 None 01983 821170 \n", "26 None 01983 524081 \n", "\n", " Amended Record Indicator Provider/Purchaser Prescribing Setting \n", "0 0 10L 4 \n", "1 0 10L 4 \n", "2 0 10L 4 \n", "3 0 10L 4 \n", "4 0 10L 4 \n", "5 0 10L 4 \n", "6 0 10L 4 \n", "7 0 10L 4 \n", "8 0 10L 4 \n", "9 0 10L 4 \n", "10 0 10L 4 \n", "11 0 10L 4 \n", "12 0 10L 4 \n", "13 0 10L 4 \n", "14 0 10L 4 \n", "15 0 10L 4 \n", "16 0 10L 4 \n", "17 0 10L 8 \n", "18 0 10L 10 \n", "19 0 10L 0 \n", "20 0 10L 0 \n", "21 0 10L 10 \n", "22 0 10L 0 \n", "23 0 10L 0 \n", "24 0 10L 9 \n", "25 0 10L 1 \n", "26 0 R1F 0 \n", "\n", "[27 rows x 21 columns]" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ccode='10L'\n", "\n", "#Find \n", "EPRACCUR='epraccur'\n", "epraccur_iw = pd.read_sql_query('SELECT * FROM {typ} WHERE \"Commissioner\"=\"{ccode}\"'.format(typ=EPRACCUR,ccode=ccode), con)\n", "\n", "epraccur_iw" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `folium` library makes it easy to generate choropleth maps using the Leaflet javascript library. We can use various map tiles - the default is Google Maps." ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import folium\n", "#color brewer palettes: ‘BuGn’, ‘BuPu’, ‘GnBu’, ‘OrRd’, ‘PuBu’, ‘PuBuGn’, ‘PuRd’, ‘RdPu’, ‘YlGn’, ‘YlGnBu’, ‘YlOrBr’, and ‘YlOrRd’.\n", "\n", "#Fiona is a powerful library for geo wrangling with various dependencies that can make installation a pain...\n", "#...but I have it installed already so I can use it to trivially find the centre of a set of boundaries in a geojson file\n", "import fiona\n", "\n", "#This is a canned demo - I happen to have the Local Authority Code for the Isle of Wight...\n", "#...and copies of LSOA geojson files by LA\n", "# (I could get LA code from the NHS addmin db)\n", "geojson_local='../../IWgeodata/lsoa_by_lad/E06000046.json'\n", "fi=fiona.open(geojson_local)\n", "centre_lat,centre_lon=((fi.bounds[0]+fi.bounds[2])/2,(fi.bounds[1]+fi.bounds[3])/2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Generate a choropleth map for selected GP practice, colouring LSOA by number of folk registered to that practice." ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#Add a widget in that lets you select the GP practice by name then fudge the lookup to practice code\n", "#We could also add another widget to select eg Male | Female | All\n", "def generate_map(gpcode):\n", " gpmap = folium.Map([centre_lon,centre_lat], zoom_start=11)\n", " gpmap.choropleth(\n", " geo_path=geojson_local,\n", " data=df[df['PRACTICE_CODE']==gpcode],\n", " columns=['LSOA_CODE', 'ALL_PATIENTS'],\n", " key_on='feature.properties.LSOA11CD',\n", " fill_color='PuBuGn', fill_opacity=0.7,\n", " legend_name='Number of people on list in LSOA'\n", " )\n", " \n", " return gpmap\n", "\n", "def generate_map_from_gpname(gpname):\n", " gpcode=epraccur_iw[epraccur_iw['Name']==gpname]['Organisation Code'].iloc[0]\n", " return generate_map(gpcode)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(['VENTNOR MEDICAL CENTRE', 'EAST COWES MEDICAL CENTRE', 'ESPLANADE SURGERY'],\n", " 27)" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#iw_gps=epraccur_iw['Organisation Code'].unique().tolist()\n", "iw_gps=epraccur_iw['Name'].unique().tolist()\n", "iw_gps[:3],len(iw_gps)" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/IAAAAvCAYAAABAKvFUAAAVTklEQVR4Xu2dB5QVRZuGXxwDihkcPa6DoP4Io2Nec3YNv5hzzglzzjnnHMCcs2DGnOOvuAuLuMuyIqgYGeMxzsCep/6uuz3NzNB3nJnDnX7rHA44t2531VMNnuf7vqruJjcTMAETMAETMAETMAETMAETMAETMIGKIdCtYkbqgZqACZiACZiACZiACZiACZiACZiACcgi74fABEzABEzABEzABEzABEzABEzABCqIgEW+ghbLQzUBEzABEzABEzABEzABEzABEzABi7yfARMwARMwARMwARMwARMwARMwAROoIAIW+QpaLA/VBEzABEzABEzABEzABEzABEzABCzyfgZMwARMwARMwARMwARMwARMwARMoIIIWOQraLE8VBMwARMwARMwARMwARMwARMwAROwyJfxDEycOHHo5MmTt2psbDS3Mri5a3EIVFVVhck2NjZ22KR79uz5H3379l2+w27gC5uACZiACZiACZiACZjADE7AQppzgUaPHr3ElClT/qe2tlZRVnJ+1d1MoDAERowYoZqaGlVXV3fInAkQjB8/Xg0NDQcNGDBgSIfcxBc1ARMwARMwARMwARMwgRmcgEU+5wKNHDlyk+7duw/v169fzm+4mwkUj0BHizxEJ02apPr6+sF1dXWDikfYMzYBEzABEzABEzABEzABySKf8ymwyOcE5W6FJvDJJ59ojjnm6LCMvEW+0I+XJ28CJmACJmACJmACJpAQsMjnfBQs8jlBuVuhCVjkC738nrwJmIAJmIAJmIAJmEAnEbDI5wRtkc8Jyt0KTcAiX+jl9+RNwARMwARMwARMwAQ6iYBFPidoi3xOUO5WaAIW+UIvvydvAiZgAiZgAiZgAibQSQQs8jlBW+RzgnK3QhOwyBd6+T15EzABEzABEzABEzCBTiJgkc8J2iKfE5S7FZqARb7Qy+/Jm4AJmIAJmIAJmIAJdBIBi3xO0Bb5nKDcrdAELPKFXn5P3gRMwARMwARMwARMoJMIWORzgm6LyNfX1+uWW27RjjvuqN69eze509NPP63vv/9e6623noYNG6ZZZpmlyec///yzttpqq/Aqr3vvvVdbbrmlFltssVKfP/74Q0OGDNHGG2+sV155Jfy8W7emy0mfpZdeWnPNNZdeffVVHXDAAerRo0fpGl999ZXuv/9+7b///uE+NN7R/dBDD+nFF1/UlClTtNFGG2mHHXbQQgstFD7nO4888kiT8f7555/hPmuuuaZmmmmmaYhOnjxZd911l/r3769NNtmkyedTp07Vo48+qi+++EJ77bWXZp55Zt1zzz1qaGho0o+5rLbaauE+6c/5+fzzz6+11lpLiyyySOk78GVO6667bvgZ93n55Zc1dOhQffzxx+rXr5+23nrr8L3smN944w2NHDlSu+++u+aee+7SNT/44AONHj1au+22W7PzzE78ww8/1IMPPqj33ntP8803nzbbbDNtu+22mnXWWcN4nnrqqcA7vW6wZB70ffzxx/Xrr7+G5yc9xjiO2tpavf322+revfs0zOGy6667hmcrzZKf19TUaMMNN9Tss88u/rs13iussELOvyH/7GaRLwuXO5uACZiACZiACZiACZhAmwhY5HNia4vI//jjj9piiy209957a8899yzd6ffff9fmm28eBHnttdfWLrvsEiR4zjnnLPUhCHDkkUeG/+Zz5AspjML/yy+/aNNNN9VFF12kxx57LPRDypD6Xr16aaWVVhJ91l9/ff3222+68MILtf322+uEE04o3WPs2LFBVp955pkgmqNGjdI+++wTRPOoo44Ksnn99deLoMKdd94pxJHvZMf77bff6v333w/yefrpp08jufE7iDWCnZ4nkk8wgnsitrPNNluYF4GDJZZYojRW5gIrAgvZz1966aUwdwISBCtoBx54oJZbbjkdfPDBYR4nnnhiCE4g0ssvv3wQYO4Hk+OOO640ZkQawf/yyy917rnnNgk8EOAgMMMcmgtYpB8l+rI2yy67bAjIfP7557r55ps1zzzzlOZ59NFH69133w1rFBvPxoILLhj4H3vssXr99dfDdTbYYINSnziOU045JUg4603Q4NNPPy09RwSJWIsYhIksuT4BjTgOgjWt8Wbs5TSLfDm03NcETMAETMAETMAETMAE2kagvUR+gKSTJe0m6SlJN0raRtJhknpKulrSC5J2kLSGpJsknSXpc0l9JF2a/KLfv0p6KLneuGRaG0o6QtJASaMk3SrpWkkzJ3++QxKp3qMkDZeEra6ajIP+QyTdQGKWxLWknSSdK4kU95WSzpFU3xrCtog817vkkkuCKD/33HOqqqoKt4jCTGa7sbExZHhfeOGFUlY8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QMF3+DNiTZl5usUsOvcl0BJf45fuQ8Ahe8hfPBGfioPYCMwQSODAwLSUZx865Jl3xRNAWHnllcNe9tgIXMCZNxekT+FnjQkyIPI9evQI3ePzEIMJ8RrxhH+2VVCu3xpvDkUsp5Ur8lybYE02+NPaPS3y5ayI+5qACZiACZiACZiACXRFAu0h8itIYk87735HnGkc880p9Lw6rm+y353fOXyOw+XYq15u453x/CJ1yQvZ52zjdeJ955BEWT0H4E23/VWRn+4NZqAOlJIjjDQqB1p7Z/oMNOxcQ0HMyZhTUh6FN9cX29gJoUeoCYLE98C38VIV8bW2iHy5E7PIl0vM/U3ABEzABEzABEzABLoagfYQed4bz8F07FMnK7+6pIsksaedA+2QfDLilK7H19NVHMciiXzFLY4HPMMQsMjPMEvhgZiACZiACZiACZiACXRhAu0h8uBB5g+UtLukUZLO4LXbyeF0lM4fKenEJCNfkTgt8hW5bB50JxOwyHcycN/OBEzABEzABEzABEygkATaS+S7PDyLfJdfYk+wHQhY5NsBoi9hAiZgAiZgAiZgAiZgAtMhYJHP+YhY5HOCcrdCE7DIF3r5PXkTMAETMAETMAETMIFOImCRzwnaIp8TlLsVmoBFvtDL78mbgAmYgAmYgAmYgAl0EgGLfE7QFvmcoNyt0AQs8oVefk/eBEzABEzABEzABEygkwhY5HOCtsjnBOVuhSZgkS/08nvyJmACJmACJmACJmACnUTAIp8TtEU+Jyh3KzQBi3yhl9+TNwETMAETMAETMAET6CQCFvmcoC3yOUG5W6EJjBgxQjU1Naquru4wDpMmTVJ9ff3gurq6QR12E1/YBEzABEzABEzABEzABGZgAhb5nIszZsyYvzU0NIytra1VVVVVzm+5mwkUi0BniPy4cePU2Ng4qH///oOLRdezNQETMAETMAETMAETMIF/ErDIl/EkTJgw4clvvvlmYBlfcVcTKBSBGORqbGzssHn36tVrdJ8+feo67Aa+sAmYgAmYgAmYgAmYgAnM4AQs8jP4Anl4JlBJBKZOnTpTt27dplTSmD1WEzABEzABEzABEzABE6g0Ahb5Slsxj9cETMAETMAETMAETMAETMAETKDQBCzyhV5+T94ETMAETMAETMAETMAETMAETKDSCFjkK23FPF4TMAETMAETMAETMAETMAETMIFCE7DIF3r5PXkTMAETMAETMAETMAETMAETMIFKI2CRr7QV83hNwARMwARMwARMwARMwARMwAQKTcAiX+jl9+RNwARMwARMwARMwARMwARMwAQqjcD/AVI6V8ZALcHkAAAAAElFTkSuQmCC", "text/html": [ "\n", "" ] }, "metadata": { "isWidgetSnapshot": true }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/IAAAAvCAYAAABAKvFUAAAVTklEQVR4Xu2dB5QVRZuGXxwDihkcPa6DoP4Io2Nec3YNv5hzzglzzjnnHMCcs2DGnOOvuAuLuMuyIqgYGeMxzsCep/6uuz3NzNB3nJnDnX7rHA44t2531VMNnuf7vqruJjcTMAETMAETMAETMAETMAETMAETMIGKIdCtYkbqgZqACZiACZiACZiACZiACZiACZiACcgi74fABEzABEzABEzABEzABEzABEzABCqIgEW+ghbLQzUBEzABEzABEzABEzABEzABEzABi7yfARMwARMwARMwARMwARMwARMwAROoIAIW+QpaLA/VBEzABEzABEzABEzABEzABEzABCzyfgZMwARMwARMwARMwARMwARMwARMoIIIWOQraLE8VBMwARMwARMwARMwARMwARMwAROwyJfxDEycOHHo5MmTt2psbDS3Mri5a3EIVFVVhck2NjZ22KR79uz5H3379l2+w27gC5uACZiACZiACZiACZjADE7AQppzgUaPHr3ElClT/qe2tlZRVnJ+1d1MoDAERowYoZqaGlVXV3fInAkQjB8/Xg0NDQcNGDBgSIfcxBc1ARMwARMwARMwARMwgRmcgEU+5wKNHDlyk+7duw/v169fzm+4mwkUj0BHizxEJ02apPr6+sF1dXWDikfYMzYBEzABEzABEzABEzABySKf8ymwyOcE5W6FJvDJJ59ojjnm6LCMvEW+0I+XJ28CJmACJmACJmACJpAQsMjnfBQs8jlBuVuhCVjkC738nrwJmIAJmIAJmIAJmEAnEbDI5wRtkc8Jyt0KTcAiX+jl9+RNwARMwARMwARMwAQ6iYBFPidoi3xOUO5WaAIW+UIvvydvAiZgAiZgAiZgAibQSQQs8jlBW+RzgnK3QhOwyBd6+T15EzABEzABEzABEzCBTiJgkc8J2iKfE5S7FZqARb7Qy+/Jm4AJmIAJmIAJmIAJdBIBi3xO0Bb5nKDcrdAELPKFXn5P3gRMwARMwARMwARMoJMIWORzgm6LyNfX1+uWW27RjjvuqN69eze509NPP63vv/9e6623noYNG6ZZZpmlyec///yzttpqq/Aqr3vvvVdbbrmlFltssVKfP/74Q0OGDNHGG2+sV155Jfy8W7emy0mfpZdeWnPNNZdeffVVHXDAAerRo0fpGl999ZXuv/9+7b///uE+NN7R/dBDD+nFF1/UlClTtNFGG2mHHXbQQgstFD7nO4888kiT8f7555/hPmuuuaZmmmmmaYhOnjxZd911l/r3769NNtmkyedTp07Vo48+qi+++EJ77bWXZp55Zt1zzz1qaGho0o+5rLbaauE+6c/5+fzzz6+11lpLiyyySOk78GVO6667bvgZ93n55Zc1dOhQffzxx+rXr5+23nrr8L3smN944w2NHDlSu+++u+aee+7SNT/44AONHj1au+22W7PzzE78ww8/1IMPPqj33ntP8803nzbbbDNtu+22mnXWWcN4nnrqqcA7vW6wZB70ffzxx/Xrr7+G5yc9xjiO2tpavf322+revfs0zOGy6667hmcrzZKf19TUaMMNN9Tss88u/rs13iussELOvyH/7GaRLwuXO5uACZiACZiACZiACZhAmwhY5HNia4vI//jjj9piiy209957a8899yzd6ffff9fmm28eBHnttdfWLrvsEiR4zjnnLPUhCHDkkUeG/+Zz5AspjML/yy+/aNNNN9VFF12kxx57LPRDypD6Xr16aaWVVhJ91l9/ff3222+68MILtf322+uEE04o3WPs2LFBVp955pkgmqNGjdI+++wTRPOoo44Ksnn99deLoMKdd94pxJHvZMf77bff6v333w/yefrpp08jufE7iDWCnZ4nkk8wgnsitrPNNluYF4GDJZZYojRW5gIrAgvZz1966aUwdwISBCtoBx54oJZbbjkdfPDBYR4nnnhiCE4g0ssvv3wQYO4Hk+OOO640ZkQawf/yyy917rnnNgk8EOAgMMMcmgtYpB8l+rI2yy67bAjIfP7557r55ps1zzzzlOZ59NFH69133w1rFBvPxoILLhj4H3vssXr99dfDdTbYYINSnziOU045JUg4603Q4NNPPy09RwSJWIsYhIksuT4BjTgOgjWt8Wbs5TSLfDm03NcETMAETMAETMAETMAE2kagvUR+gKSTJe0m6SlJN0raRtJhknpKulrSC5J2kLSGpJsknSXpc0l9JF2a/KLfv0p6KLneuGRaG0o6QtJASaMk3SrpWkkzJ3++QxKp3qMkDZeEra6ajIP+QyTdQGKWxLWknSSdK4kU95WSzpFU3xrCtog817vkkkuCKD/33HOqqqoKt4jCTGa7sbExZHhfeOGFUlY8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QMF3+DNiTZl5usUsOvcl0BJf45fuQ8Ahe8hfPBGfioPYCMwQSODAwLSUZx865Jl3xRNAWHnllcNe9tgIXMCZNxekT+FnjQkyIPI9evQI3ePzEIMJ8RrxhH+2VVCu3xpvDkUsp5Ur8lybYE02+NPaPS3y5ayI+5qACZiACZiACZiACXRFAu0h8itIYk87735HnGkc880p9Lw6rm+y353fOXyOw+XYq15u453x/CJ1yQvZ52zjdeJ955BEWT0H4E23/VWRn+4NZqAOlJIjjDQqB1p7Z/oMNOxcQ0HMyZhTUh6FN9cX29gJoUeoCYLE98C38VIV8bW2iHy5E7PIl0vM/U3ABEzABEzABEzABLoagfYQed4bz8F07FMnK7+6pIsksaedA+2QfDLilK7H19NVHMciiXzFLY4HPMMQsMjPMEvhgZiACZiACZiACZiACXRhAu0h8uBB5g+UtLukUZLO4LXbyeF0lM4fKenEJCNfkTgt8hW5bB50JxOwyHcycN/OBEzABEzABEzABEygkATaS+S7PDyLfJdfYk+wHQhY5NsBoi9hAiZgAiZgAiZgAiZgAtMhYJHP+YhY5HOCcrdCE7DIF3r5PXkTMAETMAETMAETMIFOImCRzwnaIp8TlLsVmoBFvtDL78mbgAmYgAmYgAmYgAl0EgGLfE7QFvmcoNyt0AQs8oVefk/eBEzABEzABEzABEygkwhY5HOCtsjnBOVuhSZgkS/08nvyJmACJmACJmACJmACnUTAIp8TtEU+Jyh3KzQBi3yhl9+TNwETMAETMAETMAET6CQCFvmcoC3yOUG5W6EJjBgxQjU1Naquru4wDpMmTVJ9ff3gurq6QR12E1/YBEzABEzABEzABEzABGZgAhb5nIszZsyYvzU0NIytra1VVVVVzm+5mwkUi0BniPy4cePU2Ng4qH///oOLRdezNQETMAETMAETMAETMIF/ErDIl/EkTJgw4clvvvlmYBlfcVcTKBSBGORqbGzssHn36tVrdJ8+feo67Aa+sAmYgAmYgAmYgAmYgAnM4AQs8jP4Anl4JlBJBKZOnTpTt27dplTSmD1WEzABEzABEzABEzABE6g0Ahb5Slsxj9cETMAETMAETMAETMAETMAETKDQBCzyhV5+T94ETMAETMAETMAETMAETMAETKDSCFjkK23FPF4TMAETMAETMAETMAETMAETMIFCE7DIF3r5PXkTMAETMAETMAETMAETMAETMIFKI2CRr7QV83hNwARMwARMwARMwARMwARMwAQKTcAiX+jl9+RNwARMwARMwARMwARMwARMwAQqjcD/AVI6V8ZALcHkAAAAAElFTkSuQmCC", "text/html": [ "\n", "" ] }, "metadata": { "isWidgetSnapshot": true }, "output_type": "display_data" }, { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipywidgets import interact\n", "interact(generate_map_from_gpname, gpname=iw_gps);" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "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.5.1" }, "widgets": { "state": { "5de503071c12498f987d732e4d5064a9": { "views": [ { "cell_index": 14 } ] } }, "version": "1.2.0" } }, "nbformat": 4, "nbformat_minor": 2 }