Pre-processing of Data Sets


In [1]:
import pandas as pd
from collections import namedtuple
import numpy as np
import time
import pickle
from importlib import reload

import sys
sys.path.insert(0, '../')
import bench_util

%load_ext line_profiler

Utility Data


In [2]:
# Read the CSV file and convert the billing period dates into 
# real Pandas dates
fn = 'data/20171017 AllDataExport.csv'
dfu = pd.read_csv(fn, parse_dates=['From', 'Thru'])

# Pickle it for use in the other notebook
dfu.to_pickle('df_raw.pkl')
dfu.head()


Out[2]:
Site ID Site Name Vendor Code Vendor Name Account Number Bill Date Due Date Entry Date Invoice # Voucher # From Thru Service Name Item Description Meter Number Usage Cost Units Account Financial Code Site Financial Code
0 TRGR FNSB-Transit Garage VP287678 Sourdough Fuel (Petro Star) 00013297 (closed) 09/28/2010 09/28/2010 01/26/2011 NaN NaN 2008-11-19 2010-09-28 Oil #1 FED LUS TX NaN NaN 3.00 NaN NaN NaN
1 TRGR FNSB-Transit Garage VP287678 Sourdough Fuel (Petro Star) 00013297 (closed) 09/28/2010 09/28/2010 01/26/2011 NaN NaN 2008-11-19 2010-09-28 Oil #1 Fuel Oil #1 (Gallons) NaN 3000.0 7950.00 Gallons NaN NaN
2 TRGR FNSB-Transit Garage VP287678 Sourdough Fuel (Petro Star) 00013297 (closed) 09/30/2010 09/30/2010 01/26/2011 NaN NaN 2010-09-28 2010-09-30 Oil #1 FED LUS TX NaN NaN 1.31 NaN NaN NaN
3 TRGR FNSB-Transit Garage VP287678 Sourdough Fuel (Petro Star) 00013297 (closed) 09/30/2010 09/30/2010 01/26/2011 NaN NaN 2010-09-28 2010-09-30 Oil #1 Fuel Oil #1 (Gallons) NaN 1307.0 3463.82 Gallons NaN NaN
4 TRGR FNSB-Transit Garage VP287678 Sourdough Fuel (Petro Star) 00013297 (closed) 01/14/2011 01/14/2011 07/28/2014 NaN NaN 2010-09-30 2011-01-14 Oil #1 Fuel Oil #1 (Gallons) NaN 1880.0 5545.41 Gallons NaN NaN

In [3]:
len(dfu)


Out[3]:
117276

In [4]:
# Make a utility function object
reload(bench_util)
ut = bench_util.Util(dfu, '../data/Other_Building_Data.xlsx')

In [5]:
cols = ['Site ID', 'Vendor Code', 'Vendor Name', 'Account Number', 'Service Name', 'Item Description',
       'Meter Number', 'Units', 'Account Financial Code', 'Site Financial Code']
for col in cols:
    print('{0:24s}: {1}'.format(col, list(dfu[col].unique())))


Site ID                 : ['TRGR', 'CLXGP2', 'CLXES1', 'CLXSO1', 'CLXSM1', '11', 'TRPBG1', 'NWLBG1', '05', 'HSPSWP', '15A', 'BAOBG1', '15', '15B', 'DIPMP1', 'ANSBG1', 'MSRSWP', 'PRW', '03', '06', '09', '42', '04', '104', '13', '27', '28', '29', '44', '40', '47', '07', '08', 'CLX001', 'CLX002', 'CLX003', 'CLX004', 'VMP001', 'TRPAIR', 'GFP001', 'CACBG1', 'HEZ001', 'KWP001', 'ASLELC1', 'ASLPL1', 'ASLGP2', 'GRP001', '23', 'BALHHW', '12', 'KIP001', 'HEMBG1', '45', '22', 'WSPSWP', 'GSWNP', 'BHPCCS', 'NPP001', 'TRANS10', '14', '10', 'SHW001', 'TRANS06', 'BHPSKI3', 'BHPSKI4', '49', 'TRANS09', 'BAP001', 'ASLELC2', '34', 'KEP001', 'NWLP01', 'CBS001', 'MTP001', 'WSPP01', 'GF001', 'ASLTVR', 'ASLCHU', 'ASLCV1', 'ASLC18', 'ASLPIH', 'ASLHIS', 'ASLSEA', 'ASLC21', 'CSP001', 'WF001', 'MF001', 'MSLL001', '76', 'BHPSKI2', '37', 'GRPLFT', 'DOGPRK', 'MNPPRK', 'SF001', 'NBP001', 'STRBG1', 'MSWBG1', 'TWOCOM', 'NWP001', 'NRP001', 'MSWBG2', 'LF001', 'BENBG1', 'LEABG1', 'CRB001', 'WSPEMR', 'ASLGDM', 'ASLSQD', 'ASLC47', 'WSPGAR', 'ASLC52', 'BHPBHG', 'BHPBHW', 'BHPBHL', 'NPL', '38', '39', 'ADLER', '36', 'CEC', 'TRANS02', 'TRANS05', '43', '20', '46', 'TRANS03', 'TRANS08', 'BHPSKI1', 'TRANS04', 'TRS001', 'MSWWAR', 'MSP001', 'TRANS01', 'TRANS07', '16', 'Emer S T']
Vendor Code             : ['VP287678', 'VU797000', 'VA140014', 'VG354933', 'VF314940', 'VP 648001', 'WO', 'VG372746', 'AW', 'College', 'UN.REFUSE', 'Valley Water', 'VN590507', 'UAF', 'US AIR', 'US ARMY', 'IMCOM']
Vendor Name             : ['Sourdough Fuel  (Petro Star)', 'Army Corps of Engineers', 'Aurora Energy', 'Golden Valley Electric', 'Fairbanks Natural Gas', 'Pioneer Wells Inc', 'Waste Oil', 'Golden Heart Utilities', 'Alaska Waste', 'College Utilities', 'University Refuse', 'Valley Water', 'City of North Pole Utilities', 'UAF-Division of Utilities', 'U.S. Air Force', 'U.S. Dept. of Army', 'U.S. Army Alaska (IMCOM)']
Account Number          : ['00013297 (closed)', '01 River Park', '02 FNSB Entrance', '03 FNSB Office', '04 FNSB Bunker', '05-071-0', '05-092-2', '08-105-0', '08-112-0', '08-113-0', '08-114-0', '100850-7', '100932', '100968-7', '100985-1', '101024', '101024-8', '10282  (1920 LATHROP)', '10282  (2408 DAVIS)', '10282  (805 14TH AVE)', '10282  (809 PIONEER BAO)', '10282 (3175 PEGER-METER #2)', '10282 (3175 PEGER-TRG BG1)', '10283 - DENALI', '10283 - HUNTER', '10283 - JOY', '10283 - LADD', '10283 - NORDALE', '10283 - NUTRITION SRVS', '10283 - RYAN', '10283 - TANANA', '10283 - WEST VALLEY', '10283 - WOODRIVER', '10283-ANNE WIEN', '10283-EFFIE KOKRINE CHARTER', '10283-RANDY SMITH', '10283-U-PARK', '103480', '104270-4', '104271-2', '104272-0', '104273-8', '104274', '104292', '104380-1', '104487-4', '104544-2', '10582', '10583', '10584', '10585', '108001-9', '108974', '109138', '109191-7', '109193-3', '11-188-1', '11-290-1', '110825', '1111', '11212  (2010 2nd  CARL)', '112327-2', '112356-1', '112357', '112651', '114102', '114201', '114202-5', '114203-3', '114229  (parking lot)', '114295-9', '114344', '11930-5', '1234', '12499-0', '125468', '1271006300  (HHW Facil)', '1271006400  (HEM Facil)', '1271006700  (Main Landf)', '1311001100', '1312550000', '1312551000', '1313746310', '13296-9', '13475', '13640', '136935', '13760', '137909', '138695', '138868', '142778-0', '147317-2', '150272-3', '153175-0033', '154841', '15672', '156744-5', '157632', '157633', '161849', '162846-0', '167819-2', '16896', '172230-5', '172995-3', '1772710200', '1772710300', '179672', '181517', '182918', '185881-0', '18769', '1900336700', '1900339300', '1900348000', '1900348100', '1900349800', '1917008000', '1917008100', '1918027500', '1918029000', '1918029100', '1918029110', '1918029500', '1918037000', '1919073000', '1919073100', '197933', '1981025000', '1984040000', '198436-8', '1985007100', '1986001500', '1988049100', '1990005500', '1990029100', '1995007000', '1995008500', '1995016700', '1998005610', '1998037410', '1998037700', '1998037900', '1998038100', '1998038300', '1998038710', '1998038800', '1998038900', '1998039000', '1998073000', '1998073600', '1998073610', '1998076200', '1998087200', '1998097300', '1998097500', '1998097600', '1998099600', '201169-0', '201172-4', '201192-2', '205018-5', '212679-5', '212681-1', '212682-9', '220060-8', '221635-6', '222628', '222763-5', '224393-9', '224394-7', '225097-5', '227492-6', '229565-7', '230560-5', '230561-3', '235545', '235753-1  (closed)', '235840', '235937-0', '235939-6', '235941-2', '235942-0', '238759', '2440165000', '2440166000', '2440271010', '2440427500', '2440565100', '25411', '25431', '25439', '25465', '25478  (closed)', '25482', '25692', '25716', '2610703100', '2661016000', '2661017000', '2670698600', '2711001010', '2711179500', '28219', '28220', '28224', '28225', '28226', '2900170000', '2900180000', '2909001600', '2909031000', '2909041500', '2984040000', '2999125400', '2999127300', '2999128500', '2999128600', '2999128700', '2999131600', '2999132000', '2999132100', '2999132200', '2999132300', '2999133100', '2999133200', '2999133300', '2999133400', '2999133500', '304861-8', '31850', '318609  (closed)', '321032', '321383', '321389', '321404', '321405', '32330', '32331', '32439', '32532', '340325', '343585', '355433  (closed)', '357683', '357764', '357845', '368926', '368927', '374191', '38442001  (CARLSON CENT)', '38442002  (CAR CEN EM G)', '39024', '39124', '39196', '393044  (closed)', '39384001  (CHURCH, OFFI)', '39384002  (CIVIC CENTER)', '39384003  (GOLD DOME)', '39384004  (PIONEER HALL)', '39384005  (SQUARE DANCE)', '39384006  (PP RED BARN)', '39384007  (BIG DIPPER)', '39384012  (MARY SIAH)', '39384013 (WES  POOL)', '39384014  (ZAMBONI RM)', '39384015  (HAMME POOL)', '39384016  (NOEL WIEN LI)', '39384017  (GSWNP)', '39384018  (BOROUGH ADMI)', '39384019  (TRANS GAR DS)', '39384020  (CL BUNKER)', '39384021  (CHENA LAKES)', '39384023 (BHL tank)', '39384024  (MRR)', '39384026  (MSW)', '39384027 (closed)', '39384053  (BHG)', '39384057  (BHSB)', '39384058  (BHW)', '39384059  (BST)', '39384060  (ASLTVR)', '39384062  (PP HIST SOC)', '39384065 (CLRA generat)', '39384067 (NPL)', '39385001 (TRANS GAR)', '39386003', '39386008', '39386010', '39386036', '39389003  (LANDFILL OFF)', '39389006  (HEB)', '39389007  (LEACHATE)', '39389009  (SCALES)', '40108', '4012700110', '4012700210', '4012700510', '4012700610', '4012700710', '4012926010', '4019245200', '4019245300', '4019245400', '4019245500', '4019245600', '4019911210', '410564', '410585', '41762-6', '418365', '442905', '45641-8', '456581', '457-001', '457-002', '457-003', '457-004', '457-005', '457-006', '457-007', '457-008', '457-009', '457-010', '457-011', '457-012', '457-013', '457-014', '457-015', '457-016', '457-017', '457-018', '457-019', '457-020', '457-021', '457-022', '457-023', '457-024', '457-025', '457-026', '457-027', '457-028', '457-030', '46658-1', '471061', '473902', '475443', '47678-8', '5000', '5012', '53095', '55000001', '55001001', '55001002', '55001003', '55001004', '55002001', '55003001', '55004001', '55005001', '55006001', '55006002', '55006003', '55007001', '55008001', '55009001', '55010001', '55011001', '55011002', '55012001', '55013001', '55014001', '55015001', '55016001', '55017001', '55018001', '55019001', '5502-0', '55020001', '55021001', '55022001', '55023001', '55024001', '55024002', '55025001', '55026001', '55027001', '55028001', '55029001', '55030001', '55031001', '55032001', '5566', '558095', '5588.01', '5590.01', '5591.01', '560681', '562748', '562750', '562751', '562753', '564068', '56466', '566057', '570729', '572066', '572574', '572576', '572582', '572847', '577004', '586.01', '592.01', '59793', '59794-8  (closed)', '60000-7', '60001-5', '6067.02', '6067.03', '6084.01', '61701', '61704-3', '61709-2', '62263', '6258.01', '62853-7', '67750', '67754', '67758', '71896', '72180-3', '72182-9', '75188-3', '76005-8', '76471-2', '80589', '84821-8', '92221', '92695', '97876-7', 'AFS709348', 'ANDERSON', 'ARCTIC LIGHT', 'AW00-CWATER', 'AW00-ENSC', 'AW00-HUT-COMPOUND', 'AW01-CEC', 'AW02-SON49', 'AW03-WVH28', 'AW04-UPK07', 'AW05-WLR38', 'AW06-WDR29', 'AW07-TRV37', 'AW08-TIC39', 'AW09-TAN27', 'AW10-RYN13', 'AW11-RSM47', 'AW12-FMD15', 'AW13-NPM22', 'AW14-NPH23', 'AW15-NPE12', 'AW16-NDL04', 'AW17-LTH05', 'AW18-LAD42', 'AW19-JOY09', 'AW20-HUT14', 'AW21-HNT06', 'AW22-HLA40', 'AW23-DNL03', 'AW24-PLC36', 'AW25-BNT08', 'AW26-AWE44', 'AW27-FAC11', 'AW28-CHI45', 'AW29-BGR34', 'Badger', 'BEN EIELSON', 'C12700810', 'C12701010', 'C1900111000', 'C1900111100', 'C1900112400', 'C1900112500', 'C1900334100', 'C1911190000', 'C1980116000', 'C1980117000', 'C1981110000', 'C25424', 'C25430', 'C25437', 'C25448', 'C2901490000', 'C2910113000', 'C2911160000', 'C2981114000', 'C2991116000', 'C299127600', 'C2999123900', 'C2999124000', 'C2999124100', 'C2999124200', 'C2999125300', 'C2999125500', 'C2999125600', 'C2999125700', 'C2999127400', 'C2999130200', 'C2999130300', 'C4012700910', 'C4012701100', 'C4012942500', 'C4019200600', 'C4019200800', 'C4019202700', 'C4019203800', 'C4019203900', 'C4019204700', 'C4019205400', 'C4019206600', 'C4019207100', 'C4019207200', 'C4019207300', 'C4019209500', 'C4019211800', 'C4019229000', 'C4019230000', 'C4019231000', 'C4019234000', 'C4019238400', 'C4019242300', 'C4019242400', 'C4019242500', 'C4019242600', 'C4019242700', 'C4019242900', 'C4019999350', 'CRAWFORD', 'IMPC-WPW-U', 'Pearl Creek', 'Salcha', 'TWO RIVERS', 'Weller']
Service Name            : ['Oil #1', 'Oil #2', 'Electricity', 'Steam', 'Natural Gas', 'Water', 'Sewer', 'Refuse']
Item Description        : ['FED LUS TX', 'Fuel Oil #1 (Gallons)', 'FED OS TX', 'Tax: Regulatory', 'Misc. fee', 'Energy charge', 'Electricity charge', 'Steam (klbs)', 'Late charge', 'Steam (lbs)', 'Regulatory Cost Charge', 'Steam (MMBtu) CDHW', 'Service charge', 'Surcharge', 'Customer charge', 'Other charges', 'kVAR', 'KW Charge', 'Fuel cost adjustment', 'Customer Charge', 'On peak demand', 'Power Factor Charge', 'Previous balance adj.', 'Fuel & Purchased Power', 'Utility Charge', 'Demand Charge', 'Actual demand', 'Natural gas (CCF)', 'Gas Charge (CCF)', 'Cost adjustments', 'Misc. credit', 'Fuel Adjustment', 'Discount', 'kVARh/Excess kVARh', 'Water Usage (Gallons)', 'Service activation', 'Facility charge', 'Sewer Usage (Gallons)', 'Sewer Fixed Charge', 'Customer Charge - Sewer', 'Cost of Energy Adjustmen', 'meter charge - wells', 'Water Fixed Charge', 'Fire Protection', 'Meter charge', 'Customer Charge - Water', 'Plant Replacement ADJ', 'Fire charge', 'Container rental', 'Refuse (Loads)', 'Mileage', 'Garbage Charges', 'Install / Remove meter', 'Primary Service Discount', 'Water (Cgallons)', 'Taxes and Fees', 'Service deposit', 'BOD', 'Tax: City', 'Distribution demand', 'Misc. debit', 'Rate Reduction', 'HO#2', 'Tax: Municipal', 'records fee', 'connect fee', 'Water Base', 'FRR Water', 'Sewer Base', 'FRR Sewer', 'Water (kGal)', 'Refuse (Tons)', 'Pickup charge']
Meter Number            : [nan, 201278.0, 206219.0, 201223.0, 201236.0, 204584.0, 87678.0, 77380.0, 48346.0, 206204.0, 89660.0, 205188.0, 88051.0, 203725.0, 112407.0, 89672.0, 69850.0, 206178.0, 88935.0, 88921.0, 56488.0]
Units                   : [nan, 'Gallons', 'kWh', 'klbs', 'lbs', 'MMBtu', 'kVAR', 'kW', 'CCF', 'kVARh', 'Loads', 'Cgallons', 'kGal', 'Tons']
Account Financial Code  : [nan, 61831.0, 61838.0, 61837.0, 61833.0, 61836.0]
Site Financial Code     : [nan]

In [6]:
dfu[dfu['Service Name']=="Oil #2"]


Out[6]:
Site ID Site Name Vendor Code Vendor Name Account Number Bill Date Due Date Entry Date Invoice # Voucher # From Thru Service Name Item Description Meter Number Usage Cost Units Account Financial Code Site Financial Code
18 TRGR FNSB-Transit Garage VP287678 Sourdough Fuel (Petro Star) 00013297 (closed) 04/11/2011 04/11/2011 11/19/2013 NaN NaN 2011-03-12 2011-04-11 Oil #2 Tax: Regulatory NaN NaN 3.6 NaN NaN NaN

In [7]:
# Save out the Unique Site IDs and Names
#df_sites = pd.DataFrame(data=list(set(zip(dfu['Site ID'], dfu['Site Name']))))
#df_sites.to_excel('sites.xlsx')

In [8]:
# Filter down to the needed columns and rename them
cols = [
    ('Site ID', 'site_id'),
    ('From', 'from_dt'),
    ('Thru', 'thru_dt'),
    ('Service Name', 'service_type'),
    ('Item Description', 'item_desc'),
    ('Usage', 'usage'),
    ('Cost', 'cost'),
    ('Units', 'units'),
]

old_cols, new_cols = zip(*cols)         # unpack into old and new column names
dfu1 = dfu[list(old_cols)].copy()              # select just those columns from the origina dataframe
dfu1.columns = new_cols                 # rename the columns
dfu1.head()


Out[8]:
site_id from_dt thru_dt service_type item_desc usage cost units
0 TRGR 2008-11-19 2010-09-28 Oil #1 FED LUS TX NaN 3.00 NaN
1 TRGR 2008-11-19 2010-09-28 Oil #1 Fuel Oil #1 (Gallons) 3000.0 7950.00 Gallons
2 TRGR 2010-09-28 2010-09-30 Oil #1 FED LUS TX NaN 1.31 NaN
3 TRGR 2010-09-28 2010-09-30 Oil #1 Fuel Oil #1 (Gallons) 1307.0 3463.82 Gallons
4 TRGR 2010-09-30 2011-01-14 Oil #1 Fuel Oil #1 (Gallons) 1880.0 5545.41 Gallons

In [9]:
dfu1.query('service_type == "Oil #2"')


Out[9]:
site_id from_dt thru_dt service_type item_desc usage cost units
18 TRGR 2011-03-12 2011-04-11 Oil #2 Tax: Regulatory NaN 3.6 NaN

In [10]:
# Unique sets of service_type and units
df_usage = dfu1.query('usage > 0')
set(zip(df_usage.service_type, df_usage.units))


Out[10]:
{('Electricity', 'kVAR'),
 ('Electricity', 'kVARh'),
 ('Electricity', 'kW'),
 ('Electricity', 'kWh'),
 ('Natural Gas', 'CCF'),
 ('Oil #1', 'Gallons'),
 ('Refuse', 'Loads'),
 ('Refuse', 'Tons'),
 ('Sewer', 'Gallons'),
 ('Steam', 'MMBtu'),
 ('Steam', 'klbs'),
 ('Steam', 'lbs'),
 ('Water', 'Cgallons'),
 ('Water', 'Gallons'),
 ('Water', 'kGal')}

In [11]:
df_usage.query('service_type == "Electricity" and units == "kVARh"')


Out[11]:
site_id from_dt thru_dt service_type item_desc usage cost units
10286 HSPSWP 2006-07-17 2006-08-15 Electricity kVARh/Excess kVARh 1.0 2.47 kVARh
10298 HSPSWP 2006-09-15 2006-10-13 Electricity kVARh/Excess kVARh 1.0 20.22 kVARh
74072 PRW 2012-09-21 2012-10-19 Electricity kVARh/Excess kVARh 1.0 0.00 kVARh

Collapse Non-Usage Changes into "Other Charge"


In [12]:
# Back to processing the main utility bill DataFrame

# Now collapse all the non-usage charges into one item_desc: Other Charge
# This cuts the processing time in half due to not having to split a whole 
# bunch of non-consumption charges.
dfu1.loc[np.isnan(dfu1.usage), 'item_desc'] = 'Other Charge'
dfu1.units.fillna('-', inplace=True)   # Pandas can't do a GroupBy on NaNs, so replace with something
dfu1 = dfu1.groupby(['site_id', 'from_dt', 'thru_dt', 'service_type', 'item_desc', 'units']).sum()
dfu1.reset_index(inplace=True)
dfu1.head(20)


Out[12]:
site_id from_dt thru_dt service_type item_desc units usage cost
0 03 2005-11-28 2005-12-29 Sewer Other Charge - NaN 285.06
1 03 2005-11-28 2005-12-29 Water Other Charge - NaN 53.25
2 03 2005-11-28 2005-12-29 Water Water Usage (Gallons) Gallons 32400.0 240.65
3 03 2005-12-12 2006-01-12 Electricity Electricity charge kWh 31.0 23.20
4 03 2005-12-13 2006-01-13 Electricity Electricity charge kWh 36.0 23.74
5 03 2005-12-20 2006-01-23 Electricity Electricity charge kWh 43608.0 5546.13
6 03 2005-12-29 2006-01-30 Sewer Other Charge - NaN 210.24
7 03 2005-12-29 2006-01-30 Water Other Charge - NaN 53.25
8 03 2005-12-29 2006-01-30 Water Water Usage (Gallons) Gallons 23800.0 180.77
9 03 2006-01-01 2006-01-31 Natural Gas Natural gas (CCF) CCF 7394.0 9412.56
10 03 2006-01-01 2006-01-31 Natural Gas Other Charge - NaN 45.54
11 03 2006-01-01 2006-01-31 Refuse Other Charge - NaN 25.00
12 03 2006-01-01 2006-01-31 Refuse Refuse (Loads) Loads 7.0 232.54
13 03 2006-01-12 2006-02-10 Electricity Electricity charge kWh 34.0 24.11
14 03 2006-01-13 2006-02-13 Electricity Electricity charge kWh 38.0 24.61
15 03 2006-01-23 2006-02-22 Electricity Electricity charge kWh 48480.0 6039.47
16 03 2006-01-30 2006-03-02 Sewer Other Charge - NaN 289.41
17 03 2006-01-30 2006-03-02 Water Other Charge - NaN 53.25
18 03 2006-01-30 2006-03-02 Water Water Usage (Gallons) Gallons 32900.0 244.15
19 03 2006-02-01 2006-02-28 Natural Gas Natural gas (CCF) CCF 5251.0 6684.52

Split Each Bill into Multiple Pieces, each within one Calendar Month


In [13]:
# Test the split_period function
bench_util.split_period('2016-01-25', '2016-06-26')
# this takes about 3.5 msec to do, which is pretty long


Out[13]:
[PeriodSplit(cal_year=2016, cal_mo=1, bill_frac=0.042483660130718956, days_served=6.5),
 PeriodSplit(cal_year=2016, cal_mo=2, bill_frac=0.18954248366013071, days_served=29.0),
 PeriodSplit(cal_year=2016, cal_mo=3, bill_frac=0.20261437908496732, days_served=31.0),
 PeriodSplit(cal_year=2016, cal_mo=4, bill_frac=0.19607843137254902, days_served=30.0),
 PeriodSplit(cal_year=2016, cal_mo=5, bill_frac=0.20261437908496732, days_served=31.0),
 PeriodSplit(cal_year=2016, cal_mo=6, bill_frac=0.16666666666666666, days_served=25.5)]

In [14]:
# Split all the rows into calendar month pieces and make a new DataFrame
recs=[]
for ix, row in dfu1.iterrows():
    # it is *much* faster to modify a dictionary than a Pandas series
    row_tmpl = row.to_dict()   

    # Pull out start and end of billing period; can drop the from & thru dates now
    # doing split-up of billing period across months.
    st = row_tmpl['from_dt']
    en = row_tmpl['thru_dt']
    del row_tmpl['from_dt']
    del row_tmpl['thru_dt']
    
    for piece in bench_util.split_period(st, en):
        new_row = row_tmpl.copy()
        new_row['cal_year'] = piece.cal_year
        new_row['cal_mo'] = piece.cal_mo
        new_row['days_served'] = piece.days_served
        new_row['usage'] *= piece.bill_frac
        new_row['cost'] *= piece.bill_frac
        recs.append(new_row)

dfu2 = pd.DataFrame(recs, index=range(len(recs)))
dfu2.head()


Out[14]:
cal_mo cal_year cost days_served item_desc service_type site_id units usage
0 11 2005 22.988710 2.5 Other Charge Sewer 03 - NaN
1 12 2005 262.071290 28.5 Other Charge Sewer 03 - NaN
2 11 2005 4.294355 2.5 Other Charge Water 03 - NaN
3 12 2005 48.955645 28.5 Other Charge Water 03 - NaN
4 11 2005 19.407258 2.5 Water Usage (Gallons) Water 03 Gallons 2612.903226

In [23]:
dfu2.to_csv('dfu2.csv')

Sum Up the Pieces by Month


In [15]:
dfu3 = dfu2.groupby(
    ['site_id', 'service_type', 'cal_year', 'cal_mo', 'item_desc', 'units']
).sum()
dfu3 = dfu3.reset_index()
dfu3.head(10)


Out[15]:
site_id service_type cal_year cal_mo item_desc units cost days_served usage
0 03 Electricity 2005 12 Electricity charge kWh 1904.657880 49.5 14790.748577
1 03 Electricity 2006 1 Electricity charge kWh 5430.493797 93.0 42665.790911
2 03 Electricity 2006 2 Electricity charge kWh 5764.406730 84.0 45010.439348
3 03 Electricity 2006 3 Electricity charge kWh 6349.255299 93.0 46311.547557
4 03 Electricity 2006 4 Electricity charge kWh 5529.385224 90.0 40392.812893
5 03 Electricity 2006 5 Electricity charge kWh 5114.850768 93.0 37585.009199
6 03 Electricity 2006 6 Electricity charge - 23.225806 36.0 0.000000
7 03 Electricity 2006 6 Electricity charge kWh 3711.073939 54.0 26419.530303
8 03 Electricity 2006 7 Electricity charge - 16.774194 26.0 0.000000
9 03 Electricity 2006 7 Electricity charge kWh 2982.667470 67.0 18455.905417

In [16]:
dfu3[dfu3.service_type=='Electricity'].head(10)


Out[16]:
site_id service_type cal_year cal_mo item_desc units cost days_served usage
0 03 Electricity 2005 12 Electricity charge kWh 1904.657880 49.5 14790.748577
1 03 Electricity 2006 1 Electricity charge kWh 5430.493797 93.0 42665.790911
2 03 Electricity 2006 2 Electricity charge kWh 5764.406730 84.0 45010.439348
3 03 Electricity 2006 3 Electricity charge kWh 6349.255299 93.0 46311.547557
4 03 Electricity 2006 4 Electricity charge kWh 5529.385224 90.0 40392.812893
5 03 Electricity 2006 5 Electricity charge kWh 5114.850768 93.0 37585.009199
6 03 Electricity 2006 6 Electricity charge - 23.225806 36.0 0.000000
7 03 Electricity 2006 6 Electricity charge kWh 3711.073939 54.0 26419.530303
8 03 Electricity 2006 7 Electricity charge - 16.774194 26.0 0.000000
9 03 Electricity 2006 7 Electricity charge kWh 2982.667470 67.0 18455.905417

Add Fiscal Year Info and MMBtus


In [17]:
# Add Fiscal Year and month columns
fyr = []
fmo = []
for cyr, cmo in zip(dfu3.cal_year, dfu3.cal_mo):
    fis_yr, fis_mo = bench_util.calendar_to_fiscal(cyr, cmo)
    fyr.append(fis_yr)
    fmo.append(fis_mo)
dfu3['fiscal_year'] = fyr
dfu3['fiscal_mo'] = fmo
dfu3.head()


Out[17]:
site_id service_type cal_year cal_mo item_desc units cost days_served usage fiscal_year fiscal_mo
0 03 Electricity 2005 12 Electricity charge kWh 1904.657880 49.5 14790.748577 2006 6
1 03 Electricity 2006 1 Electricity charge kWh 5430.493797 93.0 42665.790911 2006 7
2 03 Electricity 2006 2 Electricity charge kWh 5764.406730 84.0 45010.439348 2006 8
3 03 Electricity 2006 3 Electricity charge kWh 6349.255299 93.0 46311.547557 2006 9
4 03 Electricity 2006 4 Electricity charge kWh 5529.385224 90.0 40392.812893 2006 10

In [40]:
mmbtu = []
for ix, row in dfu3.iterrows():
    row_mmbtu = ut.fuel_btus_per_unit(row.service_type, row.units) * row.usage / 1e6
    if np.isnan(row_mmbtu): row_mmbtu = 0.0
    mmbtu.append(row_mmbtu)
dfu3['mmbtu'] = mmbtu
dfu3.head(10)


Out[40]:
site_id service_type cal_year cal_mo item_desc units cost days_served usage fiscal_year fiscal_mo mmbtu
0 03 Electricity 2005 12 Electricity charge kWh 1904.657880 49.5 14790.748577 2006 6 50.466034
1 03 Electricity 2006 1 Electricity charge kWh 5430.493797 93.0 42665.790911 2006 7 145.575679
2 03 Electricity 2006 2 Electricity charge kWh 5764.406730 84.0 45010.439348 2006 8 153.575619
3 03 Electricity 2006 3 Electricity charge kWh 6349.255299 93.0 46311.547557 2006 9 158.015000
4 03 Electricity 2006 4 Electricity charge kWh 5529.385224 90.0 40392.812893 2006 10 137.820278
5 03 Electricity 2006 5 Electricity charge kWh 5114.850768 93.0 37585.009199 2006 11 128.240051
6 03 Electricity 2006 6 Electricity charge - 23.225806 36.0 0.000000 2006 12 0.000000
7 03 Electricity 2006 6 Electricity charge kWh 3711.073939 54.0 26419.530303 2006 12 90.143437
8 03 Electricity 2006 7 Electricity charge - 16.774194 26.0 0.000000 2007 1 0.000000
9 03 Electricity 2006 7 Electricity charge kWh 2982.667470 67.0 18455.905417 2007 1 62.971549

In [19]:
dfu3[dfu3.service_type=='Electricity'].head(10)


Out[19]:
site_id service_type cal_year cal_mo item_desc units cost days_served usage fiscal_year fiscal_mo mmbtu
0 03 Electricity 2005 12 Electricity charge kWh 1904.657880 49.5 14790.748577 2006 6 50.466034
1 03 Electricity 2006 1 Electricity charge kWh 5430.493797 93.0 42665.790911 2006 7 145.575679
2 03 Electricity 2006 2 Electricity charge kWh 5764.406730 84.0 45010.439348 2006 8 153.575619
3 03 Electricity 2006 3 Electricity charge kWh 6349.255299 93.0 46311.547557 2006 9 158.015000
4 03 Electricity 2006 4 Electricity charge kWh 5529.385224 90.0 40392.812893 2006 10 137.820278
5 03 Electricity 2006 5 Electricity charge kWh 5114.850768 93.0 37585.009199 2006 11 128.240051
6 03 Electricity 2006 6 Electricity charge - 23.225806 36.0 0.000000 2006 12 0.000000
7 03 Electricity 2006 6 Electricity charge kWh 3711.073939 54.0 26419.530303 2006 12 90.143437
8 03 Electricity 2006 7 Electricity charge - 16.774194 26.0 0.000000 2007 1 0.000000
9 03 Electricity 2006 7 Electricity charge kWh 2982.667470 67.0 18455.905417 2007 1 62.971549

In [20]:
dfu3.to_csv('dfu3.csv')
dfu3.to_pickle('dfu3.pkl')

Compare to Old DataFrame to make sure format was the same


In [33]:
df_test = pd.pivot_table(dfu3, index='site_id', values='cost', columns='fiscal_year')
dfu3_old = pd.read_pickle('dfu3_old.pkl')
df_test_old = pd.pivot_table(dfu3_old, index='site_id', values='cost', columns='fiscal_year')
df_diff = df_test - df_test_old
df_diff.to_csv('df_diff.csv')
df_diff


Out[33]:
fiscal_year 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018
site_id
03 NaN NaN NaN NaN NaN 29.033144 0.0 0.000000 0.000000 0.000000 -5.152914 446.678910 NaN
04 NaN NaN NaN NaN NaN 31.642611 0.0 0.000000 0.000000 0.000000 -19.859050 835.383678 NaN
05 NaN NaN NaN NaN NaN 98.504327 0.0 0.000000 0.000000 0.000000 3.932541 1869.011458 NaN
06 NaN NaN NaN NaN NaN 22.854131 0.0 0.000000 0.000000 0.000000 -6.026963 676.229957 NaN
07 NaN NaN NaN NaN NaN 90.041916 0.0 0.000000 0.000000 0.000000 25.288608 779.637596 NaN
08 NaN NaN NaN NaN NaN 26.022863 0.0 0.000000 0.000000 0.000000 -13.580637 598.963289 NaN
09 NaN NaN NaN NaN NaN 104.593805 0.0 0.000000 0.000000 0.000000 -6.884378 748.988652 NaN
10 NaN NaN NaN NaN NaN 117.685866 0.0 0.000000 0.000000 0.000000 -16.576713 766.081392 NaN
104 NaN NaN NaN NaN 1986.776884 26.881476 0.0 0.000000 0.000000 0.000000 0.000000 770.819877 NaN
11 NaN NaN NaN NaN NaN 176.522276 0.0 0.000000 0.000000 0.000000 -38.732128 1259.936928 NaN
12 NaN NaN NaN NaN NaN 82.674942 0.0 0.000000 0.000000 0.000000 -54.671129 1086.387842 NaN
13 NaN NaN NaN NaN NaN 37.425570 0.0 0.000000 0.000000 0.000000 -75.001127 1449.024847 NaN
14 NaN NaN NaN NaN 5236.788227 153.713393 0.0 0.000000 0.000000 0.000000 -158.875903 4368.351997 NaN
15 NaN NaN NaN NaN NaN 52.331830 0.0 0.000000 0.000000 0.000000 -13.969860 520.779961 NaN
15A NaN NaN NaN NaN NaN 1.650027 0.0 0.000000 0.000000 0.000000 0.000000 106.194990 NaN
15B NaN NaN NaN NaN NaN 2.424205 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 NaN
16 NaN NaN NaN NaN NaN -47.969641 0.0 0.000000 0.000000 0.000000 0.000000 2107.021000 NaN
20 NaN NaN NaN NaN NaN -247.742328 0.0 0.000000 0.000000 0.000000 0.000000 2905.698152 NaN
22 NaN NaN NaN NaN NaN 107.212550 0.0 0.000000 0.000000 0.000000 -76.697089 2515.440697 NaN
23 NaN NaN NaN NaN NaN 176.904688 0.0 0.000000 0.000000 0.000000 -86.922178 2687.821929 NaN
27 NaN NaN NaN NaN NaN 118.799982 0.0 0.000000 0.000000 0.000000 -30.933822 1980.562746 NaN
28 NaN NaN NaN NaN NaN 45.250267 0.0 0.000000 0.000000 0.000000 -59.115312 2804.275647 NaN
29 NaN NaN NaN NaN NaN 52.499713 0.0 0.000000 0.000000 0.000000 -29.125455 1399.987654 NaN
34 NaN NaN NaN NaN NaN 116.753330 0.0 0.000000 0.000000 0.000000 -25.998855 496.878869 NaN
36 NaN NaN NaN NaN NaN 83.294871 0.0 0.000000 0.000000 0.000000 -16.524677 830.856946 NaN
37 NaN NaN NaN NaN NaN -175.474301 0.0 0.000000 0.000000 0.000000 -11.451279 441.432477 NaN
38 NaN NaN NaN NaN NaN -239.644352 0.0 0.000000 0.000000 0.000000 -47.733358 703.382717 NaN
39 NaN NaN NaN NaN NaN 100.507774 0.0 0.000000 0.000000 0.000000 -76.948185 1071.924534 NaN
40 NaN NaN NaN NaN NaN 48.681714 0.0 0.000000 0.000000 0.000000 -3.273744 517.446076 NaN
42 NaN NaN NaN NaN NaN 31.359610 0.0 0.000000 0.000000 0.000000 -28.889673 980.098618 NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ...
NPP001 NaN NaN NaN NaN NaN 0.290404 0.0 0.000000 0.000000 0.000000 0.000000 5.137009 NaN
NRP001 NaN NaN NaN NaN NaN 0.507245 0.0 0.000000 0.000000 0.000000 0.000000 3.954014 NaN
NWLBG1 NaN NaN NaN 1877.031710 1305.545640 42.607410 0.0 0.000000 0.000000 0.000000 32.908742 592.473200 NaN
NWLP01 NaN NaN NaN NaN NaN 111.002692 0.0 -137.774402 -334.926330 0.000000 -160.643756 0.000000 NaN
NWP001 NaN NaN NaN NaN NaN 1.432133 0.0 0.000000 0.000000 0.000000 0.000000 3.021886 NaN
PRW NaN NaN NaN NaN 547.713977 34.209440 0.0 0.000000 0.000000 0.000000 0.000000 331.414550 526.331346
SF001 NaN NaN NaN NaN 49.772552 0.000000 0.0 -20.680408 -122.118243 -0.190073 -7.183509 0.000000 NaN
SHW001 NaN NaN NaN NaN NaN -5.097401 0.0 0.000000 0.000000 0.000000 0.000000 67.335003 NaN
STRBG1 NaN NaN NaN NaN NaN 0.844463 0.0 0.000000 0.000000 0.000000 0.000000 10.373301 NaN
TRANS01 NaN NaN NaN NaN NaN -5.387056 0.0 0.000000 0.000000 0.000000 0.000000 19.925716 NaN
TRANS02 NaN NaN NaN NaN NaN 1.199857 0.0 0.000000 0.000000 0.000000 0.000000 18.502179 NaN
TRANS03 NaN NaN NaN NaN NaN 1.693992 0.0 0.000000 0.000000 0.000000 0.000000 8.752391 NaN
TRANS04 NaN NaN NaN NaN NaN 1.859870 0.0 0.000000 0.000000 0.000000 0.000000 11.626445 NaN
TRANS05 NaN NaN NaN NaN NaN -2.751040 0.0 0.000000 0.000000 0.000000 0.000000 33.098438 NaN
TRANS06 NaN NaN NaN NaN NaN -17.999350 0.0 0.000000 0.000000 0.000000 0.000000 68.774666 NaN
TRANS07 NaN NaN NaN NaN NaN -3.094363 0.0 0.000000 0.000000 0.000000 0.000000 17.691369 NaN
TRANS08 NaN NaN NaN NaN NaN -3.344157 0.0 0.000000 0.000000 0.000000 0.000000 32.518211 NaN
TRANS09 NaN NaN NaN NaN NaN 0.371250 0.0 0.000000 0.000000 0.000000 0.000000 10.436201 NaN
TRANS10 NaN NaN NaN NaN NaN 0.649369 0.0 0.000000 0.000000 0.000000 0.000000 20.719566 NaN
TRGR NaN NaN NaN 1294.035706 1299.482372 6.366386 0.0 0.000000 0.000000 0.000000 0.000000 -339.377875 NaN
TRPAIR NaN NaN NaN NaN NaN -0.165118 0.0 0.000000 NaN NaN NaN NaN NaN
TRPBG1 NaN NaN NaN NaN NaN 13.874854 0.0 0.000000 0.000000 0.000000 -9.436486 392.584789 NaN
TRS001 NaN NaN NaN NaN NaN 2.157187 NaN NaN NaN NaN NaN NaN NaN
TWOCOM NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
VMP001 NaN NaN NaN NaN NaN -6.506939 0.0 -17.759672 -28.456307 0.000000 -20.205737 -4.259091 NaN
WF001 NaN NaN NaN NaN NaN 69.993132 0.0 -47.354834 -95.363351 0.000000 -18.699704 0.000000 NaN
WSPEMR NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
WSPGAR NaN NaN NaN NaN 58.964434 0.000000 0.0 -10.732155 -66.295752 0.000000 0.000000 7.872848 NaN
WSPP01 NaN NaN NaN NaN NaN 10.581647 0.0 -18.345027 -57.265927 0.000000 -55.430536 0.000000 NaN
WSPSWP NaN NaN NaN NaN NaN -3.379928 0.0 0.000000 0.000000 0.000000 0.000000 439.562095 NaN

137 rows × 13 columns


In [41]:
dfu3.query("site_id=='13' and fiscal_year==2016 and fiscal_mo==1")


Out[41]:
site_id service_type cal_year cal_mo item_desc units cost days_served usage fiscal_year fiscal_mo mmbtu
10799 13 Electricity 2015 7 Electricity charge kWh 4668.356356 31.0 18638.004032 2016 1 63.59287
11076 13 Refuse 2015 7 Other Charge - 133.754194 31.0 NaN 2016 1 0.00000
11204 13 Sewer 2015 7 Other Charge - 411.637923 31.0 NaN 2016 1 0.00000
11464 13 Water 2015 7 Other Charge - 190.007838 31.0 NaN 2016 1 0.00000
11465 13 Water 2015 7 Water Usage (Gallons) Gallons 386.452288 31.0 29310.554435 2016 1 0.00000

In [42]:
dfu3_old.query("site_id=='13' and fiscal_year==2016 and fiscal_mo==1")


Out[42]:
site_id service_type cal_year cal_mo item_desc units cost days_served usage fiscal_year fiscal_mo mmbtu
6211 13 Electricity 2015 7 Electricity charge kWh 4668.356356 31.0 18638.004032 2016 1 63.59287
6345 13 Refuse 2015 7 Other Charge - 133.754194 31.0 NaN 2016 1 NaN
6413 13 Sewer 2015 7 Other Charge - 411.637923 31.0 NaN 2016 1 NaN
6553 13 Water 2015 7 Other Charge - 190.007838 31.0 NaN 2016 1 NaN
6554 13 Water 2015 7 Water Usage (Gallons) Gallons 386.452288 31.0 29310.554435 2016 1 0.00000

Work on Other Utility Functions

Find All Fiscal Years and Months Present in a DataFrame


In [21]:
bench_util.months_present(dfu3)


Out[21]:
[(2006, 2),
 (2006, 3),
 (2006, 4),
 (2006, 5),
 (2006, 6),
 (2006, 7),
 (2006, 8),
 (2006, 9),
 (2006, 10),
 (2006, 11),
 (2006, 12),
 (2007, 1),
 (2007, 2),
 (2007, 3),
 (2007, 4),
 (2007, 5),
 (2007, 6),
 (2007, 7),
 (2007, 8),
 (2007, 9),
 (2007, 10),
 (2007, 11),
 (2007, 12),
 (2008, 1),
 (2008, 2),
 (2008, 3),
 (2008, 4),
 (2008, 5),
 (2008, 6),
 (2008, 7),
 (2008, 8),
 (2008, 9),
 (2008, 10),
 (2008, 11),
 (2008, 12),
 (2009, 1),
 (2009, 2),
 (2009, 3),
 (2009, 4),
 (2009, 5),
 (2009, 6),
 (2009, 7),
 (2009, 8),
 (2009, 9),
 (2009, 10),
 (2009, 11),
 (2009, 12),
 (2010, 1),
 (2010, 2),
 (2010, 3),
 (2010, 4),
 (2010, 5),
 (2010, 6),
 (2010, 7),
 (2010, 8),
 (2010, 9),
 (2010, 10),
 (2010, 11),
 (2010, 12),
 (2011, 1),
 (2011, 2),
 (2011, 3),
 (2011, 4),
 (2011, 5),
 (2011, 6),
 (2011, 7),
 (2011, 8),
 (2011, 9),
 (2011, 10),
 (2011, 11),
 (2011, 12),
 (2012, 1),
 (2012, 2),
 (2012, 3),
 (2012, 4),
 (2012, 5),
 (2012, 6),
 (2012, 7),
 (2012, 8),
 (2012, 9),
 (2012, 10),
 (2012, 11),
 (2012, 12),
 (2013, 1),
 (2013, 2),
 (2013, 3),
 (2013, 4),
 (2013, 5),
 (2013, 6),
 (2013, 7),
 (2013, 8),
 (2013, 9),
 (2013, 10),
 (2013, 11),
 (2013, 12),
 (2014, 1),
 (2014, 2),
 (2014, 3),
 (2014, 4),
 (2014, 5),
 (2014, 6),
 (2014, 7),
 (2014, 8),
 (2014, 9),
 (2014, 10),
 (2014, 11),
 (2014, 12),
 (2015, 1),
 (2015, 2),
 (2015, 3),
 (2015, 4),
 (2015, 5),
 (2015, 6),
 (2015, 7),
 (2015, 8),
 (2015, 9),
 (2015, 10),
 (2015, 11),
 (2015, 12),
 (2016, 1),
 (2016, 2),
 (2016, 3),
 (2016, 4),
 (2016, 5),
 (2016, 6),
 (2016, 7),
 (2016, 8),
 (2016, 9),
 (2016, 10),
 (2016, 11),
 (2016, 12),
 (2017, 1),
 (2017, 2),
 (2017, 3),
 (2017, 4),
 (2017, 5),
 (2017, 6),
 (2017, 7),
 (2017, 8),
 (2017, 9),
 (2017, 10),
 (2017, 11),
 (2017, 12),
 (2018, 1),
 (2018, 2),
 (2018, 3),
 (2018, 4),
 (2018, 5),
 (2018, 6)]

In [22]:
bench_util.months_present(dfu3, 'cal_year', 'cal_mo')[-5:]


Out[22]:
[(2017, 8), (2017, 9), (2017, 10), (2017, 11), (2017, 12)]

Test code for Using Online degree-days


In [3]:
import io
import requests

resp = requests.get('http://ahfc.webfactional.com/data/degree_days.pkl').content
df_dd = pd.read_pickle(io.BytesIO(resp), compression='bz2')
df_dd.tail()


Out[3]:
month hdd60 hdd65
station
PFYU 2017-12-01 1837.5 1992.5
PFYU 2018-01-01 2139.3 2294.3
PFYU 2018-02-01 1904.8 2044.8
PFYU 2018-03-01 1566.3 1721.1
PFYU 2018-04-01 1111.2 1261.2

In [10]:
df_dd.query('station=="CYDA" and month=="2008-01-01"')


Out[10]:
month hdd60 hdd65
station
CYDA 2008-01-01 2367.0 2521.8

In [12]:
df_dd.loc['PAFA'].tail(36)


Out[12]:
month hdd60 hdd65
station
PAFA 2015-05-01 193.3 297.9
PAFA 2015-06-01 117.6 208.5
PAFA 2015-07-01 65.2 150.8
PAFA 2015-08-01 220.7 348.6
PAFA 2015-09-01 538.7 683.2
PAFA 2015-10-01 891.7 1046.7
PAFA 2015-11-01 1498.9 1649.1
PAFA 2015-12-01 1903.1 2058.1
PAFA 2016-01-01 1747.5 1902.5
PAFA 2016-02-01 1544.2 1689.2
PAFA 2016-03-01 1235.7 1390.5
PAFA 2016-04-01 542.8 689.4
PAFA 2016-05-01 241.3 367.4
PAFA 2016-06-01 100.4 196.8
PAFA 2016-07-01 45.4 134.5
PAFA 2016-08-01 74.5 169.4
PAFA 2016-09-01 423.5 568.0
PAFA 2016-10-01 1076.9 1231.8
PAFA 2016-11-01 1674.9 1825.1
PAFA 2016-12-01 2090.2 2245.2
PAFA 2017-01-01 2147.5 2302.5
PAFA 2017-02-01 1656.7 1796.7
PAFA 2017-03-01 1929.3 2084.1
PAFA 2017-04-01 712.9 862.9
PAFA 2017-05-01 305.8 447.6
PAFA 2017-06-01 68.2 135.4
PAFA 2017-07-01 22.7 86.2
PAFA 2017-08-01 132.6 248.2
PAFA 2017-09-01 379.8 523.5
PAFA 2017-10-01 889.1 1044.1
PAFA 2017-11-01 1602.0 1752.2
PAFA 2017-12-01 1557.9 1712.9
PAFA 2018-01-01 2044.9 2199.9
PAFA 2018-02-01 1592.6 1732.6
PAFA 2018-03-01 1338.9 1493.7
PAFA 2018-04-01 837.0 987.0

In [4]:
_dd = {}
for ix, row in df_dd.iterrows():
    f_yr, f_mo = bench_util.calendar_to_fiscal(row.month.year, row.month.month)
    _dd[(f_yr, f_mo, ix)] = row.hdd65

In [6]:
_dd


Out[6]:
{(2008, 7, 'CYDA'): 2521.8,
 (2008, 8, 'CYDA'): 2279.4,
 (2008, 9, 'CYDA'): 1715.7,
 (2008, 10, 'CYDA'): 974.4,
 (2008, 11, 'CYDA'): 499.2,
 (2008, 12, 'CYDA'): 249.7,
 (2009, 1, 'CYDA'): 292.9,
 (2009, 2, 'CYDA'): 441.2,
 (2009, 3, 'CYDA'): 686.8,
 (2009, 4, 'CYDA'): 1374.3,
 (2009, 5, 'CYDA'): 1774.0,
 (2009, 6, 'CYDA'): 2667.3,
 (2009, 7, 'CYDA'): 2679.7,
 (2009, 8, 'CYDA'): 2130.5,
 (2009, 9, 'CYDA'): 1980.8,
 (2009, 10, 'CYDA'): 1002.7,
 (2009, 11, 'CYDA'): 533.9,
 (2009, 12, 'CYDA'): 272.5,
 (2010, 1, 'CYDA'): 208.9,
 (2010, 2, 'CYDA'): 367.4,
 (2010, 3, 'CYDA'): 620.7,
 (2010, 4, 'CYDA'): 1154.9,
 (2010, 5, 'CYDA'): 1922.5,
 (2010, 6, 'CYDA'): 2093.6,
 (2010, 7, 'CYDA'): 2293.0,
 (2010, 8, 'CYDA'): 1822.8,
 (2010, 9, 'CYDA'): 1525.7,
 (2010, 10, 'CYDA'): 816.6,
 (2010, 11, 'CYDA'): 485.3,
 (2010, 12, 'CYDA'): 250.1,
 (2011, 1, 'CYDA'): 210.3,
 (2011, 2, 'CYDA'): 335.3,
 (2011, 3, 'CYDA'): 714.0,
 (2011, 4, 'CYDA'): 1191.1,
 (2011, 5, 'CYDA'): 1630.1,
 (2011, 6, 'CYDA'): 2520.6,
 (2011, 7, 'CYDA'): 2556.0,
 (2011, 8, 'CYDA'): 2111.1,
 (2011, 9, 'CYDA'): 2042.6,
 (2011, 10, 'CYDA'): 1011.2,
 (2011, 11, 'CYDA'): 493.9,
 (2011, 12, 'CYDA'): 266.8,
 (2012, 1, 'CYDA'): 212.1,
 (2012, 2, 'CYDA'): 390.6,
 (2012, 3, 'CYDA'): 609.8,
 (2012, 4, 'CYDA'): 1135.3,
 (2012, 5, 'CYDA'): 2157.8,
 (2012, 6, 'CYDA'): 2041.3,
 (2012, 7, 'CYDA'): 2710.4,
 (2012, 8, 'CYDA'): 1713.2,
 (2012, 9, 'CYDA'): 1816.5,
 (2012, 10, 'CYDA'): 896.0,
 (2012, 11, 'CYDA'): 559.4,
 (2012, 12, 'CYDA'): 226.8,
 (2013, 1, 'CYDA'): 225.9,
 (2013, 2, 'CYDA'): 365.1,
 (2013, 3, 'CYDA'): 590.6,
 (2013, 4, 'CYDA'): 1505.4,
 (2013, 5, 'CYDA'): 2416.1,
 (2013, 6, 'CYDA'): 2762.1,
 (2013, 7, 'CYDA'): 2368.5,
 (2013, 8, 'CYDA'): 1789.4,
 (2013, 9, 'CYDA'): 1915.1,
 (2013, 10, 'CYDA'): 1381.8,
 (2013, 11, 'CYDA'): 654.3,
 (2013, 12, 'CYDA'): 198.1,
 (2014, 1, 'CYDA'): 176.9,
 (2014, 2, 'CYDA'): 297.7,
 (2014, 3, 'CYDA'): 665.7,
 (2014, 4, 'CYDA'): 1080.0,
 (2014, 5, 'CYDA'): 2067.4,
 (2014, 6, 'CYDA'): 2596.7,
 (2014, 7, 'CYDA'): 1921.2,
 (2014, 8, 'CYDA'): 2298.2,
 (2014, 9, 'CYDA'): 1883.7,
 (2014, 10, 'CYDA'): 1002.8,
 (2014, 11, 'CYDA'): 462.2,
 (2014, 12, 'CYDA'): 285.1,
 (2015, 1, 'CYDA'): 213.7,
 (2015, 2, 'CYDA'): 338.7,
 (2015, 3, 'CYDA'): 678.7,
 (2015, 4, 'CYDA'): 1186.8,
 (2015, 5, 'CYDA'): 1827.9,
 (2015, 6, 'CYDA'): 1953.7,
 (2015, 7, 'CYDA'): 2314.9,
 (2015, 8, 'CYDA'): 1975.3,
 (2015, 9, 'CYDA'): 1619.9,
 (2015, 10, 'CYDA'): 865.0,
 (2015, 11, 'CYDA'): 378.9,
 (2015, 12, 'CYDA'): 277.4,
 (2016, 1, 'CYDA'): 242.1,
 (2016, 2, 'CYDA'): 411.3,
 (2016, 3, 'CYDA'): 697.6,
 (2016, 4, 'CYDA'): 1058.6,
 (2016, 5, 'CYDA'): 1798.5,
 (2016, 6, 'CYDA'): 1947.3,
 (2016, 7, 'CYDA'): 1872.0,
 (2016, 8, 'CYDA'): 1755.7,
 (2016, 9, 'CYDA'): 1348.3,
 (2016, 10, 'CYDA'): 748.8,
 (2016, 11, 'CYDA'): 457.0,
 (2016, 12, 'CYDA'): 245.5,
 (2017, 1, 'CYDA'): 181.5,
 (2017, 2, 'CYDA'): 289.4,
 (2017, 3, 'CYDA'): 660.3,
 (2017, 4, 'CYDA'): 1482.0,
 (2017, 5, 'CYDA'): 1835.9,
 (2017, 6, 'CYDA'): 2424.7,
 (2017, 7, 'CYDA'): 2409.3,
 (2017, 8, 'CYDA'): 2037.7,
 (2017, 9, 'CYDA'): 2124.3,
 (2017, 10, 'CYDA'): 955.3,
 (2017, 11, 'CYDA'): 490.8,
 (2017, 12, 'CYDA'): 244.0,
 (2018, 1, 'CYDA'): 166.4,
 (2018, 2, 'CYDA'): 306.4,
 (2018, 3, 'CYDA'): 558.7,
 (2018, 4, 'CYDA'): 1129.6,
 (2018, 5, 'CYDA'): 2268.7,
 (2018, 6, 'CYDA'): 2136.5,
 (2018, 7, 'CYDA'): 2302.3,
 (2018, 8, 'CYDA'): 2248.7,
 (2018, 9, 'CYDA'): 1616.9,
 (2018, 10, 'CYDA'): 1065.6,
 (2008, 7, 'CZST'): 1199.4,
 (2008, 8, 'CZST'): 1045.8,
 (2008, 9, 'CZST'): 901.2,
 (2008, 10, 'CZST'): 737.9,
 (2008, 11, 'CZST'): 469.7,
 (2008, 12, 'CZST'): 328.6,
 (2009, 1, 'CZST'): 280.8,
 (2009, 2, 'CZST'): 284.7,
 (2009, 3, 'CZST'): 375.8,
 (2009, 4, 'CZST'): 732.0,
 (2009, 5, 'CZST'): 846.9,
 (2009, 6, 'CZST'): 1322.0,
 (2009, 7, 'CZST'): 1247.3,
 (2009, 8, 'CZST'): 1120.1,
 (2009, 9, 'CZST'): 1062.3,
 (2009, 10, 'CZST'): 757.5,
 (2009, 11, 'CZST'): 500.5,
 (2009, 12, 'CZST'): 283.5,
 (2010, 1, 'CZST'): 187.3,
 (2010, 2, 'CZST'): 238.5,
 (2010, 3, 'CZST'): 399.4,
 (2010, 4, 'CZST'): 662.4,
 (2010, 5, 'CZST'): 919.4,
 (2010, 6, 'CZST'): 1321.1,
 (2010, 7, 'CZST'): 1010.5,
 (2010, 8, 'CZST'): 817.1,
 (2010, 9, 'CZST'): 819.9,
 (2010, 10, 'CZST'): 588.1,
 (2010, 11, 'CZST'): 377.4,
 (2010, 12, 'CZST'): 297.8,
 (2011, 1, 'CZST'): 231.4,
 (2011, 2, 'CZST'): 247.5,
 (2011, 3, 'CZST'): 394.5,
 (2011, 4, 'CZST'): 653.0,
 (2011, 5, 'CZST'): 958.4,
 (2011, 6, 'CZST'): 1130.3,
 (2011, 7, 'CZST'): 1150.9,
 (2011, 8, 'CZST'): 1099.2,
 (2011, 9, 'CZST'): 958.2,
 (2011, 10, 'CZST'): 683.5,
 (2011, 11, 'CZST'): 446.5,
 (2011, 12, 'CZST'): 271.9,
 (2012, 1, 'CZST'): 277.6,
 (2012, 2, 'CZST'): 308.8,
 (2012, 3, 'CZST'): 412.7,
 (2012, 4, 'CZST'): 677.5,
 (2012, 5, 'CZST'): 991.1,
 (2012, 6, 'CZST'): 1081.3,
 (2012, 7, 'CZST'): 1225.7,
 (2012, 8, 'CZST'): 939.2,
 (2012, 9, 'CZST'): 926.9,
 (2012, 10, 'CZST'): 684.3,
 (2012, 11, 'CZST'): 533.4,
 (2012, 12, 'CZST'): 350.1,
 (2013, 1, 'CZST'): 245.4,
 (2013, 2, 'CZST'): 251.0,
 (2013, 3, 'CZST'): 393.8,
 (2013, 4, 'CZST'): 761.7,
 (2013, 5, 'CZST'): 919.6,
 (2013, 6, 'CZST'): 1169.1,
 (2013, 7, 'CZST'): 1070.5,
 (2013, 8, 'CZST'): 865.6,
 (2013, 9, 'CZST'): 907.6,
 (2013, 10, 'CZST'): 681.6,
 (2013, 11, 'CZST'): 408.0,
 (2013, 12, 'CZST'): 219.6,
 (2014, 1, 'CZST'): 197.4,
 (2014, 2, 'CZST'): 208.0,
 (2014, 3, 'CZST'): 352.8,
 (2014, 4, 'CZST'): 590.5,
 (2014, 5, 'CZST'): 969.2,
 (2014, 6, 'CZST'): 1133.5,
 (2014, 7, 'CZST'): 1009.2,
 (2014, 8, 'CZST'): 1124.2,
 (2014, 9, 'CZST'): 990.5,
 (2014, 10, 'CZST'): 699.7,
 (2014, 11, 'CZST'): 371.9,
 (2014, 12, 'CZST'): 286.4,
 (2015, 1, 'CZST'): 201.5,
 (2015, 2, 'CZST'): 239.8,
 (2015, 3, 'CZST'): 331.3,
 (2015, 4, 'CZST'): 608.0,
 (2015, 5, 'CZST'): 936.5,
 (2015, 6, 'CZST'): 1050.0,
 (2015, 7, 'CZST'): 1040.8,
 (2015, 8, 'CZST'): 882.8,
 (2015, 9, 'CZST'): 808.5,
 (2015, 10, 'CZST'): 641.3,
 (2015, 11, 'CZST'): 287.5,
 (2015, 12, 'CZST'): 218.1,
 (2016, 1, 'CZST'): 206.8,
 (2016, 2, 'CZST'): 263.4,
 (2016, 3, 'CZST'): 424.1,
 (2016, 4, 'CZST'): 600.2,
 (2016, 5, 'CZST'): 914.4,
 (2016, 6, 'CZST'): 1230.2,
 (2016, 7, 'CZST'): 1076.7,
 (2016, 8, 'CZST'): 861.7,
 (2016, 9, 'CZST'): 735.2,
 (2016, 10, 'CZST'): 510.8,
 (2016, 11, 'CZST'): 362.1,
 (2016, 12, 'CZST'): 225.8,
 (2017, 1, 'CZST'): 182.9,
 (2017, 2, 'CZST'): 179.1,
 (2017, 3, 'CZST'): 394.5,
 (2017, 4, 'CZST'): 649.1,
 (2017, 5, 'CZST'): 834.6,
 (2017, 6, 'CZST'): 1306.5,
 (2017, 7, 'CZST'): 1204.8,
 (2017, 8, 'CZST'): 1064.7,
 (2017, 9, 'CZST'): 1009.1,
 (2017, 10, 'CZST'): 572.2,
 (2017, 11, 'CZST'): 412.2,
 (2017, 12, 'CZST'): 305.0,
 (2018, 1, 'CZST'): 251.9,
 (2018, 2, 'CZST'): 265.6,
 (2018, 3, 'CZST'): 361.1,
 (2018, 4, 'CZST'): 729.2,
 (2018, 5, 'CZST'): 996.3,
 (2018, 6, 'CZST'): 1228.8,
 (2018, 7, 'CZST'): 1143.5,
 (2018, 8, 'CZST'): 1164.5,
 (2018, 9, 'CZST'): 960.4,
 (2018, 10, 'CZST'): 658.2,
 (2004, 7, 'PAAQ'): 1828.7,
 (2004, 8, 'PAAQ'): 1098.9,
 (2004, 9, 'PAAQ'): 1254.4,
 (2004, 10, 'PAAQ'): 759.3,
 (2004, 11, 'PAAQ'): 404.3,
 (2004, 12, 'PAAQ'): 219.8,
 (2005, 1, 'PAAQ'): 155.7,
 (2005, 2, 'PAAQ'): 193.8,
 (2005, 3, 'PAAQ'): 639.8,
 (2005, 4, 'PAAQ'): 871.8,
 (2005, 5, 'PAAQ'): 1134.5,
 (2005, 6, 'PAAQ'): 1315.1,
 (2005, 7, 'PAAQ'): 1466.7,
 (2005, 8, 'PAAQ'): 1237.6,
 (2005, 9, 'PAAQ'): 1028.1,
 (2005, 10, 'PAAQ'): 697.2,
 (2005, 11, 'PAAQ'): 405.6,
 (2005, 12, 'PAAQ'): 246.0,
 (2006, 1, 'PAAQ'): 196.4,
 (2006, 2, 'PAAQ'): 269.9,
 (2006, 3, 'PAAQ'): 455.8,
 (2006, 4, 'PAAQ'): 919.7,
 (2006, 5, 'PAAQ'): 1551.7,
 (2006, 6, 'PAAQ'): 1188.1,
 (2006, 7, 'PAAQ'): 1768.7,
 (2006, 8, 'PAAQ'): 1207.1,
 (2006, 9, 'PAAQ'): 1313.9,
 (2006, 10, 'PAAQ'): 845.1,
 (2006, 11, 'PAAQ'): 487.4,
 (2006, 12, 'PAAQ'): 306.3,
 (2007, 1, 'PAAQ'): 228.3,
 (2007, 2, 'PAAQ'): 362.1,
 (2007, 3, 'PAAQ'): 463.3,
 (2007, 4, 'PAAQ'): 816.1,
 (2007, 5, 'PAAQ'): 1676.7,
 (2007, 6, 'PAAQ'): 1367.6,
 (2007, 7, 'PAAQ'): 1505.8,
 (2007, 8, 'PAAQ'): 1396.0,
 (2007, 9, 'PAAQ'): 1646.2,
 (2007, 10, 'PAAQ'): 746.8,
 (2007, 11, 'PAAQ'): 504.8,
 (2007, 12, 'PAAQ'): 281.7,
 (2008, 1, 'PAAQ'): 232.0,
 (2008, 2, 'PAAQ'): 241.7,
 (2008, 3, 'PAAQ'): 466.6,
 (2008, 4, 'PAAQ'): 946.5,
 (2008, 5, 'PAAQ'): 1035.2,
 (2008, 6, 'PAAQ'): 1437.2,
 (2008, 7, 'PAAQ'): 1657.3,
 (2008, 8, 'PAAQ'): 1424.4,
 (2008, 9, 'PAAQ'): 1015.1,
 (2008, 10, 'PAAQ'): 889.7,
 (2008, 11, 'PAAQ'): 526.9,
 (2008, 12, 'PAAQ'): 357.6,
 (2009, 1, 'PAAQ'): 313.9,
 (2009, 2, 'PAAQ'): 331.2,
 (2009, 3, 'PAAQ'): 513.6,
 (2009, 4, 'PAAQ'): 1133.4,
 (2009, 5, 'PAAQ'): 1350.0,
 (2009, 6, 'PAAQ'): 1663.5,
 (2009, 7, 'PAAQ'): 1661.8,
 (2009, 8, 'PAAQ'): 1400.1,
 (2009, 9, 'PAAQ'): 1340.3,
 (2009, 10, 'PAAQ'): 823.4,
 (2009, 11, 'PAAQ'): 445.2,
 (2009, 12, 'PAAQ'): 316.2,
 (2010, 1, 'PAAQ'): 170.7,
 (2010, 2, 'PAAQ'): 320.4,
 (2010, 3, 'PAAQ'): 506.8,
 (2010, 4, 'PAAQ'): 761.3,
 (2010, 5, 'PAAQ'): 1386.9,
 (2010, 6, 'PAAQ'): 1440.8,
 (2010, 7, 'PAAQ'): 1536.3,
 (2010, 8, 'PAAQ'): 1061.6,
 (2010, 9, 'PAAQ'): 1162.4,
 (2010, 10, 'PAAQ'): 797.1,
 (2010, 11, 'PAAQ'): 455.8,
 (2010, 12, 'PAAQ'): 327.9,
 (2011, 1, 'PAAQ'): 284.6,
 (2011, 2, 'PAAQ'): 287.9,
 (2011, 3, 'PAAQ'): 492.3,
 (2011, 4, 'PAAQ'): 875.0,
 (2011, 5, 'PAAQ'): 1174.1,
 (2011, 6, 'PAAQ'): 1761.1,
 (2011, 7, 'PAAQ'): 1408.4,
 (2011, 8, 'PAAQ'): 1373.0,
 (2011, 9, 'PAAQ'): 1227.7,
 (2011, 10, 'PAAQ'): 771.7,
 (2011, 11, 'PAAQ'): 476.1,
 (2011, 12, 'PAAQ'): 311.4,
 (2012, 1, 'PAAQ'): 243.2,
 (2012, 2, 'PAAQ'): 331.4,
 (2012, 3, 'PAAQ'): 508.4,
 (2012, 4, 'PAAQ'): 890.3,
 (2012, 5, 'PAAQ'): 1564.8,
 (2012, 6, 'PAAQ'): 1321.7,
 (2012, 7, 'PAAQ'): 1988.2,
 (2012, 8, 'PAAQ'): 1130.4,
 (2012, 9, 'PAAQ'): 1429.0,
 (2012, 10, 'PAAQ'): 753.0,
 (2012, 11, 'PAAQ'): 586.3,
 (2012, 12, 'PAAQ'): 327.1,
 (2013, 1, 'PAAQ'): 287.6,
 (2013, 2, 'PAAQ'): 308.0,
 (2013, 3, 'PAAQ'): 511.6,
 (2013, 4, 'PAAQ'): 999.0,
 (2013, 5, 'PAAQ'): 1474.7,
 (2013, 6, 'PAAQ'): 1561.0,
 (2013, 7, 'PAAQ'): 1316.4,
 (2013, 8, 'PAAQ'): 1104.9,
 (2013, 9, 'PAAQ'): 1253.4,
 (2013, 10, 'PAAQ'): 1120.8,
 (2013, 11, 'PAAQ'): 599.9,
 (2013, 12, 'PAAQ'): 216.0,
 (2014, 1, 'PAAQ'): 175.8,
 (2014, 2, 'PAAQ'): 284.9,
 (2014, 3, 'PAAQ'): 551.0,
 (2014, 4, 'PAAQ'): 675.1,
 (2014, 5, 'PAAQ'): 1377.4,
 (2014, 6, 'PAAQ'): 1631.3,
 (2014, 7, 'PAAQ'): 1024.5,
 (2014, 8, 'PAAQ'): 1321.4,
 (2014, 9, 'PAAQ'): 1175.0,
 (2014, 10, 'PAAQ'): 779.1,
 (2014, 11, 'PAAQ'): 368.8,
 (2014, 12, 'PAAQ'): 349.7,
 (2015, 1, 'PAAQ'): 215.8,
 (2015, 2, 'PAAQ'): 268.0,
 (2015, 3, 'PAAQ'): 498.3,
 (2015, 4, 'PAAQ'): 1054.0,
 (2015, 5, 'PAAQ'): 1034.3,
 (2015, 6, 'PAAQ'): 1178.5,
 (2015, 7, 'PAAQ'): 1457.5,
 (2015, 8, 'PAAQ'): 1181.9,
 (2015, 9, 'PAAQ'): 1098.1,
 (2015, 10, 'PAAQ'): 742.1,
 (2015, 11, 'PAAQ'): 404.3,
 (2015, 12, 'PAAQ'): 242.4,
 (2016, 1, 'PAAQ'): 192.4,
 (2016, 2, 'PAAQ'): 299.5,
 (2016, 3, 'PAAQ'): 588.7,
 (2016, 4, 'PAAQ'): 744.5,
 (2016, 5, 'PAAQ'): 1240.7,
 (2016, 6, 'PAAQ'): 1365.6,
 (2016, 7, 'PAAQ'): 1152.6,
 (2016, 8, 'PAAQ'): 966.2,
 (2016, 9, 'PAAQ'): 931.1,
 (2016, 10, 'PAAQ'): 605.2,
 (2016, 11, 'PAAQ'): 389.8,
 (2016, 12, 'PAAQ'): 233.8,
 (2017, 1, 'PAAQ'): 165.1,
 (2017, 2, 'PAAQ'): 222.1,
 (2017, 3, 'PAAQ'): 479.6,
 (2017, 4, 'PAAQ'): 934.1,
 (2017, 5, 'PAAQ'): 1233.6,
 (2017, 6, 'PAAQ'): 1595.7,
 (2017, 7, 'PAAQ'): 1732.1,
 (2017, 8, 'PAAQ'): 1320.6,
 (2017, 9, 'PAAQ'): 1454.5,
 (2017, 10, 'PAAQ'): 693.7,
 (2017, 11, 'PAAQ'): 506.0,
 (2017, 12, 'PAAQ'): 283.3,
 (2018, 1, 'PAAQ'): 201.5,
 (2018, 2, 'PAAQ'): 304.2,
 (2018, 3, 'PAAQ'): 463.7,
 (2018, 4, 'PAAQ'): 846.6,
 (2018, 5, 'PAAQ'): 1351.9,
 (2018, 6, 'PAAQ'): 1203.7,
 (2018, 7, 'PAAQ'): 1416.5,
 (2018, 8, 'PAAQ'): 1348.5,
 (2018, 9, 'PAAQ'): 1196.8,
 (2018, 10, 'PAAQ'): 758.6,
 (2008, 7, 'PABE'): 1863.2,
 (2008, 8, 'PABE'): 1905.2,
 (2008, 9, 'PABE'): 1623.8,
 (2008, 10, 'PABE'): 1269.9,
 (2008, 11, 'PABE'): 713.5,
 (2008, 12, 'PABE'): 428.5,
 (2009, 1, 'PABE'): 394.9,
 (2009, 2, 'PABE'): 351.5,
 (2009, 3, 'PABE'): 541.4,
 (2009, 4, 'PABE'): 1351.7,
 (2009, 5, 'PABE'): 1733.2,
 (2009, 6, 'PABE'): 1559.1,
 (2009, 7, 'PABE'): 1896.2,
 (2009, 8, 'PABE'): 1488.0,
 (2009, 9, 'PABE'): 1656.7,
 (2009, 10, 'PABE'): 1241.1,
 (2009, 11, 'PABE'): 723.5,
 (2009, 12, 'PABE'): 418.2,
 (2010, 1, 'PABE'): 302.9,
 (2010, 2, 'PABE'): 407.7,
 (2010, 3, 'PABE'): 571.4,
 (2010, 4, 'PABE'): 971.0,
 (2010, 5, 'PABE'): 1674.8,
 (2010, 6, 'PABE'): 1471.7,
 (2010, 7, 'PABE'): 1947.7,
 (2010, 8, 'PABE'): 1493.1,
 (2010, 9, 'PABE'): 1900.0,
 (2010, 10, 'PABE'): 1211.6,
 (2010, 11, 'PABE'): 660.1,
 (2010, 12, 'PABE'): 431.7,
 (2011, 1, 'PABE'): 377.0,
 (2011, 2, 'PABE'): 389.0,
 (2011, 3, 'PABE'): 538.3,
 (2011, 4, 'PABE'): 1037.0,
 (2011, 5, 'PABE'): 1335.8,
 (2011, 6, 'PABE'): 1949.8,
 (2011, 7, 'PABE'): 1642.8,
 (2011, 8, 'PABE'): 1488.6,
 (2011, 9, 'PABE'): 1629.9,
 (2011, 10, 'PABE'): 1272.7,
 (2011, 11, 'PABE'): 639.1,
 (2011, 12, 'PABE'): 419.5,
 (2012, 1, 'PABE'): 441.7,
 (2012, 2, 'PABE'): 439.0,
 (2012, 3, 'PABE'): 567.0,
 (2012, 4, 'PABE'): 1037.2,
 (2012, 5, 'PABE'): 1720.3,
 (2012, 6, 'PABE'): 1648.5,
 (2012, 7, 'PABE'): 2544.4,
 (2012, 8, 'PABE'): 1444.1,
 (2012, 9, 'PABE'): 1929.3,
 (2012, 10, 'PABE'): 1187.3,
 (2012, 11, 'PABE'): 805.8,
 (2012, 12, 'PABE'): 439.1,
 (2013, 1, 'PABE'): 416.8,
 (2013, 2, 'PABE'): 401.7,
 (2013, 3, 'PABE'): 679.3,
 (2013, 4, 'PABE'): 1055.9,
 (2013, 5, 'PABE'): 1613.9,
 (2013, 6, 'PABE'): 1879.3,
 (2013, 7, 'PABE'): 1557.3,
 (2013, 8, 'PABE'): 1700.5,
 (2013, 9, 'PABE'): 1622.4,
 (2013, 10, 'PABE'): 1419.9,
 (2013, 11, 'PABE'): 913.7,
 (2013, 12, 'PABE'): 312.7,
 (2014, 1, 'PABE'): 305.7,
 (2014, 2, 'PABE'): 349.7,
 (2014, 3, 'PABE'): 631.8,
 (2014, 4, 'PABE'): 839.1,
 (2014, 5, 'PABE'): 1314.8,
 (2014, 6, 'PABE'): 1556.0,
 (2014, 7, 'PABE'): 1207.2,
 (2014, 8, 'PABE'): 1375.1,
 (2014, 9, 'PABE'): 1603.1,
 (2014, 10, 'PABE'): 938.8,
 (2014, 11, 'PABE'): 658.8,
 (2014, 12, 'PABE'): 433.5,
 (2015, 1, 'PABE'): 296.0,
 (2015, 2, 'PABE'): 271.2,
 (2015, 3, 'PABE'): 522.8,
 (2015, 4, 'PABE'): 1138.7,
 (2015, 5, 'PABE'): 1131.4,
 (2015, 6, 'PABE'): 1406.1,
 (2015, 7, 'PABE'): 1770.1,
 (2015, 8, 'PABE'): 1336.6,
 (2015, 9, 'PABE'): 1384.1,
 (2015, 10, 'PABE'): 1046.0,
 (2015, 11, 'PABE'): 576.7,
 (2015, 12, 'PABE'): 291.0,
 (2016, 1, 'PABE'): 268.0,
 (2016, 2, 'PABE'): 398.7,
 (2016, 3, 'PABE'): 625.8,
 (2016, 4, 'PABE'): 869.7,
 (2016, 5, 'PABE'): 1205.4,
 (2016, 6, 'PABE'): 1571.8,
 (2016, 7, 'PABE'): 1345.8,
 (2016, 8, 'PABE'): 1257.6,
 (2016, 9, 'PABE'): 1368.5,
 (2016, 10, 'PABE'): 715.6,
 (2016, 11, 'PABE'): 516.5,
 (2016, 12, 'PABE'): 290.4,
 (2017, 1, 'PABE'): 225.3,
 (2017, 2, 'PABE'): 237.1,
 (2017, 3, 'PABE'): 515.5,
 (2017, 4, 'PABE'): 844.3,
 (2017, 5, 'PABE'): 1542.6,
 (2017, 6, 'PABE'): 1577.3,
 (2017, 7, 'PABE'): 1774.0,
 (2017, 8, 'PABE'): 1692.1,
 (2017, 9, 'PABE'): 1828.9,
 (2017, 10, 'PABE'): 870.7,
 (2017, 11, 'PABE'): 610.5,
 (2017, 12, 'PABE'): 299.2,
 (2018, 1, 'PABE'): 251.0,
 (2018, 2, 'PABE'): 361.4,
 (2018, 3, 'PABE'): 584.8,
 (2018, 4, 'PABE'): 869.1,
 (2018, 5, 'PABE'): 1171.8,
 (2018, 6, 'PABE'): 1229.1,
 (2018, 7, 'PABE'): 1659.3,
 (2018, 8, 'PABE'): 1184.4,
 (2018, 9, 'PABE'): 1292.7,
 (2018, 10, 'PABE'): 971.8,
 (2008, 7, 'PABI'): 2127.1,
 (2008, 8, 'PABI'): 1838.2,
 (2008, 9, 'PABI'): 1425.5,
 (2008, 10, 'PABI'): 1043.8,
 (2008, 11, 'PABI'): 542.5,
 (2008, 12, 'PABI'): 257.3,
 (2009, 1, 'PABI'): 302.0,
 (2009, 2, 'PABI'): 405.6,
 (2009, 3, 'PABI'): 580.9,
 (2009, 4, 'PABI'): 1504.9,
 (2009, 5, 'PABI'): 1772.1,
 (2009, 6, 'PABI'): 2146.3,
 (2009, 7, 'PABI'): 2170.1,
 (2009, 8, 'PABI'): 1585.8,
 (2009, 9, 'PABI'): 1746.5,
 (2009, 10, 'PABI'): 940.8,
 (2009, 11, 'PABI'): 476.9,
 (2009, 12, 'PABI'): 257.2,
 (2010, 1, 'PABI'): 89.1,
 (2010, 2, 'PABI'): 387.6,
 (2010, 3, 'PABI'): 584.1,
 (2010, 4, 'PABI'): 1046.6,
 (2010, 5, 'PABI'): 1768.0,
 (2010, 6, 'PABI'): 1839.7,
 (2010, 7, 'PABI'): 2083.9,
 (2010, 8, 'PABI'): 1463.7,
 (2010, 9, 'PABI'): 1493.0,
 (2010, 10, 'PABI'): 839.1,
 (2010, 11, 'PABI'): 428.0,
 (2010, 12, 'PABI'): 270.1,
 (2011, 1, 'PABI'): 180.3,
 (2011, 2, 'PABI'): 261.3,
 (2011, 3, 'PABI'): 628.4,
 (2011, 4, 'PABI'): 1127.7,
 (2011, 5, 'PABI'): 1501.7,
 (2011, 6, 'PABI'): 2409.8,
 (2011, 7, 'PABI'): 1897.0,
 (2011, 8, 'PABI'): 1847.0,
 (2011, 9, 'PABI'): 1650.9,
 (2011, 10, 'PABI'): 940.1,
 (2011, 11, 'PABI'): 465.8,
 (2011, 12, 'PABI'): 260.7,
 (2012, 1, 'PABI'): 235.2,
 (2012, 2, 'PABI'): 356.6,
 (2012, 3, 'PABI'): 513.5,
 (2012, 4, 'PABI'): 1133.0,
 (2012, 5, 'PABI'): 2072.0,
 (2012, 6, 'PABI'): 1736.5,
 (2012, 7, 'PABI'): 2665.3,
 (2012, 8, 'PABI'): 1396.3,
 (2012, 9, 'PABI'): 1757.6,
 (2012, 10, 'PABI'): 806.0,
 (2012, 11, 'PABI'): 580.7,
 (2012, 12, 'PABI'): 244.4,
 (2013, 1, 'PABI'): 212.5,
 (2013, 2, 'PABI'): 284.8,
 (2013, 3, 'PABI'): 527.1,
 (2013, 4, 'PABI'): 1335.7,
 (2013, 5, 'PABI'): 2121.1,
 (2013, 6, 'PABI'): 2283.2,
 (2013, 7, 'PABI'): 1869.3,
 (2013, 8, 'PABI'): 1577.0,
 (2013, 9, 'PABI'): 1608.7,
 (2013, 10, 'PABI'): 1395.7,
 (2013, 11, 'PABI'): 685.7,
 (2013, 12, 'PABI'): 143.8,
 (2014, 1, 'PABI'): 147.8,
 (2014, 2, 'PABI'): 259.4,
 (2014, 3, 'PABI'): 667.0,
 (2014, 4, 'PABI'): 865.0,
 (2014, 5, 'PABI'): 1735.8,
 (2014, 6, 'PABI'): 2078.3,
 (2014, 7, 'PABI'): 1520.1,
 (2014, 8, 'PABI'): 1763.3,
 (2014, 9, 'PABI'): 1458.6,
 (2014, 10, 'PABI'): 911.4,
 (2014, 11, 'PABI'): 450.1,
 (2014, 12, 'PABI'): 324.8,
 (2015, 1, 'PABI'): 229.6,
 (2015, 2, 'PABI'): 276.4,
 (2015, 3, 'PABI'): 600.9,
 (2015, 4, 'PABI'): 1325.4,
 (2015, 5, 'PABI'): 1462.9,
 (2015, 6, 'PABI'): 1615.9,
 (2015, 7, 'PABI'): 1952.1,
 (2015, 8, 'PABI'): 1597.3,
 (2015, 9, 'PABI'): 1394.4,
 (2015, 10, 'PABI'): 845.0,
 (2015, 11, 'PABI'): 294.7,
 (2015, 12, 'PABI'): 243.5,
 (2016, 1, 'PABI'): 202.1,
 (2016, 2, 'PABI'): 407.0,
 (2016, 3, 'PABI'): 717.3,
 (2016, 4, 'PABI'): 1023.5,
 (2016, 5, 'PABI'): 1566.1,
 (2016, 6, 'PABI'): 1880.0,
 (2016, 7, 'PABI'): 1502.3,
 (2016, 8, 'PABI'): 1341.7,
 (2016, 9, 'PABI'): 1258.8,
 (2016, 10, 'PABI'): 669.6,
 (2016, 11, 'PABI'): 433.2,
 (2016, 12, 'PABI'): 222.1,
 (2017, 1, 'PABI'): 182.7,
 (2017, 2, 'PABI'): 200.6,
 (2017, 3, 'PABI'): 555.5,
 (2017, 4, 'PABI'): 1184.1,
 (2017, 5, 'PABI'): 1636.4,
 (2017, 6, 'PABI'): 2001.6,
 (2017, 7, 'PABI'): 2046.7,
 (2017, 8, 'PABI'): 1570.7,
 (2017, 9, 'PABI'): 1980.4,
 (2017, 10, 'PABI'): 811.7,
 (2017, 11, 'PABI'): 482.2,
 (2017, 12, 'PABI'): 184.0,
 (2018, 1, 'PABI'): 125.4,
 (2018, 2, 'PABI'): 264.9,
 (2018, 3, 'PABI'): 519.6,
 (2018, 4, 'PABI'): 1025.1,
 (2018, 5, 'PABI'): 1710.5,
 (2018, 6, 'PABI'): 1525.8,
 (2018, 7, 'PABI'): 1991.5,
 (2018, 8, 'PABI'): 1590.0,
 (2018, 9, 'PABI'): 1426.4,
 (2018, 10, 'PABI'): 960.7,
 (2008, 7, 'PABR'): 2508.5,
 (2008, 8, 'PABR'): 2267.3,
 (2008, 9, 'PABR'): 2492.7,
 (2008, 10, 'PABR'): 1685.2,
 (2008, 11, 'PABR'): 1313.3,
 (2008, 12, 'PABR'): 846.7,
 (2009, 1, 'PABR'): 792.3,
 (2009, 2, 'PABR'): 855.1,
 (2009, 3, 'PABR'): 923.5,
 (2009, 4, 'PABR'): 1278.1,
 (2009, 5, 'PABR'): 1821.7,
 (2009, 6, 'PABR'): 1972.2,
 (2009, 7, 'PABR'): 2411.1,
 (2009, 8, 'PABR'): 2257.1,
 (2009, 9, 'PABR'): 2489.1,
 (2009, 10, 'PABR'): 1856.3,
 (2009, 11, 'PABR'): 1224.8,
 (2009, 12, 'PABR'): 905.7,
 (2010, 1, 'PABR'): 683.9,
 (2010, 2, 'PABR'): 730.8,
 (2010, 3, 'PABR'): 902.5,
 (2010, 4, 'PABR'): 1216.4,
 (2010, 5, 'PABR'): 1907.2,
 (2010, 6, 'PABR'): 2095.6,
 (2010, 7, 'PABR'): 2502.5,
 (2010, 8, 'PABR'): 2096.2,
 (2010, 9, 'PABR'): 2303.9,
 (2010, 10, 'PABR'): 1682.1,
 (2010, 11, 'PABR'): 1404.2,
 (2010, 12, 'PABR'): 938.6,
 (2011, 1, 'PABR'): 723.5,
 (2011, 2, 'PABR'): 697.5,
 (2011, 3, 'PABR'): 826.3,
 (2011, 4, 'PABR'): 1303.7,
 (2011, 5, 'PABR'): 1608.5,
 (2011, 6, 'PABR'): 2295.5,
 (2011, 7, 'PABR'): 2307.2,
 (2011, 8, 'PABR'): 1972.7,
 (2011, 9, 'PABR'): 2182.9,
 (2011, 10, 'PABR'): 1944.8,
 (2011, 11, 'PABR'): 1308.3,
 (2011, 12, 'PABR'): 902.7,
 (2012, 1, 'PABR'): 727.9,
 (2012, 2, 'PABR'): 715.3,
 (2012, 3, 'PABR'): 845.2,
 (2012, 4, 'PABR'): 1270.7,
 (2012, 5, 'PABR'): 1952.6,
 (2012, 6, 'PABR'): 2306.6,
 (2012, 7, 'PABR'): 2636.2,
 (2012, 8, 'PABR'): 2228.6,
 (2012, 9, 'PABR'): 2669.3,
 (2012, 10, 'PABR'): 1794.2,
 (2012, 11, 'PABR'): 1333.6,
 (2012, 12, 'PABR'): 845.4,
 (2013, 1, 'PABR'): 681.0,
 (2013, 2, 'PABR'): 606.9,
 (2013, 3, 'PABR'): 901.0,
 (2013, 4, 'PABR'): 1133.1,
 (2013, 5, 'PABR'): 1746.0,
 (2013, 6, 'PABR'): 2303.8,
 (2013, 7, 'PABR'): 2287.0,
 (2013, 8, 'PABR'): 2325.2,
 (2013, 9, 'PABR'): 2222.7,
 (2013, 10, 'PABR'): 1907.9,
 (2013, 11, 'PABR'): 1300.4,
 (2013, 12, 'PABR'): 803.5,
 (2014, 1, 'PABR'): 657.3,
 (2014, 2, 'PABR'): 791.7,
 (2014, 3, 'PABR'): 1002.6,
 (2014, 4, 'PABR'): 1220.0,
 (2014, 5, 'PABR'): 1723.0,
 (2014, 6, 'PABR'): 2074.7,
 (2014, 7, 'PABR'): 2226.8,
 (2014, 8, 'PABR'): 2020.5,
 (2014, 9, 'PABR'): 2141.5,
 (2014, 10, 'PABR'): 1805.1,
 (2014, 11, 'PABR'): 1191.9,
 (2014, 12, 'PABR'): 947.8,
 (2015, 1, 'PABR'): 857.8,
 (2015, 2, 'PABR'): 854.9,
 (2015, 3, 'PABR'): 945.3,
 (2015, 4, 'PABR'): 1342.8,
 (2015, 5, 'PABR'): 1659.3,
 (2015, 6, 'PABR'): 2216.3,
 (2015, 7, 'PABR'): 2319.1,
 (2015, 8, 'PABR'): 2001.0,
 (2015, 9, 'PABR'): 2338.3,
 (2015, 10, 'PABR'): 1727.7,
 (2015, 11, 'PABR'): 1146.6,
 (2015, 12, 'PABR'): 766.4,
 (2016, 1, 'PABR'): 772.3,
 (2016, 2, 'PABR'): 827.2,
 (2016, 3, 'PABR'): 1011.3,
 (2016, 4, 'PABR'): 1353.9,
 (2016, 5, 'PABR'): 1855.0,
 (2016, 6, 'PABR'): 2328.4,
 (2016, 7, 'PABR'): 2019.5,
 (2016, 8, 'PABR'): 2002.1,
 (2016, 9, 'PABR'): 2231.6,
 (2016, 10, 'PABR'): 1639.2,
 (2016, 11, 'PABR'): 1129.2,
 (2016, 12, 'PABR'): 844.1,
 (2017, 1, 'PABR'): 681.8,
 (2017, 2, 'PABR'): 789.5,
 (2017, 3, 'PABR'): 913.1,
 (2017, 4, 'PABR'): 1073.9,
 (2017, 5, 'PABR'): 1526.8,
 (2017, 6, 'PABR'): 2005.1,
 (2017, 7, 'PABR'): 2012.6,
 (2017, 8, 'PABR'): 1967.9,
 (2017, 9, 'PABR'): 2218.4,
 (2017, 10, 'PABR'): 1745.2,
 (2017, 11, 'PABR'): 1247.3,
 (2017, 12, 'PABR'): 921.9,
 (2018, 1, 'PABR'): 600.1,
 (2018, 2, 'PABR'): 775.6,
 (2018, 3, 'PABR'): 896.7,
 (2018, 4, 'PABR'): 1251.0,
 (2018, 5, 'PABR'): 1435.2,
 (2018, 6, 'PABR'): 1832.3,
 (2018, 7, 'PABR'): 2136.5,
 (2018, 8, 'PABR'): 1717.2,
 (2018, 9, 'PABR'): 2018.6,
 (2018, 10, 'PABR'): 1750.8,
 (2008, 7, 'PABT'): 2310.7,
 (2008, 8, 'PABT'): 2132.0,
 (2008, 9, 'PABT'): 1859.2,
 (2008, 10, 'PABT'): 1306.6,
 (2008, 11, 'PABT'): 634.4,
 (2008, 12, 'PABT'): 242.8,
 (2009, 1, 'PABT'): 269.1,
 (2009, 2, 'PABT'): 438.1,
 (2009, 3, 'PABT'): 717.5,
 (2009, 4, 'PABT'): 1783.3,
 (2009, 5, 'PABT'): 1885.0,
 (2009, 6, 'PABT'): 2343.2,
 (2009, 7, 'PABT'): 2469.0,
 (2009, 8, 'PABT'): 1926.3,
 (2009, 9, 'PABT'): 2017.3,
 (2009, 10, 'PABT'): 1291.6,
 (2009, 11, 'PABT'): 601.1,
 (2009, 12, 'PABT'): 235.0,
 (2010, 1, 'PABT'): 145.1,
 (2010, 2, 'PABT'): 460.6,
 (2010, 3, 'PABT'): 679.3,
 (2010, 4, 'PABT'): 1231.8,
 (2010, 5, 'PABT'): 2205.1,
 (2010, 6, 'PABT'): 2151.2,
 (2010, 7, 'PABT'): 2587.6,
 (2010, 8, 'PABT'): 1867.3,
 (2010, 9, 'PABT'): 1871.1,
 (2010, 10, 'PABT'): 1054.0,
 (2010, 11, 'PABT'): 471.8,
 (2010, 12, 'PABT'): 170.4,
 (2011, 1, 'PABT'): 245.7,
 (2011, 2, 'PABT'): 300.4,
 (2011, 3, 'PABT'): 709.9,
 (2011, 4, 'PABT'): 1273.6,
 (2011, 5, 'PABT'): 1732.4,
 (2011, 6, 'PABT'): 2669.5,
 (2011, 7, 'PABT'): 2284.9,
 (2011, 8, 'PABT'): 2061.9,
 (2011, 9, 'PABT'): 1909.8,
 (2011, 10, 'PABT'): 1336.0,
 (2011, 11, 'PABT'): 573.2,
 (2011, 12, 'PABT'): 242.0,
 (2012, 1, 'PABT'): 241.5,
 (2012, 2, 'PABT'): 393.3,
 (2012, 3, 'PABT'): 621.6,
 (2012, 4, 'PABT'): 1219.0,
 (2012, 5, 'PABT'): 2230.7,
 (2012, 6, 'PABT'): 2033.2,
 (2012, 7, 'PABT'): 3112.7,
 (2012, 8, 'PABT'): 1838.3,
 (2012, 9, 'PABT'): 2178.6,
 (2012, 10, 'PABT'): 1081.2,
 (2012, 11, 'PABT'): 655.0,
 (2012, 12, 'PABT'): 166.0,
 (2013, 1, 'PABT'): 229.0,
 (2013, 2, 'PABT'): 406.5,
 (2013, 3, 'PABT'): 722.6,
 (2013, 4, 'PABT'): 1426.7,
 (2013, 5, 'PABT'): 2215.9,
 (2013, 6, 'PABT'): 2497.1,
 (2013, 7, 'PABT'): 2135.5,
 (2013, 8, 'PABT'): 1967.8,
 (2013, 9, 'PABT'): 1943.8,
 (2013, 10, 'PABT'): 1530.9,
 (2013, 11, 'PABT'): 854.3,
 (2013, 12, 'PABT'): 169.2,
 (2014, 1, 'PABT'): 204.9,
 (2014, 2, 'PABT'): 389.0,
 (2014, 3, 'PABT'): 789.4,
 (2014, 4, 'PABT'): 1030.3,
 (2014, 5, 'PABT'): 1977.9,
 (2014, 6, 'PABT'): 2331.2,
 (2014, 7, 'PABT'): 1894.6,
 (2014, 8, 'PABT'): 1977.3,
 (2014, 9, 'PABT'): 1700.7,
 (2014, 10, 'PABT'): 1192.4,
 (2014, 11, 'PABT'): 614.1,
 (2014, 12, 'PABT'): 313.1,
 (2015, 1, 'PABT'): 290.7,
 (2015, 2, 'PABT'): 311.5,
 (2015, 3, 'PABT'): 701.2,
 (2015, 4, 'PABT'): 1285.3,
 (2015, 5, 'PABT'): 1709.5,
 (2015, 6, 'PABT'): 1838.9,
 (2015, 7, 'PABT'): 2347.8,
 (2015, 8, 'PABT'): 1745.0,
 (2015, 9, 'PABT'): 1766.0,
 (2015, 10, 'PABT'): 1035.3,
 (2015, 11, 'PABT'): 370.2,
 (2015, 12, 'PABT'): 269.2,
 (2016, 1, 'PABT'): 181.1,
 (2016, 2, 'PABT'): 428.9,
 (2016, 3, 'PABT'): 844.0,
 (2016, 4, 'PABT'): 1205.3,
 (2016, 5, 'PABT'): 1698.9,
 (2016, 6, 'PABT'): 2230.0,
 (2016, 7, 'PABT'): 1828.3,
 (2016, 8, 'PABT'): 1652.4,
 (2016, 9, 'PABT'): 1622.9,
 (2016, 10, 'PABT'): 996.3,
 (2016, 11, 'PABT'): 480.3,
 (2016, 12, 'PABT'): 259.9,
 (2017, 1, 'PABT'): 183.2,
 (2017, 2, 'PABT'): 289.1,
 (2017, 3, 'PABT'): 734.7,
 (2017, 4, 'PABT'): 1301.8,
 (2017, 5, 'PABT'): 1923.4,
 (2017, 6, 'PABT'): 2200.0,
 (2017, 7, 'PABT'): 2336.9,
 (2017, 8, 'PABT'): 1901.6,
 (2017, 9, 'PABT'): 2214.9,
 (2017, 10, 'PABT'): 1089.9,
 (2017, 11, 'PABT'): 511.2,
 (2017, 12, 'PABT'): 169.2,
 (2018, 1, 'PABT'): 112.6,
 (2018, 2, 'PABT'): 423.7,
 (2018, 3, 'PABT'): 603.4,
 (2018, 4, 'PABT'): 1221.7,
 (2018, 5, 'PABT'): 1919.5,
 (2018, 6, 'PABT'): 1631.5,
 (2018, 7, 'PABT'): 2295.6,
 (2018, 8, 'PABT'): 1864.0,
 (2018, 9, 'PABT'): 1682.7,
 (2018, 10, 'PABT'): 1188.3,
 (2008, 7, 'PACD'): 1180.6,
 (2008, 8, 'PACD'): 1213.8,
 (2008, 9, 'PACD'): 1243.7,
 (2008, 10, 'PACD'): 981.1,
 (2008, 11, 'PACD'): 822.2,
 (2008, 12, 'PACD'): 623.7,
 (2009, 1, 'PACD'): 541.9,
 (2009, 2, 'PACD'): 472.5,
 (2009, 3, 'PACD'): 520.3,
 (2009, 4, 'PACD'): 824.8,
 (2009, 5, 'PACD'): 1036.2,
 (2009, 6, 'PACD'): 998.9,
 (2009, 7, 'PACD'): 1236.0,
 (2009, 8, 'PACD'): 983.3,
 (2009, 9, 'PACD'): 1211.3,
 (2009, 10, 'PACD'): 977.7,
 (2009, 11, 'PACD'): 786.9,
 (2009, 12, 'PACD'): 558.8,
 (2010, 1, 'PACD'): 461.3,
 (2010, 2, 'PACD'): 475.6,
 (2010, 3, 'PACD'): 526.7,
 (2010, 4, 'PACD'): 721.4,
 (2010, 5, 'PACD'): 986.7,
 (2010, 6, 'PACD'): 935.1,
 (2010, 7, 'PACD'): 1125.9,
 (2010, 8, 'PACD'): 1064.1,
 (2010, 9, 'PACD'): 1350.0,
 (2010, 10, 'PACD'): 1033.9,
 (2010, 11, 'PACD'): 831.3,
 (2010, 12, 'PACD'): 640.0,
 (2011, 1, 'PACD'): 505.5,
 (2011, 2, 'PACD'): 454.9,
 (2011, 3, 'PACD'): 469.3,
 (2011, 4, 'PACD'): 795.3,
 (2011, 5, 'PACD'): 910.7,
 (2011, 6, 'PACD'): 1132.2,
 (2011, 7, 'PACD'): 1044.5,
 (2011, 8, 'PACD'): 948.2,
 (2011, 9, 'PACD'): 1076.1,
 (2011, 10, 'PACD'): 958.4,
 (2011, 11, 'PACD'): 733.1,
 (2011, 12, 'PACD'): 596.0,
 (2012, 1, 'PACD'): 524.9,
 (2012, 2, 'PACD'): 435.9,
 (2012, 3, 'PACD'): 563.0,
 (2012, 4, 'PACD'): 729.8,
 (2012, 5, 'PACD'): 941.4,
 (2012, 6, 'PACD'): 1073.6,
 (2012, 7, 'PACD'): 1431.8,
 (2012, 8, 'PACD'): 1057.1,
 (2012, 9, 'PACD'): 1377.8,
 (2012, 10, 'PACD'): 1015.9,
 (2012, 11, 'PACD'): 881.1,
 (2012, 12, 'PACD'): 658.7,
 (2013, 1, 'PACD'): 546.7,
 (2013, 2, 'PACD'): 449.9,
 (2013, 3, 'PACD'): 586.6,
 (2013, 4, 'PACD'): 761.4,
 (2013, 5, 'PACD'): 1012.1,
 (2013, 6, 'PACD'): 1116.6,
 (2013, 7, 'PACD'): 974.3,
 (2013, 8, 'PACD'): 1004.6,
 (2013, 9, 'PACD'): 1044.1,
 (2013, 10, 'PACD'): 941.1,
 (2013, 11, 'PACD'): 806.5,
 (2013, 12, 'PACD'): 536.4,
 (2014, 1, 'PACD'): 381.5,
 (2014, 2, 'PACD'): 366.6,
 (2014, 3, 'PACD'): 464.8,
 (2014, 4, 'PACD'): 588.0,
 (2014, 5, 'PACD'): 798.9,
 (2014, 6, 'PACD'): 823.1,
 (2014, 7, 'PACD'): 850.8,
 (2014, 8, 'PACD'): 956.0,
 (2014, 9, 'PACD'): 957.6,
 (2014, 10, 'PACD'): 779.4,
 (2014, 11, 'PACD'): 647.4,
 (2014, 12, 'PACD'): 462.2,
 (2015, 1, 'PACD'): 309.8,
 (2015, 2, 'PACD'): 275.8,
 (2015, 3, 'PACD'): 460.5,
 (2015, 4, 'PACD'): 770.7,
 (2015, 5, 'PACD'): 784.2,
 (2015, 6, 'PACD'): 952.2,
 ...}

Convert Notebook to Script


In [43]:
# Convert the notebook to a script.
#!jupyter nbconvert --to script preprocess_data.ipynb


[NbConvertApp] Converting notebook preprocess_data.ipynb to script
[NbConvertApp] Writing 5511 bytes to preprocess_data.py