Skip to content

Instantly share code, notes, and snippets.

@psychemedia
Last active August 29, 2015 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save psychemedia/10350fe84ae8bdb6196b to your computer and use it in GitHub Desktop.
Save psychemedia/10350fe84ae8bdb6196b to your computer and use it in GitHub Desktop.
A quick conversation with data - UK PFI contract summary, 2013
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:ab6e80a040e9cbeb2224f237734e809f390c70283f47dec963b7678bd18e7b87"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Quick Look at UK PFI Contracts Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With cuts in local spending due to continue, I started to wonder about whether the spending commitments made under PFI contracts are fixed, or whether they can be cut too. (If they're fixed, it's perhaps yet another example of how public policymakers allow corporates to lock in their own, presumably profitable, budgets at the expense of everyone else...)\n",
"\n",
"I'm not sure whether I can make any progress at all with unerstanding the above, but my first step is to try to find some data about current PFI contracts. I found a spreadsheet detailing [2013 summary data about current PFI contracts](https://www.gov.uk/government/publications/private-finance-initiative-projects-2013-summary-data) - here's a report of a quick conversation with it.\n",
"\n",
"[For future reference, see eg [Treasury - Seventeenth Report: Private Finance Initiative, 18 July 2011](http://www.publications.parliament.uk/pa/cm201012/cmselect/cmtreasy/1146/114602.htm) ]"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Load in some libraries to help us work with the data\n",
"import pandas as pd\n",
"from ggplot import *"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Getting the Data"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Data source - download the data to the data/ directory\n",
"#wget https://www.gov.uk/government/uploads/system/uploads/attachment_data/file/267640/pfi_current_projects_list_march_2013_published_dec_2013.xlsx -P data"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Import the data we've just downloaded\n",
"df=pd.read_excel('data/pfi_current_projects_list_march_2013_published_dec_2013.xlsx',skiprows=1)\n",
"\n",
"#Preview the first few rows\n",
"df[:3]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>Department</th>\n",
" <th>Procuring authority</th>\n",
" <th>Sector</th>\n",
" <th>Constituency</th>\n",
" <th>Region</th>\n",
" <th>Project Status</th>\n",
" <th>Date Of OJEU</th>\n",
" <th>Date of preferred bidder</th>\n",
" <th>...</th>\n",
" <th>Equity holder 4: change of ownership since March 2011? \n",
"(Yes / No)</th>\n",
" <th>Equity holder 5: Name</th>\n",
" <th>Equity holder 5: Equity share (%)</th>\n",
" <th>Equity holder 5: change of ownership since March 2011? \n",
"(Yes / No)</th>\n",
" <th>Equity holder 6: Name</th>\n",
" <th>Equity holder 6: Equity share (%)</th>\n",
" <th>Equity holder 6: change of ownership since March 2011? \n",
"(Yes / No)</th>\n",
" <th>SPV name</th>\n",
" <th>SPV company number</th>\n",
" <th>SPV address</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 2</td>\n",
" <td> Sunningdale Park Site</td>\n",
" <td> CABINET OFFICE (GROUP)</td>\n",
" <td> CABINET OFFICE</td>\n",
" <td> Other</td>\n",
" <td> Windsor</td>\n",
" <td> ENGLAND_South East</td>\n",
" <td> InOperation</td>\n",
" <td> 1998-04-17</td>\n",
" <td> 2002-03-01</td>\n",
" <td>...</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td>NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td>NaN</td>\n",
" <td> NaN</td>\n",
" <td> DeVere Venues Ltd</td>\n",
" <td> not known</td>\n",
" <td> DeVere Venues Ltd</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> 3</td>\n",
" <td> Compass</td>\n",
" <td> CROWN PROSECUTION SERVICE (GROUP)</td>\n",
" <td> THE CROWN PROSECUTION SERVICE</td>\n",
" <td> IT Infrastructure and communications</td>\n",
" <td> More than one</td>\n",
" <td> National/More than one region</td>\n",
" <td> InOperation</td>\n",
" <td> 2000-10-06</td>\n",
" <td> N/K</td>\n",
" <td>...</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td>NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td>NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> 5</td>\n",
" <td> RRS Ernest Shackleton </td>\n",
" <td> DEPT FOR BUSINESS INNOVATION AND SKILLS (GROUP)</td>\n",
" <td> NATURAL ENVIRONMENT RESEARCH COUNCIL</td>\n",
" <td> Other</td>\n",
" <td> More than one</td>\n",
" <td> National/More than one region</td>\n",
" <td> InOperation</td>\n",
" <td> 1997-12-01</td>\n",
" <td> N/K</td>\n",
" <td>...</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td>NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td>NaN</td>\n",
" <td> NaN</td>\n",
" <td> RRS Ernest Shackleton</td>\n",
" <td> N/K</td>\n",
" <td> N/K</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>3 rows \u00d7 107 columns</p>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": [
" Unique HMT Project ID Project Name \\\n",
"0 2 Sunningdale Park Site \n",
"1 3 Compass \n",
"2 5 RRS Ernest Shackleton \n",
"\n",
" Department \\\n",
"0 CABINET OFFICE (GROUP) \n",
"1 CROWN PROSECUTION SERVICE (GROUP) \n",
"2 DEPT FOR BUSINESS INNOVATION AND SKILLS (GROUP) \n",
"\n",
" Procuring authority Sector \\\n",
"0 CABINET OFFICE Other \n",
"1 THE CROWN PROSECUTION SERVICE IT Infrastructure and communications \n",
"2 NATURAL ENVIRONMENT RESEARCH COUNCIL Other \n",
"\n",
" Constituency Region Project Status Date Of OJEU \\\n",
"0 Windsor ENGLAND_South East InOperation 1998-04-17 \n",
"1 More than one National/More than one region InOperation 2000-10-06 \n",
"2 More than one National/More than one region InOperation 1997-12-01 \n",
"\n",
" Date of preferred bidder ... \\\n",
"0 2002-03-01 ... \n",
"1 N/K ... \n",
"2 N/K ... \n",
"\n",
" Equity holder 4: change of ownership since March 2011? \\n(Yes / No) \\\n",
"0 NaN \n",
"1 NaN \n",
"2 NaN \n",
"\n",
" Equity holder 5: Name Equity holder 5: Equity share (%) \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"\n",
" Equity holder 5: change of ownership since March 2011? \\n(Yes / No) \\\n",
"0 NaN \n",
"1 NaN \n",
"2 NaN \n",
"\n",
" Equity holder 6: Name Equity holder 6: Equity share (%) \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"\n",
" Equity holder 6: change of ownership since March 2011? \\n(Yes / No) \\\n",
"0 NaN \n",
"1 NaN \n",
"2 NaN \n",
"\n",
" SPV name SPV company number SPV address \n",
"0 DeVere Venues Ltd not known DeVere Venues Ltd \n",
"1 NaN NaN NaN \n",
"2 RRS Ernest Shackleton N/K N/K \n",
"\n",
"[3 rows x 107 columns]"
]
}
],
"prompt_number": 3
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Reviewing the Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Each row of the data file corresponds to a separate PFI contract, identified by a `Unique HMT Project ID`. The `Procuring Authority` looks like it's the entity that procured the project under the auspices of a more centralised `Department`. If a `Department` cuts a budget to the `Procuring Authority` in the years to come, what happens to covering the costs of the PFI contract?\n",
"\n",
"Contracts can be grouped by constituency, which allows us to look at the political fall out from PFI contracts for a particular MP, I guess? Note that some contracts may just be covered by a blanket \"more than one constituency' response."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's have a look at what the columns relate to in more comprehesive detail:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Check the column headings\n",
"df.columns.tolist()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"text": [
"['Unique HMT Project ID',\n",
" 'Project Name',\n",
" 'Department',\n",
" 'Procuring authority',\n",
" 'Sector',\n",
" 'Constituency',\n",
" 'Region',\n",
" 'Project Status',\n",
" 'Date Of OJEU',\n",
" 'Date of preferred bidder',\n",
" 'Date of financial close',\n",
" 'Date of construction completion',\n",
" 'First date of operations',\n",
" 'Operational period of contract (years)',\n",
" 'On / Off balance sheet under IFRS',\n",
" 'On / Off balance sheet under ESA 95',\n",
" 'On / Off balance sheet under UK GAAP',\n",
" 'Capital Value (\u00a3m)',\n",
" 'Unitary charge payment 1992-93 (\u00a3m)',\n",
" 'Unitary charge payment 1993-94 (\u00a3m)',\n",
" 'Unitary charge payment 1994-95 (\u00a3m)',\n",
" 'Unitary charge payment 1995-96 (\u00a3m)',\n",
" 'Unitary charge payment 1996-97 (\u00a3m)',\n",
" 'Unitary charge payment 1997-98 (\u00a3m)',\n",
" 'Unitary charge payment 1998-99 (\u00a3m)',\n",
" 'Unitary charge payment 1999-00 (\u00a3m)',\n",
" 'Unitary charge payment 2000-01 (\u00a3m)',\n",
" 'Unitary charge payment 2001-02 (\u00a3m)',\n",
" 'Unitary charge payment 2002-03 (\u00a3m)',\n",
" 'Unitary charge payment 2003-04 (\u00a3m)',\n",
" 'Unitary charge payment 2004-05 (\u00a3m)',\n",
" 'Unitary charge payment 2005-06 (\u00a3m)',\n",
" 'Unitary charge payment 2006-07 (\u00a3m)',\n",
" 'Unitary charge payment 2007-08 (\u00a3m)',\n",
" 'Unitary charge payment 2008-09 (\u00a3m)',\n",
" 'Unitary charge payment 2009-10 (\u00a3m)',\n",
" 'Unitary charge payment 2010-11 (\u00a3m)',\n",
" 'Unitary charge payment 2011-12 (\u00a3m)',\n",
" 'Unitary charge payment 2012-13 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2013-14 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2014-15 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2015-16 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2016-17 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2017-18 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2018-19 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2019-20 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2020-21 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2021-22 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2022-23 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2023-24 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2024-25 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2025-26 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2026-27 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2027-28 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2028-29 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2029-30 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2030-31 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2031-32 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2032-33 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2033-34 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2034-35 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2035-36 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2036-37 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2037-38 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2038-39 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2039-40 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2040-41 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2041-42 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2042-43 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2043-44 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2044-45 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2045-46 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2046-47 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2047-48 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2048-49 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2049-50 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2050-51 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2051-52 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2052-53 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2053-54 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2054-55 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2055-56 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2056-57 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2057-58 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2058-59 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2059-60 (\u00a3m)',\n",
" 'Equity holder 1: Name',\n",
" 'Equity holder 1: Equity share (%)',\n",
" 'Equity holder 1: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 2: Name',\n",
" 'Equity holder 2: Equity share (%)',\n",
" 'Equity holder 2: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 3: Name',\n",
" 'Equity holder 3: Equity share (%)',\n",
" 'Equity holder 3: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 4: Name',\n",
" 'Equity holder 4: Equity share (%)',\n",
" 'Equity holder 4: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 5: Name',\n",
" 'Equity holder 5: Equity share (%)',\n",
" 'Equity holder 5: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 6: Name',\n",
" 'Equity holder 6: Equity share (%)',\n",
" 'Equity holder 6: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'SPV name',\n",
" 'SPV company number',\n",
" 'SPV address']"
]
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The column headings split in to what we might term \"core\" administrative data, payment-by-date columns, other financial columns, and equity share columns.\n",
"\n",
"Let's just tease some of those out into separate groupings that we might be able to make use of later."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Set up some convenenience groupings of columns\n",
"basecols=['Unique HMT Project ID', 'Project Name', 'Department', 'Procuring authority', 'Sector', 'Constituency', \n",
" 'Region', 'Project Status', 'Date Of OJEU', 'Date of preferred bidder', 'Date of financial close',\n",
" 'Date of construction completion', 'First date of operations', 'Operational period of contract (years)',\n",
" 'On / Off balance sheet under IFRS', 'On / Off balance sheet under ESA 95', 'On / Off balance sheet under UK GAAP',\n",
" 'Capital Value (\u00a3m)','SPV name', 'SPV company number', 'SPV address']\n",
"financecols=['On / Off balance sheet under IFRS', 'On / Off balance sheet under ESA 95', 'On / Off balance sheet under UK GAAP']\n",
"corecols=['Unique HMT Project ID','Project Name','Procuring authority','Sector','Capital Value (\u00a3m)']\n",
"datecols=['Unitary charge payment 1992-93 (\u00a3m)', 'Unitary charge payment 1993-94 (\u00a3m)', 'Unitary charge payment 1994-95 (\u00a3m)',\n",
" 'Unitary charge payment 1995-96 (\u00a3m)', 'Unitary charge payment 1996-97 (\u00a3m)', 'Unitary charge payment 1997-98 (\u00a3m)',\n",
" 'Unitary charge payment 1998-99 (\u00a3m)', 'Unitary charge payment 1999-00 (\u00a3m)', 'Unitary charge payment 2000-01 (\u00a3m)',\n",
" 'Unitary charge payment 2001-02 (\u00a3m)', 'Unitary charge payment 2002-03 (\u00a3m)', 'Unitary charge payment 2003-04 (\u00a3m)',\n",
" 'Unitary charge payment 2004-05 (\u00a3m)', 'Unitary charge payment 2005-06 (\u00a3m)', 'Unitary charge payment 2006-07 (\u00a3m)',\n",
" 'Unitary charge payment 2007-08 (\u00a3m)', 'Unitary charge payment 2008-09 (\u00a3m)', 'Unitary charge payment 2009-10 (\u00a3m)',\n",
" 'Unitary charge payment 2010-11 (\u00a3m)', 'Unitary charge payment 2011-12 (\u00a3m)', 'Unitary charge payment 2012-13 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2013-14 (\u00a3m)', 'Estimated unitary charge payment 2014-15 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2015-16 (\u00a3m)', 'Estimated unitary charge payment 2016-17 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2017-18 (\u00a3m)', 'Estimated unitary charge payment 2018-19 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2019-20 (\u00a3m)', 'Estimated unitary charge payment 2020-21 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2021-22 (\u00a3m)', 'Estimated unitary charge payment 2022-23 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2023-24 (\u00a3m)', 'Estimated unitary charge payment 2024-25 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2025-26 (\u00a3m)', 'Estimated unitary charge payment 2026-27 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2027-28 (\u00a3m)', 'Estimated unitary charge payment 2028-29 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2029-30 (\u00a3m)', 'Estimated unitary charge payment 2030-31 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2031-32 (\u00a3m)', 'Estimated unitary charge payment 2032-33 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2033-34 (\u00a3m)', 'Estimated unitary charge payment 2034-35 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2035-36 (\u00a3m)', 'Estimated unitary charge payment 2036-37 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2037-38 (\u00a3m)', 'Estimated unitary charge payment 2038-39 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2039-40 (\u00a3m)', 'Estimated unitary charge payment 2040-41 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2041-42 (\u00a3m)', 'Estimated unitary charge payment 2042-43 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2043-44 (\u00a3m)', 'Estimated unitary charge payment 2044-45 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2045-46 (\u00a3m)', 'Estimated unitary charge payment 2046-47 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2047-48 (\u00a3m)', 'Estimated unitary charge payment 2048-49 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2049-50 (\u00a3m)', 'Estimated unitary charge payment 2050-51 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2051-52 (\u00a3m)', 'Estimated unitary charge payment 2052-53 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2053-54 (\u00a3m)', 'Estimated unitary charge payment 2054-55 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2055-56 (\u00a3m)', 'Estimated unitary charge payment 2056-57 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2057-58 (\u00a3m)', 'Estimated unitary charge payment 2058-59 (\u00a3m)',\n",
" 'Estimated unitary charge payment 2059-60 (\u00a3m)']\n",
"equitycols=['Equity holder 1: Name', 'Equity holder 1: Equity share (%)',\n",
" 'Equity holder 1: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 2: Name', 'Equity holder 2: Equity share (%)',\n",
" 'Equity holder 2: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 3: Name', 'Equity holder 3: Equity share (%)',\n",
" 'Equity holder 3: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 4: Name', 'Equity holder 4: Equity share (%)',\n",
" 'Equity holder 4: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 5: Name', 'Equity holder 5: Equity share (%)',\n",
" 'Equity holder 5: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 6: Name', 'Equity holder 6: Equity share (%)',\n",
" 'Equity holder 6: change of ownership since March 2011? \\n(Yes / No)']"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What are the unique departments?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df['Department'].unique()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 6,
"text": [
"array(['CABINET OFFICE (GROUP)', 'CROWN PROSECUTION SERVICE (GROUP)',\n",
" 'DEPT FOR BUSINESS INNOVATION AND SKILLS (GROUP)',\n",
" 'DEPARTMENT FOR EDUCATION (GROUP)',\n",
" 'DEPT FOR COMMUNITIES AND LOCAL GOVERNMENT (GROUP)',\n",
" 'DEPARTMENT OF HEALTH (GROUP)',\n",
" 'DEPARTMENT FOR CULTURE, MEDIA AND SPORT (GROUP)',\n",
" 'DEPT FOR ENVIRONMENT, FOOD & RURAL AFFAIRS (GROUP)',\n",
" 'DEPARTMENT FOR TRANSPORT (GROUP)',\n",
" 'DEPARTMENT FOR WORK AND PENSIONS (GROUP)',\n",
" 'FOREIGN AND COMMONWEALTH OFFICE (GROUP)',\n",
" 'SECURITY AND INTELLIGENCE AGENCIES (GROUP)',\n",
" 'HM REVENUE AND CUSTOMS (GROUP)', 'HM TREASURY (GROUP)',\n",
" 'HOME OFFICE (GROUP)', 'MINISTRY OF DEFENCE (GROUP)',\n",
" 'MINISTRY OF JUSTICE (GROUP)', 'NORTHERN IRELAND EXECUTIVE (GROUP)',\n",
" 'SCOTTISH GOVERNMENT (GROUP)', 'WELSH ASSEMBLY GOVERNMENT (GROUP)',\n",
" 'DEPARTMENT OF ENERGY AND CLIMATE CHANGE (GROUP)'], dtype=object)"
]
}
],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What sectors do the contracts relate to?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df['Sector'].unique()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 7,
"text": [
"array(['Other', 'IT Infrastructure and communications',\n",
" 'Schools (Non-BSF)', 'Schools (BSF)', 'Offices',\n",
" 'Housing (Non-HRA)', 'Housing (HRA)', 'Emergency Services',\n",
" 'Social Care', 'Leisure Facilities', 'Libraries', 'Waste',\n",
" 'Street Lighting', 'Roads and Highway Maintenance',\n",
" 'Underground Rail', 'Tram/Light Rail', 'Hospitals and Acute Health',\n",
" 'Military facility', 'Housing (Military)', 'Equipment', 'Courts',\n",
" 'Prisons', 'Secure Training Centres (YJB)', 'Energy'], dtype=object)"
]
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also take this line of questioning further - how many contracts are awarded by sector?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Group by sector and count the number of contracts in each group\n",
"df.groupby('Sector').size().order(ascending=False)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 8,
"text": [
"Sector\n",
"Schools (Non-BSF) 149\n",
"Hospitals and Acute Health 144\n",
"Schools (BSF) 66\n",
"Offices 47\n",
"Waste 41\n",
"Other 40\n",
"Emergency Services 39\n",
"Street Lighting 32\n",
"Roads and Highway Maintenance 32\n",
"Social Care 23\n",
"Housing (HRA) 17\n",
"Leisure Facilities 15\n",
"Military facility 13\n",
"Housing (Non-HRA) 12\n",
"Prisons 12\n",
"IT Infrastructure and communications 11\n",
"Courts 8\n",
"Libraries 7\n",
"Housing (Military) 7\n",
"Secure Training Centres (YJB) 4\n",
"Equipment 2\n",
"Tram/Light Rail 2\n",
"Underground Rail 1\n",
"Energy 1\n",
"dtype: int64"
]
}
],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Use the same pattern as before, but this time group by procuring authority and the ten with the most contracts\n",
"df.groupby('Procuring authority').size().order(ascending=False)[:10]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 9,
"text": [
"Procuring authority\n",
"MINISTRY OF DEFENCE 44\n",
"DEPARTMENT FOR EDUCATION 14\n",
"Highways Agency 14\n",
"Leeds 13\n",
"National Offender Management Service (WPR) 10\n",
"SCOTTISH WATER 9\n",
"HM REVENUE & CUSTOMS 8\n",
"Newcastle upon Tyne 8\n",
"Manchester 7\n",
"Sheffield 7\n",
"dtype: int64"
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What is the total capital value by sector?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#The Capital Value column may contain things that aren't numbers. If so, ignore them so they don't break the sum calculation\n",
"tmp=df[df['Capital Value (\u00a3m)'].apply(lambda x: isinstance(x, (int, float)))]\n",
"#We can also force the type\n",
"tmp['Capital Value (\u00a3m)']=tmp['Capital Value (\u00a3m)'].astype(float)\n",
"#Now use the filtered dataframe to calculate the total Capital Value associated with each sector\n",
"tmp[['Sector','Capital Value (\u00a3m)']].groupby('Sector').sum().sort('Capital Value (\u00a3m)',ascending=False)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stderr",
"text": [
"-c:4: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_index,col_indexer] = value instead\n"
]
},
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Capital Value (\u00a3m)</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Sector</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Hospitals and Acute Health</th>\n",
" <td> 13267.460000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Other</th>\n",
" <td> 7174.511898</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Schools (Non-BSF)</th>\n",
" <td> 7078.410987</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Roads and Highway Maintenance</th>\n",
" <td> 5155.386000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Waste</th>\n",
" <td> 4809.200000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Offices</th>\n",
" <td> 3766.522864</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Schools (BSF)</th>\n",
" <td> 3298.491825</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Street Lighting</th>\n",
" <td> 1427.198626</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Military facility</th>\n",
" <td> 1361.971000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Housing (HRA)</th>\n",
" <td> 1198.834227</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Emergency Services</th>\n",
" <td> 1041.736000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>IT Infrastructure and communications</th>\n",
" <td> 867.100000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tram/Light Rail</th>\n",
" <td> 800.143000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Prisons</th>\n",
" <td> 637.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Underground Rail</th>\n",
" <td> 475.162100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Housing (Non-HRA)</th>\n",
" <td> 433.786120</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Leisure Facilities</th>\n",
" <td> 296.387000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Social Care</th>\n",
" <td> 265.975000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Housing (Military)</th>\n",
" <td> 198.320000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Courts</th>\n",
" <td> 195.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Equipment</th>\n",
" <td> 194.340000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Libraries</th>\n",
" <td> 157.700000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Secure Training Centres (YJB)</th>\n",
" <td> 67.600000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Energy</th>\n",
" <td> 43.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 10,
"text": [
" Capital Value (\u00a3m)\n",
"Sector \n",
"Hospitals and Acute Health 13267.460000\n",
"Other 7174.511898\n",
"Schools (Non-BSF) 7078.410987\n",
"Roads and Highway Maintenance 5155.386000\n",
"Waste 4809.200000\n",
"Offices 3766.522864\n",
"Schools (BSF) 3298.491825\n",
"Street Lighting 1427.198626\n",
"Military facility 1361.971000\n",
"Housing (HRA) 1198.834227\n",
"Emergency Services 1041.736000\n",
"IT Infrastructure and communications 867.100000\n",
"Tram/Light Rail 800.143000\n",
"Prisons 637.000000\n",
"Underground Rail 475.162100\n",
"Housing (Non-HRA) 433.786120\n",
"Leisure Facilities 296.387000\n",
"Social Care 265.975000\n",
"Housing (Military) 198.320000\n",
"Courts 195.000000\n",
"Equipment 194.340000\n",
"Libraries 157.700000\n",
"Secure Training Centres (YJB) 67.600000\n",
"Energy 43.000000"
]
}
],
"prompt_number": 10
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And how long do the contracts tend to remain operational for?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#With data in a dataframe, we can chart various elements of it\n",
"#For example, we can generate a histogram that shows a count of projects with a particular oprsational duration\n",
"df['Operational period of contract (years)'].hist()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 11,
"text": [
"<matplotlib.axes.AxesSubplot at 0x7f5c7502add8>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x7f5c7489a8d0>"
]
}
],
"prompt_number": 11
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"How Much is Estimated as Going to Be Spent Year on Year?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"One of the major questions that comes to my mind is *\"how much will be spent year on year?\"*\n",
"\n",
"The spend is currently split, by project, across columns. We can look at the total spend in a particular year by summing down a columns:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df['Estimated unitary charge payment 2014-15 (\u00a3m)'].sum()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 12,
"text": [
"10217.493401545797"
]
}
],
"prompt_number": 12
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The precision of that results looks a little bit too ragged, possibly in part becuase of the way the numbers are being represented as floating point numbers. Let's round the result:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df['Estimated unitary charge payment 2014-15 (\u00a3m)'].sum().round(2)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 13,
"text": [
"10217.49"
]
}
],
"prompt_number": 13
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also look at the spend by procuring authority for a particular year, or department."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def spendBy_X(df,column, item, year=2014):\n",
" ''' Display the total spend for a particular year, filtered by a particular value in a particular column '''\n",
" \n",
" if year<2013: year='Unitary charge payment {0}-{1} (\u00a3m)'.format(year,year-1999)\n",
" else: year='Estimated unitary charge payment {0}-{1} (\u00a3m)'.format(year,year-1999)\n",
"\n",
" print('{0} [total] for the {1} {2} is \u00a3{3}m across {4} contracts.'.format( \n",
" year,\n",
" item,\n",
" column,\n",
" df[df[column]==item][year].sum().round(2),\n",
" df[df[column]==item][year].count()\n",
" ))\n",
"\n",
"\n",
"spendBy_X(df,'Procuring authority', 'Isle of Wight')\n",
"spendBy_X(df,'Department', 'DEPARTMENT FOR EDUCATION (GROUP)')\n",
"spendBy_X(df,'Sector', 'Emergency Services',2012)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Estimated unitary charge payment 2014-15 (\u00a3m) [total] for the Isle of Wight Procuring authority is \u00a325.26m across 2 contracts.\n",
"Estimated unitary charge payment 2014-15 (\u00a3m) [total] for the DEPARTMENT FOR EDUCATION (GROUP) Department is \u00a31008.42m across 168 contracts.\n",
"Unitary charge payment 2012-13 (\u00a3m) [total] for the Emergency Services Sector is \u00a3423.85m across 39 contracts.\n"
]
}
],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we want to plot a time series of spend across years, it's easiest if we move the data from the current *wide* format, in which the data for different years is spread across columns, to a *long* format in which we have a column for the year and a column for the corresponding value."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Generate a view of the data that just has the core and date related columns\n",
"dfTime=df[corecols+datecols]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Generate a long version of this data by melting the date related columns\n",
"dfTimeLong=pd.melt(dfTime, id_vars=corecols, value_vars= datecols )\n",
"\n",
"#Now we'll do some tidying, using a differnt method to the previous one to ensure we have a numeric datatype for the value\n",
"#Turn the values to numerics\n",
"dfTimeLong['value']=dfTimeLong['value'].convert_objects(convert_numeric=True)\n",
"#Get rid of any non-numeric values\n",
"dfTimeLong=dfTimeLong.dropna(subset=['value'])\n",
"#Get rid of any zero values\n",
"dfTimeLong=dfTimeLong[dfTimeLong['value']!=0]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 16
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Preview the data - note how the variable column identifies the year, and the value column the payment for that year\n",
"dfTimeLong[:3]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>Procuring authority</th>\n",
" <th>Sector</th>\n",
" <th>Capital Value (\u00a3m)</th>\n",
" <th>variable</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>3122</th>\n",
" <td> 239</td>\n",
" <td> A1(M) Alconbury to Peterborough</td>\n",
" <td> Highways Agency</td>\n",
" <td> Roads and Highway Maintenance</td>\n",
" <td> 128</td>\n",
" <td> Unitary charge payment 1996-97 (\u00a3m)</td>\n",
" <td> 5.805675</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3123</th>\n",
" <td> 240</td>\n",
" <td> A19 Dishforth to Tyne Tunnel DBFO</td>\n",
" <td> Highways Agency</td>\n",
" <td> Roads and Highway Maintenance</td>\n",
" <td> 29</td>\n",
" <td> Unitary charge payment 1996-97 (\u00a3m)</td>\n",
" <td> 0.205000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3125</th>\n",
" <td> 242</td>\n",
" <td> A30/A35 Exeter to Bere Regis</td>\n",
" <td> Highways Agency</td>\n",
" <td> Roads and Highway Maintenance</td>\n",
" <td> 75</td>\n",
" <td> Unitary charge payment 1996-97 (\u00a3m)</td>\n",
" <td> 5.400000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 17,
"text": [
" Unique HMT Project ID Project Name \\\n",
"3122 239 A1(M) Alconbury to Peterborough \n",
"3123 240 A19 Dishforth to Tyne Tunnel DBFO \n",
"3125 242 A30/A35 Exeter to Bere Regis \n",
"\n",
" Procuring authority Sector Capital Value (\u00a3m) \\\n",
"3122 Highways Agency Roads and Highway Maintenance 128 \n",
"3123 Highways Agency Roads and Highway Maintenance 29 \n",
"3125 Highways Agency Roads and Highway Maintenance 75 \n",
"\n",
" variable value \n",
"3122 Unitary charge payment 1996-97 (\u00a3m) 5.805675 \n",
"3123 Unitary charge payment 1996-97 (\u00a3m) 0.205000 \n",
"3125 Unitary charge payment 1996-97 (\u00a3m) 5.400000 "
]
}
],
"prompt_number": 17
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using the long format data frame, if we filter by project ID we now get the yearly payments as rows rather than columns."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Preview data for a particular project\n",
"dfTimeLong[dfTimeLong['Unique HMT Project ID']==523]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>Procuring authority</th>\n",
" <th>Sector</th>\n",
" <th>Capital Value (\u00a3m)</th>\n",
" <th>variable</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>12807</th>\n",
" <td> 523</td>\n",
" <td> Eschools Data Warehouse</td>\n",
" <td> DEPARTMENT FOR EDUCATION</td>\n",
" <td> IT Infrastructure and communications</td>\n",
" <td> 4.63</td>\n",
" <td> Unitary charge payment 2009-10 (\u00a3m)</td>\n",
" <td> 0.37</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13532</th>\n",
" <td> 523</td>\n",
" <td> Eschools Data Warehouse</td>\n",
" <td> DEPARTMENT FOR EDUCATION</td>\n",
" <td> IT Infrastructure and communications</td>\n",
" <td> 4.63</td>\n",
" <td> Unitary charge payment 2010-11 (\u00a3m)</td>\n",
" <td> 0.35</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14257</th>\n",
" <td> 523</td>\n",
" <td> Eschools Data Warehouse</td>\n",
" <td> DEPARTMENT FOR EDUCATION</td>\n",
" <td> IT Infrastructure and communications</td>\n",
" <td> 4.63</td>\n",
" <td> Unitary charge payment 2011-12 (\u00a3m)</td>\n",
" <td> 0.36</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14982</th>\n",
" <td> 523</td>\n",
" <td> Eschools Data Warehouse</td>\n",
" <td> DEPARTMENT FOR EDUCATION</td>\n",
" <td> IT Infrastructure and communications</td>\n",
" <td> 4.63</td>\n",
" <td> Unitary charge payment 2012-13 (\u00a3m)</td>\n",
" <td> 0.37</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15707</th>\n",
" <td> 523</td>\n",
" <td> Eschools Data Warehouse</td>\n",
" <td> DEPARTMENT FOR EDUCATION</td>\n",
" <td> IT Infrastructure and communications</td>\n",
" <td> 4.63</td>\n",
" <td> Estimated unitary charge payment 2013-14 (\u00a3m)</td>\n",
" <td> 0.38</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16432</th>\n",
" <td> 523</td>\n",
" <td> Eschools Data Warehouse</td>\n",
" <td> DEPARTMENT FOR EDUCATION</td>\n",
" <td> IT Infrastructure and communications</td>\n",
" <td> 4.63</td>\n",
" <td> Estimated unitary charge payment 2014-15 (\u00a3m)</td>\n",
" <td> 0.32</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 18,
"text": [
" Unique HMT Project ID Project Name \\\n",
"12807 523 Eschools Data Warehouse \n",
"13532 523 Eschools Data Warehouse \n",
"14257 523 Eschools Data Warehouse \n",
"14982 523 Eschools Data Warehouse \n",
"15707 523 Eschools Data Warehouse \n",
"16432 523 Eschools Data Warehouse \n",
"\n",
" Procuring authority Sector \\\n",
"12807 DEPARTMENT FOR EDUCATION IT Infrastructure and communications \n",
"13532 DEPARTMENT FOR EDUCATION IT Infrastructure and communications \n",
"14257 DEPARTMENT FOR EDUCATION IT Infrastructure and communications \n",
"14982 DEPARTMENT FOR EDUCATION IT Infrastructure and communications \n",
"15707 DEPARTMENT FOR EDUCATION IT Infrastructure and communications \n",
"16432 DEPARTMENT FOR EDUCATION IT Infrastructure and communications \n",
"\n",
" Capital Value (\u00a3m) variable value \n",
"12807 4.63 Unitary charge payment 2009-10 (\u00a3m) 0.37 \n",
"13532 4.63 Unitary charge payment 2010-11 (\u00a3m) 0.35 \n",
"14257 4.63 Unitary charge payment 2011-12 (\u00a3m) 0.36 \n",
"14982 4.63 Unitary charge payment 2012-13 (\u00a3m) 0.37 \n",
"15707 4.63 Estimated unitary charge payment 2013-14 (\u00a3m) 0.38 \n",
"16432 4.63 Estimated unitary charge payment 2014-15 (\u00a3m) 0.32 "
]
}
],
"prompt_number": 18
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The date range that a spend relates to is currently wrapped up in textual `variable` column values. Let's generate a new column that specifies a single year relating to the start of the tax year the spnd relates to. We can then plot our time series against this value."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Let's do some more tidying - pull out the start year that a value relates to\n",
"dfTimeLong['year']=dfTimeLong['variable'].apply(lambda x: x.split('payment')[1].split('-')[0])\n",
"dfTimeLong['year']=dfTimeLong['year'].astype(int)\n",
"\n",
"#Identify whether the value was an actual payment or an estimated one\n",
"dfTimeLong['typ']=dfTimeLong['variable'].apply(lambda x: 'estimated' if x.startswith('Estimated') else 'actual')\n",
"dfTimeLong[:3]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>Procuring authority</th>\n",
" <th>Sector</th>\n",
" <th>Capital Value (\u00a3m)</th>\n",
" <th>variable</th>\n",
" <th>value</th>\n",
" <th>year</th>\n",
" <th>typ</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>3122</th>\n",
" <td> 239</td>\n",
" <td> A1(M) Alconbury to Peterborough</td>\n",
" <td> Highways Agency</td>\n",
" <td> Roads and Highway Maintenance</td>\n",
" <td> 128</td>\n",
" <td> Unitary charge payment 1996-97 (\u00a3m)</td>\n",
" <td> 5.805675</td>\n",
" <td> 1996</td>\n",
" <td> actual</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3123</th>\n",
" <td> 240</td>\n",
" <td> A19 Dishforth to Tyne Tunnel DBFO</td>\n",
" <td> Highways Agency</td>\n",
" <td> Roads and Highway Maintenance</td>\n",
" <td> 29</td>\n",
" <td> Unitary charge payment 1996-97 (\u00a3m)</td>\n",
" <td> 0.205000</td>\n",
" <td> 1996</td>\n",
" <td> actual</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3125</th>\n",
" <td> 242</td>\n",
" <td> A30/A35 Exeter to Bere Regis</td>\n",
" <td> Highways Agency</td>\n",
" <td> Roads and Highway Maintenance</td>\n",
" <td> 75</td>\n",
" <td> Unitary charge payment 1996-97 (\u00a3m)</td>\n",
" <td> 5.400000</td>\n",
" <td> 1996</td>\n",
" <td> actual</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 19,
"text": [
" Unique HMT Project ID Project Name \\\n",
"3122 239 A1(M) Alconbury to Peterborough \n",
"3123 240 A19 Dishforth to Tyne Tunnel DBFO \n",
"3125 242 A30/A35 Exeter to Bere Regis \n",
"\n",
" Procuring authority Sector Capital Value (\u00a3m) \\\n",
"3122 Highways Agency Roads and Highway Maintenance 128 \n",
"3123 Highways Agency Roads and Highway Maintenance 29 \n",
"3125 Highways Agency Roads and Highway Maintenance 75 \n",
"\n",
" variable value year typ \n",
"3122 Unitary charge payment 1996-97 (\u00a3m) 5.805675 1996 actual \n",
"3123 Unitary charge payment 1996-97 (\u00a3m) 0.205000 1996 actual \n",
"3125 Unitary charge payment 1996-97 (\u00a3m) 5.400000 1996 actual "
]
}
],
"prompt_number": 19
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We've now got a *long* format dataset with a handy date column.\n",
"\n",
"Let's generate a view of the long form dataset that finds the total value across all contracts by year."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"totalexposure=dfTimeLong[['year','value']].groupby(['year']).sum()\n",
"totalexposure.reset_index(inplace=True)\n",
"totalexposure[:3]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>year</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 1996</td>\n",
" <td> 25.880750</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> 1997</td>\n",
" <td> 156.139501</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> 1998</td>\n",
" <td> 562.001436</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 20,
"text": [
" year value\n",
"0 1996 25.880750\n",
"1 1997 156.139501\n",
"2 1998 562.001436"
]
}
],
"prompt_number": 20
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can chart this total exposure using a line chart."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ggplot(totalexposure,aes(x='year',y='value')) \\\n",
" + geom_line() \\\n",
" + ggtitle('Total UK PFI estimated spend') \\\n",
" + ylab('Spend \u00a3m')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nAAAASUVORK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x7f5c7467fcc0>"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 21,
"text": [
"<ggplot: (-9223363284646696174)>"
]
}
],
"prompt_number": 21
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It might be more useful to look at the spend required of a particular procuring authority.\n",
"\n",
"Let's generate a new view of the data, `exposure`, that allows us to easily chart the spend for each one of them."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#What's the exposure of a particular procuring authority to contracted PFI spend each year?\n",
"exposure=dfTimeLong[['Procuring authority','year','value']].groupby(['Procuring authority','year']).sum()\n",
"exposure.reset_index(inplace=True)\n",
"exposure[:3]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Procuring authority</th>\n",
" <th>year</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> Aberdeenshire</td>\n",
" <td> 2001</td>\n",
" <td> 0.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> Aberdeenshire</td>\n",
" <td> 2002</td>\n",
" <td> 2.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> Aberdeenshire</td>\n",
" <td> 2003</td>\n",
" <td> 3.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 22,
"text": [
" Procuring authority year value\n",
"0 Aberdeenshire 2001 0.2\n",
"1 Aberdeenshire 2002 2.4\n",
"2 Aberdeenshire 2003 3.0"
]
}
],
"prompt_number": 22
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Have a peek at the data for a particular authority\n",
"ggplot(exposure[exposure['Procuring authority']=='Manchester'],aes(x='year',y='value'))+geom_line()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 23,
"text": [
"<repr(<ggplot.ggplot.ggplot at 0x7f5c7445d9b0>) failed: KeyError: 0>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAqMAAAHzCAYAAAAU+RQCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl0lOX9/vFrspKVhCSQEL7syqoguCCNCm0REJAEWRUF\na6u4A6K2ItSt1qqoVRBRlFUWExZZFVEEgqKxLLKYCEgCJAECJCQkxGzz+0Ph58gWwszcs7xf5/RU\nhszMNZ8zNlef+3nux2K1Wq0CAAAADPAxHQAAAADeizIKAAAAYyijAAAAMIYyCgAAAGMoowAAADCG\nMgoAAABj/Jz5ZidPntSSJUuUl5cnSUpMTFSdOnWUkpKigoICRUREaMCAAQoKCnJmLAAAABhiceY+\no4sWLVKjRo3UoUMHVVZWqry8XOvWrVNwcLASEhKUmpqqkydPqlu3bs6KBAAAAIOctkxfWlqqrKws\ndejQQZLk6+urWrVqKSMjQ+3bt5cktWvXTunp6c6KBAAAAMOctkyfn5+vkJAQLV68WAcPHlT9+vXV\no0cPFRcXKzQ0VJIUGhqq4uJiZ0UCAACAYU4ro1VVVcrNzdUtt9yi+Ph4rVy5UqmpqTY/Y7FYzvsa\n//vf/1RQUODImAAAAKiGiIgIdezY8ZJfx2llNDw8XOHh4YqPj5cktW7dWqmpqQoNDVVRUZHCwsJU\nVFSkkJCQc75GQUGBOnTooIqKCmfFdll+fn6KjIxUfn4+8xDz+D3mcSZmYot52GIetpiHLeZxJj8/\nP23atMk+r2WXV6mGsLAwhYeH68iRI4qOjtZPP/2kmJgYxcTEaOvWrUpISNCWLVvUsmXL875ORUWF\nysvLnZTa9TEPW8zDFvM4EzOxxTxsMQ9bzMMW83AMp27tdMstt2jhwoWqrKxUZGSkEhMTVVVVpeTk\nZG3atOn01k4AAADwDk4to7Gxsbr33nvPeHzYsGHOjAEAAAAXwR2YAAAAYAxlFAAAAMZQRgEAAGAM\nZRQAAADGUEYBAABgDGUUAAAAxlBGAQAAYAxlFAAAAMZQRgEAAGAMZRQAAADGUEYBAABgDGUUAAAA\nxlBGAQAAYAxlFAAAAMZQRgEAAGAMZRQAAADGUEYBAABgDGUUAAAAxlBGAQAAYAxlFAAAF2e1WrVp\n0yYVFBSYjgLYHWUUAAAXVVxcrFmzZqlbt25KSkrSokWLTEcC7M7PdAAAAGBrz549mjFjhhYsWKBO\nnTpp/Pjx2rRpkw4ePGg6GmB3lFEAAFxAZWWlVq9erenTp2vnzp0aPHiwVq1apfj4eElSbm6uNmzY\nYDglYH+UUQAADDp69Kjmzp2rmTNnql69eho+fLh69+6twMBAm5+Li4vjyCg8EmUUAAADNm/erGnT\npmn16tXq0aOHpk6dqiuvvPKcPx8bG0sZhUeijAIA4CRWq1UrV67UxIkTlZ+fr2HDhumZZ55RnTp1\nLvhcyig8FWUUAAAHs1qtWrNmjV5++WVZrVY99thj+tOf/iRfX99qv0ZYWJisVquKiooUFhbmwLSA\nc1FGAQBwoK+//lr/+c9/VFBQoDFjxuiWW26Rj8/F76xosVhOHx2ljMKTUEYBAHCAzZs36+WXX1ZW\nVpZGjx6tpKSkizoSejaxsbHKzc3VZZddZqeUgHmUUQAA7Gjnzp169dVXtXXrVo0cOVKDBw+Wv7+/\nXV6b80bhiSijAADYwZ49ezRhwgR99dVXeuCBBzRp0iQFBQXZ9T3Y3gmeiNuBAgBwCQ4cOKDHHntM\nffv2VYsWLbRhwwbde++9di+i0v9fpgc8CWUUAIAa+ve//63u3bsrJiZGqampevTRRxUSEuKw9+PI\nKDwRy/QAANTAzp07lZKSorVr1yo6Otop78k5o/BEHBkFAKAGZs6cqTvuuMNpRVSijMIzcWQUAICL\nVFhYqCVLluiLL75w6vvGxMQoPz9f5eXldrtCHzCNI6MAAFykBQsW6IYbblBsbKxT39fPz09RUVE6\nfPiwU98XcCTKKAAAF8FqtWrGjBkaNmyYkfdnqR6ehjIKAMBF+Oqrr2SxWHT99dcbeX/KKDwNZRQA\ngIswffp0DRs2TBaLxcj7U0bhaSijAABUU25urjZs2KDbbrvNWAbKKDwNZRQAgGr68MMP1bdvX4WF\nhRnLQBmFp2FrJwAAqqG8vFxz5szRnDlzjObglqDwNBwZBQCgGlauXKkmTZqoZcuWRnNwS1B4Gsoo\nAADVMHPmTGPbOf3WqWV6q9VqOgpgF5RRAAAuICMjQ3v27FGPHj1MR1FoaKh8fX1VWFhoOgpgF5RR\nAAAuYMaMGbr99tsVEBBgOookLmKCZ6GMAgBwHidOnNDixYt1xx13mI5yGmUUnoQyCgDAeaSkpOgP\nf/iD6tevbzrKaZRReBLKKAAA52C1Wl3mwqXfYnsneBLKKAAA57Bx40ZVVlbqD3/4g+koNtjeCZ6E\nMgoAwDnMmDHD6H3oz4VlengSyigAAGdx6NAhrVu3Tv379zcd5Qws08OTUEYBADiLOXPmqE+fPgoP\nDzcd5QwcGYUnoYwCAPA75eXlmj17tstduHRKTEyMjh8/rrKyMtNRgEtGGQUA4HdWrVqlhg0bqnXr\n1qajnJWvr6+ioqJ0+PBh01GAS0YZBQDgd05duOTK4uLiOG8UHoEyCgDAb+zatUs//vijevbsaTrK\neXHeKDwFZRQAgN+YOXOmhgwZosDAQNNRzou9RuEp/EwHAADAVZw4cUILFy7UqlWrTEe5II6MwlNw\nZBQAgF8tWLBAnTp1Unx8vOkoF0QZhaegjAIAoF/uQ//BBx+4/IVLp1BG4SkoowAASNqwYYPKysqU\nkJBgOkq1UEbhKSijAABImjRpkoYPHy4fH/f41XjqAiar1Wo6CnBJ3OPfOAAAHOjQoUNauXKlBg8e\nbDpKtQUHBysgIEAFBQWmowCXhDIKAPBqe/bs0RNPPKEBAwaodu3apuNcFJbq4QmcurXT66+/rsDA\nQPn4+MjHx0f33nuvSkpKlJKSooKCAkVERGjAgAEKCgpyZiwAgBdKS0vTO++8o2+//VbDhw/XuHHj\nVF5ebjrWRTlVRlu1amU6ClBjTi2jFotFw4cPV3Bw8OnHUlNT1bRpUyUkJCg1NVWpqanq1q2bM2MB\nALxEVVWVVq1apcmTJ+vw4cO699579dZbb6l27dqKiIhQXl6e6YgXhSOj8ATGl+kzMjLUvn17SVK7\ndu2Unp5uOBEAwNOUlpZq9uzZuummm/Tmm2/qnnvu0fr163X33XfbHCBxN5RReAKn34Fp5syZslgs\nuvrqq9WxY0cVFxcrNDRUkhQaGqri4uLzPt/Pj5tGSf9/DszjF8zDFvM4EzOx5S3zyM/P1/Tp0/X+\n++/ryiuv1IQJE9S5c2dZLBabn3PXecTHx2v79u3y9/e36+u66zwchXmcyZ6zcOpU77nnHoWFham4\nuFgzZ85UdHS0zd///n8cziYyMtJR8dwS87DFPGwxjzMxE1ueOo/MzEy9/vrrmjVrlm699VZ9/vnn\natu27QWf527zaNmypdatW6eYmBiHvL67zcPRmIdjOLWMhoWFSZJCQkLUqlUrZWdnKyQkREVFRQoL\nC1NRUZFCQkLO+xr5+fmqqKhwRlyX5ufnp8jISObxK+Zhi3mciZnY8sR5WK1Wbdq0Se+9957WrFmj\n22+/XV9++aXi4uIk6bzng7rrPIKDg5WVlWX3c13ddR6OwjzO5JZHRsvKymS1WhUYGKiysjLt2bNH\nN910k1q0aKGtW7cqISFBW7ZsUcuWLc/7OhUVFW53taMjMQ9bzMMW8zgTM7HlCfM4efKklixZohkz\nZig/P1/Dhg3Tv/71L4WHh0vSRX0+d5tHdHS0cnJyHJbZ3ebhaMzDMZxWRouLizVv3jxJv1zNeOWV\nV6p58+aqX7++kpOTtWnTptNbOwEAcCH79+/XrFmzNG/ePF155ZUaPXq0unbtKl9fX9PRnCY6OlpF\nRUX6+eefFRgYaDoOUCNOK6ORkZG6//77z3g8ODhYw4YNc1YMAIAbq6qqUmpqqqZNm6Zvv/1WAwYM\n0OLFi9W0aVPT0Yzw8fFRTEyMDh06pIYNG5qOA9QIl4UBAFxeYWGhkpOTNWPGDAUEBOjuu+/WpEmT\n3HpbJns5tb0TZRTuijIKAHBZGRkZmj59upYsWaIbb7xRr7zyiq699tpq7b7iLWJjY5Wbm2s6BlBj\nlFEAgMv55ptv9Nprr2nXrl2644479Pnnnys2NtZ0LJcUFxfHxvdwa5RRAIDL+O677/Tqq68qKytL\nI0eOVFJSkgICAkzHcmnchQnujjIKADBuy5YtmjBhgjIyMvToo49q4MCBdr+rkKeKjY3Vtm3bTMcA\naowyCgAwZvv27ZowYYK+//57Pfzww5o6dSpbFF0kjozC3VFGAQBOl56ergkTJui7777Tgw8+qMmT\nJ6tWrVqmY7klyijcHWUUAOA0u3fv1oQJE/TVV1/p/vvv15tvvqmgoCDTsdxaXFycDh06JKvVyi4D\ncEs+pgMAADzf3r179cgjjygpKUmtW7fWhg0bNGLECIqoHQQFBalWrVrKz883HQWoEcooAMBhsrKy\nNHr0aPXp00dNmjTRhg0b9PDDDys0NNR0NI/CXqNwZyzTAwDsbv/+/frvf/+rlStXavjw4UpNTVVE\nRITpWB7r1F6jbdq0MR0FuGiUUQCA3Rw4cEBvvvmmli9frrvuukupqamKjIw0HcvjcRET3BllFABw\nybKzs/Xmm29q2bJlGjp0qNavX686deqYjuU1KKNwZ5RRAECN5eTk6K233tKSJUt0xx13UEINiY2N\n1ffff286BlAjlFEAwEXLzc3VxIkTtXjxYg0ZMkTr1q1TVFSU6VheKzY2VqtWrTIdA6gRyigAoNoO\nHjyoSZMmaeHChRo0aJDWrl2r6Oho07G8XlxcHFfTw21RRgEAF7RlyxbNmDFDq1at0oABA7RmzRrV\nrVvXdCz8inNG4c4oowCAszp58qQ+/vhjzZgxQwUFBbrzzjv19NNPsxzvgurUqaPi4mKVlpZyW1W4\nHcooAMDGnj17NGvWLKWkpKhjx44aM2aMunTpIl9fX9PRcA4+Pj6qW7euDh48qMaNG5uOA1wUyigA\nQBUVFVq9erVmzJihnTt3avDgwVqxYoUaNmxoOhqq6dRSPWUU7oYyCgBe7NChQ5oxY4Y+/PBDxcfH\na9iwYerVq5cCAwNNR8NF4rxRuCvKKAB4kbKyMh04cECZmZlaunSpPv30U/Xu3VvTp09X27ZtTcfD\nJaCMwl1RRgHAw5SUlCgzM1NZWVnKzMy0+edDhw6pXr16atKkifr3768XX3xRQUFBpiPDDtjeCe6K\nMgoAbqqqqkppaWn66quvThfOrKwsFRYWqmHDhmrUqJEaNWqkVq1aqUePHmrUqJEaNGiggIAA+fv7\nKyYmRnl5eSovLzf9UWAHsbGx2rx5s+kYwEWjjAKAm/npp5+0YMECLViwQMHBwerWrZuuv/56DRky\nRI0aNVK9evXk4+NjOiacjGV6uCvKKAC4gfz8fC1dulQpKSnKyspSYmKipk6dqjZt2shisZiOBxdA\nGYW7oowCgIsqKyvTl19+qeTkZK1fv15dunTRI488optuukn+/v6m48HF1KtXT4cPH1ZVVRVHxuFW\nKKMA4EKsVqu+//57paSk6OOPP1azZs3Uv39/vfrqq6pdu7bpeHBhQUFBCg4O1rFjxxQdHW06DlBt\nlFEAcAEHDx5USkqKUlJSVFZWpv79+2vJkiVsYI6LEhcXp4MHD1JG4VYoowBgSEVFhb744gvNnTtX\n33zzjXr16qVXXnlFV199NeeBokZiY2OVm5vLnrFwK5RRAHCyzMxMzZs3T8nJyYqPj9ftt9+uiRMn\nKiQkxHQ0uDkuYoI7oowCgBOUlpbqk08+0Zw5c/TDDz/otttu05w5c9SiRQvT0eBBKKNwR5RRAHCg\nH374QXPnztXChQt1xRVXaOjQoerevTv3fodDsPE93BFlFADs7MSJE1qyZInmzJmj3NxcDR48WCtW\nrFDDhg1NR4OH48go3BFlFADsoKqqSl9//bU++ugjrVq1Sp07d9aoUaPUpUsX+fr6mo4HL0EZhTui\njALAJcjMzFRycrJSUlIUHh6ugQMHaty4cWytAyNObe0EuBPKKABcpBMnTmjZsmX66KOPtHv3biUl\nJen9999nOx0YV6dOHZWUlOjkyZMKCgoyHQeoFsooAFRDVVWVvvrqK3300Uf67LPP1LlzZ913333q\n2rWrAgICTMcDJEkWi+X0Un2TJk1MxwGqhTIKAOexd+/e08vwkZGRGjhwoP75z38qKirKdDTgrE5t\nfE8ZhbugjALA7xw/flxLly5VSkqK9u7dq6SkJE2bNk1t2rQxHQ24IC5igruhjAKAfrk159q1a5Wc\nnKy1a9fqhhtu0IMPPqguXbrI39/fdDyg2iijcDeUUQBebceOHUpOTtbixYvVsGFD9e/fXy+99JIi\nIiJMRwNqJDY2VtnZ2aZjANVGGQXgdQ4fPqxFixYpJSVFx48fV//+/bVgwQI1a9bMdDTgksXGxuq7\n774zHQOoNsooAK9QWlqq+fPna+rUqUpLS1P37t317LPPqlOnTvLx8TEdD7Ab9hqFu6GMAvBoe/bs\n0cyZM7VgwQJdffXVSkpK0uTJkxUcHGw6GuAQnDMKd0MZBeBxKioqtHr1as2YMUM7d+7U4MGDtXr1\nanXo0EF5eXkqLy83HRFwmHr16ikvL09VVVUc9YdboIwC8Bh5eXmaM2eOZs+erbi4OA0fPly9evVS\nYGAgV8TDawQGBiosLExHjhxR3bp1TccBLogyCsCtWa1WpaWlacaMGVqzZo169eqladOmcWtOeLVT\nS/WUUbgDyigAt1RcXKyFCxdqxowZKi0t1bBhw/Tiiy+qdu3apqMBxp0qo1deeaXpKMAFUUYBuJXd\nu3drxowZWrhwoTp16qTx48crISGBc+OA34iLi1Nubq7pGEC1UEYBuLyysjJ98sknmjlzpnbv3q3B\ngwdr1apVio+PNx0NcElcUQ93QhkF4LKys7M1e/ZszZs3T82aNdOdd96pnj17KiAgwHQ0wKXFxsYq\nLS3NdAygWiijAFxKZWWl1q5dq5kzZyotLU39+vXT/Pnzdfnll5uOBrgNjozCnVBGAbiEI0eOaN68\neZo9e7YiIyN111136e2332ZzeqAGKKNwJ5RRAMZYrVZ9++23mjlzptasWaMePXronXfeUfv27U1H\nA9waZRTuhDIKwOmsVquWL1+u119/XeXl5brzzjv1r3/9SxEREaajAR4hMjJSZWVlKikpYXUBLo8y\nCsCptmzZomeffVYnTpzQuHHjdNNNN8lisZiOBXgUi8WievXqKTc3V82aNTMdBzgvyigAp8jJydFL\nL72k1NRUPf744xo4cKB8fX1NxwI81qmlesooXB27RANwqJKSEr366qvq1q2b4uPjtW7dOg0ZMoQi\nCjgY543CXXBkFIBDVFVVKTk5WS+//LKuv/56NqkHnCw2Npa7MMEtUEYB2N3XX3+tZ599VgEBAXr3\n3XfVsWNH05EArxMbG6t9+/aZjgFcEGUUgN1kZmbqhRde0LZt2/TUU0/p1ltv5eIkwJDY2Fh9++23\npmMAF8Q5owAu2fHjx/Xcc8+pd+/eateunb788kv17duXIgoYFBcXxzmjcAuUUQA1VllZqVmzZumm\nm25SUVGRvvjiCz388MMKCgoyHQ3wepwzCnfBMj2AGvn66681fvx4hYeHa/bs2Wrbtq3pSAB+o169\nejpy5IgqKyvZvQIuzalltKqqSu+++67Cw8N1++23q6SkRCkpKSooKFBERIQGDBjAERXAxe3fv18v\nvPCCtmzZoqefflq9e/dmOR5wQQEBAYqIiFBeXp5iY2NNxwHOyanL9Bs3blRMTMzpP6empqpp06Z6\n5JFH1LRpU6WmpjozDoCLUFJSoldeeUU9evRQy5Yt9eWXX6pPnz4UUcCFsdco3IHTyujx48e1a9cu\ndejQ4fRjGRkZat++vSSpXbt2Sk9Pd1YcANVktVq1aNEi3XjjjcrMzNSqVas0atQoVjEAN0AZhTtw\n2jL9p59+qptvvlk///zz6ceKi4sVGhoqSQoNDVVxcfEFX8fPj9Ncpf8/B+bxC+Zhy17z2Lp1q556\n6in9/PPPmjJlijp16mSPeEbwHbHFPGx56jzq16+vw4cPy9/f/6Ke56nzqCnmcSZ7zsIpU83IyFBI\nSIji4uK0d+/es/5MdZf6IiMj7RnN7TEPW8zDVk3ncfDgQY0dO1YrVqzQCy+8oOHDh3vMBRB8R2wx\nD1ueNo/mzZursLDQ5hS5i+Fp87hUzMMxnFJG9+/fr4yMDO3atUsVFRX6+eeftXDhQoWEhKioqEhh\nYWEqKipSSEjIBV8rPz9fFRUVTkjt2vz8/BQZGck8fsU8bNV0HmVlZXrvvff01ltvafDgwUpNTVV4\neLiOHTvmwLTOwXfEFvOw5anzCA8P1/bt25WXl3dRz/PUedQU8ziT2x0Z/fOf/6w///nPkn65Q8tX\nX32lfv36adWqVdq6dasSEhK0ZcsWtWzZ8oKvVVFRofLyckdHdhvMwxbzsHUx89i/f7/+9re/KSYm\nRosXL1azZs0kyePmyXfEFvOw5WnziImJUU5OTo0/k6fN41IxD8cwuul9QkKC9uzZozfffFN79+5V\nQkKCyTiA11q3bp169+6tpKQkzZw583QRBeDeuIAJ7sDpZ+I2btxYjRs3liQFBwdr2LBhzo4A4FdW\nq1WTJk3S+++/r8mTJ6tz586mIwGwI8oo3AG3AwW8VFFRkf72t7/pk08+0fLlyymigAeqXbu2oqKi\n9Omnn5qOApwTZRTwQrt27VKvXr0UFRWlBQsWqH79+qYjAXAAi8WiN954Q08++aQOHTpkOg5wVpRR\nwMusWLFC/fr10/3336///Oc/CgwMNB0JgANde+21uuOOOzRq1ChVVVWZjgOcgTIKeInKykr9+9//\n1jPPPKPZs2dryJAhpiMBcJKRI0eqsLBQH3zwgekowBm4lQDgBY4dO6YHHnhAVqtVK1euVFRUlOlI\nAJzI399fEydOVJ8+fdS5c2e1bt3adCTgNI6MAh7u+++/V8+ePXXFFVfoww8/pIgCXqpx48Z6+umn\n9fDDD6u0tNR0HOA0yijgwebOnas77rhD48aN09ixY7mvMuDlBg4cqObNm+vFF180HQU4jd9MgAeq\nrKzU/fffr88++0wLFizQ5ZdfbjoSABdgsVj00ksv6eabb1bXrl3VtWtX05EAjowCnujTTz/Vxo0b\ntWrVKoooABuRkZF644039Nhjj+no0aOm4wCUUcATzZkzR4888ojCwsJMRwHggv7whz/otttu02OP\nPSar1Wo6DrwcZRTwMAcPHtQ333yjAQMGmI4CwIU9/vjjOnjwoGbNmmU6CrwcZRTwMMnJyerTp49C\nQ0NNRwHgwgICAjRx4kS98sor2r17t+k48GKUUcCDWK1WzZs3T7fffrvpKADcQPPmzfXEE0/owQcf\nVFlZmdPfv6qqSjt27NDq1aud/t5wHVxND3iQr7/+WgEBAerYsaPpKADcxNChQ/XFF1/olVde0dix\nYx36XlVVVfrhhx/09ddf6+uvv9bGjRtVp04dHT58WJ9//rkaNGjg0PeHa+LIKOBB5s6dq8GDB8ti\nsZiOAsBNWCwWvfrqq1qwYIFSU1Pt+tqnjnxOnTpV99xzj6644gqNGDFCP/74o/r06aPPP/9c69ev\nV9++ffXxxx/b9b3hPjgyCniI48ePa/Xq1XrmmWdMRwHgZqKiojRhwgSNHDlSn332merWrVuj1znX\nkc/rr79effr00b/+9S/Fxsae8bykpCSNGzdODz744KV+FLghyijgIRYvXqwbbriB230CqJGuXbvq\nlltu0ZNPPqkPPvigWs85duyYNm3apM2bN2vTpk3aunWroqOjdf311+vWW2/Viy++qHr16l3wda67\n7joVFBQoPT1dLVu2vNSPAjdDGQU8xLx58/TEE0+YjgHAjT311FPq1auX5s+fr4cfftjm78rKyrRz\n587TxXPTpk06evSo2rVrpw4dOugvf/mLrrrqKkVHR1/0+/r4+CgxMVGLFi3SP/7xD3t9HLgJyijg\nAXbs2KEjR47oxhtvNB0FgBurVauWJk6cqEGDBumqq65Senq6vv32W23evFk7duxQ48aN1aFDB3Xu\n3FkPPfSQmjdvLl9fX7u8d2Jiou655x79/e9/57x3L0MZBTzAvHnzNHDgQLv9UgDgvVq1aqW///3v\nGjJkiNq2bav27dvriSeeULt27Ry6f3GbNm0UHBys7777Ttdcc43D3geuhzIKuLnS0lItWrRIK1as\nMB0FgIcYNmyYxowZo7y8PJWXlzvlPS0Wy+mlesqod2FrJ8DNffLJJ2rbtq0aNmxoOgoAXJLExEQt\nW7bMaQUYroEyCri5uXPnasiQIaZjAMAla9SokRo3bqx169aZjgInoowCbmzfvn3asWOHunfvbjoK\nANhFUlKSFi9ebDoGnIgyCrix+fPnKykpSbVq1TIdBQDsonfv3lq9erVKSkpMR4GTUEYBN1VZWan5\n8+dr8ODBpqMAgN3ExMSoQ4cO+uyzz0xHgZNQRgE3tW7dOsXExKhNmzamowCAXSUlJWnhwoWmY8BJ\nKKOAm5o7dy5HRQF4pB49euibb77RsWPHTEeBE1BGATd09OhRrV+/XomJiaajAIDdhYaGqkuXLlq+\nfLnpKHACyijghlJSUtStWzfVrl3bdBQAcIh+/fpp0aJFpmPACSijgJuxWq2aN28ee4sC8GhdunRR\nRkaGsrOzTUeBg1FGATezadMmlZWVqVOnTqajAIDDBAQEqFevXvr4449NR4GDUUYBNzNv3jwNHjxY\nFovFdBQAcCiuqvcOlFHAjRQXF2v58uUaMGCA6SgA4HDXXXed8vPzlZ6ebjoKHIgyCriRZcuW6dpr\n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\n",
"text": [
"<matplotlib.figure.Figure at 0x7f5c7445def0>"
]
}
],
"prompt_number": 23
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Let's bundle that up into a function\n",
"def procAuthExposureChart(_df,procAuth):\n",
" g=ggplot(_df[_df['Procuring authority']==procAuth],aes(x='year',y='value')) \\\n",
" + geom_line() + ylab('(Epected) Unitary Charge Payment (\u00a3m)') \\\n",
" + ggtitle(procAuth)\n",
" return g\n",
"\n",
"procAuthExposureChart(exposure,'Isle of Wight')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 24,
"text": [
"<repr(<ggplot.ggplot.ggplot at 0x7f5c7453a2e8>) failed: KeyError: 0>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAqMAAAH+CAYAAACoZwfcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4VOX9/vF7QkJ2SAIBgqwBEUQBQdmEJAYwUJGCdSuo\nKGBFwbq0qHVFQH91b2utlioioSibyKYssgUUFcsiAkkoexKWJCQhCYFs8/uDJl/GLBxgzsycyft1\nXVwXOTNzzidPabzzrDa73W4XAAAA4AY+7i4AAAAAdRdhFAAAAG5DGAUAAIDbEEYBAADgNoRRAAAA\nuA1hFAAAAG5DGAVQ57Rp00avvPKKS5717rvvqkWLFqpXr56mTJni1Hu3bdtWr7766kV9Ji4uTg8+\n+KBT6wCAy0EYBWB5999/vwYNGmT4/TabTTabzcSKzsnIyNDjjz+u5557ThkZGfrDH/5Q5T0vvvii\noqKiHK6Vl5crIiKixuuTJ0+WJP3444964oknLqomI9/7uHHjdNNNN13UfQHgUhFGAVieq8Llxdq/\nf7/sdrtuvfVWNW3aVMHBwVXeM3DgQB0/fly7du2qvLZ161bZ7XadPXu2yvXc3FwNHDhQktSoUSMF\nBgaa/40AgIkIowAsz2636/zD5Hbt2qWEhASFh4crJCREV199tWbPnl3j50tKSjR58mRFR0crMDBQ\n11xzjaZPn37B53755Zfq0aOHAgIC1LRpU02YMEGnT5+WJE2ePFkxMTGSpFatWsnHx0eHDx+uco/e\nvXsrKChIa9asqby2du1axcbGql+/flWuBwcHq0+fPpKqTjfIzs7WHXfcoZCQEEVFRWnKlCnV9hrb\n7XZNnTpVUVFRatSokR544AGHumfMmKENGzbIx8dHPj4+mjVr1gXbAgAuFWEUgNf57W9/q8jISG3e\nvFk///yz3n77bYWHh9f4/gcffFBffPGFpk+fruTkZL344ot6+umnNWPGjBo/89NPP2nYsGGKi4vT\nTz/9pE8++UTLli3T+PHjJUmTJk3SwoULJUnbtm3TsWPH1KJFiyr3qV+/frWhc8CAAYqPj69yPSYm\nRvXq1ZNUtUf4gQce0M6dO7V8+XKtWbNGBw8e1OLFix3eY7fbtWDBAuXm5mrDhg2aM2eOvvjiC73+\n+uuVdY8cOVJ9+/bVsWPHdOzYMd155521tjcAXA5fdxcAAM52+PBh/eEPf1DHjh0lnetBrMmBAweU\nmJioPXv2qEOHDpKk1q1bKzk5We+++67GjBlT7efeeOMNXX/99XrrrbckSR06dNC7776rESNG6JVX\nXlHLli0rA3BkZKSaNGlSYw0DBgzQK6+8IrvdrtLSUn3zzTd68803VVpaqsmTJztcr2kR1N69e7Vs\n2TKtWbNGsbGxkqTp06fr66+/rvLeNm3aONR99913a9WqVZo8ebKCg4MVEBAgPz+/WmsGAGchjALw\nOn/84x81btw4zZw5U3FxcRo2bJiuu+66at/7448/ym63q0ePHg7XS0tL5etb84/I3bt3a8CAAQ7X\nYmJiZLfbtXv3brVs2dJwvQMGDNDTTz+t77//XiUlJQoKCtI111wju90uPz+/yuuFhYVVnnl+PdK5\nYf8Kvr6+uv7661VQUFB5zWazqWvXrg6fbd68uVatWmW4XgBwJsIoAK/z/PPPa9SoUVqxYoXWrl2r\nV199VU899ZSmTp1a5b3l5eWSpM2bNysoKMjhtQstijp/nurl6NatmyIiIrRmzRqVlpZWrmS32WyK\njY2tvN6kSRN16dKl1nv9subqaqxfv36Vz1S0AwC4GnNGAXiFX4awtm3b6uGHH9b8+fP18ssv6/33\n36/2cxU9oocOHVJ0dLTDn7Zt29b4vM6dOyspKcnh2oYNG2Sz2dS5c+eLqt3Hx0c33XST1qxZo3Xr\n1ik+Pr7ytZqu/9LVV18tSfr2228rr5WWluo///nPRdUinQurZWVlF/05ALgUhFEAXqGiB7CgoEAT\nJkzQunXrdODAAW3btk0rVqxwCIjn9xa2b99eY8aM0YMPPqjExET997//1Y4dOzRjxozKRT3VmTRp\nkrZu3aonn3xSycnJWrFihR599FHdc8891S5UupABAwbo22+/1XfffecQOuPj4yuv/3KI/vzv48or\nr9Stt96qCRMmKCkpSbt379ZDDz2kU6dOVVnAdKEe3ejoaCUnJ2v37t3KyspScXHxRX8/AGAUYRSA\n5Z2/qtzPz0+5ubkaO3asrr76ag0ePFhRUVGaM2eOw/vPN336dD3xxBN69dVX1blzZw0cOFCJiYlq\n165djc+89tprtWTJEiUlJalbt2667777dOutt+qDDz6oUpsRAwYMUHFxsZo0aaL27dtXXu/UqZPC\nw8NVUlJSub9oTff++OOPdc0112jIkCGKj49XixYtdPPNN8vf37/atqrp2tixY3XDDTeob9++atKk\niT777DND3wMAXAqb3VmTngx455135O/vX7l33e9+9zudPn26cpuRsLAw3XHHHWziDABOUFZWpo4d\nO2r48OF644033F0OAFTLpQuYbDab7r//fodFAps2bVJ0dLT69eunTZs2adOmTRd1rB8A4JyNGzfq\n+PHjuu6665Sfn6933nlHhw8f1v333+/u0gCgRm4fpk9JSVG3bt0kSV27dlVycrKbKwIAayorK9Mr\nr7yibt26KT4+XgcPHtS6desuekEVALiSy7d2mjVrlmw2m66//nr16NFDhYWFCgkJkSSFhISosLDQ\n1SUBgFeIi4vTtm3b3F0GAFwUl4bRsWPHKjQ0VIWFhZo1a5YaN27s8PqFJvr/5z//UW5urpklAgAA\nwICwsLAqB4ZcCpeG0dDQUElScHCwOnXqpPT0dAUHBys/P1+hoaHKz89XcHBwjZ/Pzc1V9+7dVVpa\n6qqSPZavr6/Cw8OVk5NDe4j2+CXaoyraxBHt4Yj2cER7OKI9qvL19dXWrVudcy+n3MWA4uJi2e12\n+fv7q7i4WPv27VNsbKyuuuoq7dixQ/369dP27dsrz5KuSWlpqUpKSlxUteejPRzRHo5oj6poE0e0\nhyPawxHt4Yj2MIfLwmhhYWHlXnXl5eXq0qWL2rdvr+bNm2v+/PnaunVr5dZOAAAAqBtcFkbDw8P1\n8MMPV7keFBSk0aNHu6oMAAAAeBC3b+0EAACAuoswCgAAALchjAIAAMBtCKMAAABwG8IoAAAA3IYw\nCgAAALchjAIAAMBtCKMAAABwG8IoAAAA3IYwCgAAALchjAIAAMBtCKMAAABwG8IoAAAA3IYwCgAA\nALchjAIAAMBtCKMAAABwG8IoAAAA3IYwCgAAALchjAIAAMBtCKMAAABwG8IoAAAA3IYwCgAAALch\njAIAAMBtCKMAYGEZGRnaunWru8sAgEtGGAUAC1u2bJmmT5/u7jIA4JIRRgHAwtLS0pSTk+PuMgDg\nkhFGAcDCMjIyCKMALI0wCgAWlp6eThgFYGm+7i4AAHDp0tLSVFRU5O4yAOCS0TMKABZVVFSkwsJC\nlZWV6cyZM+4uBwAuCWEUACwqPT1dUVFRCgsLY6gegGURRgHAotLT09WiRQuFh4cTRgFYFnNGAcCi\n0tPTdcUVV6isrIwwCsCyCKMAYFFpaWm64oorlJ+fTxgFYFkM0wOARTFMD8AbEEYBwKLS09PVvHlz\nwigASyOMAoBFnd8zevLkSXeXAwCXhDAKABZUVlamY8eOKSoqip5RAJZGGAUACzpx4oQaNmyogIAA\nwigASyOMAoAFVQzRSyKMArA0wigAWFDF4iWJMArA2gijAGBB9IwC8BaEUQCwoIrTlySpYcOGys/P\nV1lZmZurAoCLRxgFAAuqOH1Jknx9fRUSEqK8vDw3VwUAF48wCgAWdP4wvcRQPQDrIowCgAVlZGRU\nLmCSCKMArIswCgAWk5+fr+LiYoWHh1deI4wCsCrCKABYTMUQvc1mq7wWFhZGGAVgSYRRALCY81fS\nV6BnFIBVEUYBwGLOX0lfgTAKwKoIowBgMRkZGYRRAF6DMAoAFlNdz2hERARhFIAlEUYBwGJ+uceo\nRM8oAOsijAKAxbCACYA3IYwCgIWUlJQoMzNTzZo1c7hOGAVgVYRRALCQ48ePq3HjxvLz83O4HhER\nodzcXDdVBQCXjjAKABZS3eIlSQoMDJQkFRUVubokALgshFEAsJDqFi9VCAsL08mTJ11cEQBcHsIo\nAFhIdYuXKjBvFIAVEUYBwEJqGqaXzoVRekYBWA1hFAAspLrTlyrQMwrAigijAGAhDNMD8DaEUQCw\nCLvdrrS0tBoXMBFGAVgRYRQALCI3N1e+vr4KDQ2t9nXCKAArIowCgEXUNkQvEUYBWBNhFAAswkgY\n5RQmAFZDGAUAi6BnFIA3IowCgEXUtnhJIowCsCbCKABYBD2jALwRYRQALCI9PV3Nmzev8fWGDRuq\noKBApaWlLqwKAC4PYRQALCI9Pb3WYfp69eopNDRUeXl5LqwKAC4PYRQALODs2bPKzc1VkyZNan1f\nREQEQ/UALIUwCgAWkJGRoWbNmqlevXq1vo95owCshjAKABZwocVLFQijAKyGMAoAFnChxUsVCKMA\nrIYwCgAWcKHFSxUIowCshjAKABbAMD0Ab0UYBQALuNDpSxUIowCshjAKABZAzygAb0UYBQAPZ7fb\ndfToUcMLmE6ePOmCqgDAOXxd+bDy8nJNnz5dDRo00MiRI3X69GktWLBAubm5CgsL0x133KHAwEBX\nlgQAHi8rK0tBQUEKCgq64HvpGQVgNS7tGf3uu+8UGRlZ+fWmTZsUHR2t3//+94qOjtamTZtcWQ4A\nWILRIXqJMArAelwWRvPy8rR3715179698lpKSoq6desmSeratauSk5NdVQ4AWIbRxUvS/4VRu91u\nclUA4BwuC6MrV67UzTffLJvNVnmtsLBQISEhkqSQkBAVFha6qhwAsAyjG95LUkBAgHx9ffl5CsAy\nXDJnNCUlRcHBwYqKitKBAweqfc/5IbU2vr4unebqsSragfY4h/ZwRHtUZeU2OXbsmFq1aiU/Pz9D\n74+IiFB+fr7Cw8NrfI+V28MMtIcj2sMR7VGVM9vCJa165MgRpaSkaO/evSotLdXZs2f1+eefKzg4\nWPn5+QoNDVV+fr6Cg4MveK/afrjWRbSHI9rDEe1RlRXb5MSJE7r55psd5tzXpuJ9Rt5vxfYwE+3h\niPZwRHuYwyVhdODAgRo4cKAk6eDBg/r222912223adWqVdqxY4f69eun7du3q2PHjhe8V05OjkpL\nS80u2eP5+vpWzg2jPWiPX6I9qrJym+zfv1+hoaHKzMw09P7Q0FDt27dPrVq1qvE9Vm4PM9AejmgP\nR7RHVZbrGa1Jv379NH/+fG3durVya6cLKS0tVUlJiQuqswbawxHt4Yj2qMqKbZKWlqZmzZoZrjss\nLExZWVmG3m/F9jAT7eGI9nBEe5jD5WG0TZs2atOmjSQpKChIo0ePdnUJAGAZp0+f1unTp9WoUSPD\nn2F7JwBWwglMAODBMjIyFBUVZXiRp0QYBWAthFEA8GAXs8dohYiICMIoAMsgjAKAB7uY05cq0DMK\nwEoIowDgwQijALwdYRQAPFhaWhphFIBXI4wCgAfLyMggjALwaoRRAPBgl7KAiTAKwEoIowDgocrK\nynT8+HFFRUVd1OcaNGigoqIiNucGYAmEUQDwUCdOnFBYWJj8/f0v6nM2m00NGzZUbm6uSZUBgPMQ\nRgHAQ13K4qUKDNUDsArDYbSgoEBpaWkqKCgwsx4AwP9cyuKlCoRRAFZRaxjduXOnHn30UUVHR6tB\ngwZq1aqVGjRooOjoaE2cOFE7d+50VZ0AUOekp6df9OKlCoRRAFZRYxi9++67NXLkSEVFRWn27NnK\nysrS2bNnlZWVpcTERDVv3lyjRo3S3Xff7cp6AaDOuNxh+pMnTzq5IgBwPt+aXhg1apRuvfXWKtcj\nIiJ044036sYbb9Szzz6rpUuXmlogANRV6enpio2NvaTP0jMKwCpq7BmtLohezvsAABfnUo4CrUAY\nBWAVNfaM/lJSUpK2bdvmsIDJZrPp2WefNaUwAKjrLjeMHjhwwMkVAYDzGQqjjz76qObNm6f+/fsr\nMDDQ7JoAoM47deqUysrKFBYWdkmfp2cUgFUYCqOzZ8/Wrl271Lx5c7PrAQDo/3pFbTbbJX2eMArA\nKgztM9qyZUvVr1/f7FoAAP9zOUP0EmEUgHUY6hn96KOP9OCDD2rkyJFq2rSpw2sxMTGmFAYAddnl\nbOskEUYBWIehMPqf//xHX375pTZu3FhlzuiRI0dMKQwA6rLLOX1JOhdGc3NzZbfbL3moHwBcwVAY\nfe6557Rs2TINGjTI7HoAADo3TD9gwIBL/nz9+vUVEBCg/Px8NWjQwImVAYBzGZozGhwcfMkbLwMA\nLt7lDtNLDNUDsAZDYXTKlCl6/PHHdfToUZWXlzv8AQA43+UuYJIIowCswdAw/ZgxYyRJH3zwgcN1\nm82msrIy51cFAHVYSUmJsrOz1axZs8u6D2EUgBUYCqP79+83uw4AwP8cO3ZMjRs3lq+v4UPyqkUY\nBWAFhn7StWnTxuQyAAAVnDFELxFGAVhDrXNG33rrLe3evbvG12+55RanFwQAdV1aWppatGhx2fch\njAKwglrD6Ouvv662bdtWfj1s2DCH15OSksypCgDqMHpGAdQltYbR0tJSh82SN27caHpBAFDXEUYB\n1CW1zhmNiYnRb37zG91yyy3y9/dXcXGxZsyYIUmy2+0qLS11SZEAUJekp6crISHhsu9DGAVgBbWG\n0Q8//FCvv/66li1bpqKiIhUXFysxMVESYRQAzELPKIC6pNYw2qhRI7322muVX1911VVat25d5deh\noaHmVQYAdZDdbnfK6UsSYRSANRg6galCSkqKw9e7du1yajEAUNfl5OSofv36TvllPzw8XCdPnnRC\nVQBgnhrD6NmzZy/44VatWhl6HwDAmIyMDKf0ikpSSEiISkpK+DkNwKPVGEa7deum119/XRkZGdW+\nnpGRoddff13dunUzrTgAqGucNUQvnTuyOSwsjKF6AB6txjmjSUlJ+vOf/6yuXbsqLCxMV111lUJD\nQ5Wfn6/U1FTl5ubq/vvvZ7snAHAiZy1eqlAxb/Ryz7kHALPUGEYjIyP11ltv6dVXX9X333+vnTt3\nKjc3VxEREfrTn/6kG264QfXr13dlrQDg9Zx1+lIFFjEB1mO32x32efd2Fzyb3t/fXzExMYqJiXFF\nPQBQp6Wnpzt1+hNhFLCO/Px8LVy4UImJiZo5c6Zatmzp7pJc4qJW0wMAzJWRkUHPKFDH7NmzR888\n84x69eqlb7/9VlOnTnXqzwFPd8GeUQCA6zhzAZNEGAU8VXFxsb766it98sknOnTokEaNGqW1a9fW\nyfndhFEA8BBnzpxRXl6emjRp4rR7RkREKDMz02n3A3B5MjIyNHv2bH366adq3769xowZo4SEBPn5\n+bm7NLcxNEw/f/78aq8vWLDAqcUAQF129OhRRUVFycfHeTOo6BkF3M9utyspKUnjxo3ToEGDdOrU\nKc2dO1fz58/X0KFD63QQlQyG0TFjxlR7/cEHH3RqMQBQl6Wlpal58+ZOvSdhFHCfvLw8ffjhh4qN\njdWUKVMUExOjH374QdOmTVOHDh3cXZ7HqHWYfv/+/bLb7bLb7dq/f7/Da/v27VNgYKCpxQFAXeLs\nxUsSYRRwNbvdru3btysxMVErVqxQXFyc3nzzTd1www11arumi1FrGG3fvn21f5ekpk2bavLkyaYU\nBQB1kbMXL0mEUcBVCgoK9MUXXygxMVH5+fkaNWqUkpKS1LhxY3eX5vFqDaPl5eWSpJiYGCUlJbmk\nIACoq9LT03X99dc79Z6EUcBcu3btUmJiopYuXao+ffro2WefVf/+/Z0699vbGVpNTxAFAPOlp6dr\n+PDhTr1nWFiYTp06pfLycv7jCDhJUVGRlixZotmzZ+vYsWMaOXKk1qxZUye3ZXIGQ2F0//79eu65\n57R9+3YVFBRUXrfZbDp8+LBpxQFAXWLGAiZfX18FBQXp1KlTCgsLc+q9gbomNTVVH3/8sT7//HN1\n795djz76qOLj4+Xry06Zl8NQ640cOVLt27fX22+/zaIlADBBeXm5jh496vQ5o9L/DdUTRoGLd+bM\nGS1evFhz587Vnj17dPfdd2vFihV16oQksxkKo7t379Y333yjevXqmV0PANRJ6enpCg8PN+UX/oow\n2rZtW6ffG/BWKSkp+ve//61FixapS5cumjhxovr27evusrySoTAaExOjbdu2OX1iPQDgnJSUFHXs\n2NGUe7OICTCmYi7onDlzlJaWpjvvvFPLly9Xu3btFBkZqczMTJWUlLi7TK9jKIy2bt1agwcP1m23\n3aamTZtWXrfZbJoyZYppxQFAXZGSkmLaJtiEUaB2P//8s+bMmaPFixerR48eeuSRRzRgwADmgrqI\noVYuLCzU0KFDVVxcrLS0NEnnNnVl81YAcI6UlBTThgAJo0BVBQUFWrx4sebMmaMTJ07ot7/9rVat\nWmXKvG3UzlAYnTlzpsllAEDdlpKSogceeMCUexNGgXPsdrt27NihOXPmaNmyZerTp4+efPJJxcXF\nsS7GjQz3P+/Zs0fz58/X8ePH9d577yk5OVnFxcXq0qWLmfUBgNcrKyvTvn37TB2mT05ONuXegBWc\nPHlSCxcu1Ny5c1VYWKjf/va3Wrt2LfuCeghDOyDPnz9fMTExSk9P16xZsyRJ+fn5evLJJ00tDgDq\ngsOHD6tRo0YKDg425f70jKIuKisr0/r16/XQQw/pxhtv1E8//aSXX35Z33zzjX7/+98TRD2IoZ7R\nF154QatXr1a3bt00b948SVK3bt20fft2U4sDgLogJSVFV111lWn3J4yiLjl8+LDmzp2refPmqXHj\nxrr77rv1+uuvq2HDhu4uDTUwFEYzMzOrHY7naDkAuHyEUeDyFBUVacWKFfr000+1e/du3XbbbZo5\nc6Y6d+7s7tJggKEw2r17dyUmJmr06NGV1+bOnauePXuaVhgA1BWpqamKi4sz7f6EUXirnTt36tNP\nP9XixYvVtWtXjRo1SgkJCQoICHB3abgIhsLou+++q0GDBumjjz7S6dOndfPNNys1NVWrVq0yuz4A\n8HopKSkaP368afePiIggjMJrZGdna9GiRZo7d65OnTqlu+66SytXruR4TgszFEY7duyo5ORkLVu2\nTEOHDlWrVq10yy23KDQ01Oz6AMCrlZaW6sCBA2rfvr1pzwgMDJTdbldRUZEpx40CZispKdG6des0\nb948ffPNNxo4cKBeeukl9e3blymDXsDw1k7BwcG66667zKwFAOqcgwcPqlmzZqaGRJvNVjlUTxiF\nlSQnJ2vu3LlatGiR2rRpozvvvFPvvPMOnWFexlAYPXTokF5++WVt27ZNBQUFlddtNptSU1NNKw4A\nvF1ycrKpi5cqVITR5s2bm/4s4HLk5ORo8eLFmjt3rk6cOKE77rhDCxcuVLt27dxdGkxiKIzecccd\n6tSpk6ZOncqkYABwotTUVNM2uz9fWFgY80bhsUpLS7VhwwbNmzdPSUlJuummm/TMM8+oX79+nIxU\nBxgKoykpKdq8eTP/IADAyVJSUjRkyBDTn8OKenii5ORkLViwQIsWLVJUVJTuvPNO9gStgwyF0aFD\nh2rDhg2Kj483ux4AqFNSUlL02GOPmf4cwig8RWZmpr744gstWLBA2dnZ+s1vfqPPPvtMV155pbtL\ng5sYCqN//etf1adPH3Xo0EFNmjSpvG6z2TRjxgzTigMAb3b27FkdOXLEJXPhCKNwp6KiIq1evVoL\nFizQjz/+qJtvvlkvvPCC+vTpw6grjIXRMWPGqH79+urUqZMCAgJks9lkt9tls9nMrg8AvNb+/fvV\nokUL+fv7m/6s8PBwHTt2zPTnABXsdru2bNmiBQsWaPny5erSpYtuv/12ffDBBwoKCnJ3efAghsLo\nunXrlJ6ergYNGphdDwDUGa5avCSdC6N79uxxybNQtx08eFALFy7UggULFBAQoNtvv12rV69mJwfU\nyFAY7dKli7KzswmjAOBEZp9Jfz6G6WGmkydPaunSpfr888914MABDR8+XP/85z917bXXMoqKCzIU\nRuPj45WQkKAHHnhATZs2laTKYfoxY8aYWiAAeKuUlBQNHz7cJc8ijMLZKuaBfv755/ruu+8UHx+v\niRMnKi4uTn5+fu4uDxZiKIxu3LhRzZs3r/YsesIoAFwaekZhNWVlZfr222/1+eefa+XKleratatG\njBihd999l1ORcMkMhdH169ebXAYA1C1FRUU6evSo2rZt65LnRUREEEZxSex2u3bt2qXPP/9cixcv\nVmRkpEaMGKGnn35azZo1c3d58AKGwujjjz+u0aNH67rrrjO7HgCoE/bt26c2bdq4bDizYcOGys/P\nV1lZGVvpwJBDhw7pX//6lxYsWKDTp09rxIgR7AcKUxgKo+Xl5Ro8eLAaN26s++67T6NGjVKLFi3M\nrg0AvFZKSorLVtJLUr169RQaGqq8vDxFRES47LmwloqFSEuWLNHevXs1dOhQvfbaa7r++utZiATT\n+Bh509/+9jelp6frtdde07Zt29SpUycNHDhQn3zyiQoKCsyuEQC8jiu3darA+fSoTkFBgRYuXKh7\n771XN954o3744QdNmDBBGRkZeuONN3TDDTcQRGEqQ2FUknx9fTV06FB99tln2rx5s06cOFG5un7c\nuHFKT083s04A8CrJycnq2LGjS58ZHh6ukydPuvSZ8Exnz57VypUrNX78eF1//fVasmSJbrvtNv34\n44967733lJCQoPr167u7TNQRhsNoXl6ePvzwQ8XFxSkmJka9evVSUlKSkpOTFRISosGDB5tZJwB4\nFXf0jLKivm4rKyvTpk2b9Mc//lHdu3fXv/71L91444369ttv9cknn2jEiBEKDg52d5mogwzNGb39\n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\nUGhoqLvLA7waYRQAXKCiV9Td8wrZ2ukcu92un376SStXrtSqVauUmZmpX//613rsscfUu3dv+fv7\nu7tEoM4wHEaLi4v13Xff6ejRo7rrrrtUUFAg6dxZxwCA2nnCEL0kRURE1NkFTMXFxfr2228rA2hw\ncLASEhL0//7f/1OvXr3UrFkzZWZmcvY44GKGwujOnTs1bNgw+fv7Ky0tTXfddZc2bNigWbNmae7c\nuWbXCACWl5KSoo4dO7q7jDq3mj4vL09r167VypUrtWHDBl155ZVKSEjQ3LlzHbYqZDN6wH0MhdHx\n48fr5Zdf1n333afw8HBJUlxcnB588EFTiwMAb5Gamqphw4a5uww1aNBAp0+fVmlpqbtLMU16erpW\nrlyplStXavv27erdu7cSEhI0depURUZGurs8AL9gKIzu3r1b9957r8O1oKAgFRUVmVIUAHgTu93u\nEXuMSpKPj48aNGignJwcRUVFubscpygvL9dPP/2k1atXa9WqVTp69KgGDhyo+++/X7GxsQoKCnJ3\niQBqYSiMtm7dWj/++KNuuOGGymtbtmzRlVdeaVphAOAtjh8/Ll9fX4/ZFsgbhuqLioq0ceNGrV69\nWmvWrFFoaKgGDRqkadOmqUePHvL1ZX0uYBWG/t86bdo0DR06VA899JCKi4v16quv6oMPPtC//vUv\ns+sDAMurOJPeU1h1Rf3x48f19ddfa9WqVfruu+907bXXatCgQXr44YcVHR3t7vIAXCJDYXTo0KFa\nsWKFpk+frtjYWB0+fFiLFi1Sjx49zK4PACwvOTnZI4boK1ilZ9Rut2vXrl1avXq1Vq9erUOHDik2\nNlYjRozQX//6V4WFhbm7RABOYHgc47rrrtP7779vZi0A4JVSU1PVpUsXd5dRyZPDaMXw+5o1a7R2\n7VrVr19fgwYN0nPPPaeePXvKz8/P3SUCcDJDYfSFF16odqPm+vXrq2XLlho8eLDbTxUBAE+VkpKi\nO+64w91lVPK0YfojR45ozZo1WrNmjX744Qdde+21GjhwoD799FO1a9fO7QcFADCXoTCampqqL774\nQj179lTLli11+PBhbdmyRUOHDtXSpUv1yCOPaMGCBRoyZIjZ9QKApdjtdo+cM+rOntHS0lL9+OOP\nlQE0KytL8fHxuvPOO/Xee++pQYMGbqsNgOsZCqN2u12fffaZRowYUXlt8eLF+ve//63vv/9en3zy\n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\ngGX+D+/JToe67DfGAAAAAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x7f5c74569518>"
]
}
],
"prompt_number": 24
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `exposure` data view gives us a view of the total year on year exposure of a procuring authority. But what about it we want to break that down into separate projects?\n",
"\n",
"Let's create a new, more refined view, that let's us do just that - again, we'll keep the data in a long form."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"groupingrows= ['Unique HMT Project ID','Project Name','Procuring authority','year']\n",
"projexposure=dfTimeLong[groupingrows+['value']].groupby(groupingrows).sum()\n",
"projexposure.reset_index(inplace=True)\n",
"projexposure[:3]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>Procuring authority</th>\n",
" <th>year</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 2</td>\n",
" <td> Sunningdale Park Site</td>\n",
" <td> CABINET OFFICE</td>\n",
" <td> 2002</td>\n",
" <td> 4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> 2</td>\n",
" <td> Sunningdale Park Site</td>\n",
" <td> CABINET OFFICE</td>\n",
" <td> 2003</td>\n",
" <td> 3.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> 2</td>\n",
" <td> Sunningdale Park Site</td>\n",
" <td> CABINET OFFICE</td>\n",
" <td> 2004</td>\n",
" <td> 3.6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 25,
"text": [
" Unique HMT Project ID Project Name Procuring authority year \\\n",
"0 2 Sunningdale Park Site CABINET OFFICE 2002 \n",
"1 2 Sunningdale Park Site CABINET OFFICE 2003 \n",
"2 2 Sunningdale Park Site CABINET OFFICE 2004 \n",
"\n",
" value \n",
"0 4.0 \n",
"1 3.8 \n",
"2 3.6 "
]
}
],
"prompt_number": 25
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can now ask about the data for a particular procuring authority, broken out by project."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#If assign the colour aeshetic to the project, we can chart each project with a separately coloured line\n",
"ggplot(projexposure[projexposure['Procuring authority']=='Manchester'],aes(x='year',y='value',colour='Project Name')) \\\n",
" + geom_line()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 26,
"text": [
"<repr(<ggplot.ggplot.ggplot at 0x7f5c744bf630>) failed: KeyError: 0>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n6Gjp/tjYGK2trTM+9+KLL16sYgkhhBBCiEVS1WVnuru7OXbsGMPDw/i+z86dO9m8eXM1iySEEEII\nIRaRsra0vl5VFKd2MsZw0UUXsW3btmoWRwghhBBCLKKqh1EhhBBCCLF0VbWZXgghhBBCLG0SRoUQ\nQgghRNVUdTT9fffdx549e2hubuZzn/scAAcPHuSBBx7A8zza29u56aabiMVi+L7PAw88wODgIEop\n3ve+97Fu3ToAbr/9dlKpFK4bLu24fft2mpubq/W15mx0dJQf/OAHpNNpIJxB4PLLL2diYoLvfve7\njIyM0N7ezkc/+lESiQQATzzxBM8//3zpmJx55pkADA4Oct999+H7Phs3buR973tf1b7XXC3k8WiE\nc2S2x2NiYoJ7772XwcFBLrjgAt7//veX3mspnh8nOx5L8fzYu3cvP/nJTwiCAMdxeM973sP69euB\nxjg/YGGPyVI8R/r7+3nggQeAcMXEd77znZxzzjlAY5wjC3k8luL5UTQyMsJXv/pVrrnmGq688kpg\nDueHraI333zTDg4O2q9+9aulfV//+tftm2++aa219rnnnrM//elPrbXW/vKXv7T33XeftdbaVCpl\nv/a1r5Vec/vtt9uBgYFFLHlljI2N2cHBQWuttdls1v7zP/+zPXz4sP3xj39sn3jiCWuttU888YR9\n5JFHrLXWHjp0yP7rv/6r9X3fHjt2zP7TP/2TNcZYa8PjeODAAWuttXfeead97bXXqvCN5mchj0cj\nnCOzPR65XM7u27fPPvvss/bBBx+c8l5L8fw42fFYiufH4OCgHRsbs9aG184//MM/lN6rEc4Paxf2\nmCzFc8TzPBsEQem1f/u3f1u63wjnyEIej6V4fhTdfffd9t5777VPPfVUad9sz4+qNtOvXbuWeDw+\nZd/Ro0dZuzacZP2MM85g165dAAwNDZVqQpubm4nH4yddrakeJZNJVq9eDUAsFmP58uWMjY2xe/du\nLrjgAgDOP/98Xn31VQB2797Nueeei+M4dHR00NnZSX9/P+Pj43ieR29v77TX1JOFOh6NYrbHIxqN\nsmbNGhxn6speS/X8ONHxaBSzPR6rV68mmUwC0NXVhe/7BEHQMOcHLNwxaRSzPR6u66J1GBN83yce\nj6O1bphzZKGOR6OY7fEA2LVrFx0dHVOWcZ/L+VFz61qtWLGCV199lS1btvDyyy+XJsVftWpVKWyM\n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\n",
"text": [
"<matplotlib.figure.Figure at 0x7f5c744bfa20>"
]
}
],
"prompt_number": 26
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"An alternative way of presenting the same data is to break each project out into a separately faceted chart."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ggplot(projexposure[projexposure['Procuring authority']=='Manchester'],aes(x='year',y='value')) \\\n",
" + geom_line() \\\n",
" + facet_wrap('Project Name', scales = \"fixed\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAp4AAAH6CAYAAACu+0xCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdUFIf39/H3UkRAQZqIHZUYMWLvBbDFht3YxV4wRf1q\nLNFg72KaLZZEY7qxRsUu1iixRWM0oMYCoqBIkbLA7vOHP+ZxBZW2uwj3dY5HdnZ25rMDd+bulB2V\nVqvVIoQQQgghhJ6ZGDuAEEIIIYQoHKTxFEIIIYQQBiGNpxBCCCGEMAhpPIUQQgghhEFI4ymEEEII\nIQzCzNgBsmPWrFnExcUZO4YQeaJ48eL4+/sbO4ZC6ksUNFJjQuhPTuvrjWo84+LiGDx4sLFjCJEn\nvv32W2NH0CH1JQoaqTEh9Cen9SWH2oUQQgghhEFI4/mcjh07EhgYqDyOiYlh4sSJDB8+nHXr1umM\nGxYWhqenJ0OHDmXEiBE8fvyY7du3s3XrVr1mvH79Ov/88w8AwcHBfPnlly8dNykpiblz5zJs2DB8\nfX2ZN2+eXrNNmDAhw7Bdu3bRpUuX1742PDyc6dOnv3KckydPcuzYsUyfmz59Onfv3s30uRd/L0OH\nDiUtLY2VK1fSs2dPhgwZwowZM5Tnk5OTadSoEX/99ddrcwshhKGFhYXh4eHBrl27lGGffvop7dq1\ny7PpjxgxIsevj4uL08mWXcHBwXh4eHD+/Hll2PDhwxk6dGi2p3X9+vVX7pn7/vvvszW9nL634OBg\nVq1alWH4kydPmDZtGkOHDmXQoEF8+umnpKamZnv6zzt8+DARERG5moY+SeP5f65fv079+vU5evSo\nMmz16tWMHTuWdevWMXz48AyvadKkCRs2bKBHjx5s2bIFlUql95z//POP0ni+zurVq6lduzbr169n\n48aNtG/fXuf5vLxpVVhYGGXLls0w/NixY9SqVYubN29meO75+WclS9OmTWnRokW2s73s96JSqZg0\naRLffPMNpqamXL9+HXjW4Hbq1IlDhw5le17i5bZv306vXr0ASElJoW3bti/9IPE6mX3Ied28Xzev\n5/8Gg4ODGTJkCIsWLWL69OlZrrmsCgsLY9myZQAcPXpUZwP7ouDgYHx9fZkzZw6LFi3K0xwv2rt3\nL/7+/syfP58jR45k+/UBAQF6SCVepFKpqFatGgcOHABArVYTERGBmVn+OHsuNjaWnTt3Znl8jUaT\nYZiHhwd79uwB4OHDh6SkpORoG1u1atVXnt7www8/ZDkTZP+9vc6UKVNo164dGzZsYNOmTXTp0oW0\ntLQcTy8tLY1Dhw5x//79PMuY1/LHX2k+cOjQIXr16sX69etJSUnB3NyckJAQ1q1bR0REBB9++CE1\na9bM9LVVq1YlODgYZ2dnAL755hsqV65MixYtOHToEPfu3aNEiRIEBQWRnJwMgJeXF7t376ZixYrM\nnDmTuLg4pkyZwtOnT3n77beZMmUKK1eupE6dOjRq1Ijp06fj5+fHb7/9xpMnTzh79iw9evTg6tWr\nfPDBB8TExLB69WqsrKyUXBcvXmTcuHHK4zp16gCwcuVKwsPDiYyMZOHChSxYsICHDx9SsmRJFixY\nwNy5cxk4cCCVKlXi+++/x9HRkfr16+Pv709CQgKurq4Z9k6ePn2axo0b6wxLTExEq9XSrVs3Dh8+\nTKVKlQgODmbTpk0A9O7dm4sXLxIcHEzlypUBuHHjBtu2bWPixIm0atWKFStWEBsby99//429vT1p\naWl0796dL774gnPnzmFubs7y5cuVeZ49e5atW7cyd+7cLK2E05uNuLg4ihYtCjxrBD766CM+/fTT\n175eZJ1KpcLV1ZWLFy/y6NEjatWqBTz7nf/+++88fvyY7t274+joyLRp02jZsiWhoaHMmTOHkydP\nEhgYiI2NDUOHDiUlJYWVK1dy7do13n//fVxcXFi5ciUAVlZWDBgwgLlz51K2bFk8PT25ePEiiYmJ\nAJiZmXH8+HGSk5Np3bo1Dx8+5MyZM1SvXp0BAwYoedu2bUvfvn1JSUnh448/Zvny5SxYsAAzMzPS\n0tKYMmUKH3zwAe7u7vz77780btyYmzdvUrJkSYYOHcrXX39NdHQ0iYmJfPzxxyxevJjixYvj5uaG\niYkJFy9e5Mcff8TKygoTExPCw8P56quvsLe3p1WrVtSuXVvJ0q5dO/r27as8HjRoEK1bt+bvv/9m\n4sSJpKSksHHjRgDKlStHy5YtmTx5Mt7e3tSsWZOff/6ZChUqcPnyZT788EPOnDnDkCFDWLx4MYMG\nDaJUqVIAHDhwgDlz5mBtbQ08q4vnl+sHH3xA165d8fHxISUlhWrVquHp6cmMGTOYOnUq9+7dA2DZ\nsmWkpaXh4uJCv379+Pzzz0lJSUGj0TBx4kQ++eQTSpUqRe3atfH29tbL31tBZ2Njg7m5OY8fP+bc\nuXO0aNGCH3/8EXi2Hly1ahUajQZbW1uWLl1KkSJF6NChA23atOGvv/7CycmJxYsXA88+MJw/fx4L\nCwuGDRtGxYoViY2NZerUqdy4cYPOnTszYMAA4uLimDlzJjExMQD4+/tTrlw5Pv74Yx48eIC5uTlj\nxozhwIEDXL16laFDhzJ48GDeeust5syZQ3JyMhYWFsydOxc7Ozs6dOhAu3btuHTpEitWrFDWwQBV\nqlTh9u3bpKamsnfvXtq1a6c02rt372bLli2kpKRQpUoVZs6cCcCSJUu4dOkSVatW5cSJE+zbt4/g\n4GB2797NzJkzWbp0KRcvXsTCwoJevXrx8OFDHj58yNChQ/Hx8cHExISgoCDS0tKoW7cu8Gx7kJiY\nSPPmzfHz82PTpk2vfW9FixZl/PjxJCcno1Kp8Pf3p0aNGri5uen8Dh8+fEhCQoLODpX0+V66dIml\nS5diYmKCm5sb06dP13kv8Owo7e7du5UP1mlpadSoUYNTp04REhJC+fLlmTJlCv/73/+U7eEXX3yh\n1LexSOP5f/755x/8/Pxo3Lgxp0+fpkWLFly6dIlffvkFGxsbJkyYoKzYX3Tu3DkqVKigPG7fvj1f\nfvklLVq04MCBA0yYMIHTp0/j7OzM5MmTmTVrFmq1mm+//ZZRo0YRExPD1q1bad++PZ06dWLmzJlc\nvnwZlUqV4RNez5490Wg0dOvWjeDgYMzNzfniiy9Yu3YtZ86c0VmJP78HZ+TIkURGRrJ69WqlAZg7\ndy779u2jSpUqLF68mK+//poDBw7Qpk0bDhw4wKhRozhx4gQBAQF89dVXDB8+nJo1a7J8+XIuXbqk\n04hfuHCBzp0762Q9efIkzZo1o2bNmnzzzTfK8JSUFFavXk1kZCSbN29m48aN7Nmzh1OnTlG5cmVu\n3rxJeHg4bm5uXLx4kdjYWOrXr8+dO3eU31VYWFiG38fZs2c5e/Ys8+fPx9TUVGc5fPPNN/z+++8A\nyp5NrVbL0qVLSUpKwt3dnQoVKpCamkpcXBwODg5UrVqVGzduKE2xyL3WrVtz8OBBkpKSlA8q5ubm\nqNVqHBwc2LVrF0OHDsXNzQ1fX1+WLl1KVFQUW7Zs0fmAkZaWxujRowkJCeHYsWPY2NiQnJyMk5MT\nt2/fJjY2FlNTU1q2bEnNmjW5e/cudnZ2tGjRgvfff5/q1asDcOXKFZydnWnevDkdOnTINLO5uTnm\n5uaEhoZia2uLn58fq1atIjQ0FI1Gw6hRowgKCiI8PJwpU6YwYcIEbt68yfnz56lZsyYpKSncvHmT\nR48e0apVKxo2bEhUVBTXr1+nb9++7NixA4CffvqJMWPGUK5cuQwZAgMDCQ0NxdHRkTFjxmBtbc2g\nQYMICgrizz//5Nq1a1haWmJhYUFoaCgtW7akcuXKDB06lKVLlzJhwgScnJwYNWoU7u7ubN68mbi4\nOJ4+fao0nQAffvghX3zxBU+fPqV79+6EhIToLNeUlBRKlizJsGHDSEhIYOHChdSvXx9TU1PlQ+/N\nmzcxNzfnf//7HwDHjx/n/v37VKpUifv37xMVFaVsyNM/DIvsSV+3t23blsDAQM6fP8+UKVOUxrNG\njRrKOnf58uXs27cPHx8fNBoNHTp0YPz48YwaNYrQ0FDCw8N58OABmzdvBp7t6Uv/PW3atAmVSqU0\nnuvWraNNmza0a9eO69evs3z5cvz9/YmIiFB2KGi1WlxcXLhx4wZr164FYNKkSYwaNQoPDw8OHz7M\nhg0b+N///odGo8HLy4sPP/ww0/fZpEkTTp48yYkTJ/D391caT29vbzp27KhM+9y5c1haWnLjxg02\nb97M/fv3Mz3t7eTJk/z222+YmJig1WpRqVT8/PPPbNiwAXh2ZCQxMVE5JJ6QkMCgQYPQarUMGjSI\n7t274+vry82bN1/53jp06ICtra1yhCJ9Xs831gARERE69fe8BQsWsGzZMsqUKcOnn37K0aNHX9kw\nPp/7v//+o2fPntSqVYtDhw5Rt27dly5jY5DGE7hz5w4hISGMHj2alJQUKlSoQIsWLahQoQKurq5A\n5odrT58+zbBhw3B2dmb69OlKUZQqVYrY2FhiYmKIi4ujZMmSwLNPcAAlS5ZUmhknJydiY2O5d+8e\nnp6eALi7uytNVvoK5mWHpZ+f5qu+puPrr79m+vTpyi58d3d3AO7du8fbb78NQPXq1ZVPchs2bKBX\nr15YWVlhaWnJzZs3+eyzz1CpVCQmJuLh4aFMW6PRoFarKVKkiM48jxw5woMHDwgMDOT27dvKOSfp\n8w4PD+ett94CoFq1apw6dQqAIkWKcObMGfr27cuRI0d48uQJgwcPVpbJ7du3lb1lzy+TNWvWsG7d\nOp2mE5797oYOHUq3bt0AlPOE0g+1e3h44Ovry5MnT/jnn3+4desWo0ePJiEhgaJFi0rjmYfSV7wO\nDg6YmDw70+f7779nyJAhaDQaZe+apaUl8GzvpFqtzlB/RYsWxcTEhCJFiih70lq0aIGXl5cyztSp\nUzlw4ACnTp3SOQ1Eq9UycuRI5e9kx44dFCtW7KWZ1Wo1KSkpysYDnv3taLVaLCwslBzPT0Or1VK5\ncmXGjBmjDFu6dClnzpxh+vTp2T5V4MU9ni8uH61WS8eOHZV6Cg8Pp3jx4jp50nMDtGrVikmTJjFy\n5Eid+VSsWJGpU6eSkpLChAkTaNasWYblmv4+0/fU7tixg9atW+vMK/13m/64Vq1a9O/fXxm2YMEC\nTp48yfz583XOrxbZ4+XlxfDhwylRogSOjo7K8NDQUL766ivUajWPHj1S/hZMTU2pWrUqAC4uLjx5\n8oQbN27QoEED5bXpvztXV1csLCyU1wGEhIRw7tw5fvnlF+DZ35+trS09evRg6tSpFC1alNGjR2c4\ndSo0NJTPPvsMePahsXz58sq8nt+WvKh9+/ZMmDCBqlWrYm5urgw/d+4cGzduJC0tjfv37+Pl5YWp\nqSnvvPOO8t4cHBwyTG/cuHHMmDEDlUrFkCFDMqzbVSqVTp6DBw+ydetWVCoV9+7dIyIiAicnp9e+\nt2rVquHu7s7UqVMpUaIEfn5+OvWYzsXF5aWHxOPj4ylTpgwAtWrV4tatW9SoUSPTcV/MDf+/5lu0\naMH169eZOnUqpUqVws/PT2dZGoM0njz745o9e7ZSfB988AFarZYKFSoQFRWFlZVVpudcNG7cmAUL\nFmQ6TS8vL2bNmqWzwn7V+SnlypXj77//plKlSly9epXu3bsTHR1NZGQkWq2WGzduAP9/Q5PZNF8s\n9lq1arFr1y58fHwAdN5D+uvKlSvH1atXadGiBVeuXKFChQqYmppSpkwZvvnmG2WD4urqSqdOnZSm\n8flpXb16VRmeLiUlhdjYWOWirJMnT3L48GHc3NyUeZcuXZqQkBAArl27pry2WrVq/Pjjj2zYsIH9\n+/eTkpKi09S6uroSFBSkbIjTG4K5c+cyZ84clixZQokSJXTyvOwcUq1Wi6WlJb169WLHjh3cvXuX\nr776SmlUxo4dm+nrRM6l7wlLP0+qQYMGrF+/HgcHh5fWSPfu3Zk5cya2trb4+vpmeL5Tp07Mnz+f\n8+fPk5KSQvfu3dm6dStqtZrGjRtTrlw51q5dS2pqKv3798ff3x9bW1tlz2dm9u/fz507d4iLi2PU\nqFG4ubnx66+/EhAQQHJycobDZs9nr1y5MiYmJixZsoTk5GTlAsWiRYtSsWJFHBwcuHPnDps2bcLW\n1hZ4durJypUrcXR0xNvbW+fDVfoeTyDTi/D69u3L559/jpOTE1ZWVjoX9HXv3p3ly5dToUIFpWH1\n9PRk48aNGfY4btiwgYiICNRqNW3btsXb21tnuU6ePFln/FatWrFgwQLlaIJKpaJy5cokJycTEBCA\ns7Mzffr0Yc6cOQQEBBAbG8v777/P2rVrMTExUT44i5yxsLCgdevWGRqotWvX4ufnR82aNQkICHjl\n+q9KlSrs2bOHHj16KMMg8+1VlSpVqFmzJq1atQKeredTU1Pp1KkTXbp0YdeuXXz33Xf4+vrqbCMq\nV67M8OHDlZ0cKSkpL53H80qVKkX9+vVp27atznv4/PPPWb16NY6OjkyaNAmtVkv58uWVdcr9+/d5\n9OhRhuk1bNgQT09Pzp8/z4oVKwgICND5kATo7LhYsWIFu3btwszMjEGDBgHPdoy87r2p1WplPbVm\nzRp27dpFv379MuRxcnKiWLFiBAUFKTueLly4gLu7O8WKFePevXuULVuWixcv0rJlS2xtbZUdONeu\nXVNyaLVandzm5ubKBUppaWn4+fkBMHPmTE6dOqXMy1ik8eTZoaDnz+2qXLky586dY+zYsXz88cck\nJyfr7LmAV1+wAs8OKS5evFjny1Wff82Lr+/RoweTJ09my5YtVK1aFQ8PD0qWLMlHH33EkSNHsLGx\nUT7VTJ8+ndDQUFq3bv3KaY4ZM4YlS5awdetWzM3NqVChgvKpOH3cli1bcuDAAQYPHkzJkiWVi6ha\nt27NpEmTOHz4MAAjRoxg1qxZxMfHo1KpmDVrFqVLlwZQTk14XnBwsFKIALVr12bTpk06G2snJyfc\n3d3x9fWlatWqSqY6depw8OBBihUrhrOzM/b29jrvsWrVqri4uDBo0CCKFCmiHIJ1cXFhypQpTJky\nhYCAAJ3zXV+2nNJ/7tixI8OGDcPExERn75i1tTX379/HxcUFkTsvfrvB84/TN2Tp0pvT9HOUS5cu\nTbNmzZTn0y9icXV1VWpz/vz5OtN4sUlaunSp8nOTJk1embV+/fo6p4ekmzZtms7j9BxNmzbNMCz9\nPaR7sWH8/PPPM0w/s2+eqF+/fobTSjKb78KFC3XGSZ+/g4MDFSpU4MmTJ3Tp0gW1Ws2CBQsYMmRI\nhnlldtXwi8v1+QuImjdvTvPmzZXH6RdMvfje089JSzd16tQM8xHZk77uev6DWPqw9u3b4+/vT8WK\nFSlWrFime9vSx2/evDnBwcEMGDCAokWLMnToUCpWrJjpenLkyJHMnj2bH3/8Ea1WS4sWLWjfvj2T\nJk3C1NSU1NRUpkyZgqOjIxYWFkyYMIHevXszceJE5s2bp5xn3a1bNzp27Jili4XGjx8PPDssnT6+\nj48PI0aM0DkimX661IABA6hSpYpyzUW61NRUpQF7fpvu4eHBuHHjlG8EeD5Tq1atGDBgAK6ursph\n7te9t65du1K5cmUWLlyIqakpWq32ld8os2DBApYsWaLswa1YsSI1atRQtmWmpqZUqVJF2YlVrFgx\nhgwZQp06dZTzNl88Lc/T05MVK1ZQqVIlvL29lSOBRYoUyRent6i0eXlps55NnDjxjfny3ZiYGGbN\nmlUorvJMPy9UZM+3336r0wwZ25tUX0JkhdRY4ZKamoqZmRnh4eF89NFH/Prrr8aOVKDltL5kj6ce\n3Lx5k1mzZvHRRx8ZO4pBSNMphBDC2BYtWkRoaCgJCQlMnDjR2HHES7xRjaepqSlff/11lsbt2rUr\n27dvz9X8ypUrx6RJk1iyZMlLv5z8ZZo2bcqff/7Jn3/+afQsz5Ms+smSkxyZnfxuTNmpLzDOMpMs\nkqWw1FhBWj8aKouTk5Ny8c+lS5e4dOmS0bJk1ZucJaf19UYdag8PD8/yuJaWlso5Fzllbm6Ok5MT\nkZGRysnQOSFZCn6WnORIP0c2v8hOfYFxlplkkSyFpcYK0vpRshTMLDmtL7lzkRBCCCGEMAhpPIUQ\nQgghhEFI4ymEEEIIIQxCGk8hhBBCCGEQ0ngKIYQQQgiDkMZTCCGEEEIYhEG+xzMmJoZt27bx9OlT\nAOrWrUujRo2U50+dOsX+/fv5+OOPdW5zKIQQQgghCg6DNJ4mJia8++67uLi4kJyczNdff03lypVx\ncnIiJiaGGzduUKJECUNEEUIIIYQQRmKQQ+3FixfHxcUFAAsLCxwdHYmLiwNg3759cstFIYQQQohC\nwOC3zIyOjiYiIoIyZcpw7do1bGxsKFWqVIbxYmNjiY+P1xmmVquxtrbO0nxMTU0xNzfPVVYzMzOd\n/3NKshT8LHmVw1ByW1+Qv5aZZJEs+Y1swyRLYc3y2vnodeovSE5O5pdffqFdu3aoVCqOHz/OwIED\nMx333LlzBAUF6Qzz9PTE29vbEFF12NnZGXyeLyNZMpdfsuSXHK8j9ZU5yZI5yZJ9UmOZkyyZK0xZ\nDHav9rS0NH744QeqVKlC48aNefDgAZs2bVI69NjYWIoXL86IESMoVqxYrj8tWlhYkJycnKvMZmZm\n2NnZER0dTWpqao6nI1kKfpac5HBycsrx/HIrL/Z4GmOZSRbJUlhqrCCtHyVLwcyS0/oyyB5PrVbL\njh07cHJyonHjxgA4OzszadIkZZzPPvuMkSNHKle129jYYGNjozOd8PDwLN24Hp4twKyO+zqpqam5\nmpZkKTxZcpvDUHJbX5C/lplkkSz5jWzDJEthzfI6Bmk879y5w19//YWzszOrV68GoFWrVri5uRli\n9kIIIYQQIh8wSONZoUIFZs6c+cpxxo0bZ4goQgghhBDCSOTORUIIIYQQwiCk8RRCCCGEEAYhjacQ\nQgghhDAIaTyFEEIIIYRBSOMphBBCCCEMQhpPIYQQQghhEAa7c1FeePToESYmWeuVTUxM0Gg0uZqf\nSqWiSJEiqNVqcrOYJEvBz5KTHPnpFmmQvfoC4ywzySJZCkuNFaT1o2QpmFlyWl8GvVd7bmXndlCW\nlpYkJibman7m5uaUKFGCp0+f5upb/CVLwc+Skxz5baOY3dutGWOZSRbJUlhqrCCtHyVLwcyS0/qS\nQ+1CCCGEEMIgpPEUQgghhBAGIY2nEEIIIYQwCGk8hRBCCCGEQUjjKYQQQgghDEIaTyGEEEIIYRAG\n+zql7du3ExISgrW1NX5+fgDcu3ePPXv2oNFoMDExoWPHjpQpU8ZQkYQQQgghhAEZbI9n7dq1GTBg\ngM6wAwcO0LJlS0aPHo23tzcHDhwwVBwhhBBCCGFgBms8K1SoQNGiRXWGFS9enKSkJACSkpIoXry4\noeIIIYQQQggDM+qdi1q3bs2GDRvYv38/Wq2W4cOHK8/FxsYSHx+vM75arcba2jpL0zY1NcXc3DxX\n+czMzHT+zynJUvCz5FUOQ8ltfUH+WmaSRbLkN7INkyyFNcvrGPRe7dHR0fz444/KOZ4bN26kQYMG\nVKtWjb///ptz584xaNAgAI4cOUJQUJDO6z09PfH29jZUXCEKLKkvIfRLakyIzBn1o2NYWBjVqlUD\nwN3dnZ07dyrP1a1bl6pVq+qMr1ariYyMzNK0LSwssn3v6ReZmZlhZ2dHdHQ0qampOZ6OZCn4WXKS\nw8nJKcfzy63c1hcYZ5lJFslSWGqsIK0fJUvBzJLT+jJq42lvb89///1HxYoVuXXrFg4ODspzNjY2\n2NjY6IwfHh6epRvXw7MFmNVxXyc1NTVX05IshSdLbnMYSm7rC/LXMpMskiW/kW2YZCmsWV7HYI3n\nli1b+O+//0hISCAgIABvb298fHzYs2cPqampmJub4+PjY6g4QgghhBDCwAzWePbs2TPT4SNGjDBU\nBCGEEEIIYURy5yIhhBBCCGEQ0ngKIYQQQgiDyHLjqVarOXbsGD///DMA8fHxGb6jTAhhGFKPQuiX\n1JgQ+pGlxvPy5ctUrVqVkSNHMmzYMACCgoKUn4UQhiP1KIR+SY0JoT9ZajxHjx7NrFmzuHbtmvLN\n+F5eXhw/flyv4YQQGUk9CqFfUmNC6E+WGs+rV68ycOBAnWFWVlYkJibqJZQQ4uWkHoXQL6kxIfQn\nS41nhQoV+PPPP3WGBQcH4+bmppdQQoiXk3oUQr+kxoTQnyx9j+fcuXPp1KkTo0aNQq1WM3/+fFav\nXs3atWv1nU+HhYUFJiZZux7KxMQES0vLXM1PpVKRkJCAubk5ZmY5/8pTyVLws+RVjqzQVz1mp74g\nfy0zySJZ8lJ+qLGCtH6ULIUry2vno9VqtVkZ8cKFC3z99dfcvn2b8uXLM2LECOrWrau3YJkJDw/P\n8riWlpa5Pixibm6Ok5MTkZGRubp9lGQp+FlykqN06dI5np8+6jE79QXGWWaSRbIUlhorSOtHyVIw\ns+S0vrLc0tauXZtVq1blaCZCiLwl9SiEfkmNCaEfWWo8Z8yYgUqlyvS52bNn52kgIcSrST0KoV9S\nY0LoT5Yaz7t37+oU4f379zl27BjdunXTWzAhROakHoXQL6kxIfQnS43nt99+m2FYYGAgP/zwQ17n\nEUK8htSjEPolNSaE/uT4Xu1t2rRh+/bteZlFCJFDUo9C6JfUmBB5I0t7PG/evKnzOCEhge+//57y\n5ctneUbbt28nJCQEa2tr/Pz8ANi/fz///vsvpqam2NnZ0bVrV4oWLZqN+EIUPnlRj0KIl5MaE0J/\nstR4VqlSReexlZUVtWrVYuPGjVmeUe3atWnYsCHbtm1ThlWuXJnWrVtjYmLCgQMHOH78OG3atMny\nNIUojPKiHoUQLyc1JoT+ZKnx1Gg0uZ5RhQoViI6O1hlWuXJl5eeyZcty9erVXM9HiIIuL+pRCPFy\nUmNC6I9+b/+QDRcuXOCdd95RHsfGxhIfH68zjlqtxtraOkvTMzU1xdzcPFeZ0r+5P7ff4C9ZCn6W\nvMphKLkItwYrAAAgAElEQVStL8hfy0yySJb8RrZhkqWwZnntfF72RLly5V77YpVKxZ07d3Id4tix\nY5iamuLh4aEMO3fuHEFBQTrjeXp64u3tnev5ZZednZ3B5/kykiVz+SWLvnLkdT1KfWVOsmSuMGSR\nGjMMyZK5wpTlpY3nd999p9cZp7tw4QIhISEMGjRIZ3jdunWpWrWqzjC1Wk1kZGSWpmthYUFycnKu\nspmZmWFnZ0d0dDSpqak5no5kKfhZcpLDyckpy9PP63rMbX2BcZaZZJEshaXGCtL6sbBn0Wg0aLVa\nTE1NjZ7lVbKbJTv1pTOflz3h5eWVowlmR0hICKdOnWLw4MEZdhHb2NhgY2OjMyw8PDzL9zI1MzPL\n9b2F06WmpuZqWpKl8GTJbY6Xyet6zG19Qf5aZpJFsuRWfquxgrh+LGxZQkJC2LJlC1u3biUgIIDm\nzZsbLUt26KvG0mX5QP6FCxc4fvw4jx49QqvVKsOzevuwLVu28N9//5GQkEBAQABeXl6cOHGCtLQ0\n5ZNm2bJl6dSpUzbfghCFT27rUQjxalJjIicePnzIjh072LZtGxEREXTr1o2NGzfi7u5u7Gj5RpYa\nz6+//prx48fTtm1b9uzZQ4cOHdi/fz9dunTJ8ox69uyZYVidOnWynlQIAeRNPQohXk5qTGRHbGws\ne/fuZfv27Vy6dIk2bdowefJkmjVrlunh9cIuS3cuWrRoEXv37mXbtm1YWVmxbds2tmzZ8sZcXShE\nQSL1KIR+SY2J10lISGDr1q0MGzaMBg0aEBgYSJ8+fTh37hyff/45np6e0nS+RJaqKDIykhYtWgBg\nYmJCWloa7dq1o1+/fnoNJ4TISOpRCP2SGhOZSUhI4ODBg+zatYvjx49Tv359fHx8CAgIwNbW1tjx\n3hhZajzLli3LrVu3cHV1xc3NjR07duDo6IiFhYW+8wkhXiD1KIR+SY2JdDExMRw8eJA9e/Zw4sQJ\n6tWrh4+PD4sXL6Z06dIkJiYaO+IbJ0uN58cff8w///yDq6sr/v7+9OjRA7VazRdffKHvfEKIF0g9\nCqFfUmOF28OHD9m3bx+BgYH8+eefNG7cmA4dOrB06dJ89X2bb6osNZ4XLlygf//+ALRv357o6GjU\najXFixfXazghREZSj0Lol9RY4aLVagkJCeHAgQPs37+fkJAQvL296d27N2vWrKFYsWLGjligZPlM\n6a5du2JlZUX//v3p169fhi/GFUIYjtSjEPolNVawqdVqjh07RmBgIAcPHkStVtO2bVvGjx9PkyZN\nKFKkiLEjFlhZuqr9888/5+7du6xatYo7d+7QqFEj6taty7Jly/SdTwjxAqlHIfRLaqxgevDgAT//\n/DPDhg3D2dmZ+fPnU6JECdasWcPZs2eZN28eXl5e0nTqmUr7/DfjZlFYWBiDBw/m0KFDaDQafeTK\n1KNHjzAxyVKvjImJSa6zqVQqihQpglqtJgeLSbIUoiw5yZFX5wrlVT1mp77AOMtMskiWwlJjBWn9\naKwsKSkpBAcHc+jQIQ4dOsSdO3fw9PSkTZs2tG/fHnt7+0K5XPIqS07rK8uH2uPj49m2bRs//vgj\nR48excvLi02bNuVopjmVnfuQWlpa5vpqM3Nzc0qUKMHTp09zdfsoyVLws+QkR242ivqox+ze59cY\ny0yySJbCUmMFaf1oqCxarZZbt25x7Ngxjh8/zqlTp6hYsSJeXl7MnDmTunXrYmZmhrm5OU5OTkRG\nRhaK5aKvLHptPHv16sWePXuoU6cO/fr1Y+PGjTm+ObwQInekHoXQL6mxN0dUVBQnT57kxIkTHD9+\nnJSUFJo3b07Hjh1ZtGgRjo6Oxo4oXpClxrNevXosW7aM8uXL6zuPEOI1pB6F0C+psfwrJiaGo0eP\ncuLECU6dOkVYWBgNGzakefPmjBgxAjc3N1QqlbFjilfIUuM5efJkfecQQmSR1KMQ+iU1ln88efKE\ns2fPcvr0aU6fPs2tW7eoXbs2TZo0YeHChdSqVUtuZfqGkd+WEEIIIfKFiIgIzp49y9mzZ/njjz+4\nc+cOderUoXHjxsyePZtGjRoZ9KJmkfek8RRCCCGEUaSmprJnzx4OHTpEcHAwMTEx1KtXj0aNGrF4\n8WJq1KiBubm5Mr6FhYXcpvINly8az8TERHbu3ElkZCQAXbp0oVy5ckZOJYQQQgh9SExM5Oeff2bN\nmjW4uLjQrVs3xo4dS5UqVbL1tW7izZMvGs/AwEDc3Nzo3bs3aWlpuf7aDiGEEELkL48fP2b79u0c\nPHiQQ4cOUb9+fb788kvq1atn7GjCgIzeeCYlJXH79m26desGgKmpKaampkZOJd4UWq2Wx48f888/\n/xAWFkZERAQPHjzgwYMHPHr0iFWrVskVjkIIYQTpFwadOXOGM2fOEBoaSuPGjfH09GT8+PHyrQGF\nlNEbz+joaKytrdm+fTsRERGULl2adu3akZSURHx8vM64arUaa2vrLE3X1NRU57yQnEi/Ui63V8xJ\nluxnSUlJISoqiocPH+r8S28qHzx4oAyzsLDA2dkZZ2dnSpUqhYuLC2+99RbOzs6YmZll6bBNbpdL\nXi0TQ4mNjc1VfUH+WmaSRbLkN7mtsTdlXQ0QFxfHhQsXOHfuHP/++y+3b9/mzp07PH36lHr16tG4\ncWPmzJlDq1atSExMJDU1VW9ZsqKwbU8NneV1cnTLzLwUFhbG+vXrGTZsGGXKlGHv3r1YWFigUqkI\nCgrSGdfT0xNvb28jJRW5lZCQQGRkJA8fPiQyMlKngXzw4IGytzIiIoKYmBicnJwoVaoUzs7OuLi4\n4OLiQqlSpZTmMv1xdpol8cyRI0ekvoTQo4JSY//88w/vv/8+1atXx9vbG09PT5KSkjh+/Lhyh6Ab\nN25Qu3ZtGjVqhIeHB5UqVaJSpUqUKlVKztcUGRi98YyLi2P9+vWMGzcOgNu3b3PixAl8fHxy9WnR\nwsIi27cAfJGZmRl2dnZER0fn6hNaXmeZN28eZ8+eZcOGDdja2holi62tLbdv3+bhw4c8evSIx48f\n8+jRI6KiopSfnx8WFRVFWloajo6OODg44OjoiLOzM/b29jg5OeHo6EjJkiUpWbIkTk5O2NvbZ+mU\ni/zyO8pJDmPeCSUv9ngaY5lJFslSWGosP2zDHjx4QMeOHRk+fDhqtZqTJ09y9uxZihQpQsOGDWnU\nqBGNGjXinXfeoUiRInrNki4/LBfJ8kxO68voxyyKFy+OjY0NUVFRODo6cvPmTUqWLImNjQ02NjY6\n44aHh2f5wiMzM7M8u0gpNTU1V9PKyyybN29my5YtNG/enM6dO/P999/j7OycqyzJyck8efKEJ0+e\nEB0dTXR0tM7Pz/97/Pix8ryVlRX29vbY2dlhb2+Pg4OD8n+VKlWws7NTmkwHBwesra11zrd81b1l\nNRpNtr6rLb/8jnKbw1ByW1+Qv5aZZJEs+c2bvg17+vQp/fv357333uP9998nMTGRMWPGkJqaiomJ\nSYY9mVmdfn5ZV0sW/WV5HaM3ngAdOnRg69atpKWlYWdnR9euXY0dyWA0Gk2WD0UEBQUxe/ZstmzZ\nQpUqVfjiiy/o1q0b33//Pa6ursCzi7XS9zam73FM//f48WNiYmJ49OgRT548ISYmhidPnpCSkkKJ\nEiUoUaIEdnZ22NnZ6fxcsWJF5ef0PZRVq1ZVXiuEEKLgSE1Nxc/PD3d3d+VoZLo35RxbkX/li7+g\nUqVKMXLkSGPHMLg5c+bw7bffUqtWLerVq0f9+vVxd3fHxcUlw5XYN2/epHfv3qxatQo3NzcAPvro\nIxwcHPDx8cHW1paoqCjUarXO3sf0nx0cHKhRowbOzs5YWVnpNJpWVlbZuvLb3Nw81ycxCyGEyJ8C\nAgJQq9UsXLhQvhVE5Ll80XgWRj///DP79u0jKCiI0NBQgoODWbduHdeuXSMpKQk3NzccHR2Jj4/n\n6dOn3Llzh/nz5+Pp6amzl3HAgAE0adIEjUaDk5MTNjY2r1xRvOrwthBCCOHr68uYMWNkB4PQC2k8\njeDPP/9k3rx5/Pbbb5QtW5ayZcvi5eWlPP/48WNCQ0N5/Pgx1tbWFCtWjJIlS1K/fn3l7k7Pq1Sp\nkgHTCyGEKMiyc92AENkljaeBhYeHM2rUKAICApRD5i+yt7enQYMGOsPkk6cQQggh3nTyBVsGlJqa\nysiRIxk6dCitW7c2dhwhhBBCCIOSxtOA1q5di7W1NX5+fsaOIoQQQghhcHKo3UD+++8/VqxYwe+/\n/y5XCQohhBCiUJI9ngag1WqZPHkyY8eOpWLFisaOI4QQQghhFEa/ZWZ2PHr0KMtftm5iYpKtO99k\nRqVSUaRIEdRqNblZTD/99BOrV6/m4MGDOf7y3bzKkp+WS0HKkpMcdnZ2OZ6fPmSnvsA4y0yySJbC\nUmMFaf0oWQpmlpzW1xt1qD079yHNi++rNDc3p0SJEjx9+jTbd+jRarVERUUREhKCv78/3333HSkp\nKTm+009usjzP2MuloGbJSY78tlHM7n1+jbHMJItkKSw1VpDWj5KlYGYpFI1nfhcWFsauXbvYs2cP\n169fx8zMDFdXVyZNmkSNGjWMHU8IIYQQwqik8cwD169fZ9KkSdy8eZP27dszceJEatSooXwakLsF\nCSGEEEJI45knFi5ciLe3N7/99pt80bsQQgghxEvIVe25dP36dS5cuMDo0aOl6RRCCCGEeAVpPHNp\nxYoVDBs2DEtLS2NHEUIIIYTI1/LFofaQkBACAwPRarXUqVOHZs2aGTtSlty9e5dDhw4xZ84cY0cR\nQgghhMj3jN54ajQa9uzZw6BBg7CxseHrr7+matWqODk5GTvaa61Zs4b+/ftja2tr7ChCvJFSU1OJ\njY0lJiaGp0+fYmZmhqWlpfLvxe+9TU1NJS4ujsTEROV75rRaLRYWFsowrVaLRqNRfn7VsDJlyuS7\nr9wRQoiCzOiNZ1hYGPb29srK/5133uHatWv5vvGMiopi27ZtHDlyxNhRhHjj/PXXX6xYsYLAwECK\nFi2KlZUVVlZWaDQaEhISSExMVL4JwsLCAgsLC5KSklCr1RQvXhxLS0vl1rMqlUr5Um6VSpXhsYmJ\nCSYmJhmeA7hz5w42NjZUr16dt99+m8TERFJTU9FoNMqXMac3rOnD0h8DGRpZrVaLiYkJqampL33+\n+X/p4wDMnj2bSpUq6XvRCyGEURm98YyNjdXZY2hjY0NYWBixsbHEx8frjKtWq7G2ts7SdE1NTXN9\nsU/63pbM7jb0zTff0KVLF8qUKWP0LNkhWfSTJa9yGEpu6wtytsxOnz5NQEAAISEhjB07lp9++gm1\nWq00ai9KTU0lOTmZ5ORkLCwssLKyUhrO51lYWGT7C/DhWVN59+5drl+/TlRUFElJSWi12kwbVlNT\nU53m9fnG9/l/5ubmpKWlvfT5l/1zcXHB3Nw8T/+W8tPfdX7KYgj5fRuWHZJFsuQlo98y8+rVq4SG\nhtK5c2cALl26RFhYGJaWlgQFBemM6+npibe3tzFiZtC1a1cCAgJkD4V4Ix05csQo9bVo0SKcnJwY\nMGAARYoU0eu8hDAmY9WYEPmd0RvPu3fvcvToUQYOHAjA8ePHUalUeHh45OrTYk73gDzPzMwMOzs7\noqOjX7pHRrJIlpzmMObpJHmxx9MYy0yySJbCUmMFaf0oWQpmlpzWl9GPWZQuXZrHjx8THR1N8eLF\nuXLlCj179sTGxgYbGxudccPDw7N8L1MzM7Nc31s4XWpqaq6mJVkKT5bc5jCU3NYX5K9lJlkkS34j\n2zDJUlizvI7RG09TU1M6dOjA5s2b0Wg01KlTJ99fWCSEEEIIIbLP6I0ngJubG25ubsaOIYQQQggh\n9EjuXCSEEEIIIQxCGk8hhBBCCGEQ0ngKIYQQQgiDMPrXKeVnsbGxnDt3jrp162a4OlGySJb8mONN\nkp+WmWSRLAVRflpmkkWypJM9nq8QHx9PUFBQhu9ikyySJb/meJPkp2UmWSRLQZSflplkkSzppPEU\nQgghhBAGIY2nEEIIIYQwCGk8hRBCCCGEQZjOnDlzprFD5FdarZYiRYpQsWJFLCwsJItkyfc53iT5\naZlJFslSEOWnZSZZJEs6uapdCCGEEEIYhBxqF0IIIYQQBiGNpxBCCCGEMAhpPIUQQgghhEFI4ymE\nEEIIIQxCGk8hhBBCCGEQ0ngKIYQQQgiDkMZTCCGEEEIYhDSeIldSU1ONHUGIAk1qTAj9khozLGk8\nC7AlS5bQs2dPnWEffvgh48aNIzY2lmHDhlG6dGnKli3LjBkz0Gg0ANy4cYOWLVvi6OiIk5MTAwYM\nICYmRplGxYoVWbx4MR4eHhQvXlx5nRCFjdSYEPolNVYAaUWBdf/+fa21tbX2yZMnWq1Wq01JSdGW\nLFlSe/78eW3Xrl21o0eP1iYkJGgfPnyobdCggXbNmjVarVarDQ0N1R48eFCrVqu1kZGR2hYtWmjH\njRunTLdChQra2rVra+/du6dNSkoyynsTIj+QGhNCv6TGCh5pPAu4du3aadeuXavVarXaXbt2aatX\nr6598OCB1sLCQpuYmKiM98MPP2i9vb0znca2bdu0tWvXVh5XrFhR+8033+g1txBvCqkxIfRLaqxg\nMTP2HlehX76+vqxevZrhw4ezefNmBg4cyO3bt0lJScHFxUUZT6PRUL58eQAePHjARx99xIkTJ4iL\ni0Oj0WBvb68z3XLlyhn0fQiRX0mNCaFfUmMFi5zjWcB16dKFv/76iytXrrB792769+9P2bJlsbCw\n4NGjR0RHRxMdHU1MTAyXL18GYNq0aZiamnLlyhViYmL47rvvMpz/olKpjPF2hMh3pMaE0C+psYJF\nGs8CztLSkh49etCvXz8aNmxI2bJlcXFxoW3btkyYMEH5JHjjxg2OHTsGQHx8PNbW1tjY2BAWFsaS\nJUuM/C6EyL+kxoTQL6mxgkUaz0LA19eXK1euMHDgQGXYpk2bUKvVuLu7Y29vT69evYiIiADA39+f\n8+fPY2tri4+PDz169JBPhkK8gtSYEPolNVZwqLRardbYIYR+3b17l7fffpsHDx5QrFgxY8cRosCR\nGhNCv6TGCg7Z41nAaTQali1bRt++faVYhdADqTEh9EtqrGCRq9oLsKdPn+Ls7IyrqyuBgYHGjiNE\ngSM1JoR+SY0VPHKoXQghhBBCGIQcahdCCCGEEAYhjacQQgghhDAIaTyFEEIIIYRBSOMphBBCCCEM\nQhpPIYQQQghhENJ4CiGEEEIIg5DGUwghhBBCGIQ0nkIIIYQQwiCk8RRCCCGEEAYhjacQQgghhDAI\naTyFEEIIIYRBSOMphBBCCCEMQhpPIYQQQghhENJ4CiGEEEIIg5DGUwghhBBCGIQ0nkIIIYQQwiCk\n8RRCCCGEEAYhjacQQgghhDAIM2MHyI5Zs2YRFxdn7BhC5InixYvj7+9v7BiKN7m+Dh48SLFixWjU\nqBF3795lz549jBo1yiDzjomJYd26dUyYMAGVSpUn09y6dStvv/027u7ueTK9wkpqzHB+/vln3N3d\nqVGjhl7nc+/ePfbv38/QoUP1Oh9DCgwMpHjx4jRt2jRPp3vq1CmePHlChw4d8nS66XJaX29U4xkX\nF8fgwYONHUOIPPHtt98aO4KO/Fhf7777LpGRkRw+fJgSJUoow3v16sX169fZt28fLi4uOrmDg4MJ\nCgrK0/cSHBzMsGHDsLS0RKVS4eTkxLBhw+jatSthYWGsX78eX19fTExefRApODiYqVOncvDgQWXY\nypUruXv3LgsWLFCG6ev3kNn8AYYMGYKPjw/du3fP8F4dHR3x9fWlV69eOq/Zvn07n376KYsXL6Zd\nu3Z6yZtbhaXGGjRooHzoSUxMxMLCQvlb9Pf311vj8bxjx47RrFkzunXrlq3XhYWF0b59eywtLQGw\ns7OjV69eDBs27KWvmT59eq6y6ktERASLFi3i3LlzpKam4uzszODBg+nSpcsrXxcaGkqpUqXy/G8j\nMTGRO3fu6G19ktP6KlSH2t99911atmyJRqNRhm3fvh0PDw9+/PFHvczzk08+ydNpr1y5kpSUlDyZ\nVnh4OH5+fvTo0YPu3bvTp08fQkNDATh06BBXrlzJk/k8Ly4ujg0bNrz0+bCwMFq0aJFh+MOHD1+5\nInqeh4cHiYmJmT734vJbsWIFgYGBWZquMDyVSkXZsmXZs2ePMuzff/8lKSkpz/YuZlXJkiU5c+YM\nf/zxB+PHj2fWrFncvHnToBn0RaVS6SzP59/r5MmTmTdvnrJuSLdz507c3NzYtWuXoeOKF5w9e5Yz\nZ85w5swZSpcuzVdffaU8NkTTmRdOnz7NmTNnWLRoEWvWrOHkyZMZxklNTTVopud7hayYNm0aLi4u\n7N+/nxMnTrBgwQIcHBz0lO71tFqt0eb9KoWq8VSpVJQsWVLnD3rHjh24u7vrbSOW19NdvXp1jhrP\nzAp27ty5tGjRgt9++42tW7fy5ZdfYm9vD8Dhw4e5fPnyS6eX3YJMFxsbm6NPSSVLlmT9+vVZHv9l\nBffi8hs7dmy+3VsjnunUqZNOc7Nz5046d+6s8zv+5JNP+PLLLzN9/cOHDxk/fjyenp60a9eO77//\nXnnu8uXL9O7dm8aNG+Pl5cWSJUuylKlly5bY2Nhk2nhu27aNLl260KhRI9q3b8+vv/4KQEJCAmPG\njCEyMpKGDRvSqFEj9uzZw7p16wgMDKRhw4bKXsUhQ4awdetW4NmH40GDBrFs2TKaNm1Ku3btOHHi\nhDK/e/fu4evrS6NGjRgxYgRz585l6tSpWXofWdG8eXNsbW113mt4eDgXLlxgzpw5nD59mqioqDyb\nn8g7Go2GdevW0aFDB5o3b87EiROJiYkBnn3I9/DwYPv27bRp04ZmzZrxyy+/cOXKFbp3706TJk2Y\nP3++Mq3t27czcOBA5s+fT5MmTejcuTNnzpx56bzT66Bp06aMHj2a+/fvZylzzZo1qVy5MqGhoQQH\nB9OqVSs2bNiAt7c3/v7+BAcH07p1a2X8d999l2+//Zbu3bvTsGFDPv30U6Kiohg9ejSNGzdmxIgR\nxMbGKuNPmDABb29vmjRpwuDBg7lx44by3CeffMKcOXMYM2YMDRo0YNOmTXh5eels7w4ePEjPnj0z\nzf7333/TpUsXihYtiomJCW+//TbNmjVTnj9//jwDBgygSZMmtGnThp07dyrPxcTEMHbsWBo1akT/\n/v25e/eu8tzFixfp06cPTZo0oW/fvly8eFF57uHDh3zwwQc0a9aMjh078ttvv2VpORtToWo8ATp3\n7syOHTsAuHv3LklJSVSpUkXZiP3xxx8MGDCA9957j+7du+vsDRsyZAgBAQH4+vrSvn17PvvsM+W5\nBw8eMH78eHr06EGPHj10mqTQ0FCGDx9Op06d+OSTT5Th8fHx+Pv7069fP3r06MGiRYuUP/BVq1bR\nuXNnevXqxXvvvUdcXBxz584FYODAgfTq1Yv4+PhXTmPIkCEsWrSI/v3789FHH2VYFg8fPsTJyUl5\n7OTkhL29PSdPniQoKIj169fTq1cvdu3aRXBwMN27d2fGjBn06tWLEydOcOvWLcaMGUPfvn3p2bMn\n27dvV6b1119/MWzYMHr37k3v3r05duwYAPPmzSMuLo5evXoxaNCgLP/ewsLCaN68ufL4wIEDdO7c\nmffee4+1a9dm2Mv5ww8/0LdvX9q3b68cVnx++aUv0+f3SK9cuZKPP/4YPz8/OnfuzNixY0lKSgKe\n7akdP348nTt3Zvjw4UybNo1ly5ZlOb/IOQ8PD+Lj47l58yZpaWkEBgbSqVMnnXFe3GOXTqPR8P77\n7/P2229z6NAh1q1bx+bNmzl16hQACxcuZODAgZw+fZq9e/fy7rvvvjaPRqPh0KFDxMbG4ubmluF5\nBwcHVqxYwR9//MGcOXNYsmQJ//zzD1ZWVqxatQonJydlb2KHDh0YMWIE7du358yZM0qT+uL7uXz5\nMq6urpw4cYKhQ4fqnFc1efJkatasyYkTJ/Dz82P37t159oFXo9Fw5MgR4uPjqVatmjJ8586d1KtX\nD3d3d6pXr87u3bvzZH4ib/3www8cPXqUb7/9lsOHD2NjY8O8efN0xrly5Qp79uxh8eLFLFy4kLVr\n17J+/Xq2b9/Ovn37+PPPP3XGLV++PMePH8fPz4/x48frNHXpDh8+zLp16/jss884fvw4derU4eOP\nP35lVq1Wi1ar5cKFC9y4cUP5e3v8+DGxsbHs37+fTz/9NMPrVCoVBw8eZN26dezatYugoCAlW1BQ\nEFqtVufDZosWLdi9ezdBQUFUq1aNKVOm6Exv7969jBo1irNnz9KvXz9KlCihrC8Adu3aRefOnTN9\nDx4eHsybN4/AwMAMjXb6EcYBAwZw/PhxtmzZQtWqVZX3HhgYiJ+fHydPnqRcuXLKB+mYmBjldSdO\nnGDQoEGMHTtW+QAxadIkSpUqxZEjRwgICOCLL77g7Nmzr1zWxvZGneOZF+rXr8/PP/9MbGwsO3fu\nxMfHh6tXryrPu7u7s2nTJkxMTIiKiqJPnz40bdqU4sWLo1KpiIiIYOPGjcTHx9OhQwd69OhBuXLl\nmDp1Kp6enixfvhyAJ0+eAM/+oEJDQ1m3bh0A7733HqdPn6Zx48YsWbKEevXqMWvWLDQaDVOmTGHb\ntm20bt2a7777jqNHj1KkSBESEhKwsLBg+vTp/PLLL2zevFk5H8bf3z/TafTo0QOVSkVYWBjfffdd\npueeDRkyhE8++YTNmzfj4eFB27ZtqV69Ok2bNsXLy4t33nmHPn36AM/ODbt58yYzZ87Ew8OD1NRU\n+vXrx6JFi3B1deXp06f06dOHmjVr4uDgwNy5c1m5ciWOjo5ERkbSt29ftm/fzvTp0+nTp4+ygc2O\n9I1pVFQUs2fP5ocffqBcuXJ89913GcYtVqwYP/74IxcvXuR///sfrVu3znT5vbiBv3r1Kj/99BPF\nirWzcqYAACAASURBVBVj1KhR7N69mx49erB69WpsbW3ZuXMnMTEx9O7dm7Zt22b7PYic8fHxYdeu\nXdStW5fKlStTsmTJDONktpf7ypUrPHnyRLnQqGzZsvTo0YO9e/fSpEkTzM3NuXPnDtHR0djZ2eHh\n4fHSDJGRkTRp0gQTExNKly7NggULqFChAmFhYTrjPX+qSL169WjcuDHnz5/XadxezP26Q2KlS5em\ne/fuyrKYO3cujx49Qq1Wc/XqVTZs2ICZmRm1a9fGy8vrldNLfx/PS0xMxMfHJ8M4ycnJpKamsnjx\nYsqVK6c8v2vXLuW8sbZt27Jjxw58fX1f+R6E4f36669MmzZNqZcxY8bQtm1bnT14o0aNwtzcnCZN\nmmBtbU2HDh2ws7MDoG7duly7do169eoBYG9vz4ABAwBo164dmzZtIigoSOdvB+CXX35h+PDhuLq6\nAjB8+HDWrVtHREQEpUqVyjRr8+bNlXOKx40bR4MGDQgODkalUjF27FjMzc1f+j779eunHK2rW7cu\n9vb2SlPXsmVLnT2zXbt2VX4eM2YMzZo14+nTp1hbWwPg7e1NrVq1AChSpAg+Pj78/vvvNGvWjJiY\nGE6fPs2MGTMyzbFs2TI2bNjAmjVruHXrFm5ubsycOZPq1auzZ88eGjdurBxhs7W1xdbWFni2HWrV\nqhXVq1cHoGPHjsrRl2PHjuHq6qp82G7fvj3ff/89R48epWHDhly6dIlVq1Zhbm5O1apV6d69Ozt3\n7qRBgwYvXV7GVugaT5VKxbvvvsvevXsJDAxk8+bNOo3n48ePmTFjBnfu3MHMzIzY2Fj+++8/5Uq9\n9GajWLFiuLq6cvfuXRwcHLh06ZLSXALKhRAqlYqWLVsqRVOtWjXu3bsHwNGjR7ly5QqbNm0CICkp\niVKlSlG8eHHKly/P1KlTadKkCZ6enlhZWWX6fl42jXQdOnR46QUPHTt2pFmzZvzxxx+cO3eOoUOH\nMnPmTNq3bw9k3JCXL19e2TDfvn2b//77T+dTbEpKCrdu3eLu3bvcu3ePMWPGKM+ZmJhw584dpdBy\n4/Lly1SrVk3ZEHbt2jXDIdL091CjRg0iIyNJSUl55YorXdOmTSlWrJjy2vTDHcHBwUybNg14tsJo\n2bJlvj1/pqBRqVT4+Pjg6+tLWFgYPj4+WV724eHhGRotjUZD3bp1AZg9ezZfffUVXbp0oUyZMowZ\nMybTc4zh2RGBFy/Kyczx48dZvXo1t2/fRqPRkJSUxFtvvZWlvC/j6Oio/Jz+oSkhIYHHjx9jY2OD\nhYWF8nypUqWIiIh46bQyex8vXiGcPk5KSgrLly9n3bp1tGnTBhMTEy5cuEB4eLhyuLNNmzYsXbqU\n69evKxt7kT+Eh4czbtw4nQ/XZmZmPHr0SHn8/DmIFhYWGR4/fyTpxQ98Li4umZ5mcf/+fRYuXJhh\nvfzgwYOXNp4nTpzIdFtlZ2f32nX3695DQkICAGlpaXzxxRf8P/buPCzKev8f/3M2BhhmZEBkV0zJ\nXHNNLRVxX3NJ8zqWS5aejn3qaKbVKVM7tpwWj5mWWe5ZaZ7ASkTMElA7JzM0LVRccAFZlIFh2IZZ\nvn/44/45gjrMPsPzcV1cwD333PeTG14zL+7tvW/fPmg0GmG7aDQaKBQKiEQihIeHWyx79OjRmDBh\nAqqqqrB37150797doh5vplKpMG/ePMybNw+lpaV477338Nxzz2H//v0oKChATEyMVT+Dv7+/kLmo\nqKjeNouKikJxcTGKi4vRrFkzi/4gMjISf/zxxx23l7s1ycbz4YcfxmOPPYYePXpY/McB3Dgcm5iY\niA8++ADAjb0LNTU1wvP9/PyEryUSicW5k7d7M7z5OWKxGEajUfh+1apViI6Orvecbdu2ISsrC7/8\n8gumTJmCtWvXNnhY707LAHDbhrVOs2bNMHz4cAwfPhwRERFISUkRmrZbD9fdvCyz2Yzg4OAG91xm\nZGTg3nvvbfBczlv3DjlL3TaXSCQAbpzjercXL5FIVO/3q9frG5yXTadrRUZGIiYmBgcPHsTrr7/e\n4DwNHV6OiIhAdHQ0vv/++waf07JlS7zzzjsAbpy+8fzzz+PgwYPw9/e3Kader8fzzz+Pt956C4mJ\niZBIJPj73/9+x78Xew6Lh4WFQavVorq6Wsh89epVhx1ql8lkmD9/vrDHedy4cdi1axfMZrOwB7bO\nrl277no4lVwrIiIC//znP4U9eDez5bW4qKjI4vurV68iMTGx3nyRkZH461//6pALmxx5nURKSgoO\nHDiAzz77DFFRUdBqtejXr98d6zMiIgJdunTBDz/8gO+//x5Tpkyxal3BwcGYMWOGcJQsIiLCpgt2\nW7Rogf3791tMy8/PR79+/RAWFoaysjJUVlYK789Xr16t1zx7miZ3jidw43Dbs88+2+B9/srLyxEV\nFQXgxj2wLl26dNflBQYGomvXrhaHfOsOtd/JwIED8dlnnwmHPTQaDfLy8oQ9GT179sTcuXPRtm1b\n4YpShUJhcR+42y3DGhkZGUJjZTQacfr0aeE/sqCgoDveby4uLg7+/v4WF32cP38eFRUV6Nq1Ky5d\nuoQjR44Ij9UVXFBQEKqrqy2a78bq3LkzsrOzhb2RN5+gfTe3bj/g/28ib33xufkQaK9evYT1aLVa\nHDhwwOVXVTd1y5Ytw2effdZgU3i7w9WdO3dGYGAgNmzYIPzd5eTkCHsEvvvuO5SUlAC48bcpEonu\nekukO6mtrUVtbS2Cg4MhFouRmZmJn3/+WXg8NDQUZWVl0Ol0FtPy8/Nt+mcmKioKHTp0EO7WcOzY\nMWRkZDj0b1Mmk2HGjBnYuHEjampqkJaWhiVLlmDnzp3Cx8svv4yUlBS76poc79FHH8WqVauE8w1L\nSkrw008/NWoZN/9dlpSUYNu2baitrcXevXtx4cIFi3Pv60yePBmffvqpcOFOeXk59u7da8dP4hiV\nlZXw8/NDs2bNUFlZiVWrVlk8frsaHDt2LDZs2ICzZ89aXNh0qxUrVuDs2bMwGAyoqKjA9u3b0apV\nKzRr1gyjR4/Gf//7X+zduxcGgwGlpaU4ffr0HdcL3DgFITc3FykpKTAYDEhNTcWFCxeQkJCAiIgI\n3H///Vi5ciX0ej1Onz6NpKSkeufAe5om2XgCwKRJkxo8LDRv3jy8//77mDx5MtLS0qw+dPTWW28h\nKysLEyZMwKRJk5CUlCQ8drs3gRdffBESiUS4nVHdFa/l5eWYN28eHnnkEUyYMAHNmzcX/tinT5+O\nJ598Eo8++ih0Ot1tl2GNX3/9FZMnTxYuiJJKpfi///s/ADcKLSUlRbi46NafQyqVYvXq1UhNTRVy\nvvnmmzAYDFCpVPjwww/x8ccfY9KkSRg3bhzWrl0L4MYe1lGjRmHixIm3vbhIq9ViyJAhwsecOXMs\nzsVs3rw5Fi9ejLlz5+LRRx+FRqOBVCq1OG/zZjd/f/P2q2tA6x6/9XzPm79/+umnUVJSgocffhjz\n589Hx44dhUPy5BqxsbEWN1S/3e/q5sckEgnWrFmDU6dOYeTIkRgwYACWLVsmNH6HDx/GhAkT0Lt3\nb7zzzjt45513LPZ63+xOzVzdYwqFAi+99BJeeOEFPPTQQ9izZw8GDhwozHfPPfdg5MiRGDlyJB56\n6CFcu3ZNuKCpX79+De5NaWi9N097++23cfz4cfTv3x+rV6/G8OHD77h335qm9NZ5xo8fD41Gg59+\n+gkBAQF4+OGHERoaKnyMHz8eRqOxwVvgkPs8/vjjGDhwIObMmYM+ffrg8ccft7hbSWP/Fjp37oyL\nFy8iISEBq1evxooVKxo8fWrw4MGYNWsWFi5ciL59+2LixIkWF+jcaR3WPNaYf6xufm0YO3YsIiMj\nMXjwYEycOBH333//HV9H6gwZMgQFBQUYNGiQxWktt6qpqcG8efPw0EMPYdSoUSgsLBSa28jISHz0\n0UfYsmUL+vfvj8mTJ+PMmTO3XW/d98HBwVizZg02b96MAQMGYNOmTVizZo2w3d955x3k5+dj0KBB\nmD9/Pp555hn07t37jj+Pu4nMXnTM8IUXXvC4G1yTe9x8aCEpKQnJycnYvHmz09ZnMBhgMpng5+cH\nnU6HGTNmYNGiRUKB22LTpk147733HJjSPqwv3/DCCy+gTZs2FudYN1WsMcdJTk5GUlKSU19nPdno\n0aPx2muv2fWa72tsra8md44n+YZt27YhLS0NBoMBwcHBWLp0qVPXV3dLC5PJhJqaGowePZovQOQR\n/vjjD6hUKkRHR+PQoUM4cOAAZs+e7e5YRD7jhx9+gEgk4mu+g3hV4ymRSLBu3Tqr5h0/frzFfSVt\nERsbi4ULF+Ldd9+1uJlrYzGLc7IMHTrUIsu+ffucmmXw4MEW39/8t2jLNnHniBYNaUx9Afb//hz1\nd9TUs1y4cAEHDhxAdXU1goKC0L9/f6SnpyM9Pb1JbxfAu2vM016r09PTUVBQ0KjXCGdlceV2+eab\nb6DRaDB06NB6P7un/Y5cncXW+vKqQ+35+flWzxsQEHDbYROtJZPJEBYWJtyOx1bM4vtZbMlRdxGb\np2hMfQHu2WbMwixNpcZ86fWRWXwzi6311WQvLiIiIiIi12LjSUREREQuwcaTiIiIiFyCjScRERER\nuQQbTyIiIiJyCZfcTqmsrAxJSUmoqKgAAPTo0QN9+vQRHj98+DDS0tKwaNGiu44tTkRERETeySWN\np1gsxvDhwxEZGYmamhqsW7cObdq0EQa4P3fuHIKDg10RhYiIiIjcxCWH2pVKJSIjIwEAcrkczZs3\nF8bJ3rt3L4YOHeqKGERERETkRi4fuUij0aCgoADR0dE4deoUVCoVIiIi6s2n1Wqh0+kspun1eigU\nCqvWI5FIIJPJ7MoqlUotPtuKWXw/i6NyuIq99QV41jZjFmbxNHwPY5ammuWu63Hq0m9RU1ODHTt2\nYMSIERCJRMjMzMS0adManPfo0aNIT0+3mJaQkIDExERXRLWgVqtdvs7bYZaGeUoWT8lxN6yvhjFL\nw5il8VhjDWOWhjWlLC4bMtNoNOKLL75A27Zt0bdvXxQWFmLLli1Ch67VaqFUKjF79mwEBQXZ/d+i\nXC5HTU2NXZmlUinUajU0Gg0MBoPNy2EW389iS46wsDCb12cvR+zxdMc2YxZmaSo15kuvj8zim1ls\nrS+X7PE0m83YtWsXwsLC0LdvXwBAeHg4Fi5cKMyzcuVKzJkzR7iqXaVSQaVSWSwnPz/f6rFMpVKp\n3WML1zEYDHYti1maThZ7c7iKvfUFeNY2YxZm8TR8D2OWpprlblzSeF66dAm///47wsPDsXbtWgDA\n4MGDER8f74rVExEREZEHcEnj2apVKyxduvSO88ybN88VUYiIiIjITThyERERERG5BBtPIiIiInIJ\n77ghGhEReT2tVotvv/0W/v7+mDRpkrvjEJEbcI8nERE5jdlsRmZmJubMmYPevXsjPT0dUVFR7o5F\nRG7CPZ5ERORwBoMBu3fvxpo1a2AwGDBr1iwsWbIEISEh7o5GRG7ExpOIiBymqqoK27dvx7p16xAe\nHo5FixZh8ODBCAwMRFVVlbvjEZGbsfEkIiK7Xb9+HRs3bsSWLVvQs2dPrFy5Eg888IC7YxGRh3HZ\nkJmOcP36dYjF1p2WKhaLYTKZ7FqfSCSCn58f9Ho97NlMzOL7WWzJ4Ulj8wKNqy/APduMWTwzy+nT\np/Hwww9j1KhRmDt3boODg7DG+B7GLL6Vxdb68qo9no0ZhzQgIMDuwzoymQzBwcGoqKiwa/goZvH9\nLLbk8LQ3xcaO8+uObcYsnpelqKgIjz76KF555RVMnjwZABpcJ2uM72HM4ltZbK0vXtVOREQ2qaio\nwIwZMzBlyhSh6SQiuhM2nkRE1GgGgwFz585Fhw4dOOQxEVnNqw61ExGR++Tn5+PQoUPIzMzEwYMH\n0alTJ7z99tsQiUTujkZEXoKNJxER1VNRUYHff/8d2dnZOHToEI4dOwa9Xo++ffuif//+WLBgAVq1\nauXumETkZdh4EhERzGYzjh8/ju+//x4///wzTp8+jc6dO2PAgAGYNGkSlixZgtjYWO7dJCK7uKzx\nTE5ORk5ODhQKBebOnQsAuHLlClJSUmAymSAWizF69GhER0e7KhIRUZN04cIFFBUVobKyEhUVFcjO\nzkZycjIAYNy4cXjttdfQpUsXqFQqhIWFobi42O4r7ImIABc2nt26dUPv3r2RlJQkTNu3bx8GDRqE\ntm3bIicnB/v27cPMmTNdFYmIqMkoKSlBUlISvv76axQVFaFly5YIDAyEQqFAbGws1qxZg/vvv597\nNInIqVzWeLZq1QoajcZimlKpRHV1NQCguroaSqXSVXGIiHxaSUkJTpw4gcOHD+PIkSPIzs7GkCFD\n8I9//AMPPfQQJBKJuyMSURPk1nM8hwwZgg0bNiAtLQ1msxlPPfWU8JhWq4VOp7OYX6/XQ6FQWLVs\niUQCmUxmVz6pVGrx2VbM4vtZHJXDVeytL8Czthmz3DhH8+zZs0hNTcXevXuRnZ2Nnj17okePHnj+\n+efRq1cvBAUFuSRLQzzpd+QKfA9jlqaa5W5cOmSmRqPBl19+KZzjuXnzZjzwwANo3749/vjjDxw9\nehTTp08HAPz0009IT0+3eH5CQgISExNdFZfIZ7G+fENOTg5++OEHZGZmIiMjAyKRCGPHjsXDDz+M\ngQMHwt/f390RmyzWGFHD3PqvY15eHtq3bw8A6NChA7799lvhsR49eqBdu3YW8+v1ehQXF1u1bLlc\n3ughAG8llUqhVquh0WhgMBhsXg6z+H4WW3KEhYXZvD572VtfgHu2GbMAJpMJ+/fvxyeffILs7GwM\nGjQIffv2xd///ne0bt1aOEezvLwcer2+yWyXhnhzjfnS6yOz+GYWW+vLrY1nSEgIcnNzERcXhwsX\nLiA0NFR4TKVSQaVSWcyfn59v9ZWVUqnUYVdhGgwGu5bFLE0ni705XMXe+gI8a5s1hSwVFRXYsWMH\n1q9fj6CgIDz11FMYO3Ys5HK5xXNckcUWnpTFFfgexixNNcvduKzx3LlzJ3Jzc1FZWYkVK1YgMTER\nY8eORUpKCgwGA2QyGcaOHeuqOEREXiE3NxebN2/Gjh078NBDD2HFihXo1asXrz4nIq/kssZz0qRJ\nDU6fPXu2qyIQEXk0k8mEK1euIDMzE9999x3S09Oh1Wrx6KOPYu/evYiJiXF3RCIiu3jH5YFERD6m\ntLQUJ0+exMmTJ/HHH3/gzJkzOHfuHFQqFbp164Y+ffpg6tSpaN++PcRisbvjEhE5BBtPIiIXuH79\nOn7++Wf8/PPPOHz4MPLy8tChQwd07twZ/fr1w6xZs9CmTRuEhoZytCAi8llWN556vR7//e9/cfXq\nVUyZMkW4P1lj7wtHRPZjPXo2s9mMc+fO4ddff8WRI0fwyy+/oLi4GL169cKDDz6IlStXolOnTryJ\nuwdjjRE5h1WN54kTJ/Dwww9DLpfjypUrmDJlCtLT07FlyxZs377d2RmJ6CasR890+fJlpKam4pdf\nfsF///tfBAYGolevXujZsydmzZqF++67j42ml2CNETmPVScOPf3001i2bBlOnTol3Bl/4MCByMzM\ndGo4IqqP9egZDAYDjh8/jlWrVmHEiBEYPXo0Tp8+jYkTJ2Lv3r343//+h9WrV2PmzJno2LEjm04v\nwhojch6r9nj++eefmDZtmsW0wMBAVFVVOSUUEd0e69F9amtrsXXrVvzwww84evQooqOj8eCDD2Lx\n4sXo3bs3pFIpAgIC+LvwcqwxIuexqvFs1aoVfv31V/Tq1UuYduTIEcTHxzstGBE1jPXoHr/99hsW\nLVqEFi1aYMaMGVi9ejVCQkLcHYucgDVG5DxWNZ7Lly/HmDFj8Ne//hV6vR5vvvkm1q5di08//dTZ\n+SzI5XKrbysiFosREBBg1/pEIhEqKyshk8kgldp+AwBm8f0sjsphDWfVY2PqC/CsbebMLDqdDsuX\nL8euXbuwfPlyTJw48Y43b28q28Wbs9yNJ9SYL70+MkvTynI3Vi15zJgxSE1Nxbp165CQkIBLly4h\nKSkJPXr0cFqwhjRmHFJHHO6SyWQIDg5GRUWFXbc1YRbfz2JLDrVabdO6nFWPjR3n1x3bzNVZjh8/\njmeeeQY9evTA/v37oVarUV1d7ZYstmjqWby5xnzp9ZFZfDOLrfVldUvbrVs3fPzxxzathIgci/Xo\nXCaTCZ988gk+/vhj/POf/8S4cePcHYlcjDVG5BxWNZ6LFy++7aGl119/3aGBiOjOWI/OYzKZsH//\nfqxevRomkwm7d+9GbGysu2ORi7HGiJzHqsbz8uXLFkV49epVZGRkYMKECU4LRkQNYz06nl6vxyef\nfIL3338ffn5+mD17NiZMmOD0cwnJM7HGiJzHqlfVTZs21ZuWmpqKL774wtF5iOguWI+OdfnyZcyd\nOxdqtRr/+te/8MADD9zx4iHyfawxIuex/hLWWwwdOhTJycmOzEJENmI92iY1NRWjR4/GuHHjsG/f\nPvTr149NJzWINUbkGFbt8Tx//rzF95WVldi2bRtatmxp9YqSk5ORk5MDhUKBuXPnAgDS0tJw5swZ\nSCQSqNVqjB8/Hv7+/o2IT9T0OKIeCfj3v/+N7du3Y9OmTejduzcbThKwxoicx6rGs23bthbfBwYG\nomvXrti8ebPVK+rWrRt69+6NpKQkYVqbNm0wZMgQiMVi7Nu3D5mZmRg6dKjVyyRqihxRj01dSUkJ\nPv30U6SnpyMsLMzdccjDsMaInMeqxtNkMtm9olatWkGj0VhMa9OmjfB1TEwM/vzzT7vXQ+TrHFGP\nTd2OHTswdOhQNp3UINYYkfPYfI6no2VlZXE4MiJyOpPJhK1bt2L69OnujkJE1OTcdo+nNfeuE4lE\nuHTpkt0hMjIyIJFI0KVLF2GaVquFTqezmE+v10OhUFi1TIlEAplMZleuulup2HtLFWbx/SyOynE7\njq5He+sL8Kxt1pgsP/74I5RKpcV5ne7K0hBmcX6WhnhajfnS6yOzNK0sd13P7R7YunWrU1dcJysr\nCzk5OfX2Phw9ehTp6ekW0xISEpCYmOiSXDezdVgoZ2CWhnlKFmflcHQ9NuX6+vLLL/Hss8+iRYsW\nbs9yJ8zSMNZY4zWF358tmKVhzs4iMpvNZqeu4SYajQZffvmlcFV7Tk4O0tLSMHPmzHr/Bdr736Jc\nLm/02NO3kkqlUKvV0Gg0MBgMNi+HWXw/iy053Hl+oSP2eLpjm9mbJS8vD4MGDcJvv/1m8bO6I8vt\nMIvjsnhzjfnS6yOz+GYWW+vL6v2pWVlZyMzMxPXr13Fzr2rt8GE7d+5Ebm4uKisrsWLFCgwcOBAH\nDx6E0WgU/tOMiYnBmDFjAAAqlQoqlcpiGfn5+VYNXA/c2IDWzns3BoPBrmUxS9PJYm8Oa9lbj/bW\nF+BZ28zaLJs3b8b48ePh5+fX4PyuzHI3zOK8LNZwd4354usjszSNLHdjVeO5bt06zJ8/H8OGDUNK\nSgpGjRqFtLQ0jBs3zuoVTZo0qd607t27W5+UiAA4ph6botraWnz55Zf48ssv3R2FPBxrjMh5rLqq\n/V//+hf27NmDpKQkBAYGIikpCTt37uQ4xkRuwHq0zfr163HvvfeiXbt27o5CHo41RuQ8VlVRcXEx\nBgwYAAAQi8UwGo0YMWIEpk6d6tRwRFQf67HxfvvtN3z00UdISUlxdxTyAqwxIuexqvGMiYnBhQsX\n0Lp1a8THx2PXrl1o3rw55HK5s/MR0S1Yj41TVlaGZ555Bm+//TZiYmLcHYe8AGuMyHmsajwXLVqE\n7OxstG7dGkuWLMEjjzwCvV6PVatWOTsfEd2C9Wg9s9mMhQsXYtCgQRg1apS745CXYI0ROY9VjWdW\nVhYee+wxAMDIkSOh0Wig1+uhVCqdGo6aNrPZjPPnzyMvL0847EWsx8b4/PPPkZuby4aBGoU1RuQ8\nVp8pPX78eAQGBuKxxx7D1KlTeYI+OYTJZMK1a9dw9epVi4/s7GzhXovFxcX47bffPOoGu+7GerTO\n119/jcWLF8Pf39/dUcjLsMaInMOqxvODDz7AihUr8OOPP+KLL75Anz59cM8992Dq1KlYsGCBszOS\nlzIajSguLkZ+fn69xrLuo7CwEEqlEhEREYiKikJUVBQiIyPxl7/8Be+++y4iIiIwfPhwXLx4kY3n\n/4f1aL2ioiKrhkIkuhlrjMh5bBq5KC8vDzNnzsT+/fthMpmckatB169fh1hs1R2gIBaL7c4mEong\n5+cHvV4PewZ48sUsYrEYly9fRl5eHvLy8pCfny98rvsoKiqCWq1GdHS00FDWfR0dHY3o6GiEh4ff\ndW/UE088gTFjxuCRRx5pMIsnbBdbcjiqkXZUPTamvgD3bLPGZDGbzYiOjsbZs2cRGBjo1iyNwSyO\ny+LNNeaL7xvM4ltZbK0vqw+163Q6JCUl4csvv8SBAwcwcOBAbNmyxaaV2qoxw0EFBASgqqrKrvXJ\nZDIEBwejoqLCrrv4e1uW2tpaFBUVCQ3k1atXLfZaFhQU4Nq1awgNDUVkZKTwERUVhU6dOglNZnh4\nOPz8/O6a5W55YmNjcebMmQbn85TfkS057HlTdEY9Nna4NXdss8ZkKS0thZ+fH0Qi0V1zOjtLYzCL\n47J4c4152/sGszS9LE5tPCdPnoyUlBR0794dU6dOxebNm906Bi7ZTq/X4/LlyxaN5K2HwktKShAa\nGio0kHWHwHv27InIyEjExsaic+fOKC0tdcnQdXFxcfjf//7n9PV4C9ajdQoLC9GiRQt3xyAvxBoj\nch6rGs+ePXvi/fffR8uWLZ2dh+xQXV2NgoKCBpvJuo/S0lK0aNHCYi9ly5Yt0bt3b+E8yxYtWtxx\nhA6ZTAaZTOaynysuLg7bt2932fo8HevROmw8yVasMSLnsarxfPHFF52dg+7CaDQ2OP3s2bN4VHY9\nUAAAIABJREFU6aWXcPr0aeh0OoSHhwsNZWRkJO655x7069dPaDRjY2Oh1+tdnN4+cXFxuHjxortj\neAzWo3WKiooQHh7u7hjkhVhjRM7DgWc9kNFoxI4dO5CSkiLsqdRqtXj88ccxf/58YS/O999/j5df\nfhkLFizAxx9/jNDQ0LueuC6RSFzxIzhUeHg4tFotKioqoFAo3B2HvERRURH3eBIReRg2nh7EbDbj\nxx9/xBtvvIHg4GA89dRTaNmyJSIjIxEYGIiNGzdi0KBBeOyxx1BTU4PU1FRs27YNXbp0cXd0pxKL\nxYiLi0Nubi46duzo7jjkJQoLCxEZGenuGEREdBOPaDyrqqrw7bffori4GAAwbty4JnfvvaqqKsyZ\nMwcXL17Eq6++iqFDh0IkEgmPy2QyLF++HJMnT8bbb7+Nqqoq7Nmzp8nc27JVq1ZsPKlRioqK0K1b\nN3fHICKim3hE45mamor4+HhMmTIFRqPRJVdKe5La2lo8/fTTCA4OxoYNG+544U5UVBTef/99F6bz\nDDzPkxqLFxcREXke6+8W7STV1dW4ePEiunfvDuDGOYhNaXg7s9mMRYsWwWQyYcWKFS69Wtyb1B1q\nJ7IWG08iIs/j9j2eGo0GCoUCycnJKCgoQFRUFEaMGHHHG4/7krfeegs5OTnYsWMHm847iIuLw3ff\nfefuGORFeFU7EZHncXvjaTKZcPXqVYwaNQrR0dHYs2cPDh48iJ49e0Kn01nMq9frrb6qWSKR2N3I\n1d3L8k73tLQny9q1a5GWlobvvvsOzZo1c2uWxnBHlrZt2+LixYv15veU7eKoHK6i1Wrtqi/As7bZ\nrVnqfja1Wm1xrrQ7sjQWszg/iyvYW2Pe+lrNLMxyNzaN1e5I5eXlWL9+PebNmwcAuHjxIg4ePIio\nqCikp6dbzJuQkIDExER3xHS4bdu24eWXX8bBgwd5k2IrGAwGBAUFobS0tEmdiuEsP/30k0/X15kz\nZzBq1CicPXvW3VGoifL1GiOyldv/dVQqlVCpVLh27RqaN2+O8+fPo0WLFujRowfatWtnMa9erxeu\nfL8buVze6LGnbyWVSqFWq6HRaGAwGGxezq1ZfvzxR8ybNw/ffPMNAgICrPqZnJXFFu7KEhMTg6NH\nj+Lee+91e5Zb2ZLDnUPw2VtfgHu2mbVZsrOz0bx5c6t/HmdmaSxmcVwWb64xb36tZpamkcXW+nJ7\n4wkAo0aNwjfffAOj0Qi1Wo3x48fD398fKpXKYr78/Hyrr3iXSqUOuzreYDDYtSy9Xo/q6moAwMmT\nJzF37lxs2LABbdq0afRy7c3iSdulsVlatWqFnJwctG7d2u1ZbsfeHK6iUqnsqi/As7bZrVny8vLQ\nokULl9dXQ1lsxSzOy+IK9taYN79WM4t9WcxmM6qrq6HValFeXg6tVmvxUV5ejrKyMuH7srIy3Hvv\nvVi8eLHDsziDRzSeERERmDNnjrtjOFx2djaWLFmCI0eOCCMKyeVyrFy5Er169XJzOu/DK9vJWryi\nnYhczWQyobKyEjqdDjqdDhUVFSgvLxc+100vLy8XPiorK1FVVYWSkhKhkdTpdJBIJFAqlcJR4bqv\ng4ODha/j4+OFf3Aa2iHjqTyi8fQ1JSUleO+997B79248//zzSEpK8or/0D1dXFwczp8/7+4Y5AV4\nRTsRudL8+fPx9ddfw9/fH0FBQVAoFFAqlQgKCkJQUJDwtVKphEKhQEREBJRKJZo1a4aWLVvCZDIh\nICBAaCobe2efgIAAVFVVOemncyw2ng5mNpvx+OOPo3v37jhw4ADUarVDd8c3ZXFxcfjxxx/dHYO8\nQFFREe677z53xyCiJsBgMGDPnj04duwYmjdv3qjnymQyhIWFobi4uMn0CWw8HUwkEuE///kPAgIC\n3B3F5/BQO1mrsLCQezyJyCVOnDiB6OjoRjedTZXbRy7yRWw6nSM2NrbRF8BQ01RUVMRzPInIJX7+\n+Wf07dvX3TG8BhtP8hp+fn4IDw9HXl6eu6OQh2PjSUSuwsazcdh4klfh4Xa6m6qqKlRXV0OtVrs7\nChH5OIPBgCNHjqBPnz7ujuI12HiSV2HjSXdTVFSEsLAwq4bKJCKyx8mTJxEVFYXQ0FB3R/EaXnVx\nkVwuF+6HeTdisdjucy1FIhEqKyshk8nsGruUWRyXZdCgQcJtJ9yd5WaOyuFOjakvwLO22c1ZSktL\nERER0ahszspiC2ZxfhZ34XuY72X59ddf0b9/f5sz+eJ2uRuvqt7GDAfliHtayWQyBAcHo6Kiwq4L\nWpjFcVmGDRsGAMLzPGW72JLD0w4FN3a4NXdsM2uyXL58GWFhYY3K5qwstmAWx2Xx5hrz9tfqppIl\nIyMDjz76qM2ZvHm72FpfPNRORD6FFxYRkSvw/E7bsPEkIp/C4TKJyBVOnDiBiIgI3r+zkdh4EpFP\n4c3jicgVDh06xNso2YCNJxH5FB5qJyJXOHToEA+z24CNJxH5lKKiIu7xJCKnMhqNvHG8jbzqqnYi\norvhoXYi32Q2m1FbW4uqqiro9XrU1tYKn+u+vnX6zZ/rPoxGI/z8/FBSUoLq6mro9XrU1NRYzHPz\n9zU1NfUer6qqQkxMDMLCwty9WbyORzSeOTk5SE1NhdlsRvfu3dGvXz93RyIiL6TX61FeXs6bORO5\ngNlshtFoRG1tLQwGA2pra2EymWA2m2EymWA0GoXpZrMZFy9exNWrV1FeXo6qqirodDrodDqUl5ej\npqZGaCCrqqpQWFiIgoICFBYWQqfTCc2jWCyGn58f/Pz8IJVKha9lMhlkMlm9r29+vO5rf39/BAcH\nw2AwQCqVQqlUIjQ0FHK53OI5N38vl8vrPR4ZGenuX4FXcnvjaTKZkJKSgunTp0OlUmHdunVo164d\n/4sgokYrLi5GaGhoo26ET9RU6HQ6nD9/HmfPnsW5c+dQWloqNIhGoxGVlZXCR1VVlcWevrqmsq7R\nrNsTKBKJhBuOy2QyiMVii4+66X5+flAoFJBKpfD390dAQACCgoKgVCoRFBQEf39/+Pv7QyaTwd/f\nHwkJCQgPD0dERARUKpXQTCoUCofcrzIsLAzFxcVuv3dmU+T2xjMvLw8hISHCjUg7deqEU6dOsfEk\nokbjhUVEDdNqtejWrRvuuecetGnTRvi4uUEMDAxEYGAgAgICEBAQIDSDSqUSBoMBEokEEokEMplM\n2PsnkUisWr+jmj3yfm5vPLVaLZo1ayZ8r1KpkJeXB61WC51OZzGvXq+HQqGwarl1xWGPuiGj7B06\nill8P4ujcriKvfUFeNY2q8vSuXNnrF+/vtG5nJHFVszi/Cyu4GnvYaGhocjNzbXpaIBcLm/0yGZ3\nymIPX3rf8NUsdyMym81mp67hLv7880+cPXsWDz/8MADg+PHjyMvLQ0BAANLT0y3mTUhIQGJiojti\nEvmUn376ifVF5ESsMaKGuf1fR6VSibKyMuF7rVYLlUqFLl26oF27dhbz6vV6FBcXW7VcR/2Hplar\nodFoYDAYbF4Os/h+FltyuPN0kh49ethVX4B7thmzMEtTqTFfen1kFt/MYmt9ub3xjIqKQklJCTQa\nDZRKJU6ePIlJkyZBpVJBpVJZzJufn2/1uSFSqdRh55HUXZVnK2ZpOlnszeEq9tYX4FnbjFmYxdPw\nPYxZmmqWu3F74ymRSDBq1Ch8/vnnMJlM6N69Oy8sIiIiIvJBbm88ASA+Ph7x8fHujkFERERETsSb\n3RERERGRS7DxJCIiIiKXcPvtlDyZVqvF0aNH0aNHj3oniTMLs3hiDm/iSduMWZjFF3nSNmMWZqnD\nPZ53oNPpkJ6eXu8mwMzCLJ6aw5t40jZjFmbxRZ60zZiFWeqw8SQiIiIil2DjSUREREQuwcaTiIiI\niFxCsnTp0qXuDuGpzGYz/Pz8EBcXB7lczizM4vE5vIknbTNmYRZf5EnbjFmYpQ6vaiciIiIil/CI\nkYuIyDeUlZUhKSkJFRUVAIAePXqgT58+qKysxM6dO1FaWorg4GBMnjwZAQEBAIDMzExkZWVBJBJh\n5MiRaNu2LYAb41onJyfDYDAgPj4eI0eOdGqWyspK7NixA/n5+ejatStGjRolLMvVWc6dO4cffvgB\nRqMREokEw4YNQ+vWrd2S5cqVK/j+++8BACaTCQMGDECnTp3ckqVOaWkp1qxZg8TERDz44IMOyeIt\nWGOOycIac2ONmYmIHESr1Zrz8/PNZrPZXF1dbV61apW5qKjIvHfvXnNmZqbZbDabMzMzzWlpaWaz\n2WwuLCw0f/TRR2aDwWAuKSkxr1y50mwymcxms9n8ySefmC9fvmw2m83mrVu3ms+cOePULDU1NeaL\nFy+ajxw5Yt69e7fFslydJT8/36zVaoVt9N5777kti16vNxuNRuG5b7/9tvC9q7PU+eqrr8w7duww\nHzp0SJhmbxZvwRpzTBbWmPtqjBcXEZHDKJVKREZGAgDkcjmaN28OrVaL06dPo2vXrgCA+++/H6dO\nnQIAnD59Gp07d4ZEIoFarUZISAiuXLmC8vJy6PV6xMTE1HuOs7L4+fmhZcuWkEgkFstxR5bIyEgo\nlUoAQFhYGAwGA4xGo1uyyGQyiMU33ioMBgP8/f0hFovdkgUAsrOzoVarERYWJkxzRBZvwRpzTBbW\nmPtqjIfaicgpNBoNCgoKEBMTg4qKCgQFBQEAgoKChMM+5eXlwgsZAKhUKpSXl0MikViMnFE33ZlZ\n6ohEIovvtVqt27IAwJ9//onIyEhIJBK3Zbly5Qp27doFjUaDSZMmAXDPdqmpqcGhQ4cwffp0HD58\nWHiuo7N4C9aY/VkA1pira4yNJxE5XE1NDXbs2IERI0bUuzry1jcdZrl9lqKiIvzwww+YPn26W7PE\nxMTgmWeeQXFxMT7//HPExcW5JcuBAwfQt29f+Pn5wdzEr4v15r9rT8rCGnN9jbHxJCKHMhqN2LFj\nB7p06YL27dsDABQKBcrLy6FUKlFeXg6FQgHgxmGgsrIy4bl1/1UrlUpotVqL6XWHxZyV5XZUKpVb\nspSVlWH79u2YOHEi1Gq1W7PUCQsLQ0hICEpKStySJS8vD9nZ2di3bx+qq6shEokglUrRvn17h2Tx\nFqwxx2RhjbmnxniOJxE5jNlsxq5duxAWFoa+ffsK09u1a4fjx48DAI4dO4b77rtPmH7y5EkYDAZo\nNBqUlJQgOjoaSqUScrkcV65cgdlsxvHjx4XnOCvLzc+7mTuyVFVV4YsvvsCQIUMQGxvr1iwajQZG\noxHAjStdr1+/jpCQELdkmTVrFubNm4d58+ahT58+6N+/Px544AGHZPEWrDHHZGGNua/GeB9PsovB\nYIBUyh3ndMPFixexceNGhIeHC4dvBg8ejOjoaHz99dcoKyurd+uOjIwMZGVlQSwWN3irl9raWsTH\nx1vcesVZWf79739Dr9fDaDTC398f06ZNQ1hYmMuzpKen4+DBgwgNDRWWMW3aNCgUCpdnOX78OA4e\nPAiJRAKxWIzExETEx8cDcM/vqM6BAwfg5+dX71YvtmbxFqwxx2Rhjbmvxth4+rB3330X//vf/7Bz\n505h2nPPPQexWIzXX38d8+fPx549eyAWi/HEE09g2bJlEIvFOHfuHGbPno3ff/8dIpEIw4cPx5o1\na9CsWTMAQFxcHObOnYvPP/8cOTk5qKioEK7IIyIiIroddgs+bNq0aUhNTRXO7zEYDNi+fTtmzJiB\nGTNmwM/PD+fOnUNWVhbS0tLw2WefCc995ZVXcPXqVWRnZ+Py5cu4dWTVr776Cnv27EFpaSmbTiIi\nIrIKOwYfFhERgf79++Prr78GAKSmpiIsLAzR0dHYs2cP/v3vfyMgIABhYWGYN28evvrqKwBAmzZt\nMHjwYMhkMjRv3hzz589Henq6sFyRSITnnnsO0dHRbh9bloiIiLwHT87zcTNmzMDatWvx1FNP4fPP\nP8e0adNw8eJF1NbWCjeVBW4M09WyZUsAQGFhIf7+97/j4MGDKC8vh8lkQkhIiMVybz4Zm4iIiMga\n3OPp48aNG4fff/8dJ0+exO7du/HYY48hJiYGcrkc169fh0ajgUajQVlZGU6cOAEA+Mc//gGJRIKT\nJ0+irKwMW7duhclksliuq+/NRkRERN6PjaePCwgIwCOPPIKpU6eid+/eiImJQWRkJIYNG4bnn39e\n2KN57tw5ZGRkAAB0Oh0UCgVUKhXy8vLw7rvvuvmnICIiIl/AxrMJmDFjBk6ePIlp06YJ07Zs2QK9\nXo8OHTogJCQEkydPRkFBAQBgyZIl+O2339CsWTOMHTsWjzzyCPdwEhERkd14O6Um4PLly7jvvvtQ\nWFgojM1KRERE5Grc4+njTCYT3n//ffzlL39h00lERERuxavafVhFRQXCw8PRunVrpKamujsOEdmA\no4MRORdrzLW4x9OHKRQK6HQ6nDhxAtHR0e6OQ+Rz3n33XUyaNMli2nPPPYd58+ZBq9XiySefRFRU\nFGJiYrB48WLh7hDnzp3DoEGD0Lx5c4SFheHxxx8XBnoAbowO9s4776BLly5QKpX17ipB1FSwxnwP\nG08iIhtxdDAi52KN+R5uaSIiG3F0MCLnYo35Hp7UQERkB44ORuRcrDHfwj2eRER24OhgRM7FGvMt\nbDyJiOzA0cGInIs15lvYeBIR2YmjgxE5F2vMd3DkIiIiO3F0MCLnYo35Du7xJCKyA0cHI3Iu1phv\n4VXtREQ24uhgRM7FGvM9PNRORERERC7BQ+1ERERE5BJsPImIiIjIJdh4EhEREZFLsPEkIiIiIpdg\n40lERERELsHGk4iIiIhcgo0nEREREbkEG08iIiIicgmvGrlo2bJlKC8vd3cMIodQKpVYsmSJu2MQ\nERG5jFc1nuXl5Zg5c6a7YxA5xKZNm9wdgYiIyKWa7KH25cuXY//+/QCAc+fO4f7774dWqwUAfPXV\nV/jkk0/qPeell1664zI/+ugjfP/99/Wm79q1CxUVFfWmHzlyBImJiZg1axb+8pe/4Lvvvrvj8keP\nHl1v2rVr1/Dee+/d8XmOtGbNGjz22GOYOXMmnnzySbuXl5+fjwMHDlg9/+nTp/G3v/0Ns2bNwrRp\n07Bly5bbzpucnIx169YBAJ544gkUFhbaG5eIiIjs4FV7PB2pe/fuOHbsGAYPHoysrCz07t0bx44d\nw4ABA3Ds2DFMmjTJYn6TyYS33377jssUiUQNTt+1axf69OkDhUJR77GEhAQsXboUlZWVmDhxIsaO\nHduon6N58+Z44YUXGvUcW50/fx7Hjh3Dtm3bAEBo1G1lNBqRl5eHAwcOYODAgXedv7y8HP/4xz/w\nwQcfICYmBgBw+PDh285/8+9DJBLd9vdDRERErtGkG8+6BurYsWOYOXMmfvnlFwwYMAAnT57EsmXL\n8Morr8Df3x+FhYWYMWMGli5dit27d6OiogIvvPACDAYD7r33XmRnZ2PDhg0AgIMHD2Lv3r0oKCjA\nO++8g6KiIpw6dQoLFixAx44d8fLLLzeYR6fTQSaTAbixF/PVV19FTU0NAgIC8MYbb0CtVgMA3nnn\nHWRnZyMiIgJvvvkm8vPzsXTpUnz66af46KOPcOnSJVRUVAjrb926NRYtWoTCwkJIpVI888wz6N69\nO5YtW4bz58/DZDLhxRdfRKdOnfDKK69AJpOhuLgYpaWl+PDDDxESEiJk9PPzw7Vr1/Dnn3/ivvvu\ng0qlAnBjz+3HH38MlUqFvLw8zJ49G8OGDUNubi6WLVsG4EaDvHz5csjlcgwbNgwDBgxAQUEBRCIR\n/vjjDzz55JNYsGABUlJScOzYMcjlckyePBkjRowQ1p+RkYGBAwcKTScAPPjggwCAnTt3IikpCQAw\nadIkTJgw4ba/+5UrV+L48eOora3FnDlzMGDAAJw9exavvfYa1Go1goODERMTg7/97W84cuQIPvro\nI4hEIrRu3RqLFy9uxF8ZERER3azJHmqPiIhAaWkpampqcO3aNfTp0wc5OTkoLCxEcHAw5HI5RCIR\noqKisHr1avTq1Ut47s6dO9GrVy98+umn6NChgzDdbDYjJCQEH374IZ544gl888036N27N+677z6s\nWLGiwaYzIyMDM2bMwJgxYzB//nwAwPr16zF69Ghs3LgRI0eOxGeffQbgxh7CESNGYOPGjZDL5fjp\np5/q7dW7df1lZWUoKCjA5s2bsX79enTr1g379++H0WjE5s2b8dZbb+HNN98Unh8fH481a9YgMTER\ne/futcgaExOD5557Dh9++CFGjBiBlStXCo9pNBqsWLECmzZtwocffgiz2YwVK1bg2WefxcaNG9Gm\nTRvs3LkTwI3G+qmnnsLq1asxffp0DBgwAOvXr0eHDh1w6NAhbNmyBevXr8fw4cMt1l9YWIjw8PB6\n27CkpARfffUVNm/ejE2bNmHbtm3QaDT15jObzTh48CDKy8uxceNGfPrpp1i1ahUA4IMPPsDLL7+M\nNWvWCP8AAMC7776L1atXY8OGDZDL5cjIyKi3XCIiIrJOk208AaBTp0746aefEBoaCrFYDLFYjF9+\n+QXdu3cX5unatWu9512+fBkdO3YEAHTu3FmYLhKJhEa0rrG9mwEDBmDz5s1YsWKFsAc2NzdXWO/9\n99+PCxcuCPPXra9Lly7Izc2tt7xb19+sWTM88sgjePnll7Fs2TIUFRXh4sWLwvJjYmIsDpnfLX9i\nYiI+/vhj7N69G6dOncKRI0cAAO3bt4dYLIZCoUBISAhKSkpw6dIlYT1du3YVfo4WLVogIiKiwe0x\nb948LF68GK+++irOnz9v8VhERAQKCgrqPefKlSuIj4+HVCqFTCZDfHw88vLyGlx+Tk4Ofv31V8ya\nNQvPPPMMamtrUVpaisuXL6NTp07CtgVuNNN5eXl49tlnMWvWLGRlZfE8USIiIjs06caze/fu2LBh\nA7p16wbgRtP1+eefo0ePHsI8YnH9TRQbG4s//vgDAHDy5MnbLt9sNgMAZDIZDAbDHbP069cPIpEI\nv//+O+Li4nDs2DEAN04DaN26tTBf3fpOnDiBuLi4Oy7TbDbDYDBgzJgxeOutt9C9e3ds3brVYvmX\nL18WDpk3lP1mZWVluH79uvAzNWvWTJjv1KlTMBqNqKiowPXr1xESEoJWrVohKysLAJCVlSX8HBKJ\nRFjmrdumT58+eOONNzBx4kSsWbPGYv0DBgzAgQMHcPnyZWHazz//jJiYGJw5cwa1tbWora1FTk4O\nYmJiGvwZ2rZtiwcffBAbNmzAhg0bsHPnTgQHByM2NtZi2wKAWq1GTEwM1qxZgw0bNuDLL7+84yF8\nIiIiurMme44ncGMv3Jtvvmmxd/GTTz6x2Mt566Fs4MY5hAsWLMDhw4fRunVri0OzdfPcfDHL4MGD\n8dprr6Fbt2545plnbptn2rRp+Pzzz7Fo0SK8+uqr+M9//oOAgADhULhEIsG+ffuwYsUKhIeHIzEx\nEfn5+Q1mrFt/SUkJFi5cCIlEAoPBgJdeegnt27cXDvEbjUaLUwBufv6tdDodXn31VZhMJpjNZnTs\n2BEPPPAAjhw5ghYtWmDBggXCHkKRSIR58+bh9ddfh9lsRmhoKN566616y7733ntx+fJlLFiwAE8/\n/bQwT01NDf72t79ZrD8oKAhvvfUW3njjDej1etTW1mL48OHo27cvpkyZghkzZgAApk6diuDg4HoX\nFIlEIvTv3x/Hjh3DrFmzIBKJEB4ejjfffBPPPfccXnvtNQQHB0OpVAq/04ULF+LZZ5+F2WyGSCTC\nokWLcO+99972d0hERES3JzI3tFvIQ73wwgsecx9Po9EIiUSC77//HidOnLjtRUNNwZEjR7B7924s\nXbrU3VFsZjAYIJXe+D9s6dKl6NevH4YMGeLUdW7atMmlt8IiIiJytya9x9NWZrNZ2GMmFouFPZLk\nvXJycvD222/DaDQiOjoagwYNcnckIiIin8PG0wYikQibN292dwyP0atXL4ur/r1R+/bt+TslIiJy\nMq9qPCUSiTASzd2MHz8eycnJdq0vNjYWCxcuxLvvvmtxQUtjMYvvZ7ElR2hoqM3rIyIi8kZedY5n\nfn6+1fMGBASgqqrKrvXJZDKEhYWhuLgYtbW1Ni+HWXw/iy05oqKibF4fERGRN2rSt1MiIiIiItdh\n40lERERELsHGk4iIiIhcgo0nEREREbkEG08iIiIicgk2nkRERETkEi65j2dZWRmSkpJQUVEBAOjR\nowf69OkjPH748GGkpaVh0aJFCAwMdEUkIiIiInIxlzSeYrEYw4cPR2RkJGpqarBu3Tq0adMGYWFh\nKCsrw7lz5xAcHOyKKERERETkJi451K5UKhEZGQkAkMvlaN68OcrLywEAe/fuxdChQ10Rg4iIiIjc\nyOVDZmo0GhQUFCA6OhqnTp2CSqVCREREvfm0Wi10Op3FNL1eD4VCYdV6JBIJZDKZXVmlUqnFZ1sx\ni+9ncVQOIiIiX+bSd8mamhrs2LEDI0aMgEgkQmZmJqZNm9bgvEePHkV6errFtISEBCQmJroiqgW1\nWu3ydd4OszTMU7J4Sg4iIiJP5LKx2o1GI7744gu0bdsWffv2RWFhIbZs2SLsZdJqtVAqlZg9ezaC\ngoLs3uMpl8tRU1NjV2apVAq1Wg2NRgODwWDzcpjF97PYkiMsLMzm9REREXkjl+zxNJvN2LVrF8LC\nwtC3b18AQHh4OBYuXCjMs3LlSsyZM0e4ql2lUkGlUlksJz8/H7W1tVatUyqVWj3v3RgMBruWxSxN\nJ4u9OYiIiHyZSxrPS5cu4ffff0d4eDjWrl0LABg8eDDi4+NdsXoiIiIi8gAuaTxbtWqFpUuX3nGe\nefPmuSIKEREREbkJRy4iIiIiIpdg40lERERELsHGk4iIiIhcgo0nEREREbkEG08iIiIicgk2nkRE\nRETkEi4bucgRrl+/DrHYul5ZLBbDZDLZtT6RSAQ/Pz/o9XrYs5mYxfez2JKDw2sSEVGgg8pdAAAX\nY0lEQVRT49Kx2u3VmCENAwICUFVVZdf6ZDIZgoODUVFRYddoNMzi+1lsycHGk4iImhoeaiciIiIi\nl2DjSUREREQuwcaTiIiIiFyCjScRERERuQQbTyIiIiJyCTaeREREROQSLrudUnJyMnJycqBQKDB3\n7lwAwJUrV5CSkgKTyQSxWIzRo0cjOjraVZGIiIiIyIVctsezW7duePzxxy2m7du3D4MGDcLTTz+N\nxMRE7Nu3z1VxiIiIiMjFXNZ4tmrVCv7+/hbTlEolqqurAQDV1dVQKpWuikNERERELubWkYuGDBmC\nDRs2IC0tDWazGU899ZTwmFarhU6ns5hfr9dDoVBYtWyJRAKZTGZXPqlUavHZVszi+1kclYOIiMiX\nufVdcteuXRg5ciTat2+PP/74A7t27cL06dMBAEePHkV6errF/AkJCUhMTHR5Tk8a2pBZGuYpWTwl\nBxERkSdya+OZl5eH9u3bAwA6dOiAb7/9VnisR48eaNeuncX8er0excXFVi1bLpc3amz3hkilUqjV\namg0GhgMBpuXwyy+n8WWHGFhYTavj4iIyBu5tfEMCQlBbm4u4uLicOHCBYSGhgqPqVQqqFQqi/nz\n8/NRW1tr1bKlUqnV896NwWCwa1nM0nSy2JuDiIjIl7ms8dy5cydyc3NRWVmJFStWIDExEWPHjkVK\nSgoMBgNkMhnGjh3rqjhERERE5GIuazwnTZrU4PTZs2e7KgIRERERuRFHLiIiIiIil2DjSUREREQu\nYXXjqdfrkZGRge3btwMAdDpdvftsEhERERHdjlWN54kTJ9CuXTvMmTMHTz75JAAgPT1d+JqIiIiI\n6G6sajyffvppLFu2DKdOnRJGdxk4cCAyMzOdGo6IiIiIfIdVjeeff/6JadOmWUwLDAxEVVWVU0IR\nERERke+x6nZKrVq1wq+//opevXoJ044cOYL4+HinBWuIXC6HWGzdaalisRgBAQF2rU8kEqGyshIy\nmcyuMbiZxfezOCoHERGRL7PqHXL58uUYM2YM/vrXv0Kv1+PNN9/E2rVr8emnnzo7n4XGDGkYEBBg\n9x5ZmUyG4OBgVFRU2DUaDbP4fhZbcnBcdyIiamqs2n04ZswYpKamori4GAkJCbh06RKSkpIwfPhw\nZ+cjIiIiIh9h9THBbt264eOPP3ZmFiIiIiLyYVY1nosXL4ZIJGrwsddff92hgYiIiIjIN1nVeF6+\nfNmi8bx69SoyMjIwYcIEpwUjIiIiIt9iVeO5adOmetNSU1PxxRdfODoPEREREfkom8dqHzp0KJKT\nkx2ZhYiIiIh8mFV7PM+fP2/xfWVlJbZt24aWLVtavaLk5GTk5ORAoVBg7ty5AIC0tDScOXMGEokE\narUa48ePh7+/fyPiExEREZG3sKrxbNu2rcX3gYGB6Nq1KzZv3mz1irp164bevXsjKSlJmNamTRsM\nGTIEYrEY+/btQ2ZmJoYOHWr1MomIiIjIe1jVeJpMJrtX1KpVK2g0Gotpbdq0Eb6OiYnBn3/+afd6\niIiIiMgzeczYfllZWejUqZPwvVarhU6ns5hHr9dDoVBYtTyJRAKZTGZXprqhD+0dApFZfD+Lo3IQ\nERH5stu+S8bGxt71ySKRCJcuXbI7REZGBiQSCbp06SJMO3r0KNLT0y3mS0hIQGJiot3rayxPGtqQ\nWRrmKVk8JQcREZEnum3juXXrVpcEyMrKQk5ODqZPn24xvUePHmjXrp3FNL1ej+LiYquWK5fLGzW2\ne0OkUinUajU0Gg0MBoPNy2EW389iS46wsDCb10dEROSNbtt4Dhw40Okrz8nJweHDhzFz5sx6hzlV\nKhVUKpXFtPz8fNTW1lq1bKlUavW8d2MwGOxaFrM0nSz25iAiIvJlVp+QlpWVhczMTFy/fh1ms1mY\nbu2QmTt37kRubi4qKyuxYsUKDBw4EAcPHoTRaBT2rsbExGDMmDGN/BGIiIiIyBtY1XiuW7cO8+fP\nx7Bhw5CSkoJRo0YhLS0N48aNs3pFkyZNqjete/fu1iclIiIiIq9m1chF//rXv7Bnzx4kJSUhMDAQ\nSUlJ2LlzJ6/gJSIiIiKrWdV4FhcXY8CAATeeIBbDaDRixIgR+O6775wajoiIiIh8h1W7LGNiYnDh\nwgW0bt0a8fHx2LVrF5o3bw65XO7sfERERETkI6xqPBctWoTs7Gy0bt0aS5YswSOPPAK9Xo9Vq1Y5\nOx8RERER+QirGs+srCw89thjAICRI0dCo9FAr9dDqVQ6NRwRERER+Q6rzvEEgPHjx6Nt27ZYsmQJ\ncnNz2XQSERERUaOIzDfflPMOjEYjfvzxR3zxxRdITk7GPffcg6lTp2LBggXOzii4fv06xGLremWx\nWAyTyWTX+kQiEfz8/KDX62HlZmKWJprFlhwcXpOIiJoaqxvPm+Xl5WHmzJnYv3+/3Y1DY+Tn51s9\nb0BAAKqqquxan0wmQ1hYGIqLi+0ajYZZfD+LLTmioqJsXh8REZE3svpQu06nw9atWzFq1CjEx8dD\nJpNhy5YtzsxGRERERD7EqouLJk+ejJSUFHTv3h1Tp07F5s2bERYW5uxsRERERORDrGo8e/bsifff\nfx8tW7Z0dh4iIiIi8lFWNZ4vvviis3MQERERkY+z+hxPIiIiIiJ7sPEkIiIiIpew6lC7s1VVVeHb\nb79FcXExAGDcuHGIjY11cyoiIiIiciSPaDxTU1MRHx+PKVOmwGg02nU/RqI61dXVKCkpET46duyI\n0NBQd8ciIiJqstzeeFZXV+PixYuYMGECAEAikUAikbg5FXkSo9GIsrIylJaWorS0FBqNRvhcVlaG\n6upqXL16FdevX4dGo0FJSQk0Gg0MBgNCQkKgVqtRU1ODgQMH4p///Ke7fxwiIqImy+2Np0ajgUKh\nQHJyMgoKChAVFYURI0aguroaOp3OYl69Xg+FQmHVciUSCWQymV3ZpFKpxWdbMQtgMBhQVlaGsrIy\naLValJaWorKyEteuXROm1zWWt35UVFRApVIhODgYarUazZo1g1qtRkhICEJCQnDfffeha9euUKlU\nwrSQkBAoFAqIRCIAwK+//oqFCxfe9me3d7s46vdDRETky2waMtOR8vLysH79ejz55JOIjo7Gnj17\nIJfLIRKJkJ6ebjFvQkICEhMT3ZS06TIajSgvLxeaRq1WKzSLt36UlpZaNJF1X1dWVgoNY3BwsPCh\nVqvrfdTtpaxrIJs1awax2L7r4PR6PUJDQ3Hp0iWOkU5EROQmbt89o1KpoFKpEB0dDQDo0KEDDh48\niLFjx6Jdu3YW8+r1euECpLuRy+WoqamxK5tUKoVarRYO29rKHVlqa2tRUVEBnU5n8VFTU4PS0lLo\ndDrh8fLycuHzrV+Xl5ejuroaCoUCKpUKSqUSKpUKoaGh8Pf3R1BQEFQqFZo1a4bY2Fh07NhR+L5u\n3uDgYCgUinrNozXbxWAw4Pr16w7ZLt26dUNKSgqGDRtW7zF7f0e2/K1w9C8iImpq/l97dxvbVNmA\ncfzqunWUvsDmKowNMpSGl8BApmwYQAFBITEYgUSUsUSNX0hw+lGj8kVDRIOa+JaYmAgxMIxKFJlI\nDGOgcYIwWdxQBxls482ttGUDurbn+WDWsAd4Hli7ntL+f8lCejjn7Oppk10559znNr149peTf/75\nRwUFBTp+/LjuvPPOWCG9Wmdn500PPMrOzk7YIKVwOBzXvhKVxe/3q76+XkeOHNHJkydj9zr2X47u\n/+nt7VU4HJbT6ZTdbpfT6ZTT6ZTD4dCIESNihbH/p6SkRA6HQ06nUy6XK7bc5XLJ5XJp+PDhA0pj\nTk6OPB6Pzp8/f9PvKxKJKBKJDMlxkW7uMyovL9eBAweue9Y8UVni/a4AAJDOTC+ekrR06VJ9+eWX\nikQiysvL02OPPWZ2pJSzcuVKHTx4UJMmTdKUKVN01113adq0abFL1v3Fsr9sDhs2LHZ/49Xsdrsu\nXbpkwjswX3l5ud544w2zYwAAkLFSoniOHj1azz33nNkxUtbp06d19OjR2EhuzqgNzj333KOWlhb1\n9PTc9CA1AACQOMxcdBtoaGjQrFmzGDEdJ7vdrqlTp+rQoUNmRwEAICNRPFPIjQa3NDQ0qLy8PMlp\n0lNFRYV++eUXs2MAAJCRKJ4poLu7W6+++qqmTJmi5ubma/6/oaFBFRUVJiRLPxRPAADMQ/E0UW9v\nr959913NmzdPkUhEy5Yt086dOwes4/f71dbWptLSUpNSppd7771XjY2NcT/eCgAA3DqKp4nq6+vV\n0tKib775Rq+//rpWrVql2traAescPHhQ06dPj3u2IfzL6XTK6/WqsbHR7CgAAGQciqeJHn74YX34\n4YcaP368JKmsrExdXV06ceJEbB3u70y88vJy/fzzz2bHAAAg41A8U0hWVpYWL1484Kxn/4h2JA73\neQIAYA7T52q/FV1dXTc9Z3dWVpai0Whcv89ischmsykUCimew3QrWX788Udt2LBBu3fv1uXLl+X1\netXc3CyXy5X0LDdixnFJZJbu7m7NmDFDx48fjz2iKt4sg8nBnPEAgExzWz0Y8lYGhCRihp6cnByN\nHDlSPT09cT20/VaylJWV6e+//9aJEyd08uRJTZgwQVarVX19fUnPciNmHJdEZrHb7aqrq1NfX19s\nm3izDCYHxRMAkGluq+KZCWw2mxYsWKDa2loFg0Eusw+R0aNHmx0BAICMwz2eKWjJkiXatWsXA4sA\nAEBaoXimoAcffFBHjhxRQ0OD7rvvPrPjAAAAJATFMwUNHz5cc+bM0ahRo1RQUGB2HAAAgITgHs8U\n9cQTT6ipqcnsGAAAAAmTEsXzr7/+Um1trQzD0MyZMzVnzhyzI5lu0aJFWrRokdkxAAAAEsb0S+3R\naFTfffedVq9erbVr1+ro0aM6f/682bEAAACQYKYXz46ODuXn5ysvL09Wq1VTp05VS0uL2bEAAACQ\nYKZfag8EAhoxYkTstdvtVkdHhwKBgC5evDhg3VAoJIfDcVP7tVqtysnJiStb/6w2/f8OFlnSP0ui\ncgAAkM5M/ytpsViuu/zQoUOqq6sbsOyBBx7Q/PnzkxFrgFSaYYYs15cqWVIlBwAAqcj04ulyueT3\n+2OvA4GA3G63SktLNXHixAHrhkKhm77/Mzc395am2Lye7Oxs5eXlyefzKRwOD3o/ZEn/LIPJ4fF4\nBv37AAC4HZlePMeMGaPu7m75fD65XC41NTVpxYoVcrvdcrvdA9bt7Oy86Xmws7Oz45pH/GrhcDiu\nfZElc7LEmwMAgHRmevG0Wq1aunSptmzZomg0qpkzZ3ImCAAAIA2ZXjwlyev1yuv1mh0DAAAAQ8j0\nxykBAAAgM1A8AQAAkBQUTwAAACSFxTAMw+wQqSoQCOjQoUMqKyu7ZoQ9WciSijkAAEhlnPH8Hy5e\nvKi6urprZlAiC1lSNQcAAKmM4gkAAICkoHgCAAAgKSieAAAASArr+vXr15sdIlUZhiGbzaaSkhLl\n5uaShSwpnwMAgFTGqHYAAAAkRUpMmZlMfr9fX331lXp6eiRJZWVlqqioUG9vr7744gtduHBBI0eO\n1MqVK2W32yVJ9fX1Onz4sCwWi5YsWaIJEyZIkjo7O/X1118rHA7L6/VqyZIlQ5qlt7dXNTU16uzs\n1IwZM7R06dLYvpKdpbW1VXv27FEkEpHVatXixYs1fvx4U7K0t7fr22+/lSRFo1HNmzdPU6dOjTvL\nYL4rknThwgW9//77mj9/vu6///6EHBMAANKCkWECgYDR2dlpGIZhXL582XjvvfeMc+fOGd9//71R\nX19vGIZh1NfXG7t37zYMwzDOnj1rfPDBB0Y4HDa6u7uNd955x4hGo4ZhGMbHH39snDp1yjAMw9i8\nebPx559/DmmWK1euGG1tbcavv/5q7Ny5c8C+kp2ls7PTCAQCsWP01ltvmZYlFAoZkUgktu2GDRti\nr+PJcqs5+m3dutWoqakxDhw4kLBjAgBAOsi4wUUul0uFhYWSpNzcXBUUFCgQCOjYsWOaMWOGJGn6\n9OlqaWmRJB07dkzTpk2T1WpVXl6e8vPz1d7ermAwqFAopOLi4mu2GaosNptN48aNk9VqHbAfM7IU\nFhbK5XJJkjwej8LhsCKRiClZcnJylJX171c5HA5r2LBhysrKijvLreaQpObmZuXl5cnj8cSWJeKY\nAACQDjLuUvvVfD6fzpw5o+LiYvX09MjpdEqSnE5n7PJqMBiMFQZJcrvdCgaDslqtA2ao6V8+lFn6\nWSyWAa8DgYBpWSTpjz/+UGFhoaxWq2lZ2tvbtWPHDvl8Pq1YsUJSYo/LzeS4cuWKDhw4oDVr1uin\nn36KbZvoYwIAwO0qY4vnlStXVFNTo0ceeeSaUcj/XezIcuMs586d0549e7RmzRpTsxQXF2vt2rU6\nf/68tmzZopKSkqTn2Lt3r2bPni2bzSaDMXsAAFwjI4tnJBJRTU2NSktLNXnyZEmSw+FQMBiUy+VS\nMBiUw+GQ9O/lVr/fH9u2/+yVy+VSIBAYsLz/0vNQZbkRt9ttSha/369t27bp8ccfV15enqlZ+nk8\nHuXn56u7uzshWW4lR0dHh5qbm/XDDz/o8uXLslgsys7O1uTJkxNyTAAAuN1l3D2ehmFox44d8ng8\nmj17dmz5xIkT1djYKEk6cuSIJk2aFFve1NSkcDgsn8+n7u5uFRUVyeVyKTc3V+3t7TIMQ42NjbFt\nhirL1dtdzYwsly5d0ueff66HHnpIY8eONTWLz+dTJBKR9O+I8q6uLuXn58ed5VZzPP3006qurlZ1\ndbUqKio0d+5czZo1KyHHBACAdJBxz/Fsa2vTp59+qlGjRsUuky5cuFBFRUXavn27/H7/NY/I2bdv\nnw4fPqysrKzrPk6pr69PXq93wOONhirLpk2bFAqFFIlENGzYMFVWVsrj8SQ9S11dnfbv36877rgj\nto/Kyko5HI6kZ2lsbNT+/ftltVqVlZWl+fPny+v1SorvMxrM59Nv7969stls1zxOabDHBACAdJBx\nxRMAAADmyLhL7QAAADAHxRMAAABJQfEEAABAUlA8AQAAkBQUTwAAACQFxRMAAABJQfEEAABAUlA8\nAQAAkBQUT8QlHA6bHQEAANwmKJ5pbOPGjVqxYsWAZevWrVN1dbUCgYCeeeYZjRkzRsXFxXrllVcU\njUYlSa2trVqwYIEKCgrk8Xi0evVq+f3+2D5KSkr05ptvqrS0VC6XK7YdAADA/0LxTGOVlZWqra2N\nlcZwOKxt27apqqpKVVVVstlsam1t1eHDh7V792598sknsW1ffvllnT59Ws3NzTp16pTWr18/YN9b\nt27Vrl27dOHCBWVl8TUCAAD/H40hjY0ePVpz587V9u3bJUm1tbXyeDwqKirSrl27tGnTJtntdnk8\nHlVXV2vr1q2SpLvvvlsLFy5UTk6OCgoK9MILL6iuri62X4vFonXr1qmoqEi5ubmmvDcAAHD7yTY7\nAIZWVVWVPvroIz377LPasmWLKisr1dbWpr6+PhUWFsbWi0ajGjdunCTp7Nmzev7557V//34Fg0FF\no1Hl5+cP2O/YsWOT+j4AAMDtjzOeaW7ZsmX6/fff1dTUpJ07d+qpp55ScXGxcnNz1dXVJZ/PJ5/P\nJ7/fr6NHj0qSXnrpJVmtVjU1Ncnv92vz5s3X3MdpsVjMeDsAAOA2RvFMc3a7XcuXL9eTTz6p8vJy\nFRcXq7CwUIsXL9aLL74YO6PZ2tqqffv2SZIuXrwoh8Mht9utjo4Obdy40eR3AQAA0gHFMwNUVVWp\nqalJlZWVsWWfffaZQqGQpkyZovz8fK1cuVJnzpyRJL322mv67bffNGLECD366KNavnw5ZzgBAEDc\nLIZhGGaHwNA6deqUJk2apLNnz8rpdJodBwAAZCjOeKa5aDSqt99+W6tWraJ0AgAAUzGqPY319PRo\n1KhRGj9+vGpra82OAwAAMhyX2gEAAJAUXGoHAABAUlA8AQAAkBQUTwAAACQFxRMAAABJQfEEAABA\nUvwHHFaWQgejB2EAAAAASUVORK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x7f5c7453add8>"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 27,
"text": [
"<ggplot: (8752191591295)>"
]
}
],
"prompt_number": 27
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That chart for *Temple Primary School* looks like a bit of a future liability? Does the data *really* say that?!"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Grab the row for the Temple Primary School project and melt the date columns, retaining years where a value is set\n",
"pd.melt(df[df['Project Name']=='Temple Primary School'][datecols]).dropna()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>variable</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>9 </th>\n",
" <td> Unitary charge payment 2001-02 (\u00a3m)</td>\n",
" <td> 0.32</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td> Unitary charge payment 2002-03 (\u00a3m)</td>\n",
" <td> 0.46</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td> Unitary charge payment 2003-04 (\u00a3m)</td>\n",
" <td> 0.47</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td> Unitary charge payment 2004-05 (\u00a3m)</td>\n",
" <td> 0.51</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td> Unitary charge payment 2005-06 (\u00a3m)</td>\n",
" <td> 0.539</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td> Unitary charge payment 2006-07 (\u00a3m)</td>\n",
" <td> 0.551</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td> Unitary charge payment 2007-08 (\u00a3m)</td>\n",
" <td> 0.576</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td> Unitary charge payment 2008-09 (\u00a3m)</td>\n",
" <td> 0.593</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td> Unitary charge payment 2009-10 (\u00a3m)</td>\n",
" <td> 0.599</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td> Unitary charge payment 2010-11 (\u00a3m)</td>\n",
" <td> 0.618</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td> Unitary charge payment 2011-12 (\u00a3m)</td>\n",
" <td> 0.652</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td> Unitary charge payment 2012-13 (\u00a3m)</td>\n",
" <td> 0.701</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td> Estimated unitary charge payment 2013-14 (\u00a3m)</td>\n",
" <td> 0.72</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td> Estimated unitary charge payment 2014-15 (\u00a3m)</td>\n",
" <td> 0.815</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td> Estimated unitary charge payment 2015-16 (\u00a3m)</td>\n",
" <td> 0.835375</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td> Estimated unitary charge payment 2016-17 (\u00a3m)</td>\n",
" <td> 0.8562594</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td> Estimated unitary charge payment 2017-18 (\u00a3m)</td>\n",
" <td> 0.8776659</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td> Estimated unitary charge payment 2018-19 (\u00a3m)</td>\n",
" <td> 0.8996075</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td> Estimated unitary charge payment 2019-20 (\u00a3m)</td>\n",
" <td> 0.9220977</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td> Estimated unitary charge payment 2020-21 (\u00a3m)</td>\n",
" <td> 0.9451501</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td> Estimated unitary charge payment 2021-22 (\u00a3m)</td>\n",
" <td> 0.9687789</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td> Estimated unitary charge payment 2022-23 (\u00a3m)</td>\n",
" <td> 0.9929984</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td> Estimated unitary charge payment 2023-24 (\u00a3m)</td>\n",
" <td> 1.017823</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td> Estimated unitary charge payment 2024-25 (\u00a3m)</td>\n",
" <td> 1.043269</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td> Estimated unitary charge payment 2025-26 (\u00a3m)</td>\n",
" <td> 1.069351</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td> Estimated unitary charge payment 2026-27 (\u00a3m)</td>\n",
" <td> 4.718884</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td> Estimated unitary charge payment 2027-28 (\u00a3m)</td>\n",
" <td> 4.765719</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td> Estimated unitary charge payment 2028-29 (\u00a3m)</td>\n",
" <td> 4.813724</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td> Estimated unitary charge payment 2029-30 (\u00a3m)</td>\n",
" <td> 4.86293</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td> Estimated unitary charge payment 2030-31 (\u00a3m)</td>\n",
" <td> 4.913366</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td> Estimated unitary charge payment 2031-32 (\u00a3m)</td>\n",
" <td> 4.965062</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td> Estimated unitary charge payment 2032-33 (\u00a3m)</td>\n",
" <td> 5.018051</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td> Estimated unitary charge payment 2033-34 (\u00a3m)</td>\n",
" <td> 5.072365</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td> Estimated unitary charge payment 2034-35 (\u00a3m)</td>\n",
" <td> 5.128037</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td> Estimated unitary charge payment 2035-36 (\u00a3m)</td>\n",
" <td> 5.1851</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 28,
"text": [
" variable value\n",
"9 Unitary charge payment 2001-02 (\u00a3m) 0.32\n",
"10 Unitary charge payment 2002-03 (\u00a3m) 0.46\n",
"11 Unitary charge payment 2003-04 (\u00a3m) 0.47\n",
"12 Unitary charge payment 2004-05 (\u00a3m) 0.51\n",
"13 Unitary charge payment 2005-06 (\u00a3m) 0.539\n",
"14 Unitary charge payment 2006-07 (\u00a3m) 0.551\n",
"15 Unitary charge payment 2007-08 (\u00a3m) 0.576\n",
"16 Unitary charge payment 2008-09 (\u00a3m) 0.593\n",
"17 Unitary charge payment 2009-10 (\u00a3m) 0.599\n",
"18 Unitary charge payment 2010-11 (\u00a3m) 0.618\n",
"19 Unitary charge payment 2011-12 (\u00a3m) 0.652\n",
"20 Unitary charge payment 2012-13 (\u00a3m) 0.701\n",
"21 Estimated unitary charge payment 2013-14 (\u00a3m) 0.72\n",
"22 Estimated unitary charge payment 2014-15 (\u00a3m) 0.815\n",
"23 Estimated unitary charge payment 2015-16 (\u00a3m) 0.835375\n",
"24 Estimated unitary charge payment 2016-17 (\u00a3m) 0.8562594\n",
"25 Estimated unitary charge payment 2017-18 (\u00a3m) 0.8776659\n",
"26 Estimated unitary charge payment 2018-19 (\u00a3m) 0.8996075\n",
"27 Estimated unitary charge payment 2019-20 (\u00a3m) 0.9220977\n",
"28 Estimated unitary charge payment 2020-21 (\u00a3m) 0.9451501\n",
"29 Estimated unitary charge payment 2021-22 (\u00a3m) 0.9687789\n",
"30 Estimated unitary charge payment 2022-23 (\u00a3m) 0.9929984\n",
"31 Estimated unitary charge payment 2023-24 (\u00a3m) 1.017823\n",
"32 Estimated unitary charge payment 2024-25 (\u00a3m) 1.043269\n",
"33 Estimated unitary charge payment 2025-26 (\u00a3m) 1.069351\n",
"34 Estimated unitary charge payment 2026-27 (\u00a3m) 4.718884\n",
"35 Estimated unitary charge payment 2027-28 (\u00a3m) 4.765719\n",
"36 Estimated unitary charge payment 2028-29 (\u00a3m) 4.813724\n",
"37 Estimated unitary charge payment 2029-30 (\u00a3m) 4.86293\n",
"38 Estimated unitary charge payment 2030-31 (\u00a3m) 4.913366\n",
"39 Estimated unitary charge payment 2031-32 (\u00a3m) 4.965062\n",
"40 Estimated unitary charge payment 2032-33 (\u00a3m) 5.018051\n",
"41 Estimated unitary charge payment 2033-34 (\u00a3m) 5.072365\n",
"42 Estimated unitary charge payment 2034-35 (\u00a3m) 5.128037\n",
"43 Estimated unitary charge payment 2035-36 (\u00a3m) 5.1851"
]
}
],
"prompt_number": 28
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It seems like it does. I wonder, with education projects, we could presumably start to look at education related open data to get information about things like the number of pupils on the school roll for the schools built under PFI contracts?\n",
"\n",
"Perhaps monitoring PFI contracts over time would be a good test bed of open data for transparency?\n",
"\n",
"For example, for hospitals, data about number of beds occupied and in total would give a clue as to occupancy. What other metrics from HSCIC might make sense when it comes to checking the health (?!;-) of hospitals built under PFI. (In the case of NHS hospitals, there is probably also spending data from the NHS trust that can in part be cross-referenced to on-going costs associated with a hospital?)\n",
"\n",
"*Hmm - this could all be worth thinking about more...*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But back to the data for now...\n",
"\n",
"How much has been spent in total on each project? Let's look at the top 10 by their (estimated) total unitary amount."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Let projcodeTotal represent summed total estimated unitary values for each project\n",
"projcodeTotal=projexposure[['Project Name','value']].groupby('Project Name').sum()\n",
"projcodeTotal.reset_index(inplace=True)\n",
"projcodeTotal.sort('value',ascending=False)[:10]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Project Name</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>28 </th>\n",
" <td> Allenby/Connaught</td>\n",
" <td> 11630.645419</td>\n",
" </tr>\n",
" <tr>\n",
" <th>375</th>\n",
" <td> M25 Orbital</td>\n",
" <td> 10699.460000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>243</th>\n",
" <td> Future Strategic Tanker Aircraft (FSTA)</td>\n",
" <td> 10656.300388</td>\n",
" </tr>\n",
" <tr>\n",
" <th>483</th>\n",
" <td> PRIME</td>\n",
" <td> 9029.960000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23 </th>\n",
" <td> Acute site rationalisation </td>\n",
" <td> 7143.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>436</th>\n",
" <td> New District General Hospital</td>\n",
" <td> 4441.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27 </th>\n",
" <td> Airwave</td>\n",
" <td> 4143.948024</td>\n",
" </tr>\n",
" <tr>\n",
" <th>437</th>\n",
" <td> New District General Hospital, Walsgrave</td>\n",
" <td> 4027.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>580</th>\n",
" <td> Skynet 5</td>\n",
" <td> 3971.217000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>393</th>\n",
" <td> Manchester Waste</td>\n",
" <td> 3907.450000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 29,
"text": [
" Project Name value\n",
"28 Allenby/Connaught 11630.645419\n",
"375 M25 Orbital 10699.460000\n",
"243 Future Strategic Tanker Aircraft (FSTA) 10656.300388\n",
"483 PRIME 9029.960000\n",
"23 Acute site rationalisation 7143.000000\n",
"436 New District General Hospital 4441.000000\n",
"27 Airwave 4143.948024\n",
"437 New District General Hospital, Walsgrave 4027.000000\n",
"580 Skynet 5 3971.217000\n",
"393 Manchester Waste 3907.450000"
]
}
],
"prompt_number": 29
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And how about estimated total unitary amounts for the most exposed procuring authorities?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"projexposure[['Procuring authority','value']].groupby('Procuring authority').sum().sort('value',ascending=False)[:10]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>value</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Procuring authority</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>MINISTRY OF DEFENCE</th>\n",
" <td> 49437.918160</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Highways Agency</th>\n",
" <td> 18508.535212</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DEPARTMENT FOR WORK AND PENSIONS</th>\n",
" <td> 9029.960000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>National Offender Management Service (WPR)</th>\n",
" <td> 7906.770763</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Barts Health NHS Trust</th>\n",
" <td> 7880.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>HM REVENUE &amp; CUSTOMS</th>\n",
" <td> 5901.700000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>HOME OFFICE</th>\n",
" <td> 5628.869578</td>\n",
" </tr>\n",
" <tr>\n",
" <th>SCOTTISH WATER</th>\n",
" <td> 4381.180000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>University Hospitals Coventry and Warwickshire NHS</th>\n",
" <td> 4027.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Greater Manchester Waste Disposal Authority</th>\n",
" <td> 3907.450000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 30,
"text": [
" value\n",
"Procuring authority \n",
"MINISTRY OF DEFENCE 49437.918160\n",
"Highways Agency 18508.535212\n",
"DEPARTMENT FOR WORK AND PENSIONS 9029.960000\n",
"National Offender Management Service (WPR) 7906.770763\n",
"Barts Health NHS Trust 7880.000000\n",
"HM REVENUE & CUSTOMS 5901.700000\n",
"HOME OFFICE 5628.869578\n",
"SCOTTISH WATER 4381.180000\n",
"University Hospitals Coventry and Warwickshire NHS 4027.000000\n",
"Greater Manchester Waste Disposal Authority 3907.450000"
]
}
],
"prompt_number": 30
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"One of the many things I don't understand about these contracts is the balance between the *capital Value* and the *unitary amounts*. Is there anything notable about the way these values compare?\n",
"\n",
"For example, the extent to which the total unitary amount is some multiple of the capital amount, or the simple difference between the two amounts?\n",
"\n",
"For each project, let's look at the total estimated unitary amount alongside the capital value, and perhaps also bring in the operational period of the contract too to try to normalise things a little?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Create a view of the data over some core data for each project and the summed unitary spend for each project\n",
"projReview=pd.merge(df[['Unique HMT Project ID','Project Name','Capital Value (\u00a3m)','Operational period of contract (years)']],\n",
" projcodeTotal, on='Project Name')\n",
"\n",
"#Make sure we're dealing with numbers...\n",
"projReview['Capital Value (\u00a3m)']=projReview['Capital Value (\u00a3m)'].convert_objects(convert_numeric=True)\n",
"\n",
"#Let's start to generate some comparative metrics\n",
"#I'm not sure if these are in any way meaningful, but they may reveal some sort of signal...\n",
"#...if we can work out how to interpet them?!\n",
"#First, the extent to which the summed total unitary value is a multiple of the capital amount\n",
"projReview['multiplier']=projReview['value'].divide(projReview['Capital Value (\u00a3m)'])\n",
"#Secondly, the difference betweem the summed total unitary value is a multiple of the capital amount\n",
"projReview['excess']= projReview['value']-projReview['Capital Value (\u00a3m)']\n",
"#Thirdly, that difference on average over the operational period of the contract\n",
"projReview['avexcess']=projReview['excess']/projReview['Operational period of contract (years)']\n",
"\n",
"#Now let's start to make some rankings...\n",
"#First, let's rank according to the multiplier...\n",
"projReview.sort('multiplier',ascending=False)[:5]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>Capital Value (\u00a3m)</th>\n",
" <th>Operational period of contract (years)</th>\n",
" <th>value</th>\n",
" <th>multiplier</th>\n",
" <th>excess</th>\n",
" <th>avexcess</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>201</th>\n",
" <td> 216</td>\n",
" <td> PFI Eastbrook</td>\n",
" <td> 0.000000</td>\n",
" <td> 30</td>\n",
" <td> 165.100000</td>\n",
" <td> inf</td>\n",
" <td> 165.100000</td>\n",
" <td> 5.503333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>289</th>\n",
" <td> 366</td>\n",
" <td> New District General Hospital</td>\n",
" <td> 60.000000</td>\n",
" <td> 33</td>\n",
" <td> 4441.000000</td>\n",
" <td> 74.016667</td>\n",
" <td> 4381.000000</td>\n",
" <td> 132.757576</td>\n",
" </tr>\n",
" <tr>\n",
" <th>290</th>\n",
" <td> 381</td>\n",
" <td> New District General Hospital</td>\n",
" <td> 86.600000</td>\n",
" <td> 31</td>\n",
" <td> 4441.000000</td>\n",
" <td> 51.281755</td>\n",
" <td> 4354.400000</td>\n",
" <td> 140.464516</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12 </th>\n",
" <td> 81</td>\n",
" <td> BSF Wave1</td>\n",
" <td> 23.328988</td>\n",
" <td> 33</td>\n",
" <td> 1141.466377</td>\n",
" <td> 48.929099</td>\n",
" <td> 1118.137389</td>\n",
" <td> 33.882951</td>\n",
" </tr>\n",
" <tr>\n",
" <th>230</th>\n",
" <td> 245</td>\n",
" <td> A69 Carlisle to Newcastle</td>\n",
" <td> 9.000000</td>\n",
" <td> 30</td>\n",
" <td> 350.220000</td>\n",
" <td> 38.913333</td>\n",
" <td> 341.220000</td>\n",
" <td> 11.374000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 31,
"text": [
" Unique HMT Project ID Project Name Capital Value (\u00a3m) \\\n",
"201 216 PFI Eastbrook 0.000000 \n",
"289 366 New District General Hospital 60.000000 \n",
"290 381 New District General Hospital 86.600000 \n",
"12 81 BSF Wave1 23.328988 \n",
"230 245 A69 Carlisle to Newcastle 9.000000 \n",
"\n",
" Operational period of contract (years) value multiplier \\\n",
"201 30 165.100000 inf \n",
"289 33 4441.000000 74.016667 \n",
"290 31 4441.000000 51.281755 \n",
"12 33 1141.466377 48.929099 \n",
"230 30 350.220000 38.913333 \n",
"\n",
" excess avexcess \n",
"201 165.100000 5.503333 \n",
"289 4381.000000 132.757576 \n",
"290 4354.400000 140.464516 \n",
"12 1118.137389 33.882951 \n",
"230 341.220000 11.374000 "
]
}
],
"prompt_number": 31
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's try for some textual interpretation of that..."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def interpreter1(_df):\n",
" #txt='The {0} project has capital value \u00a3{1}m and estimated total unitary spend of \u00a3{2}m, ({3} times more than the capital amount), with an operational contract period of {4} years.'.format(_df['Project Name'],_df['Capital Value (\u00a3m)'], _df['value'], _df['multiplier'])\n",
" txt=''\n",
" if _df['Capital Value (\u00a3m)']!=0:\n",
" txt='''The {0} project has capital value \u00a3{1}m and estimated total unitary spend of \u00a3{2}m, \\\n",
"({3} times more than the capital amount), with an operational contract period of {4} years.\\n'''.format(_df['Project Name'],\n",
" round(_df['Capital Value (\u00a3m)'],2),\n",
" round(_df['value'],2),\n",
" round(_df['multiplier'],2),\n",
" _df['Operational period of contract (years)'])\n",
" print(txt)\n",
" \n",
"projReview.sort('multiplier',ascending=False)[:5].apply(interpreter1,axis=1 )"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"The New District General Hospital project has capital value \u00a360.0m and estimated total unitary spend of \u00a34441.0m, (74.02 times more than the capital amount), with an operational contract period of 33 years.\n",
"\n",
"The New District General Hospital project has capital value \u00a386.6m and estimated total unitary spend of \u00a34441.0m, (51.28 times more than the capital amount), with an operational contract period of 31 years.\n",
"\n",
"The BSF Wave1 project has capital value \u00a323.33m and estimated total unitary spend of \u00a31141.47m, (48.93 times more than the capital amount), with an operational contract period of 33 years.\n",
"\n",
"The A69 Carlisle to Newcastle project has capital value \u00a39.0m and estimated total unitary spend of \u00a3350.22m, (38.91 times more than the capital amount), with an operational contract period of 30 years.\n",
"\n"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 32,
"text": [
"201 None\n",
"289 None\n",
"290 None\n",
"12 None\n",
"230 None\n",
"dtype: object"
]
}
],
"prompt_number": 32
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We could also sort based on difference in amount between the total estimated unitary spend and the capital amount."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"projReview.sort('excess',ascending=False)[:5]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>Capital Value (\u00a3m)</th>\n",
" <th>Operational period of contract (years)</th>\n",
" <th>value</th>\n",
" <th>multiplier</th>\n",
" <th>excess</th>\n",
" <th>avexcess</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>391</th>\n",
" <td> 421</td>\n",
" <td> Allenby/Connaught</td>\n",
" <td> 1298.425000</td>\n",
" <td> 35</td>\n",
" <td> 11630.645419</td>\n",
" <td> 8.957503</td>\n",
" <td> 10332.220419</td>\n",
" <td> 295.206298</td>\n",
" </tr>\n",
" <tr>\n",
" <th>232</th>\n",
" <td> 247</td>\n",
" <td> M25 Orbital</td>\n",
" <td> 988.117000</td>\n",
" <td> 31</td>\n",
" <td> 10699.460000</td>\n",
" <td> 10.828131</td>\n",
" <td> 9711.343000</td>\n",
" <td> 313.269129</td>\n",
" </tr>\n",
" <tr>\n",
" <th>257</th>\n",
" <td> 282</td>\n",
" <td> PRIME</td>\n",
" <td> 990.000000</td>\n",
" <td> 20</td>\n",
" <td> 9029.960000</td>\n",
" <td> 9.121172</td>\n",
" <td> 8039.960000</td>\n",
" <td> 401.998000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>405</th>\n",
" <td> 437</td>\n",
" <td> Future Strategic Tanker Aircraft (FSTA)</td>\n",
" <td> 2687.627898</td>\n",
" <td> 24</td>\n",
" <td> 10656.300388</td>\n",
" <td> 3.964946</td>\n",
" <td> 7968.672490</td>\n",
" <td> 332.028020</td>\n",
" </tr>\n",
" <tr>\n",
" <th>261</th>\n",
" <td> 286</td>\n",
" <td> Acute site rationalisation </td>\n",
" <td> 1149.000000</td>\n",
" <td> 43</td>\n",
" <td> 7143.000000</td>\n",
" <td> 6.216710</td>\n",
" <td> 5994.000000</td>\n",
" <td> 139.395349</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 33,
"text": [
" Unique HMT Project ID Project Name \\\n",
"391 421 Allenby/Connaught \n",
"232 247 M25 Orbital \n",
"257 282 PRIME \n",
"405 437 Future Strategic Tanker Aircraft (FSTA) \n",
"261 286 Acute site rationalisation \n",
"\n",
" Capital Value (\u00a3m) Operational period of contract (years) value \\\n",
"391 1298.425000 35 11630.645419 \n",
"232 988.117000 31 10699.460000 \n",
"257 990.000000 20 9029.960000 \n",
"405 2687.627898 24 10656.300388 \n",
"261 1149.000000 43 7143.000000 \n",
"\n",
" multiplier excess avexcess \n",
"391 8.957503 10332.220419 295.206298 \n",
"232 10.828131 9711.343000 313.269129 \n",
"257 9.121172 8039.960000 401.998000 \n",
"405 3.964946 7968.672490 332.028020 \n",
"261 6.216710 5994.000000 139.395349 "
]
}
],
"prompt_number": 33
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Are there any projects where the estimated total unitary amount is *less than* the captial amount? (that is, where the `excess` column is less than zero?)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"projReview.dropna(subset=['excess']).sort('excess')[:15]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>Capital Value (\u00a3m)</th>\n",
" <th>Operational period of contract (years)</th>\n",
" <th>value</th>\n",
" <th>multiplier</th>\n",
" <th>excess</th>\n",
" <th>avexcess</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>244</th>\n",
" <td> 263</td>\n",
" <td> Doncaster Interchange</td>\n",
" <td> 200.000000</td>\n",
" <td> 33</td>\n",
" <td> 94.870000</td>\n",
" <td> 0.474350</td>\n",
" <td>-1.051300e+02</td>\n",
" <td>-3.185758e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>600</th>\n",
" <td> 646</td>\n",
" <td> Enniskillen Hospital</td>\n",
" <td> 223.910000</td>\n",
" <td> 30</td>\n",
" <td> 158.114169</td>\n",
" <td> 0.706151</td>\n",
" <td>-6.579583e+01</td>\n",
" <td>-2.193194e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>175</th>\n",
" <td> 188</td>\n",
" <td> Brent Round 2 Non-HRA Housing </td>\n",
" <td> 113.700000</td>\n",
" <td> 19</td>\n",
" <td> 91.450000</td>\n",
" <td> 0.804310</td>\n",
" <td>-2.225000e+01</td>\n",
" <td>-1.171053e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>476</th>\n",
" <td> 517</td>\n",
" <td> Classroom 2000 Post Primary and Special local ...</td>\n",
" <td> 102.370000</td>\n",
" <td> 7</td>\n",
" <td> 85.950000</td>\n",
" <td> 0.839601</td>\n",
" <td>-1.642000e+01</td>\n",
" <td>-2.345714e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>477</th>\n",
" <td> 518</td>\n",
" <td> Classroom 2000 Wide Area Network managed servi...</td>\n",
" <td> 120.510000</td>\n",
" <td> 7</td>\n",
" <td> 104.718000</td>\n",
" <td> 0.868957</td>\n",
" <td>-1.579200e+01</td>\n",
" <td>-2.256000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>158</th>\n",
" <td> 171</td>\n",
" <td> Merlyn Vaz Centre (LIFT project - formerly Cha...</td>\n",
" <td> 12.095000</td>\n",
" <td> 26</td>\n",
" <td> 4.493649</td>\n",
" <td> 0.371529</td>\n",
" <td>-7.601351e+00</td>\n",
" <td>-2.923597e-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148</th>\n",
" <td> 161</td>\n",
" <td> Warrington Phase 1: Anson &amp; Blenheim ...</td>\n",
" <td> 20.000000</td>\n",
" <td> 33</td>\n",
" <td> 14.520000</td>\n",
" <td> 0.726000</td>\n",
" <td>-5.480000e+00</td>\n",
" <td>-1.660606e-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>482</th>\n",
" <td> 523</td>\n",
" <td> Eschools Data Warehouse</td>\n",
" <td> 4.630000</td>\n",
" <td> 5</td>\n",
" <td> 2.150000</td>\n",
" <td> 0.464363</td>\n",
" <td>-2.480000e+00</td>\n",
" <td>-4.960000e-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>144</th>\n",
" <td> 157</td>\n",
" <td> Selby, Sherburn and Tadcaster</td>\n",
" <td> 16.320000</td>\n",
" <td> 31</td>\n",
" <td> 14.427000</td>\n",
" <td> 0.884007</td>\n",
" <td>-1.893000e+00</td>\n",
" <td>-6.106452e-02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>124</th>\n",
" <td> 133</td>\n",
" <td> NE Derbyshire Holmewood Non-HRA</td>\n",
" <td> 1.750000</td>\n",
" <td> 15</td>\n",
" <td> 0.744005</td>\n",
" <td> 0.425146</td>\n",
" <td>-1.005995e+00</td>\n",
" <td>-6.706633e-02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>672</th>\n",
" <td> 821</td>\n",
" <td> Classroom 2000 Local Area Network services, Wi...</td>\n",
" <td> 169.960000</td>\n",
" <td> 5</td>\n",
" <td> 169.960000</td>\n",
" <td> 1.000000</td>\n",
" <td>-2.842171e-14</td>\n",
" <td>-5.684342e-15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>478</th>\n",
" <td> 519</td>\n",
" <td> Classrooom 2000 Primary Service local area net...</td>\n",
" <td> 51.080000</td>\n",
" <td> 5</td>\n",
" <td> 51.080000</td>\n",
" <td> 1.000000</td>\n",
" <td> 7.105427e-15</td>\n",
" <td> 1.421085e-15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>485</th>\n",
" <td> 526</td>\n",
" <td> Wellington College/Balmoral High School PFI Pr...</td>\n",
" <td> 17.700000</td>\n",
" <td> 25</td>\n",
" <td> 18.200000</td>\n",
" <td> 1.028249</td>\n",
" <td> 5.000000e-01</td>\n",
" <td> 2.000000e-02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35 </th>\n",
" <td> 39</td>\n",
" <td> Special Schools PFI</td>\n",
" <td> 70.142387</td>\n",
" <td> 31</td>\n",
" <td> 70.828428</td>\n",
" <td> 1.009781</td>\n",
" <td> 6.860410e-01</td>\n",
" <td> 2.213035e-02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>189</th>\n",
" <td> 202</td>\n",
" <td> Penzance Leisure Centre</td>\n",
" <td> 6.700000</td>\n",
" <td> 8</td>\n",
" <td> 8.200000</td>\n",
" <td> 1.223881</td>\n",
" <td> 1.500000e+00</td>\n",
" <td> 1.875000e-01</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 34,
"text": [
" Unique HMT Project ID Project Name \\\n",
"244 263 Doncaster Interchange \n",
"600 646 Enniskillen Hospital \n",
"175 188 Brent Round 2 Non-HRA Housing \n",
"476 517 Classroom 2000 Post Primary and Special local ... \n",
"477 518 Classroom 2000 Wide Area Network managed servi... \n",
"158 171 Merlyn Vaz Centre (LIFT project - formerly Cha... \n",
"148 161 Warrington Phase 1: Anson & Blenheim ... \n",
"482 523 Eschools Data Warehouse \n",
"144 157 Selby, Sherburn and Tadcaster \n",
"124 133 NE Derbyshire Holmewood Non-HRA \n",
"672 821 Classroom 2000 Local Area Network services, Wi... \n",
"478 519 Classrooom 2000 Primary Service local area net... \n",
"485 526 Wellington College/Balmoral High School PFI Pr... \n",
"35 39 Special Schools PFI \n",
"189 202 Penzance Leisure Centre \n",
"\n",
" Capital Value (\u00a3m) Operational period of contract (years) value \\\n",
"244 200.000000 33 94.870000 \n",
"600 223.910000 30 158.114169 \n",
"175 113.700000 19 91.450000 \n",
"476 102.370000 7 85.950000 \n",
"477 120.510000 7 104.718000 \n",
"158 12.095000 26 4.493649 \n",
"148 20.000000 33 14.520000 \n",
"482 4.630000 5 2.150000 \n",
"144 16.320000 31 14.427000 \n",
"124 1.750000 15 0.744005 \n",
"672 169.960000 5 169.960000 \n",
"478 51.080000 5 51.080000 \n",
"485 17.700000 25 18.200000 \n",
"35 70.142387 31 70.828428 \n",
"189 6.700000 8 8.200000 \n",
"\n",
" multiplier excess avexcess \n",
"244 0.474350 -1.051300e+02 -3.185758e+00 \n",
"600 0.706151 -6.579583e+01 -2.193194e+00 \n",
"175 0.804310 -2.225000e+01 -1.171053e+00 \n",
"476 0.839601 -1.642000e+01 -2.345714e+00 \n",
"477 0.868957 -1.579200e+01 -2.256000e+00 \n",
"158 0.371529 -7.601351e+00 -2.923597e-01 \n",
"148 0.726000 -5.480000e+00 -1.660606e-01 \n",
"482 0.464363 -2.480000e+00 -4.960000e-01 \n",
"144 0.884007 -1.893000e+00 -6.106452e-02 \n",
"124 0.425146 -1.005995e+00 -6.706633e-02 \n",
"672 1.000000 -2.842171e-14 -5.684342e-15 \n",
"478 1.000000 7.105427e-15 1.421085e-15 \n",
"485 1.028249 5.000000e-01 2.000000e-02 \n",
"35 1.009781 6.860410e-01 2.213035e-02 \n",
"189 1.223881 1.500000e+00 1.875000e-01 "
]
}
],
"prompt_number": 34
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, how about if we rank according the projects with the greatest \"excess\" amount averaged over the operational life of the contract? (So these projects presumably have expensive annual running costs?) "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"projReview.sort('avexcess',ascending=False)[:5]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>Capital Value (\u00a3m)</th>\n",
" <th>Operational period of contract (years)</th>\n",
" <th>value</th>\n",
" <th>multiplier</th>\n",
" <th>excess</th>\n",
" <th>avexcess</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>257</th>\n",
" <td> 282</td>\n",
" <td> PRIME</td>\n",
" <td> 990.000000</td>\n",
" <td> 20</td>\n",
" <td> 9029.960000</td>\n",
" <td> 9.121172</td>\n",
" <td> 8039.960000</td>\n",
" <td> 401.998000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>405</th>\n",
" <td> 437</td>\n",
" <td> Future Strategic Tanker Aircraft (FSTA)</td>\n",
" <td> 2687.627898</td>\n",
" <td> 24</td>\n",
" <td> 10656.300388</td>\n",
" <td> 3.964946</td>\n",
" <td> 7968.672490</td>\n",
" <td> 332.028020</td>\n",
" </tr>\n",
" <tr>\n",
" <th>232</th>\n",
" <td> 247</td>\n",
" <td> M25 Orbital</td>\n",
" <td> 988.117000</td>\n",
" <td> 31</td>\n",
" <td> 10699.460000</td>\n",
" <td> 10.828131</td>\n",
" <td> 9711.343000</td>\n",
" <td> 313.269129</td>\n",
" </tr>\n",
" <tr>\n",
" <th>391</th>\n",
" <td> 421</td>\n",
" <td> Allenby/Connaught</td>\n",
" <td> 1298.425000</td>\n",
" <td> 35</td>\n",
" <td> 11630.645419</td>\n",
" <td> 8.957503</td>\n",
" <td> 10332.220419</td>\n",
" <td> 295.206298</td>\n",
" </tr>\n",
" <tr>\n",
" <th>400</th>\n",
" <td> 431</td>\n",
" <td> Defence Fixed Telecommunications Service (DFTS)</td>\n",
" <td> 277.000000</td>\n",
" <td> 19</td>\n",
" <td> 3756.895000</td>\n",
" <td> 13.562798</td>\n",
" <td> 3479.895000</td>\n",
" <td> 183.152368</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 35,
"text": [
" Unique HMT Project ID Project Name \\\n",
"257 282 PRIME \n",
"405 437 Future Strategic Tanker Aircraft (FSTA) \n",
"232 247 M25 Orbital \n",
"391 421 Allenby/Connaught \n",
"400 431 Defence Fixed Telecommunications Service (DFTS) \n",
"\n",
" Capital Value (\u00a3m) Operational period of contract (years) value \\\n",
"257 990.000000 20 9029.960000 \n",
"405 2687.627898 24 10656.300388 \n",
"232 988.117000 31 10699.460000 \n",
"391 1298.425000 35 11630.645419 \n",
"400 277.000000 19 3756.895000 \n",
"\n",
" multiplier excess avexcess \n",
"257 9.121172 8039.960000 401.998000 \n",
"405 3.964946 7968.672490 332.028020 \n",
"232 10.828131 9711.343000 313.269129 \n",
"391 8.957503 10332.220419 295.206298 \n",
"400 13.562798 3479.895000 183.152368 "
]
}
],
"prompt_number": 35
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Questions of Equity"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Recall that there were several columns that identify equity shares in the project by one or more named partners."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"equitycols"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 36,
"text": [
"['Equity holder 1: Name',\n",
" 'Equity holder 1: Equity share (%)',\n",
" 'Equity holder 1: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 2: Name',\n",
" 'Equity holder 2: Equity share (%)',\n",
" 'Equity holder 2: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 3: Name',\n",
" 'Equity holder 3: Equity share (%)',\n",
" 'Equity holder 3: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 4: Name',\n",
" 'Equity holder 4: Equity share (%)',\n",
" 'Equity holder 4: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 5: Name',\n",
" 'Equity holder 5: Equity share (%)',\n",
" 'Equity holder 5: change of ownership since March 2011? \\n(Yes / No)',\n",
" 'Equity holder 6: Name',\n",
" 'Equity holder 6: Equity share (%)',\n",
" 'Equity holder 6: change of ownership since March 2011? \\n(Yes / No)']"
]
}
],
"prompt_number": 36
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see what we can learn about particular partners.\n",
"\n",
"We'll start by generating a view of the equity partners associated with each project in a wide form, directly from the original dataset."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Use the equity cols list to filter the columns we want, keying each row by project ID\n",
"df[['Unique HMT Project ID']+equitycols][:2]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Equity holder 1: Name</th>\n",
" <th>Equity holder 1: Equity share (%)</th>\n",
" <th>Equity holder 1: change of ownership since March 2011? \n",
"(Yes / No)</th>\n",
" <th>Equity holder 2: Name</th>\n",
" <th>Equity holder 2: Equity share (%)</th>\n",
" <th>Equity holder 2: change of ownership since March 2011? \n",
"(Yes / No)</th>\n",
" <th>Equity holder 3: Name</th>\n",
" <th>Equity holder 3: Equity share (%)</th>\n",
" <th>Equity holder 3: change of ownership since March 2011? \n",
"(Yes / No)</th>\n",
" <th>Equity holder 4: Name</th>\n",
" <th>Equity holder 4: Equity share (%)</th>\n",
" <th>Equity holder 4: change of ownership since March 2011? \n",
"(Yes / No)</th>\n",
" <th>Equity holder 5: Name</th>\n",
" <th>Equity holder 5: Equity share (%)</th>\n",
" <th>Equity holder 5: change of ownership since March 2011? \n",
"(Yes / No)</th>\n",
" <th>Equity holder 6: Name</th>\n",
" <th>Equity holder 6: Equity share (%)</th>\n",
" <th>Equity holder 6: change of ownership since March 2011? \n",
"(Yes / No)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 2</td>\n",
" <td> De Vere Venues Ltd</td>\n",
" <td> 1</td>\n",
" <td> NO</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td>NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td>NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td>NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td>NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> 3</td>\n",
" <td> Data not supplied</td>\n",
" <td> 1</td>\n",
" <td> NO</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td>NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td>NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td>NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td>NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 37,
"text": [
" Unique HMT Project ID Equity holder 1: Name \\\n",
"0 2 De Vere Venues Ltd \n",
"1 3 Data not supplied \n",
"\n",
" Equity holder 1: Equity share (%) \\\n",
"0 1 \n",
"1 1 \n",
"\n",
" Equity holder 1: change of ownership since March 2011? \\n(Yes / No) \\\n",
"0 NO \n",
"1 NO \n",
"\n",
" Equity holder 2: Name Equity holder 2: Equity share (%) \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"\n",
" Equity holder 2: change of ownership since March 2011? \\n(Yes / No) \\\n",
"0 NaN \n",
"1 NaN \n",
"\n",
" Equity holder 3: Name Equity holder 3: Equity share (%) \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"\n",
" Equity holder 3: change of ownership since March 2011? \\n(Yes / No) \\\n",
"0 NaN \n",
"1 NaN \n",
"\n",
" Equity holder 4: Name Equity holder 4: Equity share (%) \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"\n",
" Equity holder 4: change of ownership since March 2011? \\n(Yes / No) \\\n",
"0 NaN \n",
"1 NaN \n",
"\n",
" Equity holder 5: Name Equity holder 5: Equity share (%) \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"\n",
" Equity holder 5: change of ownership since March 2011? \\n(Yes / No) \\\n",
"0 NaN \n",
"1 NaN \n",
"\n",
" Equity holder 6: Name Equity holder 6: Equity share (%) \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"\n",
" Equity holder 6: change of ownership since March 2011? \\n(Yes / No) \n",
"0 NaN \n",
"1 NaN "
]
}
],
"prompt_number": 37
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we had a multi-index (that is, a hierarchical index) defined over the columns identifying each equity holder number as a three column wide spanning index, and a name, share and ownership change attribute within each, I think we could `stack` the data into a long format dataframe with name/share/change columns and a row for each equity holder in each project.\n",
"\n",
"I don't offhand know how to create a multi-index from the data frame we have, so can't try this. Instead, we'll have to hack a way of getting the data into an appropriately long formatted data frame. We can do this by grabbing blocks of three columns at a tine to create a partial dataframe of the correct shape, and then just concat the dataframes from each three way grouping."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Create a dummy dataframe to hold the long format data\n",
"dfequity=pd.DataFrame()\n",
"#There are six possible equity partner column groupings\n",
"for i in range(1, 6):\n",
" #Calculate the index of the left most column in the current grouping\n",
" lower=(i-1)*3\n",
" #Generate a data frame from the project id and the three columns in the current equity grouping\n",
" tmp=df[['Unique HMT Project ID','Project Name','SPV name','SPV company number']+equitycols][[0,1,2,3]+np.arange(lower+4,lower+6).tolist()]\n",
" #Rename the columns\n",
" tmp.columns=['Unique HMT Project ID','Project Name','SPV name','SPV company number','equityName','equityShare']\n",
" #make sure the equity chart converts to a numeric\n",
" tmp['equityShare']=tmp['equityShare'].convert_objects(convert_numeric=True)\n",
" #Only keep rows where we have an equity share recorded\n",
" tmp=tmp.dropna(subset=['equityShare'])\n",
" #Add the data from the current equity grouping to the growing long format dataframe\n",
" dfequity=pd.concat([dfequity,tmp])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 40
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Let's see what our dataframe looks like\n",
"dfequity[:3]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>SPV name</th>\n",
" <th>SPV company number</th>\n",
" <th>equityName</th>\n",
" <th>equityShare</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 2</td>\n",
" <td> Sunningdale Park Site</td>\n",
" <td> DeVere Venues Ltd</td>\n",
" <td> not known</td>\n",
" <td> De Vere Venues Ltd</td>\n",
" <td> 1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> 3</td>\n",
" <td> Compass</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> Data not supplied</td>\n",
" <td> 1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> 5</td>\n",
" <td> RRS Ernest Shackleton </td>\n",
" <td> RRS Ernest Shackleton</td>\n",
" <td> N/K</td>\n",
" <td> Polar Holding ASA of Norway</td>\n",
" <td> 1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 41,
"text": [
" Unique HMT Project ID Project Name SPV name \\\n",
"0 2 Sunningdale Park Site DeVere Venues Ltd \n",
"1 3 Compass NaN \n",
"2 5 RRS Ernest Shackleton RRS Ernest Shackleton \n",
"\n",
" SPV company number equityName equityShare \n",
"0 not known De Vere Venues Ltd 1 \n",
"1 NaN Data not supplied 1 \n",
"2 N/K Polar Holding ASA of Norway 1 "
]
}
],
"prompt_number": 41
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also generate a summary of the equity partners involved in a project."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def showPartner(partner):\n",
" txt='\\n * {0} ({1}% equity share)'.format(partner[1]['equityName'],100*partner[1]['equityShare'])\n",
" return txt\n",
"\n",
"def equityPartnersInProject(_df, project,typ='name',endstr='\\n'):\n",
" if typ=='name':pp=_df[_df['Project Name']==project]\n",
" elif typ=='id':pp=_df[_df['Unique HMT Project ID']==project]\n",
" else: return\n",
" \n",
" txt='The {0} project (project id: {1}) has {2} equity partner(s):'.format(pp['Project Name'].iloc[0],pp['Unique HMT Project ID'].iloc[0],len(pp))\n",
" for partner in pp.iterrows():\n",
" txt+=showPartner(partner)\n",
" txt+=endstr\n",
" print(txt)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 42
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"equityPartnersInProject(dfequity, 'Lambeth Street Lighting')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Lambeth Street Lighting project (project id: 256) has 3 equity partner(s):\n",
" * IIC Projects Ltd (68.0% equity share)\n",
" * IIC Lambeth Funding Investment limited (17.0% equity share)\n",
" * ETDE Infrastructure Limited (15.0% equity share)\n",
"\n"
]
}
],
"prompt_number": 43
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's also just quickly generate a report of equity partners in projects associated with a particular SPV. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def equityPartnersBySPV(_df,spv,typ='name',endstr='\\n'):\n",
" if typ=='name':pp=_df[_df['SPV name'].notnull & _df['SPV name'].str.contains(spv)]\n",
" elif typ=='id':pp=_df[_df['SPV company number']==spv]\n",
" else: return\n",
" \n",
" if len(pp)==0:\n",
" txt='No SPV with that {0} found.'.format(typ)\n",
" else:\n",
" txt='The {0} SPV has {1} equity partner(s):'.format(pp['SPV name'].iloc[0],len(pp))\n",
" for partner in pp.iterrows():\n",
" txt+=showPartner(partner)\n",
" txt+=endstr\n",
" print(txt)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 101
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"equityPartnersBySPV(dfequity,'Hounslow')\n",
"equityPartnersBySPV(dfequity,'Island Roads')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Hounslow Highway Services Limited SPV has 2 equity partner(s):\n",
" * Vinci Infrastructures SAS (50.0% equity share)\n",
" * BIIF Holdco ltd. (50.0% equity share)\n",
"\n",
"The Island Roads Services Ltd SPV has 2 equity partner(s):\n",
" * Vinci Concessions SAS (50.0% equity share)\n",
" * Merdiam Infrastructure Finance II S.a.r.l. (50.0% equity share)\n",
"\n"
]
}
],
"prompt_number": 104
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For completeness, let's do a search by equity partner."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def showPartnerInProj(partner):\n",
" txt='\\n * {0} ({1}% equity share in {2} (project id: {3}), SPV: {4})'.format(partner[1]['equityName'],100*partner[1]['equityShare'],\n",
" partner[1]['Project Name'],partner[1]['Unique HMT Project ID'],\n",
" partner[1]['SPV name'])\n",
" return txt\n",
"\n",
"def equitySearch(_df,equity,endstr='\\n'):\n",
" pp=_df[_df['equityName'].str.contains(equity)]\n",
" \n",
" if len(pp)==0:\n",
" txt='No equity partner with that name found.'\n",
" else:\n",
" txt='That equity is associated with:'\n",
" spv=[]\n",
" for partner in pp.iterrows():\n",
" txt+=showPartnerInProj(partner)\n",
" if partner[1]['SPV name'] not in spv: spv.append(partner[1]['SPV name'])\n",
" txt+=','.join(spv)+endstr\n",
" print(txt)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 113
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"equitySearch(dfequity,'G4S')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"That equity is associated with:\n",
" * G4S plc (51.0% equity share in Three North Wiltshire Secondary Schools (project id: 127), SPV: N/K)\n",
" * G4S PLC (51%) a company in the corporate structure of ownership of UK Court Services (Manchester) Limited. (51.0% equity share in Manchester Magistrates' Courts (project id: 477), SPV: UK Courts Services (Manchester) Ltd)\n",
" * G4S Joint Ventures Limited through G4S Joint Ventures (Fazakerley) Limited (100.0% equity share in HMP Altcourse (project id: 478), SPV: Fazakerley Prison Services Ltd)\n",
" * G4S SPV Holdings Limited (59.0% equity share in HMP Parc (project id: 484), SPV: Bridgend Custodial Services Ltd)\n",
" * G4S Joint Ventures Limited through G4S Joint Ventures (Onley) Limited (100.0% equity share in HMP Rye Hill (project id: 486), SPV: Onley Prison Services Ltd)\n",
" * G4S Justice Services Ltd (50.0% equity share in Milton Keynes STC (project id: 489), SPV: N/K)\n",
" * G4S plc (51.0% equity share in Group Schools (project id: 59), SPV: N/K)\n",
" * G4S Joint Ventures Ltd (25.0% equity share in Orthopaedics/medicine redevelopment at Nuffield Orthopaedic Centre (project id: 342), SPV: Albion Healthcare (Oxford) Ltd)\n",
" * G4S Joint Ventures Ltd (20.0% equity share in Integrated Cancer Centre (project id: 343), SPV: Ochre Solutions Limited)N/K,UK Courts Services (Manchester) Ltd,Fazakerley Prison Services Ltd,Bridgend Custodial Services Ltd,Onley Prison Services Ltd,Albion Healthcare (Oxford) Ltd,Ochre Solutions Limited\n",
"\n"
]
}
],
"prompt_number": 114
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Having got a long data frame with equity holdings keyed by project ID, we can annotate each of these rows with data about each project.\n",
"\n",
"For example, we can take project data that describes the project name, procuring authority and spend by year:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"projexposure[:3]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>Procuring authority</th>\n",
" <th>year</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 2</td>\n",
" <td> Sunningdale Park Site</td>\n",
" <td> CABINET OFFICE</td>\n",
" <td> 2002</td>\n",
" <td> 4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> 2</td>\n",
" <td> Sunningdale Park Site</td>\n",
" <td> CABINET OFFICE</td>\n",
" <td> 2003</td>\n",
" <td> 3.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> 2</td>\n",
" <td> Sunningdale Park Site</td>\n",
" <td> CABINET OFFICE</td>\n",
" <td> 2004</td>\n",
" <td> 3.6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 83,
"text": [
" Unique HMT Project ID Project Name Procuring authority year \\\n",
"0 2 Sunningdale Park Site CABINET OFFICE 2002 \n",
"1 2 Sunningdale Park Site CABINET OFFICE 2003 \n",
"2 2 Sunningdale Park Site CABINET OFFICE 2004 \n",
"\n",
" value \n",
"0 4.0 \n",
"1 3.8 \n",
"2 3.6 "
]
}
],
"prompt_number": 83
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and *inner join* it by project id to the equity data.\n",
"\n",
"This will give us a dataset that we should be able to use as the basis for asking questions about the spend, by equity share, to different partners, by year and/or project, procuring authority or department."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"projexco=pd.merge(dfequity,projexposure,on=['Unique HMT Project ID','Project Name'])\n",
"projexco[:3]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>SPV name</th>\n",
" <th>SPV company number</th>\n",
" <th>equityName</th>\n",
" <th>equityShare</th>\n",
" <th>Procuring authority</th>\n",
" <th>year</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 2</td>\n",
" <td> Sunningdale Park Site</td>\n",
" <td> DeVere Venues Ltd</td>\n",
" <td> not known</td>\n",
" <td> De Vere Venues Ltd</td>\n",
" <td> 1</td>\n",
" <td> CABINET OFFICE</td>\n",
" <td> 2002</td>\n",
" <td> 4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> 2</td>\n",
" <td> Sunningdale Park Site</td>\n",
" <td> DeVere Venues Ltd</td>\n",
" <td> not known</td>\n",
" <td> De Vere Venues Ltd</td>\n",
" <td> 1</td>\n",
" <td> CABINET OFFICE</td>\n",
" <td> 2003</td>\n",
" <td> 3.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> 2</td>\n",
" <td> Sunningdale Park Site</td>\n",
" <td> DeVere Venues Ltd</td>\n",
" <td> not known</td>\n",
" <td> De Vere Venues Ltd</td>\n",
" <td> 1</td>\n",
" <td> CABINET OFFICE</td>\n",
" <td> 2004</td>\n",
" <td> 3.6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 84,
"text": [
" Unique HMT Project ID Project Name SPV name \\\n",
"0 2 Sunningdale Park Site DeVere Venues Ltd \n",
"1 2 Sunningdale Park Site DeVere Venues Ltd \n",
"2 2 Sunningdale Park Site DeVere Venues Ltd \n",
"\n",
" SPV company number equityName equityShare Procuring authority \\\n",
"0 not known De Vere Venues Ltd 1 CABINET OFFICE \n",
"1 not known De Vere Venues Ltd 1 CABINET OFFICE \n",
"2 not known De Vere Venues Ltd 1 CABINET OFFICE \n",
"\n",
" year value \n",
"0 2002 4.0 \n",
"1 2003 3.8 \n",
"2 2004 3.6 "
]
}
],
"prompt_number": 84
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Before we think about how to do that though, let's just check that the shares donlt add up to more than 100%."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Do any rows have equity share sums > 100% ?\n",
"test=projexco[['Unique HMT Project ID','year','equityShare']].groupby(['Unique HMT Project ID','year']).sum().sort(ascending=False)\n",
"test.reset_index(inplace=True)\n",
"#May get floating point errors\n",
"test[test['equityShare']>1.00000000000001]['Unique HMT Project ID'].unique()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 85,
"text": [
"array([853, 8])"
]
}
],
"prompt_number": 85
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Oops - a couple of the projects do... Best go check the data for those two project IDs..."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"equityPartnersInProject(dfequity, 853,typ='id')\n",
"equityPartnersInProject(dfequity, 8,typ='id')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The BSF Wave 3 Phase 1 project (project id: 853) has 5 equity partner(s):\n",
" * Laing O'Rourke (40.0% equity share)\n",
" * Laing O'Rourke (40.0% equity share)\n",
" * John Laing (40.0% equity share)\n",
" * Amber Infrastructure (10.0% equity share)\n",
" * Barnsley Metropolitan Borough Council (10.0% equity share)\n",
"\n",
"The Barnsley Schools PFI project (project id: 8) has 2 equity partner(s):\n",
" * Carillion (50.0% equity share)\n",
" * Innisfree PFI Fund III (100.0% equity share)\n",
"\n"
]
}
],
"prompt_number": 86
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Back to thinking about the spend to each partner - we need to work out the value retained by each partner, according to their share."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"projexco['valueShare']=projexco['value']*projexco['equityShare']\n",
"projexco.reset_index(inplace=True)\n",
"projexco[123:129]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>index</th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>SPV name</th>\n",
" <th>SPV company number</th>\n",
" <th>equityName</th>\n",
" <th>equityShare</th>\n",
" <th>Procuring authority</th>\n",
" <th>year</th>\n",
" <th>value</th>\n",
" <th>valueShare</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>123</th>\n",
" <td> 123</td>\n",
" <td> 8</td>\n",
" <td> Barnsley Schools PFI</td>\n",
" <td> Modern Schools Barnsley</td>\n",
" <td> 5259225</td>\n",
" <td> Carillion</td>\n",
" <td> 0.5</td>\n",
" <td> Barnsley</td>\n",
" <td> 2027</td>\n",
" <td> 8.250000</td>\n",
" <td> 4.125000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>124</th>\n",
" <td> 124</td>\n",
" <td> 8</td>\n",
" <td> Barnsley Schools PFI</td>\n",
" <td> Modern Schools Barnsley</td>\n",
" <td> 5259225</td>\n",
" <td> Carillion</td>\n",
" <td> 0.5</td>\n",
" <td> Barnsley</td>\n",
" <td> 2028</td>\n",
" <td> 8.234000</td>\n",
" <td> 4.117000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>125</th>\n",
" <td> 125</td>\n",
" <td> 8</td>\n",
" <td> Barnsley Schools PFI</td>\n",
" <td> Modern Schools Barnsley</td>\n",
" <td> 5259225</td>\n",
" <td> Carillion</td>\n",
" <td> 0.5</td>\n",
" <td> Barnsley</td>\n",
" <td> 2029</td>\n",
" <td> 8.089000</td>\n",
" <td> 4.044500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>126</th>\n",
" <td> 126</td>\n",
" <td> 8</td>\n",
" <td> Barnsley Schools PFI</td>\n",
" <td> Modern Schools Barnsley</td>\n",
" <td> 5259225</td>\n",
" <td> Carillion</td>\n",
" <td> 0.5</td>\n",
" <td> Barnsley</td>\n",
" <td> 2030</td>\n",
" <td> 7.471000</td>\n",
" <td> 3.735500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>127</th>\n",
" <td> 127</td>\n",
" <td> 8</td>\n",
" <td> Barnsley Schools PFI</td>\n",
" <td> Modern Schools Barnsley</td>\n",
" <td> 5259225</td>\n",
" <td> Carillion</td>\n",
" <td> 0.5</td>\n",
" <td> Barnsley</td>\n",
" <td> 2031</td>\n",
" <td> 7.071000</td>\n",
" <td> 3.535500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>128</th>\n",
" <td> 128</td>\n",
" <td> 8</td>\n",
" <td> Barnsley Schools PFI</td>\n",
" <td> Modern Schools Barnsley</td>\n",
" <td> 5259225</td>\n",
" <td> Carillion</td>\n",
" <td> 0.5</td>\n",
" <td> Barnsley</td>\n",
" <td> 2032</td>\n",
" <td> 1.669496</td>\n",
" <td> 0.834748</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 87,
"text": [
" index Unique HMT Project ID Project Name \\\n",
"123 123 8 Barnsley Schools PFI \n",
"124 124 8 Barnsley Schools PFI \n",
"125 125 8 Barnsley Schools PFI \n",
"126 126 8 Barnsley Schools PFI \n",
"127 127 8 Barnsley Schools PFI \n",
"128 128 8 Barnsley Schools PFI \n",
"\n",
" SPV name SPV company number equityName equityShare \\\n",
"123 Modern Schools Barnsley 5259225 Carillion 0.5 \n",
"124 Modern Schools Barnsley 5259225 Carillion 0.5 \n",
"125 Modern Schools Barnsley 5259225 Carillion 0.5 \n",
"126 Modern Schools Barnsley 5259225 Carillion 0.5 \n",
"127 Modern Schools Barnsley 5259225 Carillion 0.5 \n",
"128 Modern Schools Barnsley 5259225 Carillion 0.5 \n",
"\n",
" Procuring authority year value valueShare \n",
"123 Barnsley 2027 8.250000 4.125000 \n",
"124 Barnsley 2028 8.234000 4.117000 \n",
"125 Barnsley 2029 8.089000 4.044500 \n",
"126 Barnsley 2030 7.471000 3.735500 \n",
"127 Barnsley 2031 7.071000 3.535500 \n",
"128 Barnsley 2032 1.669496 0.834748 "
]
}
],
"prompt_number": 87
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's do some more counting. We can take the long format data that gives separate rows for each equity partner by year and project, and group it by equity partner and year - this will give us an estimate of how much each partner will rake in acorss all the projects thay are partnered in each year, based on their equity share in each project and the estimated unitary amount for that project in that year."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"projexcoAnnual=projexco[['equityName','year','valueShare']].groupby(['equityName','year']).sum()\n",
"projexcoAnnual.reset_index(inplace=True)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 88
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see who the winners are for financial year 2014-15."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"projexcoAnnual[projexcoAnnual['year']==2014].sort('valueShare',ascending=False)[:10]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>equityName</th>\n",
" <th>year</th>\n",
" <th>valueShare</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>11358</th>\n",
" <td> Innisfree</td>\n",
" <td> 2014</td>\n",
" <td> 527.497496</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21565</th>\n",
" <td> Telereal Trillium</td>\n",
" <td> 2014</td>\n",
" <td> 507.300000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6862 </th>\n",
" <td> EADS</td>\n",
" <td> 2014</td>\n",
" <td> 415.951000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15453</th>\n",
" <td> Maquarie European Infrastructure Fund II (MEIFII)</td>\n",
" <td> 2014</td>\n",
" <td> 282.058605</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12712</th>\n",
" <td> John Laing</td>\n",
" <td> 2014</td>\n",
" <td> 280.280541</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9156 </th>\n",
" <td> HICL</td>\n",
" <td> 2014</td>\n",
" <td> 251.141000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19704</th>\n",
" <td> Semperian</td>\n",
" <td> 2014</td>\n",
" <td> 226.540450</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4257 </th>\n",
" <td> British Telecom</td>\n",
" <td> 2014</td>\n",
" <td> 211.770000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15433</th>\n",
" <td> Mapeley</td>\n",
" <td> 2014</td>\n",
" <td> 144.900000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2187 </th>\n",
" <td> Balfour Beatty Plc</td>\n",
" <td> 2014</td>\n",
" <td> 135.069276</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 89,
"text": [
" equityName year valueShare\n",
"11358 Innisfree 2014 527.497496\n",
"21565 Telereal Trillium 2014 507.300000\n",
"6862 EADS 2014 415.951000\n",
"15453 Maquarie European Infrastructure Fund II (MEIFII) 2014 282.058605\n",
"12712 John Laing 2014 280.280541\n",
"9156 HICL 2014 251.141000\n",
"19704 Semperian 2014 226.540450\n",
"4257 British Telecom 2014 211.770000\n",
"15433 Mapeley 2014 144.900000\n",
"2187 Balfour Beatty Plc 2014 135.069276"
]
}
],
"prompt_number": 89
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's just see if *Trillium* appears in any other contracts for 2014-15."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"projexco[(projexco['equityName'].str.contains('Trillium')) & (projexco['year']==2014)]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>index</th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>SPV name</th>\n",
" <th>SPV company number</th>\n",
" <th>equityName</th>\n",
" <th>equityShare</th>\n",
" <th>Procuring authority</th>\n",
" <th>year</th>\n",
" <th>value</th>\n",
" <th>valueShare</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>10246</th>\n",
" <td> 10246</td>\n",
" <td> 234</td>\n",
" <td> Estates Transformation</td>\n",
" <td> N/K</td>\n",
" <td> N/K</td>\n",
" <td> Telereal Trillium (DV1A) Ltd</td>\n",
" <td> 1.00</td>\n",
" <td> DRIVER AND VEHICLE LICENSING AGENCY</td>\n",
" <td> 2014</td>\n",
" <td> 22.95</td>\n",
" <td> 22.950</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12244</th>\n",
" <td> 12244</td>\n",
" <td> 282</td>\n",
" <td> PRIME</td>\n",
" <td> Trillium (PRIME) Ltd</td>\n",
" <td> NaN</td>\n",
" <td> Telereal Trillium</td>\n",
" <td> 1.00</td>\n",
" <td> DEPARTMENT FOR WORK AND PENSIONS</td>\n",
" <td> 2014</td>\n",
" <td> 507.30</td>\n",
" <td> 507.300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17628</th>\n",
" <td> 17628</td>\n",
" <td> 384</td>\n",
" <td> Berlin Embassy</td>\n",
" <td> Arteos</td>\n",
" <td> HRA 112199 </td>\n",
" <td> Land Securities Trillium</td>\n",
" <td> 1.00</td>\n",
" <td> FOREIGN AND COMMONWEALTH OFFICE</td>\n",
" <td> 2014</td>\n",
" <td> 5.48</td>\n",
" <td> 5.480</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21632</th>\n",
" <td> 21632</td>\n",
" <td> 489</td>\n",
" <td> Milton Keynes STC</td>\n",
" <td> N/K</td>\n",
" <td> N/K</td>\n",
" <td> Trillium PPP Investment Partners LLP</td>\n",
" <td> 0.50</td>\n",
" <td> YOUTH JUSTICE BOARD</td>\n",
" <td> 2014</td>\n",
" <td> 18.30</td>\n",
" <td> 9.150</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21704</th>\n",
" <td> 21704</td>\n",
" <td> 494</td>\n",
" <td> STC Onley</td>\n",
" <td> N/K</td>\n",
" <td> N/K</td>\n",
" <td> Land Securities Trillium Ltd</td>\n",
" <td> 0.49</td>\n",
" <td> YOUTH JUSTICE BOARD</td>\n",
" <td> 2014</td>\n",
" <td> 2.60</td>\n",
" <td> 1.274</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 90,
"text": [
" index Unique HMT Project ID Project Name \\\n",
"10246 10246 234 Estates Transformation \n",
"12244 12244 282 PRIME \n",
"17628 17628 384 Berlin Embassy \n",
"21632 21632 489 Milton Keynes STC \n",
"21704 21704 494 STC Onley \n",
"\n",
" SPV name SPV company number \\\n",
"10246 N/K N/K \n",
"12244 Trillium (PRIME) Ltd NaN \n",
"17628 Arteos HRA 112199 \n",
"21632 N/K N/K \n",
"21704 N/K N/K \n",
"\n",
" equityName equityShare \\\n",
"10246 Telereal Trillium (DV1A) Ltd 1.00 \n",
"12244 Telereal Trillium 1.00 \n",
"17628 Land Securities Trillium 1.00 \n",
"21632 Trillium PPP Investment Partners LLP 0.50 \n",
"21704 Land Securities Trillium Ltd 0.49 \n",
"\n",
" Procuring authority year value valueShare \n",
"10246 DRIVER AND VEHICLE LICENSING AGENCY 2014 22.95 22.950 \n",
"12244 DEPARTMENT FOR WORK AND PENSIONS 2014 507.30 507.300 \n",
"17628 FOREIGN AND COMMONWEALTH OFFICE 2014 5.48 5.480 \n",
"21632 YOUTH JUSTICE BOARD 2014 18.30 9.150 \n",
"21704 YOUTH JUSTICE BOARD 2014 2.60 1.274 "
]
}
],
"prompt_number": 90
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Hmmm... so we can maybe add in about another \u00a340m to their estimated take for that year."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also reuse a previous explainer to generate a report about other members of those projects:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"trillium=projexco[(projexco['equityName'].str.contains('Trillium')) & (projexco['year']==2014)]\n",
"for project in trillium['Project Name']:\n",
" equityPartnersInProject(dfequity, project)\n",
" projReview[projReview['Project Name']==project].apply(interpreter1,axis=1 )"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Estates Transformation project (project id: 234) has 1 equity partner(s):\n",
" * Telereal Trillium (DV1A) Ltd (100.0% equity share)\n",
"\n",
"The Estates Transformation project has capital value \u00a393.21m and estimated total unitary spend of \u00a3466.8m, (5.01 times more than the capital amount), with an operational contract period of 20 years.\n",
"\n",
"The PRIME project (project id: 282) has 1 equity partner(s):\n",
" * Telereal Trillium (100.0% equity share)\n",
"\n",
"The PRIME project has capital value \u00a3990.0m and estimated total unitary spend of \u00a39029.96m, (9.12 times more than the capital amount), with an operational contract period of 20 years.\n",
"\n",
"The Berlin Embassy project (project id: 384) has 1 equity partner(s):\n",
" * Land Securities Trillium (100.0% equity share)\n",
"\n",
"The Berlin Embassy project has capital value \u00a317.1m and estimated total unitary spend of \u00a3155.59m, (9.1 times more than the capital amount), with an operational contract period of 30 years.\n",
"\n",
"The Milton Keynes STC project (project id: 489) has 2 equity partner(s):\n",
" * G4S Justice Services Ltd (50.0% equity share)\n",
" * Trillium PPP Investment Partners LLP (50.0% equity share)\n",
"\n",
"The Milton Keynes STC project has capital value \u00a319.0m and estimated total unitary spend of \u00a3463.2m, (24.38 times more than the capital amount), with an operational contract period of 25 years.\n",
"\n",
"The STC Onley project (project id: 494) has 2 equity partner(s):\n",
" * GSL Ltd (51.0% equity share)\n",
" * Land Securities Trillium Ltd (49.0% equity share)\n",
"\n",
"The STC Onley project has capital value \u00a318.9m and estimated total unitary spend of \u00a3127.6m, (6.75 times more than the capital amount), with an operational contract period of 15 years.\n",
"\n"
]
}
],
"prompt_number": 91
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's tweak that phrasing a little..."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def projDesc(_df,startstr='',endstr='\\n'):\n",
" if startstr=='': txt='The {0} project'.format(_df['Project Name'])\n",
" else: txt=startstr\n",
" if _df['Capital Value (\u00a3m)']!=0:\n",
" txt+='''has capital value \u00a3{0}m and estimated total unitary spend of \u00a3{1}m, \\\n",
"({2} times more than the capital amount), with an operational contract period of {3} years.'''.format(\n",
" round(_df['Capital Value (\u00a3m)'],2),\n",
" round(_df['value'],2),\n",
" round(_df['multiplier'],2),\n",
" _df['Operational period of contract (years)'])\n",
" txt+=endstr\n",
" print(txt)\n",
" "
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 92
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"for project in trillium['Project Name'][:1]:\n",
" equityPartnersInProject(dfequity, project)\n",
" projDesc(projReview[projReview['Project Name']==project].iloc[0],'It ')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Estates Transformation project (project id: 234) has 1 equity partner(s):\n",
" * Telereal Trillium (DV1A) Ltd (100.0% equity share)\n",
"\n",
"It has capital value \u00a393.21m and estimated total unitary spend of \u00a3466.8m, (5.01 times more than the capital amount), with an operational contract period of 20 years.\n",
"\n"
]
}
],
"prompt_number": 93
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To make further conversations easier, let's do a little more wrapping, for example, generating a report that shows projects for a particular year involving an equity partner whose name includes a specified keyword or keyphrase."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def projReportbyPartnerAndYear(partner,year):\n",
" #Note that the search is case sensitive...\n",
" projects=projexco[(projexco['equityName'].str.contains(partner)) & (projexco['year']==year)]\n",
" for project in projects['Project Name']:\n",
" equityPartnersInProject(dfequity, project,endstr='')\n",
" projDesc(projReview[projReview['Project Name']==project].iloc[0],'It ')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 94
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"projReportbyPartnerAndYear('G4S',2015)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Group Schools project (project id: 59) has 2 equity partner(s):\n",
" * Semperian PPP Investment Partners GP (49.0% equity share)\n",
" * G4S plc (51.0% equity share)\n",
"It has capital value \u00a3nanm and estimated total unitary spend of \u00a3374.08m, (nan times more than the capital amount), with an operational contract period of 34 years.\n",
"\n",
"The Three North Wiltshire Secondary Schools project (project id: 127) has 2 equity partner(s):\n",
" * G4S plc (51.0% equity share)\n",
" * Semperian PPP Investment Partners GP (49.0% equity share)\n",
"It has capital value \u00a326.8m and estimated total unitary spend of \u00a3176.54m, (6.59 times more than the capital amount), with an operational contract period of 36 years.\n",
"\n",
"The Orthopaedics/medicine redevelopment at Nuffield Orthopaedic Centre project (project id: 342) has 4 equity partner(s):\n",
" * Barclays (25.0% equity share)\n",
" * HICL (25.0% equity share)\n",
" * G4S Joint Ventures Ltd (25.0% equity share)\n",
" * Semperian (25.0% equity share)\n",
"It has capital value \u00a337.0m and estimated total unitary spend of \u00a3325.0m, (8.78 times more than the capital amount), with an operational contract period of 32 years.\n",
"\n",
"The Integrated Cancer Centre project (project id: 343) has 3 equity partner(s):\n",
" * Impregilo International Infrastructure NV (40.0% equity share)\n",
" * HICL (40.0% equity share)\n",
" * G4S Joint Ventures Ltd (20.0% equity share)\n",
"It has capital value \u00a3129.0m and estimated total unitary spend of \u00a3891.0m, (6.91 times more than the capital amount), with an operational contract period of 31 years.\n",
"\n",
"The Manchester Magistrates' Courts project (project id: 477) has 2 equity partner(s):\n",
" * G4S PLC (51%) a company in the corporate structure of ownership of UK Court Services (Manchester) Limited. (51.0% equity share)\n",
" * Secondary Market Infrastructure Fund (SMIF) = 49%, again still a company in the corporate structure of ownership of UK Courts Services(Manchester) Limited, was taken over by Semperian PPP Investment Partners Holdings Ltd, who transferred their PFI equity (49.0% equity share)\n",
"It has capital value \u00a330.0m and estimated total unitary spend of \u00a3201.78m, (6.73 times more than the capital amount), with an operational contract period of 25 years.\n",
"\n",
"The HMP Altcourse project (project id: 478) has 1 equity partner(s):\n",
" * G4S Joint Ventures Limited through G4S Joint Ventures (Fazakerley) Limited (100.0% equity share)\n",
"It has capital value \u00a368.0m and estimated total unitary spend of \u00a3907.02m, (13.34 times more than the capital amount), with an operational contract period of 25 years.\n",
"\n",
"The HMP Parc project (project id: 484) has 2 equity partner(s):\n",
" * G4S SPV Holdings Limited (59.0% equity share)\n",
" * Innisfree M&G PPP LLP (41.0% equity share)\n",
"It has capital value \u00a347.0m and estimated total unitary spend of \u00a31018.61m, (21.67 times more than the capital amount), with an operational contract period of 25 years.\n",
"\n",
"The HMP Rye Hill project (project id: 486) has 1 equity partner(s):\n",
" * G4S Joint Ventures Limited through G4S Joint Ventures (Onley) Limited (100.0% equity share)\n",
"It has capital value \u00a337.0m and estimated total unitary spend of \u00a3449.7m, (12.15 times more than the capital amount), with an operational contract period of 25 years.\n",
"\n",
"The Milton Keynes STC project (project id: 489) has 2 equity partner(s):\n",
" * G4S Justice Services Ltd (50.0% equity share)\n",
" * Trillium PPP Investment Partners LLP (50.0% equity share)\n",
"It has capital value \u00a319.0m and estimated total unitary spend of \u00a3463.2m, (24.38 times more than the capital amount), with an operational contract period of 25 years.\n",
"\n"
]
}
],
"prompt_number": 95
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's try another one, and see what we can make of it..\n",
"\n",
"How about *Sodexo*?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"projexco[(projexco['equityName'].str.contains('Sodexo')) & (projexco['year']==2014)]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>index</th>\n",
" <th>Unique HMT Project ID</th>\n",
" <th>Project Name</th>\n",
" <th>SPV name</th>\n",
" <th>SPV company number</th>\n",
" <th>equityName</th>\n",
" <th>equityShare</th>\n",
" <th>Procuring authority</th>\n",
" <th>year</th>\n",
" <th>value</th>\n",
" <th>valueShare</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>13035</th>\n",
" <td> 13035</td>\n",
" <td> 297</td>\n",
" <td> Redevelopment of 3 hospitals for Women, Childr...</td>\n",
" <td> Catalyst Healthcare (Manchester) Limited</td>\n",
" <td> 4528418</td>\n",
" <td> Sodexo </td>\n",
" <td> 0.2500</td>\n",
" <td> Central Manchester University Hospitals NHS Fo...</td>\n",
" <td> 2014</td>\n",
" <td> 71.00</td>\n",
" <td> 17.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14048</th>\n",
" <td> 14048</td>\n",
" <td> 317</td>\n",
" <td> New block</td>\n",
" <td> HPC King's College Hospital Limited</td>\n",
" <td> 3696260</td>\n",
" <td> Sodexo Investments</td>\n",
" <td> 0.2500</td>\n",
" <td> King's College Hospital NHS Foundation Trust</td>\n",
" <td> 2014</td>\n",
" <td> 22.00</td>\n",
" <td> 5.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14778</th>\n",
" <td> 14778</td>\n",
" <td> 329</td>\n",
" <td> Hereford DGH</td>\n",
" <td> Mercia Healthcare Limited</td>\n",
" <td> 3693524</td>\n",
" <td> Sodexo Investment Services Ltd</td>\n",
" <td> 0.2500</td>\n",
" <td> Wye Valley NHS Trust</td>\n",
" <td> 2014</td>\n",
" <td> 15.00</td>\n",
" <td> 3.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17065</th>\n",
" <td> 17065</td>\n",
" <td> 376</td>\n",
" <td> University Hospital</td>\n",
" <td> Health Care Support (North Staffs) Limited</td>\n",
" <td> 5309720</td>\n",
" <td> Sodexo</td>\n",
" <td> 0.2500</td>\n",
" <td> University Hospital Of North Staffordshire NHS...</td>\n",
" <td> 2014</td>\n",
" <td> 56.00</td>\n",
" <td> 14.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17142</th>\n",
" <td> 17142</td>\n",
" <td> 377</td>\n",
" <td> Wythenshawe Hospital</td>\n",
" <td> South Manchester Healthcare Limited</td>\n",
" <td> 3502432</td>\n",
" <td> Sodexo Investment Services Limited</td>\n",
" <td> 0.2500</td>\n",
" <td> University Hospital Of South Manchester NHS Fo...</td>\n",
" <td> 2014</td>\n",
" <td> 34.00</td>\n",
" <td> 8.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17368</th>\n",
" <td> 17368</td>\n",
" <td> 380</td>\n",
" <td> Queen Mary's, Roehampton</td>\n",
" <td> Roehampton Hospital Limited</td>\n",
" <td> 4057595</td>\n",
" <td> Sodexo Investment Services Ltd</td>\n",
" <td> 0.2500</td>\n",
" <td> Wandsworth PCT</td>\n",
" <td> 2014</td>\n",
" <td> 14.00</td>\n",
" <td> 3.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21243</th>\n",
" <td> 21243</td>\n",
" <td> 480</td>\n",
" <td> HMP Bronzefield</td>\n",
" <td> Ashford Prison Services Ltd</td>\n",
" <td> 4334205</td>\n",
" <td> Sodexo Investment Services Ltd</td>\n",
" <td> 0.3334</td>\n",
" <td> National Offender Management Service (WPR)</td>\n",
" <td> 2014</td>\n",
" <td> 31.10</td>\n",
" <td> 10.368740</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21343</th>\n",
" <td> 21343</td>\n",
" <td> 482</td>\n",
" <td> HMP Forest Bank</td>\n",
" <td> Agecroft Prison Services Ltd</td>\n",
" <td> 3509050</td>\n",
" <td> Sodexo Investment Services Ltd</td>\n",
" <td> 0.5000</td>\n",
" <td> National Offender Management Service (WPR)</td>\n",
" <td> 2014</td>\n",
" <td> 38.85</td>\n",
" <td> 19.425000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21460</th>\n",
" <td> 21460</td>\n",
" <td> 485</td>\n",
" <td> HMP Peterborough</td>\n",
" <td> Peterborough Prison Management Ltd</td>\n",
" <td> 4350276</td>\n",
" <td> Sodexo Investment Services Ltd</td>\n",
" <td> 0.3334</td>\n",
" <td> National Offender Management Service (WPR)</td>\n",
" <td> 2014</td>\n",
" <td> 35.58</td>\n",
" <td> 11.862372</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23758</th>\n",
" <td> 23758</td>\n",
" <td> 552</td>\n",
" <td> Fife Schools PPP1</td>\n",
" <td> Pinnacle Schools (Fife) Ltd</td>\n",
" <td> 4095208</td>\n",
" <td> Sodexo Alliance S.A.</td>\n",
" <td> 0.1000</td>\n",
" <td> Fife</td>\n",
" <td> 2014</td>\n",
" <td> 7.53</td>\n",
" <td> 0.753000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25986</th>\n",
" <td> 25986</td>\n",
" <td> 599</td>\n",
" <td> Addiewell Prison</td>\n",
" <td> Addiewell Prison Ltd (APL)</td>\n",
" <td> N/K</td>\n",
" <td> Sodexo Investment Services Ltd</td>\n",
" <td> 0.3333</td>\n",
" <td> Scottish Prison Service</td>\n",
" <td> 2014</td>\n",
" <td> 31.00</td>\n",
" <td> 10.332300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27362</th>\n",
" <td> 27362</td>\n",
" <td> 627</td>\n",
" <td> Conwy Schools Project (3 schools)</td>\n",
" <td> Enterprise Education (Conwy) Ltd</td>\n",
" <td> 0</td>\n",
" <td> Sodexo Investment Services Ltd</td>\n",
" <td> 0.1000</td>\n",
" <td> Conwy</td>\n",
" <td> 2014</td>\n",
" <td> 6.96</td>\n",
" <td> 0.696000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 96,
"text": [
" index Unique HMT Project ID \\\n",
"13035 13035 297 \n",
"14048 14048 317 \n",
"14778 14778 329 \n",
"17065 17065 376 \n",
"17142 17142 377 \n",
"17368 17368 380 \n",
"21243 21243 480 \n",
"21343 21343 482 \n",
"21460 21460 485 \n",
"23758 23758 552 \n",
"25986 25986 599 \n",
"27362 27362 627 \n",
"\n",
" Project Name \\\n",
"13035 Redevelopment of 3 hospitals for Women, Childr... \n",
"14048 New block \n",
"14778 Hereford DGH \n",
"17065 University Hospital \n",
"17142 Wythenshawe Hospital \n",
"17368 Queen Mary's, Roehampton \n",
"21243 HMP Bronzefield \n",
"21343 HMP Forest Bank \n",
"21460 HMP Peterborough \n",
"23758 Fife Schools PPP1 \n",
"25986 Addiewell Prison \n",
"27362 Conwy Schools Project (3 schools) \n",
"\n",
" SPV name SPV company number \\\n",
"13035 Catalyst Healthcare (Manchester) Limited 4528418 \n",
"14048 HPC King's College Hospital Limited 3696260 \n",
"14778 Mercia Healthcare Limited 3693524 \n",
"17065 Health Care Support (North Staffs) Limited 5309720 \n",
"17142 South Manchester Healthcare Limited 3502432 \n",
"17368 Roehampton Hospital Limited 4057595 \n",
"21243 Ashford Prison Services Ltd 4334205 \n",
"21343 Agecroft Prison Services Ltd 3509050 \n",
"21460 Peterborough Prison Management Ltd 4350276 \n",
"23758 Pinnacle Schools (Fife) Ltd 4095208 \n",
"25986 Addiewell Prison Ltd (APL) N/K \n",
"27362 Enterprise Education (Conwy) Ltd 0 \n",
"\n",
" equityName equityShare \\\n",
"13035 Sodexo 0.2500 \n",
"14048 Sodexo Investments 0.2500 \n",
"14778 Sodexo Investment Services Ltd 0.2500 \n",
"17065 Sodexo 0.2500 \n",
"17142 Sodexo Investment Services Limited 0.2500 \n",
"17368 Sodexo Investment Services Ltd 0.2500 \n",
"21243 Sodexo Investment Services Ltd 0.3334 \n",
"21343 Sodexo Investment Services Ltd 0.5000 \n",
"21460 Sodexo Investment Services Ltd 0.3334 \n",
"23758 Sodexo Alliance S.A. 0.1000 \n",
"25986 Sodexo Investment Services Ltd 0.3333 \n",
"27362 Sodexo Investment Services Ltd 0.1000 \n",
"\n",
" Procuring authority year value \\\n",
"13035 Central Manchester University Hospitals NHS Fo... 2014 71.00 \n",
"14048 King's College Hospital NHS Foundation Trust 2014 22.00 \n",
"14778 Wye Valley NHS Trust 2014 15.00 \n",
"17065 University Hospital Of North Staffordshire NHS... 2014 56.00 \n",
"17142 University Hospital Of South Manchester NHS Fo... 2014 34.00 \n",
"17368 Wandsworth PCT 2014 14.00 \n",
"21243 National Offender Management Service (WPR) 2014 31.10 \n",
"21343 National Offender Management Service (WPR) 2014 38.85 \n",
"21460 National Offender Management Service (WPR) 2014 35.58 \n",
"23758 Fife 2014 7.53 \n",
"25986 Scottish Prison Service 2014 31.00 \n",
"27362 Conwy 2014 6.96 \n",
"\n",
" valueShare \n",
"13035 17.750000 \n",
"14048 5.500000 \n",
"14778 3.750000 \n",
"17065 14.000000 \n",
"17142 8.500000 \n",
"17368 3.500000 \n",
"21243 10.368740 \n",
"21343 19.425000 \n",
"21460 11.862372 \n",
"23758 0.753000 \n",
"25986 10.332300 \n",
"27362 0.696000 "
]
}
],
"prompt_number": 96
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see how they're doing more graphically..."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Generate a data view containing rows where the name of the equity partner includes the word Sodexo\n",
"sodexo=projexco[(projexco['equityName'].str.contains('Sodexo'))][['equityName','year','valueShare']]\n",
"#For each name, generate the sum total of value shares going to that partner each year\n",
"sodexo=sodexo.groupby(['equityName','year']).sum()\n",
"sodexo.reset_index(inplace=True)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 97
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ggplot(sodexo,aes(x='year',y='valueShare')) \\\n",
" + geom_line() \\\n",
" + facet_wrap('equityName',scales='fixed') \\\n",
" + ggtitle('Sodexo')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAApcAAAInCAYAAADNpnLkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYVHX7P/D3MDPsICAom6bIYm6oZG4o4ALumaaZZlhm\nWrllmallWmamZYVPm/mYmpWm31xIQTMVxcrH0ExNURAVHUDAQVYdGM7vjy7OzxHBgTkzwwzv13Vx\nwcycOee+Z+DmnnM+53NkgiAIICIiIiKSgI25AyAiIiIi68HmkoiIiIgkw+aSiIiIiCTD5pKIiIiI\nJMPmkoiIiIgkw+aSiIiIiCTD5pKIyACTJk3CwIEDzR0GEVGDweaSiKxeWVkZ3nrrLQQHB8PR0RFN\nmzbFo48+itWrV0uyfplMJsl6iIisgcLcARARGduLL76IQ4cOIS4uDqGhoSgsLMSJEyeQmZkpyfp5\nLQoiov+Pey6JyOrt3LkTr7/+OkaMGIGHHnoIHTt2RGxsLN58802d5T788EMEBATAzs4OgYGB+PTT\nT3Uev3nzJp588kk4OzvD29sbb7311n0by9WrV6Nt27ZwcHBAcHAwli1bBq1WCwD48ccfYWdnh+PH\nj4vLb9y4EQ4ODjh16hQAIDU1FUOHDoWLiwtcXFwwYsQIpKenS/2yEBEZBZtLIrJ6Pj4+SEhIgFqt\nrnGZzz77DIsWLcKCBQvwzz//YO7cuXjjjTewbt06cZnJkyfj5MmT+Pnnn3HgwAFcvnwZO3bs0Dks\nvnjxYnz00Uf44IMPcP78eXz66af46quvsGTJEgDA2LFjERsbi6eeegpFRUW4cOECpk+fjg8//BCh\noaEoKytDdHQ0NBoNDh8+jKSkJBQXF2PQoEEoLy833otERCQVgYjIyh09elR46KGHBLlcLnTq1El4\n4YUXhJ07d+os4+/vL8ybN0/nvldeeUUICAgQBEEQLl68KMhkMmH//v3i4xqNRvDz8xMGDhwoCIIg\nlJSUCI6OjsLevXt11rNhwwbBzc1NvF1aWiq0b99eGDt2rNC5c2fh8ccfFx9bu3at4OjoKOTn54v3\n5eTkCA4ODsLGjRsNfCWIiIyPYy6JyOr16tUL6enp+N///offf/8dhw8fxujRozF48GDs2rULhYWF\nuH79Ovr27avzvL59++LTTz/F7du38c8//4jrqqJUKtGtWzeUlJQAAM6ePYuysjKMGjVKZ2+mVqvF\nnTt3kJ+fj6ZNm8LBwQFbtmxBaGgofHx8cPDgQXHZs2fPon379vDw8BDva9asGUJCQsQYiIgaMjaX\nRNQoyOVy9OzZEz179sScOXPw3XffYeLEiThy5AhCQ0PrvV7hrjGXlZWVAIBt27YhODi42rLu7u7i\nz0eOHIFMJkNBQQFycnLg5uZ233XWdh8RUUPEMZdE1Ci1bdsWAHDjxg24urrC398fSUlJOsskJSUh\nICAA9vb2aNeuHQDg6NGj4uMajUbnxJz27dvD3t4e6enpCAgIqPZlY/NvyT1z5gxeffVVrFmzBoMG\nDcK4ceOg0WgAAB06dMA///yD/Px8cb05OTm4cOECOnToYJwXg4hIQvLFixcvNncQRETGFBERITZv\n5eXlSElJwZw5c1BWVoZVq1bBwcEB9vb2ePfdd9G8eXO4uLhg27ZtWLp0KZYvX44uXbrAw8MDJ0+e\nxIYNG9CxY0eUlpbi9ddfx+nTp+Hn54dnnnkGtra2EAQB7777LlxdXdGkSRPk5OTgwIED2LRpEwYM\nGIDbt28jJiYGffv2xdKlSxEdHY1PPvkEV65cweDBg/Hwww/jm2++wYEDB9CxY0eoVCq88MILkMlk\n+OKLL8QGlYiowTLvkE8iIuNbvny50KdPH6FZs2aCvb290LJlS2HixInCuXPndJZbuXKl0Lp1a0Gp\nVApt2rQRPv30U53H8/PzhbFjxwpOTk6Cl5eXsGDBAiE2NlY8oafK2rVrhc6dOwv29vaCu7u70KNH\nD+HLL78UBEEQpk2bJrRp00YoLCwUl09OThaUSqUQHx8vCIIgpKamCkOGDBGcnZ0FZ2dnYfjw4UJ6\neroxXhoiIsnJBIEDeYiIiIhIGjy+QkRERESSYXNJRERERJJhc0lEREREkmFzSURERESSYXNJRERE\nRJJhc0lEREREkmFzSURERESSYXNJRERERJJhc0lEREREkmFzSURERESSYXNJRERERJJhc0lERERE\nkmFzSURERESSYXNJRERERJJhc0lEREREkmFzSURERESSYXNJRERERJJhc0lEREREkmFzSURERESS\nYXNJRERERJJhc0lEREREkmFzSURERESSYXNJRERERJJhc0lEREREkmFzSURERESSYXNJRERERJJh\nc0lEREREkmFzSURERESSYXNJRERERJJhc0lEREREkmFzSURERESSYXNJRERERJJRmDuAuliyZAmK\n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\nXFxc0KVLF6xcubLG5QVBwODBg2Fvb48dO3aYMNLGYf369eYOwajMWTstue58/vnnyMzMxPvvv2+S\n7TW07Xfq1Am7d+9GixYt7vt4eXk5PvnkE+zduxdFRUVwd3dHVFQU5s2bZ+JIpRcTE4MlS5agR48e\n1R578803673emTNnij8/++yzGD58OEaNGlWvde3YsQO5ublm/R9XU+20qOaS6q+4uBjTp0/HokWL\nEBMTA41Gg5SUFCiVSnOHVie7du1CUFAQ4uPjdZpLS7Jz5078/PPPWLt2Lfz9/ZGXl4ekpKRan/Pn\nn3+ivLwcZWVlOHv2bL3+MROZmqXXHSn2LlmztWvX4ty5c9i8eTM8PT2hUqmQkpJSr3VptVrI5XKJ\nI6w/mUxm9Pffmn+/OOaykbhy5QoAYNCgQZDJZLCzs0OvXr0QHBwM4N89Y1999RViYmIQERGBhQsX\nori4WHx+fHw8oqOj0adPH3z99dc66xYEAWvXrsWQIUPQp08fvPbaa7h16xYA4N1338WcOXPEZVet\nWoXnn38ewL97UxYsWICIiAjExMRgzZo1EAShxhxUKhVOnjyJd999F7///jvy8vL0yv3zzz/H/Pnz\nxdtz5sxBVFQUevXqhUmTJiE9PV18bOHChVi6dClefvll9OjRAxMmTEBmZqb4eFpaGqZMmYLw8HBE\nRkZi7dq1AIDKysoaX4N7nT17Fr169YK/vz8AwNPTE6NHj641h127dmHAgAGIiorCzp079cqbyNws\nve7ce3+nTp3w448/YtiwYejVqxfee+89AIBGo0GvXr2QlpYmLnvz5k1069YNarUaAJCUlIQnnngC\nvXr1wsSJE3HhwgVx2f/+97/o378/evTogeHDh+PYsWNITk7G2rVrkZiYiO7du2PMmDEA/t3btXr1\nakycOBHdu3fHjBkzoFarMW/ePPTs2RNPPfUUVCqVuO5Lly6JNWv48OHYu3ev+Fht9S42NhYAMHr0\naHTv3l3neVXOnj2Lfv36wdPTEwDg6+uL4cOHi4/fuHEDr7zyCiIiIjBo0CB899134mOff/455syZ\ng/nz56Nnz574+uuv0a1bN526ee7cOfTt2xdarRY7duwQYwLqV4vv3LmDN954A3369EGvXr3w1FNP\nIT8//77vfU2OHz+OAQMGiLdjYmKwfv16jBo1Ct27d8eiRYuQl5eHadOmoWfPnpgyZQoKCwsBANev\n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\nXHNJRERERLbD5pKIiIiIRMPmkoiIiIhEI1uyZMkSRwdhTyaTCW5ubmjfvj2USqWjwxEN83IuzIuc\njav+bZmXc2FezqHFXS1ORERERLbDw+JEREREJBo2l0REREQkGjaXRERERCQaNpdEREREJBo2l0RE\nREQkGjaXRERERCQaNpdEREREJBo2l0QADAaDo0MgInI6rJ1UFzaX1OytXLkSY8aMsbhv1qxZmDNn\nDkpLSzFlyhQEBQUhODgYCxcuhNFoBABcvHgRf/rTn+Dv7w+1Wo0JEybg1q1b5m20b98eK1asQPfu\n3eHt7W1+HRGRK2DtJEdhc0nN3sSJE5GWlmYubgaDAVu3bkViYiISExPh5uaGixcv4tixY0hPT8e6\ndevMr12wYAEKCgpw+vRpXLlyBfeudrplyxakpqaipKQEUin/cyAi18HaSY7CTwQ1ewEBARgwYAC2\nb98OAEhLS4NarUa7du2QmpqKv/3tb3B3d4darcacOXOwZcsWAECHDh0wePBgKBQK+Pv74+WXX0ZG\nRoZ5uxKJBLNmzUK7du1cYi1XIqK7sXaSo8gdHQCREImJiVi7di2ef/55bN68GRMnTkRubi6qq6sR\nGBhofp7RaMSDDz4IALh27Rpmz56NzMxMlJWVwWg0ws/Pz2K7ISEhds2DiMieWDvJEbjnkpzCqFGj\ncPLkSWRnZ+O7777D+PHjERwcDKVSieLiYmi1Wmi1Wty6dQunTp0CALz55puQyWTIzs7GrVu3sGnT\nplrnBkkkEkekQ0RkF6yd5AhsLskpuLu7Y/To0Rg3bhz69OmD4OBgBAYGIiYmBq+88or52/XFixex\nf/9+AEB5eTk8PT2hUqlw9epVrFy50sFZEBHZF2snOQKbS3IaiYmJyM7OxsSJE833bdy4EXq9Hl27\ndoWfnx/Gjh2LwsJCAMDixYtx9OhRPPDAAxg5ciRGjx7Nb9tE1OKwdpK9SUwmk8nRQRAJceXKFXTu\n3BnXrl2Dl5eXo8MhInIKrJ1kb9xzSU7BaDRi1apVeOaZZ1gciYgEYu0kR+DV4tTs6XQ6tG3bFqGh\noUhLS3N0OEREToG1kxyFh8WJiIiISDQ8LE5EREREomFzSURERESiYXNJRERERKJhc0lEREREomFz\nSURERESiYXNJRERERKJhc0lEREREomFzSURERESiYXNJRERERKJhc0lEREREomFzSURERESiYXNJ\n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\n",
"text": [
"<matplotlib.figure.Figure at 0x7f5c740ea0b8>"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 98,
"text": [
"<ggplot: (-9223363284663392389)>"
]
}
],
"prompt_number": 98
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Hmm - two takes on Sodexo? How come?\n",
"sodexo['equityName'].unique()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 99,
"text": [
"array(['Sodexo', 'Sodexo ', 'Sodexo Alliance S.A.',\n",
" 'Sodexo Investment Services Limited',\n",
" 'Sodexo Investment Services Ltd', 'Sodexo Investments'], dtype=object)"
]
}
],
"prompt_number": 99
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ah - white space..."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 100
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment