EIS metadata validation script

Used to validate Planon output with spreadsheet input

1. Data import


In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

Read data. There are two datasets: Planon and Master. The latter is the EIS data nomencalture that was created. Master is made up of two subsets: loggers and meters. Loggers are sometimes called controllers and meters are sometimes called sensors. In rare cases meters or sensors are also called channels.


In [140]:
planon=pd.read_excel('EIS Assets v2.xlsx',index_col = 'Code')
master_loggerscontrollers_old = pd.read_csv('LoggersControllers.csv', index_col = 'Asset Code')
master_meterssensors_old = pd.read_csv('MetersSensors.csv', encoding = 'macroman', index_col = 'Asset Code')
master_loggerscontrollers=pd.read_excel(master,sheetname='Loggers Controllers', index_col = 'Asset Code')
master_meterssensors=pd.read_excel(master,sheetname='Meters Sensors', index_col = 'Asset Code')
planon['Code']=planon.index
master_loggerscontrollers['Code']=master_loggerscontrollers.index
master_meterssensors['Code']=master_meterssensors.index

Unify index, caps everything and strip of trailing spaces.


In [18]:
planon.index=[str(i).upper().strip() for i in planon.index]
master_loggerscontrollers.index=[str(i).upper().strip() for i in master_loggerscontrollers.index]
master_meterssensors.index=[str(i).upper().strip() for i in master_meterssensors.index]

Drop duplicates (shouldn't be any)


In [19]:
planon.drop_duplicates(inplace=True)
master_loggerscontrollers.drop_duplicates(inplace=True)
master_meterssensors.drop_duplicates(inplace=True)

Split Planon import into loggers and meters
Drop duplicates (shouldn't be any)


In [20]:
# Split the Planon file into 2, one for loggers & controllers, and one for meters & sensors.
planon_loggerscontrollers = planon.loc[(planon['Classification Group'] == 'EN.EN4 BMS Controller') | (planon['Classification Group'] == 'EN.EN1 Data Logger')]
planon_meterssensors = planon.loc[(planon['Classification Group'] == 'EN.EN2 Energy Meter') | (planon['Classification Group'] == 'EN.EN3 Energy Sensor')]
planon_loggerscontrollers.drop_duplicates(inplace=True)
planon_meterssensors.drop_duplicates(inplace=True)


C:\Anaconda2\envs\python3\lib\site-packages\pandas\util\decorators.py:91: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  return func(*args, **kwargs)

Index unique? show number of duplicates in index


In [21]:
len(planon_loggerscontrollers.index[planon_loggerscontrollers.index.duplicated()])


Out[21]:
0

In [22]:
len(planon_meterssensors.index[planon_meterssensors.index.duplicated()])


Out[22]:
3256

Meters are not unique. This is becasue of the spaces served. This is ok for now, we will deal with duplicates at the comparison stage. Same is true for loggers - in the unlikely event that there are duplicates in the future.


In [23]:
planon_meterssensors.head(3)


Out[23]:
BuildingNo. Building Locations.Space.Space number Space Name Additional Location Info Description Classification Group Record HVAC Ref Element Description ... Logger SIM Meter Pulse Value Meter Units Meter Capacity Network Point ID Tenant Meter.Name Fiscal Meter.Name EIS Space.Space number Utility Type.Name Code
AP000-L01/M001 AP000 Alexandra Park NaN NaN NaN NaN EN.EN2 Energy Meter NaN NaN NaN ... NaN NaN kWh NaN NaN No No NaN NaN AP000-L01/M001
AP000-L02/M001 AP000 Alexandra Park NaN NaN NaN Graduate House 1-11 EN.EN2 Energy Meter NaN NaN NaN ... NaN NaN NaN NaN NaN No No NaN NaN AP000-L02/M001
AP000-L02/M002 AP000 Alexandra Park NaN NaN NaN Alex Park Main EN.EN2 Energy Meter NaN NaN NaN ... NaN NaN NaN NaN NaN No No NaN NaN AP000-L02/M002

3 rows × 30 columns

2. Validation

Create list of all buildings present in Planon export. These are buildings to check the data against from Master.


In [24]:
buildings=set(planon_meterssensors['BuildingNo.'])
buildings


Out[24]:
{'AP000',
 'AP001',
 'AP009',
 'AP010',
 'AP011',
 'AP057',
 'AP080',
 'AP081',
 'EX001',
 'MC000',
 'MC001',
 'MC003',
 'MC007',
 'MC008',
 'MC010',
 'MC011',
 'MC013',
 'MC014',
 'MC029',
 'MC030',
 'MC031',
 'MC032',
 'MC033',
 'MC043',
 'MC044',
 'MC045',
 'MC046',
 'MC047',
 'MC048',
 'MC050',
 'MC051',
 'MC053',
 'MC055',
 'MC061',
 'MC062',
 'MC063',
 'MC064',
 'MC065',
 'MC066',
 'MC067',
 'MC068',
 'MC069',
 'MC070',
 'MC071',
 'MC072',
 'MC075',
 'MC076',
 'MC077',
 'MC078',
 'MC083',
 'MC095',
 'MC099',
 'MC102',
 'MC103',
 'MC125',
 'MC126',
 'MC128',
 'MC129',
 'MC131',
 'MC134',
 'MC138',
 'MC139',
 'MC140',
 'MC141',
 'MC171',
 'MC181',
 'MC197',
 'MC198',
 'MC199',
 'MC200',
 'MC202',
 'MC203',
 'MC204',
 'MC207',
 'MC208',
 'MC210',
 'MC211',
 'OC004',
 'OC005',
 'OC006'}

In [25]:
len(buildings)


Out[25]:
80

2.1. Meters

Create dataframe slice for validation from master_meterssensors where the only the buildings located in buildings are contained. Save this new slice into master_meterssensors_for_validation. This is done by creating sub-slices of the dataframe for each building, then concatenating them all together.


In [26]:
master_meterssensors_for_validation = \
    pd.concat([master_meterssensors.loc[master_meterssensors['Building Code'] == building] \
           for building in buildings])
master_meterssensors_for_validation.head(2)


Out[26]:
Logger Asset Code Description Make Model Meter Units Meter Pulse Value Classification Group Logger Channel Utility Type ?? ... Building Name Space Additional Location Info Tenant meter Fiscal meter Parent meter Child meters Communications type Electrical panel ID Code
MC198-B01/A1 MC198-B01 Outside Air from OS13 NaN NaN NaN NaN Energy sensor A1 NaN NaN ... Grizedale College - Offices, Bar & Social Space NaN NaN 0.0 0.0 NaN NaN NaN NaN MC198-B01/A1
MC198-B01/C1 MC198-B01 Virtual CNC 1 NaN NaN NaN NaN Energy sensor C1 NaN NaN ... Grizedale College - Offices, Bar & Social Space NaN NaN 0.0 0.0 NaN NaN NaN NaN MC198-B01/C1

2 rows × 22 columns


In [29]:
#alternative method
master_meterssensors_for_validation2 = \
    master_meterssensors[master_meterssensors['Building Code'].isin(buildings)]
master_meterssensors_for_validation2.head(2)


Out[29]:
Logger Asset Code Description Make Model Meter Units Meter Pulse Value Classification Group Logger Channel Utility Type ?? ... Building Name Space Additional Location Info Tenant meter Fiscal meter Parent meter Child meters Communications type Electrical panel ID Code
MC046-L19/M001 MC046-L19 Meter 1 NaN NaN NaN NaN Energy meter DI1 NaN NaN ... Bowland Main NaN NaN 0.0 0.0 NaN NaN NaN NaN MC046-L19/M001
MC046-L19/M002 MC046-L19 Meter 2 NaN NaN NaN NaN Energy meter DI2 NaN NaN ... Bowland Main NaN NaN 0.0 0.0 NaN NaN NaN NaN MC046-L19/M002

2 rows × 22 columns

Planon sensors are not unique because of the spaces served convention in the two data architectures. The Planon architecture devotes a new line for each space served - hence the not unique index. The Master architecture lists all the spaces only once, as a list, therefore it has a unique index. We will need to take this into account and create matching dataframe out of planon for comparison, with a unique index.


In [30]:
len(master_meterssensors_for_validation)


Out[30]:
30567

In [31]:
len(planon_meterssensors)-len(planon_meterssensors.index[planon_meterssensors.index.duplicated()])


Out[31]:
28824

Sort datasets after index for easier comparison.


In [32]:
master_meterssensors_for_validation.sort_index(inplace=True)
planon_meterssensors.sort_index(inplace=True)


C:\Anaconda2\envs\python3\lib\site-packages\ipykernel\__main__.py:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  from ipykernel import kernelapp as app

2.1.1 Slicing of meters to only certain columns of comparison


In [33]:
planon_meterssensors.T


Out[33]:
AP000-L01/M001 AP000-L02/M001 AP000-L02/M002 AP000-L03/M001 AP000-L03/M002 AP001-L01/M001 AP001-L01/M002 AP001-L01/M003 AP001-L01/M004 AP001-L01/M005 ... OC006-B01/W4 OC006-B01/W5 OC006-B01/Y1 OC006-B01/Y2 OC006-B01/Y3 OC006-B01/Y4 OC006-B01/Y5 OC006-B01/Y6 OC006-B01/Z1 OC006-B01/Z2
BuildingNo. AP000 AP000 AP000 AP000 AP000 AP001 AP001 AP001 AP001 AP001 ... OC006 OC006 OC006 OC006 OC006 OC006 OC006 OC006 OC006 OC006
Building Alexandra Park Alexandra Park Alexandra Park Alexandra Park Alexandra Park House 01 - Bassenthwaite, Graduate College House 01 - Bassenthwaite, Graduate College House 01 - Bassenthwaite, Graduate College House 01 - Bassenthwaite, Graduate College House 01 - Bassenthwaite, Graduate College ... Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House
Locations.Space.Space number NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Space Name NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Additional Location Info NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Description NaN Graduate House 1-11 Alex Park Main NaN NaN NaN Bar Cellar Bar Ground Services Room Bar Water ... ShuntPumpRotate Manual Shunt pump changeover Outside air temperature Immersion Sensor Thermistor TBTC Room temperature Thermistor TBTI 4DIX V Heating Boilers DHWS Immersion
Classification Group EN.EN2 Energy Meter EN.EN2 Energy Meter EN.EN2 Energy Meter EN.EN2 Energy Meter EN.EN2 Energy Meter EN.EN2 Energy Meter EN.EN2 Energy Meter EN.EN2 Energy Meter EN.EN2 Energy Meter EN.EN2 Energy Meter ... EN.EN3 Energy Sensor EN.EN3 Energy Sensor EN.EN3 Energy Sensor EN.EN3 Energy Sensor EN.EN3 Energy Sensor EN.EN3 Energy Sensor EN.EN3 Energy Sensor EN.EN3 Energy Sensor EN.EN3 Energy Sensor EN.EN3 Energy Sensor
Record NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
HVAC Ref NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Element Description NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Servicable Area NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Model NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Make NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
EIS ID 1 1 2 1 2 1 2 3 4 5 ... W4 W5 Y1 Y2 Y3 Y4 Y5 Y6 Z1 Z2
Logger Channel 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
Logger Upstream Comms Target NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Logger Modem Serial Number NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Logger IP Address NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Logger Serial Number NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Logger MAC Address NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Logger SIM NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Meter Pulse Value NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Meter Units kWh NaN NaN NaN NaN m3 kWh kWh kWh m3 ... NaN NaN Degrees Celsius NaN NaN Degrees Celsius Degrees Celsius NaN NaN NaN
Meter Capacity NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Network Point ID NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Tenant Meter.Name No No No No No No No No No No ... No No No No No No No No No No
Fiscal Meter.Name No No No No No No No No No No ... No No No No No No No No No No
EIS Space.Space number NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Utility Type.Name NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Code AP000-L01/M001 AP000-L02/M001 AP000-L02/M002 AP000-L03/M001 AP000-L03/M002 AP001-L01/M001 AP001-L01/M002 AP001-L01/M003 AP001-L01/M004 AP001-L01/M005 ... OC006-B01/W4 OC006-B01/W5 OC006-B01/Y1 OC006-B01/Y2 OC006-B01/Y3 OC006-B01/Y4 OC006-B01/Y5 OC006-B01/Y6 OC006-B01/Z1 OC006-B01/Z2

30 rows × 32080 columns


In [34]:
master_meterssensors_for_validation.T


Out[34]:
AP000-L01/M001 AP000-L02/M001 AP000-L02/M002 AP000-L03/M001 AP000-L03/M002 AP000-L99/M303 AP000-L99/M308 AP001-L01/M001 AP001-L01/M002 AP001-L01/M003 ... OC006-B01/Y1 OC006-B01/Y2 OC006-B01/Y3 OC006-B01/Y4 OC006-B01/Y5 OC006-B01/Y6 OC006-B01/Z1 OC006-B01/Z2 OC006-L99/M200 OC006-L99/M503
Logger Asset Code AP000-L01 AP000-L02 AP000-L02 AP000-L03 AP000-L03 AP000-L99 AP000-L99 AP001-L01 AP001-L01 AP001-L01 ... OC006-B01 OC006-B01 OC006-B01 OC006-B01 OC006-B01 OC006-B01 OC006-B01 OC006-B01 OC006-L99 OC006-L99
Description NaN Graduate House 1-11 Alex Park Main NaN NaN Alex Park LU Alex Park UPP NaN Bar Cellar Bar Ground ... Outside air temperature Immersion Sensor Thermistor TBTC Room temperature Thermistor TBTI 4DIX V Heating Boilers DHWS Immersion Kent House Kent House
Make Carlo Gavazzi Actaris Delta NaN NaN Elster Landis ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Model EM24 Delta G D35 NaN NaN A1100 E1100 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Meter Units kWh NaN NaN NaN NaN NaN NaN m3 kWh kWh ... Degrees Celsius NaN NaN Degrees Celsius Degrees Celsius NaN NaN NaN kWh NaN
Meter Pulse Value 1 NaN NaN NaN NaN NaN NaN 0.001 0.001 0.001 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Classification Group Energy meter Energy meter Energy meter Energy meter Energy meter Energy meter Energy meter Energy meter Energy meter Energy meter ... Energy sensor Energy sensor Energy sensor Energy sensor Energy sensor Energy sensor Energy sensor Energy sensor Energy meter Energy meter
Logger Channel 1 1 2 1 2 NaN NaN 1 2 3 ... Y1 Y2 Y3 Y4 Y5 Y6 Z1 Z2 NaN NaN
Utility Type Electricity Natural Gas Natural Gas Water Water Natural Gas Natural Gas Water Electricity Electricity ... NaN NaN NaN NaN NaN NaN NaN NaN Electricity Water
?? NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Meter Type NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Building Code AP000 AP000 AP000 AP000 AP000 AP000 AP000 AP001 AP001 AP001 ... OC006 OC006 OC006 OC006 OC006 OC006 OC006 OC006 OC006 OC006
Building Name Alexandra Park Alexandra Park Alexandra Park Alexandra Park Alexandra Park Alexandra Park Alexandra Park House 01 - Bassenthwaite House 01 - Bassenthwaite House 01 - Bassenthwaite ... Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House
Space NaN NaN NaN NaN NaN AP001 A0, AP002 A0, AP003 A0, AP004 A0, Ap005 ... AP012 A0, AP013 A0, AP014 A0, AP015 A0, AP016 ... NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN OC006 A0 OC006 A0
Additional Location Info Graduate 1-11 Plant Room External Gas Meter Building External Gas Meter Building External Water Meter Chamber External Water Meter Chamber NaN NaN Bassenthwaite Rm No 104 Bassenthwaite Rm No 104 Bassenthwaite Rm No 104 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Tenant meter 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
Fiscal meter 0 0 0 0 0 1 1 0 0 0 ... 0 0 0 0 0 0 0 0 1 1
Parent meter NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Child meters NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Communications type NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Electrical panel ID NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Code AP000-L01/M001 AP000-L02/M001 AP000-L02/M002 AP000-L03/M001 AP000-L03/M002 AP000-L99/M303 AP000-L99/M308 AP001-L01/M001 AP001-L01/M002 AP001-L01/M003 ... OC006-B01/Y1 OC006-B01/Y2 OC006-B01/Y3 OC006-B01/Y4 OC006-B01/Y5 OC006-B01/Y6 OC006-B01/Z1 OC006-B01/Z2 OC006-L99/M200 OC006-L99/M503

22 rows × 30567 columns

Create dictionary that maps Planon column names onto Master.

From Nicola:

  • Code (Asset Code)
  • Description
  • EIS ID (Channel)
  • Utility Type
  • Fiscal Meter
  • Tenant Meter

Building code and Building name are implicitly included. Logger Serial Number, IP or MAC would be essential to include, as well as Make and Model. Additional Location Info is not essnetial but would be useful to have. Locations (Locations.Space.Space number and Space Name) are included in the Planon export - but this is their only viable data source, therefore are not validated against.


In [35]:
#Planon:Master
meters_match_dict={
      "BuildingNo.":"Building Code",
      "Building":"Building Name",
      "Description":"Description",
      "EIS ID":"Logger Channel",
      "Tenant Meter.Name":"Tenant meter",
      "Fiscal Meter.Name":"Fiscal meter",
      "Code":"Code"
      }

Filter both dataframes based on these new columns. Then remove duplicates. Currently, this leads to loss of information of spaces served, but also a unique index for the Planon dataframe, therefore bringing the dataframes closer to each other. When including spaces explicitly in the comparison (if we want to - or just trust the Planon space mapping), this needs to be modified.


In [36]:
master_meterssensors_for_validation_filtered=master_meterssensors_for_validation[list(meters_match_dict.values())]
planon_meterssensors_filtered=planon_meterssensors[list(meters_match_dict.keys())]

In [38]:
master_meterssensors_for_validation_filtered.head(2)


Out[38]:
Building Name Tenant meter Logger Channel Building Code Fiscal meter Description Code
AP000-L01/M001 Alexandra Park 0.0 1 AP000 0.0 NaN AP000-L01/M001
AP000-L02/M001 Alexandra Park 0.0 1 AP000 0.0 Graduate House 1-11 AP000-L02/M001

In [39]:
planon_meterssensors_filtered.head(2)


Out[39]:
Building Tenant Meter.Name EIS ID BuildingNo. Fiscal Meter.Name Description Code
AP000-L01/M001 Alexandra Park No 1 AP000 No NaN AP000-L01/M001
AP000-L02/M001 Alexandra Park No 1 AP000 No Graduate House 1-11 AP000-L02/M001

Unify headers, drop duplicates (bear the mind the spaces argument, this where it needs to be brought back in in the future!).


In [40]:
planon_meterssensors_filtered.columns=[meters_match_dict[i] for i in planon_meterssensors_filtered]

In [41]:
planon_meterssensors_filtered.drop_duplicates(inplace=True)
master_meterssensors_for_validation_filtered.drop_duplicates(inplace=True)


C:\Anaconda2\envs\python3\lib\site-packages\pandas\util\decorators.py:91: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  return func(*args, **kwargs)

In [42]:
planon_meterssensors_filtered.head(2)


Out[42]:
Building Name Tenant meter Logger Channel Building Code Fiscal meter Description Code
AP000-L01/M001 Alexandra Park No 1 AP000 No NaN AP000-L01/M001
AP000-L02/M001 Alexandra Park No 1 AP000 No Graduate House 1-11 AP000-L02/M001

Fiscal/Tenant meter name needs fixing from Yes/No and 1/0.


In [43]:
planon_meterssensors_filtered['Fiscal meter']=planon_meterssensors_filtered['Fiscal meter'].isin(['Yes'])
planon_meterssensors_filtered['Tenant meter']=planon_meterssensors_filtered['Tenant meter'].isin(['Yes'])
master_meterssensors_for_validation_filtered['Fiscal meter']=master_meterssensors_for_validation_filtered['Fiscal meter'].isin([1])
master_meterssensors_for_validation_filtered['Tenant meter']=master_meterssensors_for_validation_filtered['Tenant meter'].isin([1])


C:\Anaconda2\envs\python3\lib\site-packages\ipykernel\__main__.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  if __name__ == '__main__':
C:\Anaconda2\envs\python3\lib\site-packages\ipykernel\__main__.py:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  from ipykernel import kernelapp as app
C:\Anaconda2\envs\python3\lib\site-packages\ipykernel\__main__.py:3: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  app.launch_new_instance()
C:\Anaconda2\envs\python3\lib\site-packages\ipykernel\__main__.py:4: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

In [44]:
master_meterssensors_for_validation_filtered.head(2)


Out[44]:
Building Name Tenant meter Logger Channel Building Code Fiscal meter Description Code
AP000-L01/M001 Alexandra Park False 1 AP000 False NaN AP000-L01/M001
AP000-L02/M001 Alexandra Park False 1 AP000 False Graduate House 1-11 AP000-L02/M001

In [45]:
planon_meterssensors_filtered.head(2)


Out[45]:
Building Name Tenant meter Logger Channel Building Code Fiscal meter Description Code
AP000-L01/M001 Alexandra Park False 1 AP000 False NaN AP000-L01/M001
AP000-L02/M001 Alexandra Park False 1 AP000 False Graduate House 1-11 AP000-L02/M001

Cross-check missing meters


In [46]:
a=np.sort(list(set(planon_meterssensors_filtered.index)))
b=np.sort(list(set(master_meterssensors_for_validation_filtered.index)))
meterssensors_not_in_planon=[]
for i in b:
    if i not in a:
        print(i+',',end=" "),
        meterssensors_not_in_planon.append(i)
print('\n\nMeters in Master, but not in Planon:',
      len(meterssensors_not_in_planon),'/',len(b),':',
      round(len(meterssensors_not_in_planon)/len(b)*100,3),'%')


AP000-L99/M303, AP000-L99/M308, AP080-L79/M001, AP080-L80/M001, AP080-L81/M001, EX001-B01/N1, EX001-B01/O1, EX001-B01/O2, EX001-B01/O3, MC000-L99/M201, MC000-L99/M202, MC000-L99/M203, MC000-L99/M506, MC001-B01/N1, MC001-L82-M972, MC001-L82-M973, MC001-L82-M974, MC001-L82-M975, MC001-L82-M976, MC001-L99/M100, MC001-L99/M222, MC001-L99/M224, MC001-L99/M306, MC001-L99/M508, MC003-B01/N1, MC003-L99/M207, MC003-L99/M304, MC003-L99/M509, MC007-L99/M211, MC007-L99/M511, MC008-L82-M916, MC008-L99/M302, MC010-L82-M745, MC010-L82-M746, MC010-L82-M747, MC010-L82-M748, MC010-L82-M749, MC010-L82-M750, MC010-L82-M751, MC010-L82-M752, MC010-L82-M753, MC010-L82-M754, MC010-L82-M755, MC010-L82-M756, MC010-L82-M757, MC010-L82-M758, MC010-L82-M759, MC010-L82-M760, MC010-L82-M761, MC010-L82-M762, MC010-L82-M763, MC010-L82-M764, MC010-L82-M765, MC010-L82-M766, MC010-L82-M767, MC010-L82-M768, MC010-L82-M769, MC010-L82-M770, MC010-L82-M771, MC010-L82-M772, MC011-B01/N1, MC011-B01/O2, MC011-L82-M953, MC011-L82-M954, MC014-B01/N1, MC014-B01/O2, MC014-B01/O3, MC014-B02/N1, MC014-B02/O2, MC014-B02/O3, MC014-B03/N1, MC014-B03/O2, MC014-B03/O3, MC014-B04/N1, MC014-B04/O2, MC014-B04/O3, MC014-B05/N1, MC014-B05/O2, MC014-B05/O3, MC014-B06/N1, MC014-B06/O2, MC014-B06/O3, MC014-B07/N1, MC014-B07/O2, MC014-B07/O3, MC014-B08/N1, MC014-B08/O2, MC014-B08/O3, MC014-B09/N1, MC014-B09/O2, MC014-B09/O3, MC014-B10/N1, MC014-B10/O2, MC014-B10/O3, MC014-B11/N1, MC014-B11/O2, MC014-B11/O3, MC014-B12/N1, MC014-B12/O2, MC014-B12/O3, MC014-B13/N1, MC014-B13/O2, MC014-B13/O3, MC014-B14/N1, MC014-B14/O2, MC014-B14/O3, MC029-B01/N1, MC030-B01/N1, MC030-B01/O1, MC030-B01/O2, MC030-B01/O3, MC031-B01/N1, MC031-B02/N1, MC031-B02/O1, MC031-B02/O2, MC031-B02/O3, MC032-B01/N1, MC032-B01/N10, MC032-B01/N11, MC032-B01/N2, MC032-B01/N3, MC032-B01/N6, MC032-B01/O1, MC032-B02/N1, MC032-B02/O2, MC032-B02/O3, MC032-B03/N1, MC032-B03/O1, MC032-B04/N1, MC032-B04/O1, MC032-B05/N1, MC032-B06/N1, MC032-B06/N2, MC032-B07/N1, MC032-B07/O1, MC032-B07/O2, MC032-B07/O3, MC032-L82-M773, MC032-L82-M774, MC033-B01/N1, MC033-L82-M898, MC033-L82-M899, MC043-B01/N1, MC043-B01/N10, MC043-B01/N11, MC043-B01/N3, MC043-B01/N6, MC044-B01/N1, MC044-B01/N2, MC044-B01/N6, MC044-B01/O1, MC044-B01/O2, MC044-B01/O3, MC044-B02/N1, MC044-B02/N2, MC044-B02/N3, MC044-B02/N6, MC044-B02/O1, MC044-B02/O3, MC044-B03/N1, MC044-B03/N3, MC044-B03/N6, MC044-B03/O1, MC044-B03/O2, MC044-B03/O3, MC044-B04/N1, MC044-B04/N10, MC044-B04/N11, MC044-B04/N12, MC044-B04/N13, MC044-B04/N14, MC044-B04/N3, MC044-B04/N6, MC044-B04/N9, MC044-B05/N1, MC044-B05/N2, MC044-B05/N3, MC044-B05/N6, MC044-B05/O1, MC044-B05/O2, MC044-B05/O3, MC044-B06/N1, MC044-B06/N3, MC044-B06/N4, MC044-B06/N6, MC044-B06/O1, MC044-B06/O2, MC044-B06/O3, MC044-B07/N1, MC044-B07/N2, MC044-B07/N3, MC044-B07/N4, MC044-B07/N5, MC044-B07/N6, MC044-B07/N7, MC044-B08/N1, MC044-B08/N2, MC044-B08/N3, MC044-B08/N6, MC044-B08/O2, MC044-B08/O3, MC044-B09/I1, MC044-B09/I2, MC044-B09/I3, MC044-B09/I4, MC044-B09/N1, MC044-B09/N10, MC044-B09/N11, MC044-B09/N2, MC044-B09/N3, MC044-B09/N4, MC044-B09/N5, MC044-B09/N6, MC044-B09/N7, MC044-B09/N8, MC044-B09/N9, MC044-B10/N1, MC044-B10/N10, MC044-B10/N100, MC044-B10/N101, MC044-B10/N102, MC044-B10/N103, MC044-B10/N104, MC044-B10/N105, MC044-B10/N106, MC044-B10/N107, MC044-B10/N108, MC044-B10/N109, MC044-B10/N11, MC044-B10/N110, MC044-B10/N111, MC044-B10/N112, MC044-B10/N113, MC044-B10/N114, MC044-B10/N115, MC044-B10/N116, MC044-B10/N117, MC044-B10/N118, MC044-B10/N119, MC044-B10/N12, MC044-B10/N120, MC044-B10/N121, MC044-B10/N122, MC044-B10/N123, MC044-B10/N124, MC044-B10/N125, MC044-B10/N126, MC044-B10/N127, MC044-B10/N128, MC044-B10/N129, MC044-B10/N13, MC044-B10/N130, MC044-B10/N131, MC044-B10/N132, MC044-B10/N133, MC044-B10/N134, MC044-B10/N135, MC044-B10/N136, MC044-B10/N137, MC044-B10/N138, MC044-B10/N139, MC044-B10/N14, MC044-B10/N140, MC044-B10/N141, MC044-B10/N142, MC044-B10/N143, MC044-B10/N144, MC044-B10/N145, MC044-B10/N146, MC044-B10/N147, MC044-B10/N148, MC044-B10/N149, MC044-B10/N15, MC044-B10/N150, MC044-B10/N151, MC044-B10/N152, MC044-B10/N153, MC044-B10/N154, MC044-B10/N155, MC044-B10/N156, MC044-B10/N157, MC044-B10/N158, MC044-B10/N159, MC044-B10/N16, MC044-B10/N160, MC044-B10/N161, MC044-B10/N162, MC044-B10/N163, MC044-B10/N164, MC044-B10/N165, MC044-B10/N166, MC044-B10/N167, MC044-B10/N168, MC044-B10/N169, MC044-B10/N17, MC044-B10/N170, MC044-B10/N171, MC044-B10/N172, MC044-B10/N173, MC044-B10/N174, MC044-B10/N175, MC044-B10/N176, MC044-B10/N177, MC044-B10/N178, MC044-B10/N179, MC044-B10/N18, MC044-B10/N180, MC044-B10/N181, MC044-B10/N182, MC044-B10/N183, MC044-B10/N184, MC044-B10/N185, MC044-B10/N186, MC044-B10/N187, MC044-B10/N188, MC044-B10/N189, MC044-B10/N19, MC044-B10/N190, MC044-B10/N191, MC044-B10/N192, MC044-B10/N193, MC044-B10/N194, MC044-B10/N195, MC044-B10/N196, MC044-B10/N197, MC044-B10/N198, MC044-B10/N199, MC044-B10/N2, MC044-B10/N20, MC044-B10/N200, MC044-B10/N201, MC044-B10/N202, MC044-B10/N203, MC044-B10/N204, MC044-B10/N205, MC044-B10/N206, MC044-B10/N207, MC044-B10/N208, MC044-B10/N209, MC044-B10/N21, MC044-B10/N210, MC044-B10/N211, MC044-B10/N212, MC044-B10/N213, MC044-B10/N214, MC044-B10/N215, MC044-B10/N216, MC044-B10/N217, MC044-B10/N218, MC044-B10/N219, MC044-B10/N22, MC044-B10/N220, MC044-B10/N23, MC044-B10/N24, MC044-B10/N25, MC044-B10/N26, MC044-B10/N27, MC044-B10/N28, MC044-B10/N29, MC044-B10/N3, MC044-B10/N30, MC044-B10/N31, MC044-B10/N32, MC044-B10/N33, MC044-B10/N34, MC044-B10/N35, MC044-B10/N36, MC044-B10/N37, MC044-B10/N38, MC044-B10/N39, MC044-B10/N4, MC044-B10/N40, MC044-B10/N41, MC044-B10/N42, MC044-B10/N43, MC044-B10/N44, MC044-B10/N45, MC044-B10/N46, MC044-B10/N47, MC044-B10/N48, MC044-B10/N49, MC044-B10/N5, MC044-B10/N50, MC044-B10/N51, MC044-B10/N52, MC044-B10/N53, MC044-B10/N54, MC044-B10/N55, MC044-B10/N56, MC044-B10/N57, MC044-B10/N58, MC044-B10/N59, MC044-B10/N6, MC044-B10/N60, MC044-B10/N61, MC044-B10/N62, MC044-B10/N63, MC044-B10/N64, MC044-B10/N65, MC044-B10/N66, MC044-B10/N67, MC044-B10/N68, MC044-B10/N69, MC044-B10/N7, MC044-B10/N70, MC044-B10/N71, MC044-B10/N72, MC044-B10/N73, MC044-B10/N74, MC044-B10/N75, MC044-B10/N76, MC044-B10/N77, MC044-B10/N78, MC044-B10/N79, MC044-B10/N8, MC044-B10/N80, MC044-B10/N81, MC044-B10/N82, MC044-B10/N83, MC044-B10/N84, MC044-B10/N85, MC044-B10/N86, MC044-B10/N87, MC044-B10/N88, MC044-B10/N89, MC044-B10/N9, MC044-B10/N90, MC044-B10/N91, MC044-B10/N92, MC044-B10/N93, MC044-B10/N94, MC044-B10/N95, MC044-B10/N96, MC044-B10/N97, MC044-B10/N98, MC044-B10/N99, MC044-B10/O1, MC044-B10/O2, MC044-B10/O3, MC044-B11/N1, MC044-B11/N10, MC044-B11/N100, MC044-B11/N101, MC044-B11/N102, MC044-B11/N103, MC044-B11/N104, MC044-B11/N105, MC044-B11/N106, MC044-B11/N107, MC044-B11/N108, MC044-B11/N109, MC044-B11/N11, MC044-B11/N110, MC044-B11/N111, MC044-B11/N112, MC044-B11/N113, MC044-B11/N114, MC044-B11/N115, MC044-B11/N116, MC044-B11/N117, MC044-B11/N118, MC044-B11/N119, MC044-B11/N12, MC044-B11/N120, MC044-B11/N121, MC044-B11/N122, MC044-B11/N123, MC044-B11/N124, MC044-B11/N125, MC044-B11/N126, MC044-B11/N127, MC044-B11/N128, MC044-B11/N129, MC044-B11/N13, MC044-B11/N130, MC044-B11/N131, MC044-B11/N132, MC044-B11/N133, MC044-B11/N134, MC044-B11/N135, MC044-B11/N136, MC044-B11/N137, MC044-B11/N138, MC044-B11/N139, MC044-B11/N14, MC044-B11/N140, MC044-B11/N141, MC044-B11/N142, MC044-B11/N143, MC044-B11/N144, MC044-B11/N145, MC044-B11/N146, MC044-B11/N147, MC044-B11/N148, MC044-B11/N149, MC044-B11/N15, MC044-B11/N150, MC044-B11/N151, MC044-B11/N152, MC044-B11/N153, MC044-B11/N154, MC044-B11/N155, MC044-B11/N156, MC044-B11/N157, MC044-B11/N158, MC044-B11/N159, MC044-B11/N16, MC044-B11/N160, MC044-B11/N161, MC044-B11/N162, MC044-B11/N163, MC044-B11/N164, MC044-B11/N165, MC044-B11/N166, MC044-B11/N167, MC044-B11/N168, MC044-B11/N169, MC044-B11/N17, MC044-B11/N170, MC044-B11/N171, MC044-B11/N172, MC044-B11/N173, MC044-B11/N174, MC044-B11/N175, MC044-B11/N176, MC044-B11/N177, MC044-B11/N178, MC044-B11/N179, MC044-B11/N18, MC044-B11/N180, MC044-B11/N181, MC044-B11/N182, MC044-B11/N183, MC044-B11/N184, MC044-B11/N185, MC044-B11/N186, MC044-B11/N187, MC044-B11/N19, MC044-B11/N2, MC044-B11/N20, MC044-B11/N21, MC044-B11/N22, MC044-B11/N23, MC044-B11/N24, MC044-B11/N25, MC044-B11/N26, MC044-B11/N27, MC044-B11/N28, MC044-B11/N29, MC044-B11/N3, MC044-B11/N30, MC044-B11/N31, MC044-B11/N32, MC044-B11/N33, MC044-B11/N34, MC044-B11/N35, MC044-B11/N36, MC044-B11/N37, MC044-B11/N38, MC044-B11/N39, MC044-B11/N4, MC044-B11/N40, MC044-B11/N41, MC044-B11/N42, MC044-B11/N43, MC044-B11/N44, MC044-B11/N45, MC044-B11/N46, MC044-B11/N47, MC044-B11/N48, MC044-B11/N49, MC044-B11/N5, MC044-B11/N50, MC044-B11/N51, MC044-B11/N52, MC044-B11/N53, MC044-B11/N54, MC044-B11/N55, MC044-B11/N56, MC044-B11/N57, MC044-B11/N58, MC044-B11/N59, MC044-B11/N6, MC044-B11/N60, MC044-B11/N61, MC044-B11/N62, MC044-B11/N63, MC044-B11/N64, MC044-B11/N65, MC044-B11/N66, MC044-B11/N67, MC044-B11/N68, MC044-B11/N69, MC044-B11/N7, MC044-B11/N70, MC044-B11/N71, MC044-B11/N72, MC044-B11/N73, MC044-B11/N74, MC044-B11/N75, MC044-B11/N76, MC044-B11/N77, MC044-B11/N78, MC044-B11/N79, MC044-B11/N8, MC044-B11/N80, MC044-B11/N81, MC044-B11/N82, MC044-B11/N83, MC044-B11/N84, MC044-B11/N85, MC044-B11/N86, MC044-B11/N87, MC044-B11/N88, MC044-B11/N89, MC044-B11/N9, MC044-B11/N90, MC044-B11/N91, MC044-B11/N92, MC044-B11/N93, MC044-B11/N94, MC044-B11/N95, MC044-B11/N96, MC044-B11/N97, MC044-B11/N98, MC044-B11/N99, MC044-B11/O1, MC044-B11/O2, MC044-B11/O3, MC044-B12/N1, MC044-B12/O1, MC044-L82-M794, MC044-L82-M795, MC044-L82-M796, MC044-L82-M797, MC044-L82-M798, MC044-L82-M799, MC044-L82-M800, MC044-L82-M801, MC044-L82-M802, MC044-L82-M803, MC044-L82-M804, MC044-L82-M805, MC044-L82-M806, MC044-L82-M807, MC044-L82-M808, MC044-L82-M809, MC044-L82-M810, MC044-L82-M811, MC044-L82-M812, MC044-L82-M813, MC044-L82-M814, MC044-L82-M815, MC044-L82-M816, MC044-L82-M817, MC044-L82-M818, MC044-L82-M819, MC044-L82-M820, MC044-L82-M821, MC044-L82-M822, MC044-L82-M823, MC044-L82-M824, MC044-L82-M825, MC044-L82-M826, MC044-L82-M827, MC044-L82-M828, MC044-L82-M829, MC044-L82-M830, MC044-L82-M831, MC044-L82-M832, MC044-L82-M833, MC044-L82-M834, MC044-L82-M835, MC044-L82-M836, MC044-L82-M837, MC044-L82-M838, MC044-L82-M839, MC044-L82-M840, MC044-L82-M841, MC044-L82-M842, MC044-L82-M843, MC044-L82-M844, MC045-B01/I5, MC045-B01/I8, MC045-B01/N1, MC045-B01/N3, MC045-B01/N6, MC045-B01/O1, MC045-L82-M775, MC045-L82-M776, MC045-L82-M777, MC045-L82-M778, MC045-L82-M779, MC045-L82-M780, MC045-L82-M781, MC045-L82-M782, MC045-L82-M783, MC045-L82-M784, MC045-L82-M785, MC045-L82-M786, MC045-L82-M787, MC045-L82-M788, MC045-L82-M789, MC045-L82-M790, MC045-L82-M791, MC045-L82-M792, MC045-L82-M793, MC045-L82-M947, MC045-L82-M948, MC045-L82-M949, MC045-L82-M950, MC045-L82-M951, MC045-L82-M952, MC046-B01/N1, MC046-B01/N4, MC046-B01/O4, MC046-L82-M736, MC046-L82-M737, MC046-L82-M738, MC046-L82-M739, MC046-L82-M740, MC046-L82-M741, MC046-L82-M742, MC046-L82-M743, MC046-L82-M744, MC047-B02/N1, MC047-B02/N4, MC047-B02/O1, MC047-L02/M888, MC048-B01/N1, MC048-B01/O1, MC048-B01/O3, MC051-B01/N1, MC055-B01/N1, MC055-B01/O5, MC055-B01/O6, MC055-B01/O7, MC061-B01/N1, MC061-B01/N2, MC061-B01/N3, MC061-B01/N4, MC061-B01/N5, MC061-B01/N6, MC061-B01/O2, MC061-B01/O3, MC061-B01/O4, MC061-B02/N1, MC061-B02/N2, MC061-B02/N3, MC061-B02/N4, MC061-B02/N5, MC061-B02/N6, MC061-B02/N7, MC061-B02/N8, MC061-B02/N9, MC061-B02/O1, MC061-B02/O2, MC061-B02/O3, MC061-B03/N1, MC061-B03/N10, MC061-B03/N11, MC061-B03/N12, MC061-B03/N13, MC061-B03/N14, MC061-B03/N15, MC061-B03/N16, MC061-B03/N2, MC061-B03/N3, MC061-B03/N4, MC061-B03/N5, MC061-B03/N6, MC061-B03/N7, MC061-B03/N8, MC061-B03/N9, MC061-L99/M305, MC061-L99/M310, MC063-B01/N1, MC063-B01/O1, MC063-B01/O2, MC063-B01/O3, MC063-L82-M955, MC065-B01/N1, MC065-B01/N2, MC065-B01/N3, MC065-B01/N4, MC065-B01/N5, MC065-B01/N6, MC065-B01/N7, MC065-B01/N8, MC065-B01/O1, MC065-B01/O3, MC065-B02/N1, MC065-B02/N2, MC065-B02/O1, MC065-B02/O2, MC065-B02/O3, MC065-B03/N1, MC065-B03/N2, MC065-B03/O1, MC065-B03/O2, MC065-B03/O3, MC065-B04/N1, MC065-B04/O1, MC065-B04/O2, MC065-B04/O3, MC065-B05/N1, MC065-B05/N2, MC065-B05/O1, MC065-B05/O2, MC065-B05/O3, MC065-B06/N1, MC065-B06/N2, MC065-B06/N3, MC065-B06/N4, MC065-B06/N5, MC065-B06/N6, MC065-B06/N7, MC065-B06/N8, MC065-B07/N1, MC065-B07/N10, MC065-B07/N2, MC065-B07/N3, MC065-B07/N7, MC065-B07/N8, MC065-B07/N9, MC065-B08/N1, MC065-B08/N2, MC065-B08/N3, MC065-B08/N4, MC065-B08/N5, MC065-B08/N6, MC065-B08/N7, MC065-B08/N8, MC065-B09/N1, MC065-B09/N10, MC065-B09/N11, MC065-B09/N12, MC065-B09/N13, MC065-B09/N14, MC065-B09/N15, MC065-B09/N2, MC065-B09/N3, MC065-B09/N4, MC065-B09/N5, MC065-B09/N7, MC065-B09/N8, MC065-B09/N9, MC065-B10/N1, MC065-L82-M900, MC065-L82-M901, MC065-L82-M902, MC065-L82-M903, MC065-L82-M904, MC065-L82-M905, MC065-L82-M906, MC065-L82-M907, MC065-L82-M908, MC065-L82-M909, MC065-L82-M910, MC065-L82-M911, MC065-L82-M912, MC065-L82-M913, MC065-L82-M914, MC065-L82-M915, MC065-L82-M935, MC065-L82-M936, MC065-L82-M937, MC066-B01/N1, MC067-B01/N1, MC070-B01/N1, MC070-B01/O1, MC070-B01/O2, MC070-B01/O3, MC070-B02/N1, MC070-B02/O2, MC070-B03/N1, MC070-B03/N2, MC070-B03/O1, MC070-B03/O2, MC070-B05/N1, MC070-B05/O1, MC070-B06/N1, MC070-L82-M932, MC070-L82-M933, MC070-L82-M934, MC070-L82-M960, MC070-L82-M961, MC070-L82-M962, MC070-L82-M963, MC070-L82-M964, MC070-L82-M965, MC070-L82-M966, MC070-L82-M967, MC070-L82-M968, MC070-L82-M969, MC070-L82-M970, MC070-L82-M971, MC071-B01/N1, MC071-B01/N2, MC071-B01/N3, MC071-L82-M917, MC071-L82-M918, MC071-L82-M919, MC071-L82-M920, MC071-L82-M921, MC072-B01/N1, MC072-B02/N1, MC072-B02/N10, MC072-B02/N11, MC072-B02/N12, MC072-B02/N13, MC072-B02/N14, MC072-B02/N15, MC072-B02/N16, MC072-B02/N17, MC072-B02/N18, MC072-B02/N19, MC072-B02/N2, MC072-B02/N20, MC072-B02/N21, MC072-B02/N22, MC072-B02/N23, MC072-B02/N3, MC072-B02/N4, MC072-B02/N5, MC072-B02/N6, MC072-B02/N7, MC072-B02/N8, MC072-B02/N9, MC072-B03/N1, MC072-B03/O1, MC072-B03/O2, MC072-B03/O3, MC072-B04/I1, MC072-B04/I2, MC072-B04/I3, MC072-B04/I4, MC072-B04/I5, MC072-B04/I6, MC072-B04/I7, MC072-B04/N1, MC072-B04/N2, MC072-B04/N3, MC072-B04/N4, MC072-B04/O1, MC072-B05/N1, MC072-B05/O1, MC072-B05/O2, MC072-B05/O3, MC072-L82-M928, MC075-B01/N1, MC075-B02/N1, MC075-L82-M942, MC075-L82-M943, MC075-L82-M944, MC075-L82-M945, MC075-L82-M946, MC076-B01/N1, MC076-B02/N1, MC076-B04/N1, MC077-B01/N1, MC078-B01/N1, MC078-B01/N2, MC078-B01/N3, MC078-B01/N4, MC078-B01/N5, MC078-B01/N6, MC078-B01/N7, MC078-B01/O1, MC078-B01/O2, MC078-B02/N1, MC078-B02/N2, MC078-B02/N3, MC078-B02/N4, MC078-B02/O1, MC078-B02/O2, MC078-B03/N1, MC078-B03/N10, MC078-B03/N11, MC078-B03/N2, MC078-B03/N3, MC078-B03/N4, MC078-B03/N5, MC078-B03/N6, MC078-B03/N7, MC078-B03/N8, MC078-B03/N9, MC078-B03/O1, MC078-B03/O2, MC083-B01/N1, MC083-B01/O1, MC102-L82-M700, MC102-L82-M701, MC102-L82-M702, MC102-L82-M703, MC102-L82-M704, MC102-L82-M705, MC102-L82-M706, MC102-L82-M707, MC102-L82-M708, MC102-L82-M709, MC102-L82-M710, MC102-L82-M711, MC102-L82-M712, MC102-L82-M713, MC102-L82-M714, MC102-L82-M715, MC102-L82-M716, MC102-L82-M717, MC102-L82-M718, MC102-L82-M719, MC102-L82-M866, MC102-L82-M867, MC102-L82-M868, MC102-L82-M869, MC102-L82-M870, MC102-L82-M871, MC102-L82-M872, MC102-L82-M873, MC102-L82-M874, MC102-L82-M875, MC102-L82-M876, MC102-L82-M877, MC102-L82-M878, MC102-L82-M879, MC102-L82-M880, MC102-L82-M881, MC102-L82-M882, MC102-L82-M883, MC102-L82-M884, MC102-L82-M885, MC102-L82-M886, MC102-L82-M887, MC102-L99/M309, MC103-B01/N1, MC103-B01/N10, MC103-B01/N11, MC103-B01/N3, MC103-B01/N6, MC103-L99/M216, MC103-L99/M300, MC103-L99/M504, MC125-L82-M929, MC126-L82-M930, MC126-L82-M931, MC128-L82-M926, MC128-L82-M927, MC129-L82-M922, MC129-L82-M923, MC131-L82-M924, MC131-L82-M925, MC197-L82-M888, MC197-L82-M889, MC197-L82-M890, MC197-L82-M891, MC197-L82-M892, MC197-L82-M893, MC197-L82-M894, MC197-L82-M895, MC197-L82-M896, MC197-L82-M897, MC198-B01/N1, MC198-B01/O2, MC198-B02/N1, MC198-B02/O1, MC200-B01/N1, MC200-B01/N2, MC200-B01/O1, MC200-B01/O2, MC200-L82-M938, MC200-L82-M939, MC200-L82-M940, MC200-L82-M941, MC202-B01/N1, MC202-B01/O1, MC202-B02/N1, MC202-B02/O1, MC202-B03/N1, MC202-B03/O1, MC202-B04/N1, MC202-B04/O1, MC202-B05/N1, MC202-B05/O1, MC202-B06/N1, MC202-B06/N2, MC202-B06/O1, MC202-B07/N1, MC202-B07/N2, MC202-B07/O1, MC202-B08/N1, MC202-B08/O1, MC202-B09/N1, MC202-B09/N2, MC202-B09/O1, MC202-B10/N1, MC202-B10/N2, MC202-B10/O1, MC202-B11/N1, MC202-B11/O1, MC202-B12/N1, MC202-B12/N2, MC202-B12/O1, MC202-B13/N1, MC202-B13/N2, MC202-B13/O1, MC202-B14/N1, MC202-B14/N2, MC202-B14/O1, MC202-B15/N1, MC202-B15/N2, MC202-B15/O1, MC202-B16/N1, MC202-B16/N2, MC202-B16/O1, MC204-B01/N1, MC204-B01/N2, MC204-B01/N3, MC204-B01/N4, MC204-B01/O1, MC204-B01/O2, MC204-B01/O3, MC204-B01/O4, MC204-B01/O5, MC204-B01/O6, MC204-B02/N1, MC204-B02/N10, MC204-B02/N11, MC204-B02/N2, MC204-B02/N3, MC204-B02/N4, MC204-B02/N5, MC204-B02/N6, MC204-B02/N7, MC204-B02/N8, MC204-B02/N9, MC204-B02/O1, MC204-B02/O2, MC204-B02/O3, MC204-B02/O4, MC204-B02/O5, MC204-B02/O6, MC204-B03/N1, MC204-B03/O1, MC204-B03/O2, MC204-B03/O3, MC204-B04/N1, MC204-B04/N2, MC204-B04/O1, MC204-B04/O3, MC204-B04/O4, MC204-B04/O5, MC204-B04/O6, MC204-B05/N1, MC204-B05/N2, MC204-B05/O6, MC204-B06/N1, MC204-B06/N2, MC204-B06/N3, MC204-B06/O1, MC204-B06/O2, MC204-B06/O4, MC204-B06/O5, MC204-B06/O6, MC204-L82-M956, MC204-L82-M957, MC204-L82-M958, MC204-L82-M959, MC204-L99/M312, MC207-B01/N1, MC207-B01/O2, MC207-B01/O3, MC207-L82-M845, MC207-L82-M846, MC207-L82-M847, MC207-L82-M848, MC207-L82-M849, MC207-L82-M850, MC207-L82-M851, MC207-L82-M852, MC207-L82-M853, MC207-L82-M854, MC207-L82-M855, MC207-L82-M856, MC207-L82-M857, MC210-B01/N1, MC210-B01/N2, MC210-B01/N3, MC210-B01/N4, MC210-B01/N5, MC210-B01/N6, MC210-B01/N7, MC210-B01/O1, MC210-B01/O2, MC210-B02/I10, MC210-B02/I11, MC210-B02/I12, MC210-B02/I13, MC210-B02/I14, MC210-B02/I4, MC210-B02/I5, MC210-B02/I6, MC210-B02/I7, MC210-B02/I8, MC210-B02/I9, MC210-B02/N1, MC210-B02/N10, MC210-B02/N11, MC210-B02/N2, MC210-B02/N3, MC210-B02/N4, MC210-B02/N5, MC210-B02/N6, MC210-B02/N7, MC210-B02/N8, MC210-B02/N9, MC210-B02/O1, MC210-B02/O2, MC210-B03/N1, MC210-B03/N2, MC210-B03/N3, MC210-B03/N4, MC210-B03/N5, MC210-B03/O1, MC210-B03/O2, MC210-L01/M001, MC210-L01/M002, MC210-L01/M003, MC210-L01/M004, MC210-L01/M005, MC210-L01/M006, MC210-L01/M007, MC210-L01/M008, MC210-L01/M009, MC210-L01/M010, MC210-L01/M011, MC210-L01/M012, MC210-L01/M013, MC210-L01/M014, MC210-L01/M015, MC210-L01/M016, MC210-L01/M017, MC210-L01/M018, MC210-L01/M019, MC210-L01/M020, MC210-L01/M021, MC210-L01/M022, MC210-L01/M023, MC210-L01/M024, MC210-L01/M025, MC210-L01/M026, MC210-L01/M027, MC210-L01/M028, MC210-L01/M029, MC210-L01/M030, MC210-L02/M001, MC210-L02/M002, MC210-L02/M003, MC210-L02/M004, MC210-L02/M005, MC210-L02/M006, MC210-L02/M007, MC210-L02/M008, MC210-L02/M009, MC210-L02/M010, MC210-L02/M011, MC210-L02/M012, MC210-L02/M013, MC210-L02/M014, MC210-L02/M015, MC210-L02/M016, MC210-L02/M017, MC210-L02/M018, MC210-L02/M019, MC210-L02/M020, MC210-L02/M021, MC210-L02/M022, MC210-L02/M023, MC210-L82-M720, MC210-L82-M721, MC210-L82-M722, MC210-L82-M723, MC210-L82-M724, MC210-L82-M725, MC210-L82-M726, MC210-L82-M727, MC210-L82-M728, MC210-L82-M729, MC210-L82-M730, MC210-L82-M731, MC210-L82-M732, MC210-L82-M733, MC210-L82-M734, MC210-L82-M735, MC211-B01/N1, MC211-L82-M858, MC211-L82-M859, MC211-L82-M860, MC211-L82-M861, MC211-L82-M862, MC211-L82-M863, MC211-L82-M864, MC211-L82-M865, OC004-B01/N1, OC004-L99/M206, OC004-L99/M512, OC005-B01/N1, OC005-L99/M204, OC005-L99/M505, OC006-B01/N1, OC006-L99/M200, OC006-L99/M503, 

Meters in Master, but not in Planon: 1311 / 30135 : 4.35 %

In [47]:
#without MC210
len(set([i for i in meterssensors_not_in_planon if i[:5]!='MC210']))


Out[47]:
1202

In [48]:
set([i for i in meterssensors_not_in_planon if i[:5]!='MC210'])


Out[48]:
{'MC044-B08/N3',
 'MC044-B10/N168',
 'MC044-B10/N115',
 'MC044-B10/N45',
 'MC065-B05/N1',
 'MC070-L82-M932',
 'MC204-B06/N1',
 'MC044-B10/N13',
 'MC044-B10/N128',
 'MC044-B11/N21',
 'MC065-B08/N4',
 'MC044-B04/N1',
 'MC103-B01/N6',
 'MC044-B11/N137',
 'MC204-B01/N4',
 'MC070-B02/N1',
 'MC014-B10/N1',
 'MC044-B10/N160',
 'MC200-L82-M939',
 'MC204-B01/O4',
 'MC044-B10/N126',
 'MC197-L82-M889',
 'MC071-L82-M917',
 'MC202-B10/O1',
 'MC072-B02/N9',
 'MC044-L82-M812',
 'MC044-B10/N216',
 'MC044-B11/N15',
 'MC044-B04/N9',
 'MC044-B11/N24',
 'MC044-B10/N21',
 'MC044-B11/N74',
 'MC065-B02/O3',
 'MC065-B06/N7',
 'MC044-B10/N208',
 'MC204-B03/O2',
 'MC071-B01/N3',
 'MC065-L82-M905',
 'MC044-L82-M831',
 'MC044-B11/N17',
 'MC031-B02/O1',
 'MC044-B11/N8',
 'MC046-L82-M742',
 'MC044-B10/N11',
 'MC065-L82-M912',
 'MC044-B10/N196',
 'MC044-B10/N212',
 'MC044-B11/N94',
 'MC044-L82-M811',
 'MC061-L99/M310',
 'MC044-B11/N88',
 'MC102-L82-M718',
 'MC207-L82-M856',
 'MC065-L82-M901',
 'MC044-B11/N3',
 'MC044-B10/N93',
 'MC044-B11/N71',
 'MC014-B12/O2',
 'MC202-B04/N1',
 'MC044-B10/N150',
 'MC044-B10/N30',
 'MC044-B10/N92',
 'MC046-B01/O4',
 'MC044-B11/N168',
 'MC044-B11/N150',
 'MC044-B11/N42',
 'MC044-L82-M805',
 'MC045-L82-M787',
 'MC061-L99/M305',
 'MC078-B01/N3',
 'MC014-B01/O3',
 'MC061-B01/O4',
 'MC065-B09/N4',
 'MC033-L82-M899',
 'MC001-L99/M222',
 'MC072-B02/N3',
 'MC075-L82-M944',
 'MC103-L99/M300',
 'MC211-B01/N1',
 'MC102-L82-M704',
 'MC065-B07/N2',
 'MC102-L82-M878',
 'MC044-B10/N1',
 'MC044-B07/N6',
 'MC061-B03/N7',
 'MC044-B10/N153',
 'MC211-L82-M858',
 'MC070-B03/O1',
 'MC010-L82-M770',
 'MC044-B10/N29',
 'MC044-B11/N146',
 'MC131-L82-M925',
 'MC044-B09/I4',
 'MC072-B04/I7',
 'MC198-B02/O1',
 'MC044-B11/N78',
 'MC044-B10/N108',
 'MC044-B11/N141',
 'MC014-B10/O3',
 'MC044-B10/N52',
 'MC044-B10/N209',
 'MC032-B01/N10',
 'MC065-L82-M914',
 'MC128-L82-M926',
 'MC045-L82-M775',
 'MC044-B10/N178',
 'MC044-B09/I1',
 'MC044-B10/N17',
 'MC003-L99/M509',
 'MC000-L99/M506',
 'MC063-B01/O1',
 'MC014-B06/N1',
 'MC044-B11/N44',
 'MC061-B02/N4',
 'MC065-B09/N10',
 'MC044-B10/N109',
 'MC102-L82-M713',
 'MC032-B02/O2',
 'MC044-B10/N187',
 'MC044-B10/N144',
 'MC047-B02/N1',
 'MC010-L82-M771',
 'MC044-B11/N11',
 'MC030-B01/O3',
 'MC014-B08/O3',
 'MC065-B03/O3',
 'MC044-B10/N184',
 'MC102-L82-M701',
 'MC044-B10/N172',
 'MC044-B11/N182',
 'MC044-B11/N65',
 'MC061-B03/N4',
 'MC051-B01/N1',
 'MC061-B02/N1',
 'MC003-L99/M304',
 'MC044-B10/N155',
 'MC044-L82-M794',
 'MC044-L82-M830',
 'MC065-B03/N1',
 'MC102-L82-M867',
 'MC011-L82-M953',
 'MC044-L82-M835',
 'MC044-B11/N69',
 'MC078-B01/N2',
 'MC044-B06/N1',
 'MC044-B10/N116',
 'MC000-L99/M203',
 'MC103-B01/N11',
 'MC046-L82-M736',
 'MC202-B08/O1',
 'MC065-B03/O1',
 'MC044-B10/N43',
 'MC045-L82-M777',
 'MC010-L82-M772',
 'MC045-L82-M779',
 'MC044-B10/N202',
 'MC045-B01/O1',
 'MC065-B01/O3',
 'MC070-L82-M969',
 'MC204-B02/N4',
 'MC044-B10/N3',
 'MC207-B01/O2',
 'MC102-L82-M712',
 'MC044-B11/N180',
 'MC065-B07/N7',
 'MC044-L82-M820',
 'MC102-L82-M881',
 'MC044-B02/N3',
 'MC044-B11/N151',
 'MC102-L82-M715',
 'MC044-B11/N6',
 'MC126-L82-M931',
 'MC071-L82-M919',
 'MC044-B10/N44',
 'MC065-L82-M935',
 'MC065-B09/N8',
 'MC078-B03/N8',
 'MC044-B10/N104',
 'MC044-B10/N49',
 'MC046-L82-M737',
 'MC078-B03/N5',
 'MC014-B10/O2',
 'MC204-B02/N1',
 'MC044-B10/N120',
 'MC044-B06/O1',
 'MC078-B03/N6',
 'MC044-B09/N6',
 'MC044-L82-M834',
 'OC006-B01/N1',
 'MC070-B01/O1',
 'MC065-B07/N10',
 'MC010-L82-M768',
 'MC032-L82-M773',
 'MC044-B10/N33',
 'MC044-B10/N156',
 'MC044-B10/N74',
 'MC044-L82-M817',
 'MC044-L82-M844',
 'MC045-L82-M786',
 'MC061-B02/N5',
 'MC065-B10/N1',
 'MC032-B06/N2',
 'MC211-L82-M865',
 'MC044-B02/N1',
 'MC044-B11/N115',
 'MC044-L82-M836',
 'MC072-B05/O2',
 'MC044-B04/N14',
 'MC070-L82-M965',
 'MC200-B01/O1',
 'MC044-B10/N7',
 'MC044-B10/N105',
 'MC032-B04/O1',
 'MC044-B11/N49',
 'MC065-B01/N8',
 'MC202-B12/O1',
 'MC044-L82-M824',
 'MC044-B10/N39',
 'MC065-B01/N5',
 'MC044-B11/N83',
 'MC044-B11/N103',
 'MC044-B11/N58',
 'MC065-B09/N7',
 'MC044-B02/N6',
 'MC070-L82-M934',
 'MC072-B02/N17',
 'MC207-L82-M845',
 'MC044-B11/N131',
 'MC044-B10/N106',
 'MC207-L82-M852',
 'MC047-L02/M888',
 'MC044-L82-M797',
 'MC061-B03/N16',
 'MC204-B02/N8',
 'MC044-B05/N6',
 'MC014-B02/N1',
 'MC032-B07/O2',
 'MC044-B11/N28',
 'MC065-B01/N4',
 'MC065-B05/O3',
 'MC014-B07/O2',
 'MC207-L82-M849',
 'MC044-L82-M823',
 'MC072-B02/N6',
 'MC044-B10/N87',
 'MC044-B11/N25',
 'MC070-B01/N1',
 'MC197-L82-M890',
 'MC198-B02/N1',
 'MC070-L82-M966',
 'MC072-B03/O1',
 'MC202-B13/O1',
 'MC044-B09/N11',
 'MC075-B02/N1',
 'MC044-B11/N128',
 'MC044-B11/N7',
 'MC044-B11/N16',
 'MC001-L82-M973',
 'MC044-B10/N118',
 'MC044-B10/N76',
 'MC044-B10/N96',
 'MC071-B01/N1',
 'MC044-B11/N154',
 'MC044-B11/N107',
 'MC044-B10/N201',
 'MC045-L82-M947',
 'MC044-B11/N75',
 'MC044-B10/N107',
 'MC044-B10/N31',
 'MC072-B04/N3',
 'MC010-L82-M759',
 'MC044-B11/N89',
 'MC044-B10/N27',
 'MC065-L82-M937',
 'MC078-B02/O1',
 'MC044-B10/N69',
 'MC078-B02/O2',
 'MC010-L82-M766',
 'MC044-B11/N99',
 'MC044-B10/N62',
 'MC044-B11/N54',
 'MC044-B10/N54',
 'MC044-L82-M806',
 'MC014-B13/O2',
 'MC044-B10/N15',
 'MC046-B01/N1',
 'MC065-B08/N8',
 'MC010-L82-M749',
 'MC061-B02/N3',
 'MC001-L99/M306',
 'MC070-B03/N1',
 'MC207-B01/N1',
 'MC014-B03/O3',
 'MC044-B10/N152',
 'MC072-B02/N16',
 'MC065-B08/N3',
 'MC200-L82-M940',
 'MC007-L99/M211',
 'MC011-B01/N1',
 'MC072-B02/N14',
 'MC065-B03/N2',
 'MC001-L82-M972',
 'MC044-L82-M827',
 'MC044-B10/N28',
 'MC044-L82-M825',
 'MC063-L82-M955',
 'MC032-B04/N1',
 'MC014-B12/N1',
 'MC044-B10/N193',
 'MC044-L82-M809',
 'MC044-B09/N10',
 'MC045-L82-M951',
 'MC044-B10/N59',
 'MC102-L82-M717',
 'MC045-L82-M785',
 'MC204-B04/N1',
 'MC197-L82-M893',
 'MC044-B10/N132',
 'MC044-B11/N50',
 'MC078-B02/N1',
 'MC072-B04/I5',
 'MC065-B01/N3',
 'MC202-B03/N1',
 'MC044-B11/N91',
 'MC044-B11/N105',
 'MC044-B11/N76',
 'MC204-B03/O1',
 'MC067-B01/N1',
 'MC044-B11/N127',
 'MC207-L82-M847',
 'MC207-L82-M850',
 'MC065-L82-M902',
 'MC032-B01/N2',
 'MC065-B09/N11',
 'MC033-L82-M898',
 'MC044-B01/O1',
 'MC044-B11/N32',
 'MC044-B11/N68',
 'MC061-B01/N3',
 'MC065-B07/N8',
 'MC044-B07/N4',
 'MC044-B10/N167',
 'MC044-B11/N135',
 'MC044-B11/N35',
 'MC044-L82-M799',
 'MC071-L82-M918',
 'MC076-B04/N1',
 'MC044-B11/N187',
 'MC102-L82-M884',
 'MC204-B05/N1',
 'MC207-L82-M854',
 'MC065-B05/O1',
 'MC204-B04/O1',
 'MC044-B11/N134',
 'MC044-B11/N45',
 'MC061-B01/N5',
 'MC202-B11/O1',
 'MC204-B04/O5',
 'MC044-B10/N183',
 'MC044-B11/N163',
 'MC102-L82-M719',
 'MC044-B10/N8',
 'MC102-L82-M877',
 'MC204-L82-M957',
 'MC102-L82-M883',
 'MC044-B10/N194',
 'MC044-L82-M815',
 'MC001-L82-M974',
 'MC014-B14/O3',
 'MC032-B02/O3',
 'MC044-L82-M842',
 'MC044-B04/N10',
 'MC044-B10/N77',
 'MC075-L82-M946',
 'MC102-L82-M875',
 'MC043-B01/N10',
 'MC014-B02/O2',
 'MC044-B10/N207',
 'MC044-B10/N110',
 'MC061-B01/O3',
 'MC207-L82-M851',
 'MC198-B01/O2',
 'MC061-B03/N5',
 'MC044-B11/N112',
 'MC044-B11/N33',
 'MC061-B02/O2',
 'MC055-B01/N1',
 'MC065-L82-M906',
 'MC202-B16/N2',
 'MC063-B01/N1',
 'MC197-L82-M895',
 'MC044-B10/N180',
 'MC044-L82-M796',
 'MC044-B10/N217',
 'MC003-B01/N1',
 'MC046-L82-M744',
 'MC044-B11/N122',
 'MC044-B11/N62',
 'MC044-B09/N4',
 'MC063-B01/O2',
 'MC014-B05/O2',
 'MC044-B10/N141',
 'MC044-B10/N18',
 'MC202-B02/N1',
 'MC065-B01/N2',
 'MC044-B06/N3',
 'MC061-B01/N2',
 'MC014-B01/N1',
 'MC044-B10/N140',
 'MC065-L82-M910',
 'MC207-L82-M855',
 'MC065-B08/N7',
 'MC065-B09/N5',
 'MC044-B10/N151',
 'MC044-B11/N110',
 'MC032-B07/N1',
 'MC103-B01/N10',
 'MC204-B02/O6',
 'MC044-L82-M808',
 'MC044-L82-M841',
 'MC204-B02/N2',
 'MC078-B03/O1',
 'MC072-B03/O3',
 'MC070-B03/N2',
 'MC010-L82-M753',
 'MC044-B10/N211',
 'MC202-B03/O1',
 'MC044-B10/N84',
 'MC044-B11/N22',
 'MC044-B11/N116',
 'MC202-B05/N1',
 'MC044-B10/N40',
 'MC065-L82-M913',
 'MC010-L82-M745',
 'OC004-L99/M512',
 'MC044-B10/N185',
 'MC044-B10/N57',
 'MC044-B10/N91',
 'MC044-B11/N1',
 'MC044-B10/N35',
 'MC044-B11/N139',
 'MC044-B11/N130',
 'MC072-B03/O2',
 'MC202-B10/N1',
 'MC044-B06/N6',
 'MC044-B10/N34',
 'MC044-B10/N111',
 'MC033-B01/N1',
 'EX001-B01/O3',
 'MC044-B10/O2',
 'MC010-L82-M761',
 'MC045-L82-M949',
 'MC204-B02/O2',
 'MC044-B10/N89',
 'MC065-B07/N9',
 'MC202-B09/O1',
 'MC010-L82-M748',
 'MC044-B10/N171',
 'MC065-B02/N1',
 'MC044-B10/N181',
 'MC044-B11/N34',
 'MC061-B01/N6',
 'MC044-B11/N117',
 'MC072-B04/I3',
 'MC044-B10/N186',
 'MC044-B10/N135',
 'MC044-B11/N140',
 'MC045-L82-M793',
 'MC202-B05/O1',
 'MC072-B04/O1',
 'MC061-B03/N2',
 'MC001-B01/N1',
 'MC044-B04/N3',
 'MC014-B04/N1',
 'MC032-B01/N6',
 'MC044-B10/N37',
 'MC065-B02/O2',
 'MC065-B09/N9',
 'MC102-L82-M866',
 'MC055-B01/O5',
 'EX001-B01/N1',
 'MC048-B01/O1',
 'MC044-B04/N11',
 'MC044-B10/N55',
 'MC065-B02/N2',
 'MC044-B08/O2',
 'MC072-B02/N21',
 'MC202-B02/O1',
 'MC207-L82-M846',
 'MC065-L82-M909',
 'MC045-B01/N1',
 'MC207-L82-M857',
 'MC211-L82-M863',
 'MC044-B10/N215',
 'MC044-B11/N12',
 'MC045-B01/N6',
 'MC014-B08/N1',
 'MC044-B10/N112',
 'MC065-B04/N1',
 'MC202-B06/O1',
 'MC045-L82-M792',
 'MC202-B13/N2',
 'MC204-B05/O6',
 'MC202-B07/O1',
 'MC044-B11/N63',
 'OC005-L99/M505',
 'MC044-L82-M810',
 'MC065-B04/O1',
 'MC103-B01/N3',
 'MC061-B03/N12',
 'MC200-L82-M941',
 'MC202-B09/N1',
 'MC044-B11/N43',
 'MC044-B11/N80',
 'MC010-L82-M769',
 'MC001-L99/M100',
 'MC010-L82-M760',
 'MC044-B10/N85',
 'MC044-L82-M814',
 'MC014-B03/O2',
 'MC044-B10/N137',
 'MC044-B10/N117',
 'MC044-B10/N58',
 'MC044-B11/N31',
 'MC065-B06/N8',
 'MC045-L82-M776',
 'MC065-B09/N2',
 'MC045-L82-M950',
 'EX001-B01/O1',
 'OC004-B01/N1',
 'MC044-B08/N6',
 'MC044-B11/N66',
 'MC061-B01/N4',
 'MC204-B02/N3',
 'MC044-B11/N108',
 'MC043-B01/N6',
 'MC102-L82-M882',
 'MC046-B01/N4',
 'MC044-B11/N148',
 'MC065-B06/N5',
 'MC044-B10/N82',
 'MC044-B11/N160',
 'MC078-B01/N1',
 'MC044-B10/N36',
 'MC102-L99/M309',
 'MC044-B01/N6',
 'MC070-L82-M971',
 'MC010-L82-M746',
 'MC071-L82-M920',
 'MC204-B02/N7',
 'MC007-L99/M511',
 'MC044-B10/N90',
 'MC044-B10/N47',
 'MC065-B07/N3',
 'MC044-B11/N46',
 'MC044-B11/N92',
 'MC044-B11/N97',
 'MC072-B02/N7',
 'MC102-L82-M708',
 'MC044-B10/N123',
 'MC197-L82-M892',
 'OC006-L99/M200',
 'MC044-B10/N4',
 'MC011-B01/O2',
 'MC014-B06/O2',
 'AP000-L99/M303',
 'MC044-B11/N172',
 'MC045-B01/N3',
 'MC065-B09/N1',
 'MC072-B04/N4',
 'MC044-B10/N12',
 'MC011-L82-M954',
 'MC061-B01/N1',
 'MC204-B01/O1',
 'MC044-B10/N50',
 'MC075-B01/N1',
 'MC072-B04/I6',
 'MC044-B10/N79',
 'MC044-B11/N184',
 'MC065-B08/N5',
 'MC044-L82-M840',
 'MC061-B01/O2',
 'MC044-B11/N124',
 'MC202-B14/N1',
 'MC044-B10/N142',
 'MC197-L82-M891',
 'MC044-B11/N27',
 'MC044-B06/N4',
 'MC204-B01/O6',
 'MC070-L82-M968',
 'MC044-B11/N169',
 'MC102-L82-M869',
 'MC001-L82-M976',
 'MC078-B03/N3',
 'MC044-B10/N81',
 'MC044-L82-M813',
 'MC102-L82-M700',
 'MC044-B11/N159',
 'MC044-B10/N6',
 'MC044-B11/N2',
 'MC197-L82-M897',
 'MC014-B11/N1',
 'MC044-B11/O2',
 'MC204-B04/N2',
 'MC044-B10/N127',
 'MC044-B10/N218',
 'MC204-B04/O3',
 'MC204-B03/O3',
 'MC014-B09/N1',
 'MC044-B05/O2',
 'MC044-B10/N98',
 'MC044-B11/N47',
 'MC010-L82-M756',
 'MC044-B11/N143',
 'MC065-B01/N6',
 'MC072-B02/N22',
 'MC202-B13/N1',
 'MC204-B06/N3',
 'MC204-B02/N9',
 'MC044-B10/N102',
 'MC200-B01/N2',
 'MC044-B10/N164',
 'MC044-L82-M838',
 'AP000-L99/M308',
 'MC044-B10/N65',
 'MC044-B11/N10',
 'MC065-L82-M915',
 'MC044-B10/N56',
 'MC044-B11/N77',
 'MC078-B01/N7',
 'MC204-B02/O4',
 'MC044-B11/N121',
 'MC044-B10/N124',
 'MC010-L82-M765',
 'MC044-B11/N158',
 'MC070-B03/O2',
 'MC078-B03/N1',
 'MC046-L82-M741',
 'MC197-L82-M896',
 'MC044-B10/N75',
 'MC010-L82-M762',
 'MC032-B01/O1',
 'MC044-B11/N5',
 'MC044-B09/I3',
 'MC055-B01/O6',
 'MC044-B10/N101',
 'MC044-B10/N97',
 'MC044-B10/N149',
 'MC061-B02/O3',
 'MC014-B05/O3',
 'MC070-B05/O1',
 'MC044-B11/N123',
 'MC204-B02/N5',
 'MC044-B10/N205',
 'MC078-B03/N4',
 'MC044-B10/N41',
 'MC076-B01/N1',
 'MC010-L82-M751',
 'MC044-B10/N176',
 'MC072-B02/N10',
 'MC014-B09/O2',
 'MC044-B10/N139',
 'MC044-B11/N70',
 'MC065-B07/N1',
 'MC044-B11/N36',
 'MC071-B01/N2',
 'MC200-L82-M938',
 'MC044-B07/N7',
 'MC077-B01/N1',
 'MC044-L82-M807',
 'MC204-B01/N2',
 'MC043-B01/N11',
 'MC070-L82-M962',
 'MC061-B02/N2',
 'MC063-B01/O3',
 'MC044-B02/O3',
 'MC044-B11/N4',
 'MC078-B01/N4',
 'MC207-L82-M853',
 'MC044-B11/N37',
 'MC102-L82-M887',
 'MC014-B13/N1',
 'MC044-B10/N157',
 'MC003-L99/M207',
 'MC044-B10/N32',
 'MC044-L82-M801',
 'MC046-L82-M743',
 'MC065-L82-M936',
 'MC070-L82-M970',
 'MC044-B11/N174',
 'MC045-L82-M781',
 'MC065-B09/N12',
 'MC044-B11/N126',
 'MC044-B10/N154',
 'MC044-B10/N136',
 'MC044-B10/N48',
 'MC044-B11/N55',
 'MC061-B03/N6',
 'MC044-B10/N72',
 'MC065-B09/N15',
 'MC204-B02/N11',
 'MC065-B09/N14',
 'MC075-L82-M943',
 'MC044-B10/N158',
 'MC102-L82-M706',
 'MC014-B05/N1',
 'MC202-B06/N1',
 'MC014-B09/O3',
 'MC045-L82-M784',
 'MC102-L82-M716',
 'MC204-B03/N1',
 'MC207-B01/O3',
 'OC004-L99/M206',
 'MC078-B01/O2',
 'EX001-B01/O2',
 'MC044-B10/N192',
 'MC044-B10/N2',
 'MC044-B11/N67',
 'MC044-B11/N93',
 'MC044-B09/N3',
 'MC072-B01/N1',
 'MC078-B03/O2',
 'MC072-B02/N1',
 'MC008-L82-M916',
 'MC044-B03/O3',
 'MC044-B04/N12',
 'MC044-B11/N14',
 'MC044-B11/N153',
 'MC044-B11/N40',
 'MC044-B02/O1',
 'MC032-B02/N1',
 'MC065-L82-M900',
 'MC202-B08/N1',
 'MC044-B11/N73',
 'MC044-B10/N99',
 'MC044-B10/N42',
 'OC006-L99/M503',
 'MC044-B07/N2',
 'MC102-L82-M868',
 'MC044-B11/N144',
 'MC044-B11/N60',
 'MC044-B10/N174',
 'MC065-B08/N1',
 'MC044-B10/N191',
 'MC072-B04/I4',
 'MC202-B01/N1',
 'MC061-B02/O1',
 'MC044-B09/N9',
 'MC014-B07/N1',
 'MC044-B10/N197',
 'MC044-B10/N113',
 'MC031-B02/O2',
 'MC044-L82-M819',
 'MC202-B07/N1',
 'MC014-B03/N1',
 'MC044-L82-M843',
 'MC078-B01/O1',
 'MC044-B10/N80',
 'MC044-L82-M839',
 'MC045-L82-M782',
 'MC000-L99/M202',
 'MC204-B01/N3',
 'MC204-B01/O3',
 'MC044-B11/N171',
 'MC044-B11/N48',
 'MC044-B10/N51',
 'MC044-B11/N18',
 'MC065-B05/N2',
 'MC044-B10/N175',
 'MC044-B11/N129',
 'MC061-B03/N1',
 'MC010-L82-M767',
 'MC044-B10/N10',
 'MC204-B06/O2',
 'MC061-B03/N8',
 'MC044-L82-M816',
 'MC044-B07/N3',
 'MC204-B02/O1',
 'MC044-B10/N9',
 'MC044-B10/N143',
 'MC044-B10/N219',
 'MC044-B01/O2',
 'MC044-B10/N66',
 'MC044-B11/N59',
 'MC200-B01/N1',
 'MC044-L82-M803',
 'MC044-B11/N165',
 'MC044-B11/N61',
 'MC001-L99/M224',
 'MC072-B02/N5',
 'MC044-B11/N95',
 'MC044-B11/O1',
 'MC065-B09/N3',
 'MC044-B11/N125',
 'MC044-B11/N167',
 'MC103-L99/M216',
 'MC044-L82-M795',
 'MC044-B10/N134',
 'AP080-L79/M001',
 'MC065-B06/N1',
 'AP080-L81/M001',
 'MC014-B04/O2',
 'MC065-L82-M903',
 'MC044-B05/N2',
 'MC078-B03/N7',
 'MC044-B10/N173',
 'MC207-L82-M848',
 'MC044-B10/N188',
 'MC043-B01/N3',
 'MC044-B11/N96',
 'MC061-B02/N9',
 'MC032-B01/N3',
 'MC065-L82-M911',
 'MC044-B03/N6',
 'MC044-B10/N63',
 'MC103-B01/N1',
 'MC202-B16/N1',
 'MC044-L82-M818',
 'MC044-B10/N138',
 'MC044-B11/N57',
 'MC065-B08/N2',
 'MC129-L82-M922',
 'MC044-B10/O3',
 'MC044-B11/N179',
 'MC044-B11/N72',
 'MC044-B07/N5',
 'MC044-B10/N68',
 'MC044-B11/N162',
 'MC065-B04/O3',
 'MC078-B03/N9',
 'MC044-B12/N1',
 'MC044-B10/N198',
 'MC044-B10/N46',
 'MC061-B03/N14',
 'MC014-B13/O3',
 'MC014-B04/O3',
 'MC044-B11/N161',
 'MC010-L82-M750',
 'MC065-B04/O2',
 'MC202-B15/O1',
 'MC045-L82-M791',
 'MC044-B11/N164',
 'MC102-L82-M871',
 'MC044-B11/N119',
 'MC055-B01/O7',
 'MC001-L99/M508',
 'MC065-B01/O1',
 'MC044-B10/N169',
 'MC204-B04/O4',
 'MC044-B10/N159',
 'MC044-B11/N64',
 'MC044-B10/N67',
 'MC204-L99/M312',
 'MC078-B01/N5',
 'MC032-L82-M774',
 'MC044-B10/N88',
 'MC044-B10/N71',
 'MC044-B10/N170',
 'MC044-B04/N13',
 'MC202-B11/N1',
 'MC204-B01/O5',
 'MC044-L82-M821',
 'MC048-B01/N1',
 'MC044-B10/N179',
 'MC061-B03/N10',
 'MC044-B03/N1',
 'MC044-B10/N73',
 'MC044-B10/N133',
 'MC044-B11/N87',
 'MC102-L82-M709',
 'MC044-L82-M837',
 'MC202-B12/N1',
 'MC044-B11/N29',
 'MC044-B10/N131',
 'MC044-L82-M798',
 'MC044-B12/O1',
 'MC044-B08/N1',
 'MC014-B06/O3',
 'MC044-B11/N39',
 'MC065-B01/N7',
 'MC126-L82-M930',
 'MC044-B10/N214',
 'MC204-B02/N6',
 'MC072-B02/N15',
 'MC044-B11/N20',
 'MC044-L82-M833',
 'MC031-B02/N1',
 'MC044-B11/N176',
 'MC072-B05/O3',
 'MC044-B10/N14',
 'MC211-L82-M862',
 'MC000-L99/M201',
 'MC044-B11/N132',
 'MC044-B10/N125',
 'MC070-B02/O2',
 'MC044-B11/N38',
 'MC045-B01/I8',
 'OC005-L99/M204',
 'MC044-B11/N86',
 'MC044-B11/N114',
 'MC044-B11/N177',
 'MC065-B06/N2',
 'MC014-B02/O3',
 'MC044-B10/N103',
 'MC044-B10/N146',
 'MC044-B11/N19',
 'MC044-B11/N156',
 'MC070-L82-M960',
 'MC044-B11/N79',
 'MC044-B10/N162',
 'MC010-L82-M764',
 'MC045-L82-M952',
 'MC044-B10/N86',
 'MC044-B10/N25',
 'MC061-B02/N8',
 'MC204-B06/O1',
 'MC065-B06/N6',
 'MC044-B10/N177',
 'MC061-B03/N15',
 'MC010-L82-M747',
 'MC044-B10/N121',
 'MC044-B10/N163',
 'MC044-B11/N183',
 'MC044-B10/N204',
 'MC044-B05/N1',
 'MC044-B11/N120',
 'MC008-L99/M302',
 'MC202-B01/O1',
 'MC131-L82-M924',
 'OC005-B01/N1',
 'MC046-L82-M740',
 'MC044-B10/N203',
 'MC045-L82-M783',
 'MC065-B01/N1',
 'MC065-B06/N3',
 'MC065-B06/N4',
 'MC065-B08/N6',
 'MC044-B10/N100',
 'MC045-L82-M790',
 'MC044-B11/N173',
 'MC044-B10/N95',
 'MC070-B06/N1',
 'MC044-B11/O3',
 'MC070-L82-M963',
 'MC070-L82-M964',
 'MC204-B05/N2',
 'MC072-B02/N19',
 'MC197-L82-M888',
 'MC044-B01/N2',
 'MC001-L82-M975',
 'MC102-L82-M870',
 'MC202-B14/N2',
 'MC044-B10/N114',
 'MC044-B10/N165',
 'MC044-B11/N138',
 'MC211-L82-M861',
 'MC044-B10/N145',
 'MC044-B11/N101',
 'MC044-B11/N90',
 'MC032-B03/O1',
 'MC044-B11/N157',
 'MC044-B11/N142',
 'AP080-L80/M001',
 'MC044-B10/N119',
 'MC204-B02/O3',
 'MC044-B11/N149',
 'MC014-B07/O3',
 'MC061-B03/N11',
 'MC078-B03/N2',
 'MC204-B04/O6',
 'MC044-B10/N161',
 'MC044-B03/O2',
 'MC044-B11/N9',
 'MC211-L82-M864',
 'MC044-B10/N147',
 'MC102-L82-M885',
 'MC044-B02/N2',
 'MC014-B11/O3',
 'MC010-L82-M755',
 'MC045-L82-M948',
 'MC044-B10/N200',
 'MC061-B03/N3',
 'MC066-B01/N1',
 'MC044-B10/N182',
 'MC014-B08/O2',
 'MC044-B11/N109',
 'MC010-L82-M757',
 'MC044-B11/N113',
 'MC044-B11/N166',
 'MC044-B10/N16',
 'MC044-B11/N104',
 'MC044-B11/N186',
 'MC045-L82-M780',
 'MC078-B02/N2',
 'MC044-B09/N8',
 'MC078-B03/N11',
 'MC102-L82-M707',
 'MC204-B06/O5',
 'MC102-L82-M703',
 'MC204-L82-M956',
 ...}

In [49]:
(set([i[:5] for i in meterssensors_not_in_planon]))


Out[49]:
{'AP000',
 'AP080',
 'EX001',
 'MC000',
 'MC001',
 'MC003',
 'MC007',
 'MC008',
 'MC010',
 'MC011',
 'MC014',
 'MC029',
 'MC030',
 'MC031',
 'MC032',
 'MC033',
 'MC043',
 'MC044',
 'MC045',
 'MC046',
 'MC047',
 'MC048',
 'MC051',
 'MC055',
 'MC061',
 'MC063',
 'MC065',
 'MC066',
 'MC067',
 'MC070',
 'MC071',
 'MC072',
 'MC075',
 'MC076',
 'MC077',
 'MC078',
 'MC083',
 'MC102',
 'MC103',
 'MC125',
 'MC126',
 'MC128',
 'MC129',
 'MC131',
 'MC197',
 'MC198',
 'MC200',
 'MC202',
 'MC204',
 'MC207',
 'MC210',
 'MC211',
 'OC004',
 'OC005',
 'OC006'}

In [50]:
a=np.sort(list(set(planon_meterssensors_filtered.index)))
b=np.sort(list(set(master_meterssensors_for_validation_filtered.index)))
meterssensors_not_in_master=[]
for i in a:
    if i not in b:
        print(i+',',end=" "),
        meterssensors_not_in_master.append(i)
print('\n\nMeters in Planon, not in Master:',
      len(meterssensors_not_in_master),'/',len(a),':',
      round(len(meterssensors_not_in_master)/len(a)*100,3),'%')



Meters in Planon, not in Master: 0 / 28824 : 0.0 %

In [51]:
len(set([i for i in meterssensors_not_in_master]))


Out[51]:
0

In [52]:
set([i[:9] for i in meterssensors_not_in_master])


Out[52]:
set()

In [53]:
set([i[:5] for i in meterssensors_not_in_master])


Out[53]:
set()

Check for duplicates in index, but not duplicates over the entire row


In [54]:
print(len(planon_meterssensors_filtered.index))
print(len(set(planon_meterssensors_filtered.index)))
print(len(master_meterssensors_for_validation_filtered.index))
print(len(set(master_meterssensors_for_validation_filtered.index)))


28824
28824
30567
30135

In [55]:
master_meterssensors_for_validation_filtered[master_meterssensors_for_validation_filtered.index.duplicated()]


Out[55]:
Building Name Tenant meter Logger Channel Building Code Fiscal meter Description Code
MC011-B01/I1 The Roundhouse False I1 MC011 False Fire alarm active MC011-B01/I1
MC011-B01/I2 The Roundhouse False i2 MC011 False xcite/IO/8DO MC011-B01/i2
MC011-B01/O1 The Roundhouse False o1 MC011 False Alarm Route 1 MC011-B01/o1
MC014-B01/O1 Bowland Hall False o1 MC014 False Alarm Route 1 MC014-B01/o1
MC014-B02/O1 Bowland Hall False O1 MC014 False Heating times MC014-B02/O1
MC014-B03/O1 Bowland Hall False O1 MC014 False Heating times MC014-B03/O1
MC014-B04/O1 Bowland Hall False o1 MC014 False Alarm Route 1 MC014-B04/o1
MC014-B05/O1 Bowland Hall False o1 MC014 False Alarm Route 1 MC014-B05/o1
MC014-B06/O1 Bowland Hall False o1 MC014 False Alarm Route 1 MC014-B06/o1
MC014-B07/O1 Bowland Hall False o1 MC014 False Alarm Route 1 MC014-B07/o1
MC014-B08/O1 Bowland Hall False O1 MC014 False Heating times MC014-B08/O1
MC014-B09/O1 Bowland Hall False o1 MC014 False Alarm Route 1 MC014-B09/o1
MC014-B10/O1 Bowland Hall False O1 MC014 False Heating times MC014-B10/O1
MC014-B11/O1 Bowland Hall False o1 MC014 False Alarm Route 1 MC014-B11/o1
MC014-B12/O1 Bowland Hall False o1 MC014 False Alarm Route 1 MC014-B12/o1
MC014-B13/O1 Bowland Hall False o1 MC014 False Alarm Route 1 MC014-B13/o1
MC014-B14/O1 Bowland Hall False O1 MC014 False Heating times MC014-B14/O1
MC031-B01/I1 Great Hall False i1 MC031 False xcite/IO/4UI MC031-B01/i1
MC031-B01/I2 Great Hall False I2 MC031 False Heating Pump Status MC031-B01/I2
MC031-B01/I3 Great Hall False i3 MC031 False xcite/IO/4DO MC031-B01/i3
MC031-B01/I4 Great Hall False i4 MC031 False xcite/IO/8DI MC031-B01/i4
MC031-B02/I1 Great Hall False i1 MC031 False Module 1 MC031-B02/i1
MC031-B02/I2 Great Hall False i2 MC031 False Module 2 MC031-B02/i2
MC032-B01/I1 County South False I1 MC032 False Fire Alarm Activated MC032-B01/I1
MC032-B01/I2 County South False i2 MC032 False IQ4/IO/8UI MC032-B01/i2
MC032-B01/I3 County South False i3 MC032 False IQ4/IO/8DI MC032-B01/i3
MC032-B01/I4 County South False i4 MC032 False IQ4/IO/4DO MC032-B01/i4
MC032-B01/I5 County South False i5 MC032 False IQ4/IO/8DO MC032-B01/i5
MC032-B02/I1 County South False i1 MC032 False Module 1 MC032-B02/i1
MC032-B02/I2 County South False i2 MC032 False Module 2 MC032-B02/i2
... ... ... ... ... ... ... ...
MC210-B01/I5 Engineering Building False i5 MC210 False xcite/IO/8DO MC210-B01/i5
MC210-B01/I6 Engineering Building False I6 MC210 False Lift Status - Car Alarm MC210-B01/I6
MC210-B01/I7 Engineering Building False I7 MC210 False Lift Status - Common Fault MC210-B01/I7
MC210-B01/I8 Engineering Building False I8 MC210 False Lift Status - Maint Control MC210-B01/I8
MC210-B01/I9 Engineering Building False I9 MC210 False PHE Sec Pump P1a Flow Prove MC210-B01/I9
MC210-B01/N1 Engineering Building False N1 MC210 False IC Comms 1 MC210-B01/N1
MC210-B02/I1 Engineering Building False I1 MC210 False Winter Switch Active MC210-B02/I1
MC210-B02/I2 Engineering Building False i2 MC210 False xcite/IO/8UI MC210-B02/i2
MC210-B02/I3 Engineering Building False I3 MC210 False Holiday Switch Active MC210-B02/I3
MC210-B02/N1 Engineering Building False n1 MC210 False MCP01b MC210-B02/n1
MC210-B03/I1 Engineering Building False i1 MC210 False xcite/IO/8UI MC210-B03/i1
MC210-B03/I10 Engineering Building False I10 MC210 False B30 Override MC210-B03/I10
MC210-B03/I11 Engineering Building False i11 MC210 False xcite/IO/8DO MC210-B03/i11
MC210-B03/I12 Engineering Building False i12 MC210 False xcite/IO/8AO MC210-B03/i12
MC210-B03/I13 Engineering Building False I13 MC210 False B31 Override MC210-B03/I13
MC210-B03/I14 Engineering Building False I14 MC210 False B04 Override MC210-B03/I14
MC210-B03/I2 Engineering Building False i2 MC210 False xcite/IO/8UI MC210-B03/i2
MC210-B03/I3 Engineering Building False I3 MC210 False Nitrogen Generation Alarm MC210-B03/I3
MC210-B03/I4 Engineering Building False i4 MC210 False xcite/IO/8UI MC210-B03/i4
MC210-B03/I5 Engineering Building False I5 MC210 False A04a&b Extract Fan Fault MC210-B03/I5
MC210-B03/I6 Engineering Building False I6 MC210 False ChemEngLab Condenser Fault MC210-B03/I6
MC210-B03/I7 Engineering Building False I7 MC210 False NuclearLab Condenser Fault MC210-B03/I7
MC210-B03/I8 Engineering Building False i8 MC210 False xcite/IO/8AO MC210-B03/i8
MC210-B03/I9 Engineering Building False i9 MC210 False xcite/IO/8DO MC210-B03/i9
MC210-B03/N1 Engineering Building False n1 MC210 False MCP01c MC210-B03/n1
MC211-B01/I1 Life Sciences & Environment Laboratories False I1 MC211 False Heating Press. Unit LP MC211-B01/I1
MC211-B01/I2 Life Sciences & Environment Laboratories False I2 MC211 False Boundary Water Meter MC211-B01/I2
MC211-B01/I3 Life Sciences & Environment Laboratories False I3 MC211 False Incoming Water Meter MC211-B01/I3
MC211-B01/I4 Life Sciences & Environment Laboratories False i4 MC211 False xcite/IO/4AO MC211-B01/i4
MC211-B01/O1 Life Sciences & Environment Laboratories False O1 MC211 False Optimum Start Stop 1 MC211-B01/O1

432 rows × 7 columns

The duplicates are the nans. Remove these for now. Could revisit later to do an index-less comparison, only over row contents.


In [56]:
good_index=[i for i in master_meterssensors_for_validation_filtered.index if str(i).lower().strip()!='nan']
master_meterssensors_for_validation_filtered=master_meterssensors_for_validation_filtered.loc[good_index]
master_meterssensors_for_validation_filtered.drop_duplicates(inplace=True)

In [57]:
len(planon_meterssensors_filtered)


Out[57]:
28824

In [58]:
len(master_meterssensors_for_validation_filtered)


Out[58]:
30567

Do comparison only on common indices. Need to revisit and identify the cause missing meters, both ways (5 Planon->Meters and 30 Meters->Planon in this example).


In [59]:
comon_index=list(set(master_meterssensors_for_validation_filtered.index).intersection(set(planon_meterssensors_filtered.index)))

In [60]:
len(comon_index)


Out[60]:
28824

In [61]:
master_meterssensors_for_validation_intersected=master_meterssensors_for_validation_filtered.loc[comon_index].sort_index()
planon_meterssensors_intersected=planon_meterssensors_filtered.loc[comon_index].sort_index()

In [62]:
len(master_meterssensors_for_validation_intersected)


Out[62]:
29180

In [63]:
len(planon_meterssensors_intersected)


Out[63]:
28824

Still have duplicate indices. For now we just drop and keep the first.


In [64]:
master_meterssensors_for_validation_intersected = master_meterssensors_for_validation_intersected[~master_meterssensors_for_validation_intersected.index.duplicated(keep='first')]

In [65]:
master_meterssensors_for_validation_intersected.head(2)


Out[65]:
Building Name Tenant meter Logger Channel Building Code Fiscal meter Description Code
AP000-L01/M001 Alexandra Park False 1 AP000 False NaN AP000-L01/M001
AP000-L02/M001 Alexandra Park False 1 AP000 False Graduate House 1-11 AP000-L02/M001

In [66]:
planon_meterssensors_intersected.head(2)


Out[66]:
Building Name Tenant meter Logger Channel Building Code Fiscal meter Description Code
AP000-L01/M001 Alexandra Park False 1 AP000 False NaN AP000-L01/M001
AP000-L02/M001 Alexandra Park False 1 AP000 False Graduate House 1-11 AP000-L02/M001

2.1.2. Primitive comparison


In [67]:
planon_meterssensors_intersected==master_meterssensors_for_validation_intersected


Out[67]:
Building Name Tenant meter Logger Channel Building Code Fiscal meter Description Code
AP000-L01/M001 True True True True True False True
AP000-L02/M001 True True True True True True True
AP000-L02/M002 True True True True True True True
AP000-L03/M001 True True True True True False True
AP000-L03/M002 True True True True True False True
AP001-L01/M001 False True True True True False True
AP001-L01/M002 False True True True True False True
AP001-L01/M003 False True True True True False True
AP001-L01/M004 False True True True True False True
AP001-L01/M005 False True True True True True True
AP001-L01/M006 False True True True True True True
AP009-L01/M001 False True True True True True True
AP009-L01/M002 False True True True True True True
AP009-L01/M003 False True True True True False True
AP010-L01/M001 False True True True True True True
AP010-L01/M002 False True True True True True True
AP010-L01/M003 False True True True True True True
AP010-L01/M004 False True True True True True True
AP010-L01/M005 False True True True True True True
AP011-L01/M001 False True True True True True True
AP011-L01/M002 False True True True True True True
AP011-L01/M003 False True True True True True True
AP011-L01/M004 False True True True True True True
AP057-L01/M001 True True True True True False True
AP057-L01/M002 True True True True True True True
AP057-L01/M003 True True True True True True True
AP080-L01/M001 True True True True True False True
AP080-L01/M002 True True True True True True True
AP080-L01/M003 True True True True True True True
AP081-L01/M001 True True True True True False True
... ... ... ... ... ... ... ...
OC006-B01/S21 True True True True True True True
OC006-B01/S22 True True True True True True True
OC006-B01/S23 True True True True True True True
OC006-B01/S24 True True True True True True True
OC006-B01/S25 True True True True True True True
OC006-B01/S26 True True True True True True True
OC006-B01/S27 True True True True True True True
OC006-B01/S28 True True True True True True True
OC006-B01/S29 True True True True True True True
OC006-B01/S3 True True True True True True True
OC006-B01/S4 True True True True True True True
OC006-B01/S5 True True True True True True True
OC006-B01/S6 True True True True True True True
OC006-B01/S8 True True True True True True True
OC006-B01/S9 True True True True True True True
OC006-B01/V1 True True True True True False True
OC006-B01/W1 True True True True True True True
OC006-B01/W10 True True True True True True True
OC006-B01/W2 True True True True True True True
OC006-B01/W3 True True True True True True True
OC006-B01/W4 True True True True True True True
OC006-B01/W5 True True True True True True True
OC006-B01/Y1 True True True True True True True
OC006-B01/Y2 True True True True True True True
OC006-B01/Y3 True True True True True True True
OC006-B01/Y4 True True True True True True True
OC006-B01/Y5 True True True True True True True
OC006-B01/Y6 True True True True True True True
OC006-B01/Z1 True True True True True True True
OC006-B01/Z2 True True True True True True True

28824 rows × 7 columns


In [68]:
np.all(planon_meterssensors_intersected==master_meterssensors_for_validation_intersected)


Out[68]:
False

2.1.3. Horizontal comparison

Number of cells matching


In [69]:
(planon_meterssensors_intersected==master_meterssensors_for_validation_intersected).sum()


Out[69]:
Building Name     28295
Tenant meter      28824
Logger Channel    28663
Building Code     28824
Fiscal meter      28824
Description       27275
Code              28663
dtype: int64

Percentage matching


In [70]:
(planon_meterssensors_intersected==master_meterssensors_for_validation_intersected).sum()/\
len(planon_meterssensors_intersected)*100


Out[70]:
Building Name      98.164724
Tenant meter      100.000000
Logger Channel     99.441438
Building Code     100.000000
Fiscal meter      100.000000
Description        94.626006
Code               99.441438
dtype: float64

In [71]:
((planon_meterssensors_intersected==master_meterssensors_for_validation_intersected).sum()/\
len(planon_meterssensors_intersected)*100).plot(kind='bar')


Out[71]:
<matplotlib.axes._subplots.AxesSubplot at 0x17e35b25080>

2.1.4. Vertical comparison


In [72]:
df=pd.DataFrame((planon_meterssensors_intersected.T==master_meterssensors_for_validation_intersected.T).sum())
df


Out[72]:
0
AP000-L01/M001 6
AP000-L02/M001 7
AP000-L02/M002 7
AP000-L03/M001 6
AP000-L03/M002 6
AP001-L01/M001 5
AP001-L01/M002 5
AP001-L01/M003 5
AP001-L01/M004 5
AP001-L01/M005 6
AP001-L01/M006 6
AP009-L01/M001 6
AP009-L01/M002 6
AP009-L01/M003 5
AP010-L01/M001 6
AP010-L01/M002 6
AP010-L01/M003 6
AP010-L01/M004 6
AP010-L01/M005 6
AP011-L01/M001 6
AP011-L01/M002 6
AP011-L01/M003 6
AP011-L01/M004 6
AP057-L01/M001 6
AP057-L01/M002 7
AP057-L01/M003 7
AP080-L01/M001 6
AP080-L01/M002 7
AP080-L01/M003 7
AP081-L01/M001 6
... ...
OC006-B01/S21 7
OC006-B01/S22 7
OC006-B01/S23 7
OC006-B01/S24 7
OC006-B01/S25 7
OC006-B01/S26 7
OC006-B01/S27 7
OC006-B01/S28 7
OC006-B01/S29 7
OC006-B01/S3 7
OC006-B01/S4 7
OC006-B01/S5 7
OC006-B01/S6 7
OC006-B01/S8 7
OC006-B01/S9 7
OC006-B01/V1 6
OC006-B01/W1 7
OC006-B01/W10 7
OC006-B01/W2 7
OC006-B01/W3 7
OC006-B01/W4 7
OC006-B01/W5 7
OC006-B01/Y1 7
OC006-B01/Y2 7
OC006-B01/Y3 7
OC006-B01/Y4 7
OC006-B01/Y5 7
OC006-B01/Y6 7
OC006-B01/Z1 7
OC006-B01/Z2 7

28824 rows × 1 columns


In [73]:
df=pd.DataFrame((planon_meterssensors_intersected.T==master_meterssensors_for_validation_intersected.T).sum()/\
len(planon_meterssensors_intersected.T)*100)
df[df[0]<100]


Out[73]:
0
AP000-L01/M001 85.714286
AP000-L03/M001 85.714286
AP000-L03/M002 85.714286
AP001-L01/M001 71.428571
AP001-L01/M002 71.428571
AP001-L01/M003 71.428571
AP001-L01/M004 71.428571
AP001-L01/M005 85.714286
AP001-L01/M006 85.714286
AP009-L01/M001 85.714286
AP009-L01/M002 85.714286
AP009-L01/M003 71.428571
AP010-L01/M001 85.714286
AP010-L01/M002 85.714286
AP010-L01/M003 85.714286
AP010-L01/M004 85.714286
AP010-L01/M005 85.714286
AP011-L01/M001 85.714286
AP011-L01/M002 85.714286
AP011-L01/M003 85.714286
AP011-L01/M004 85.714286
AP057-L01/M001 85.714286
AP080-L01/M001 85.714286
AP081-L01/M001 85.714286
EX001-B01/V1 85.714286
MC001-B01/V1 85.714286
MC001-L02/M001 85.714286
MC003-B01/I4 85.714286
MC003-B01/V1 85.714286
MC003-B01/V2 85.714286
... ...
MC210-B03/I5 57.142857
MC210-B03/I6 57.142857
MC210-B03/I9 57.142857
MC210-B03/U1 85.714286
MC210-B03/U2 85.714286
MC210-B03/V1 85.714286
MC211-B01/I2 57.142857
MC211-B01/I3 57.142857
MC211-B01/O1 57.142857
MC211-B01/P23 85.714286
MC211-B01/P24 85.714286
MC211-B01/S24 85.714286
MC211-B01/S25 85.714286
MC211-B01/V1 85.714286
OC004-B01/G50 85.714286
OC004-B01/L1 85.714286
OC004-B01/L2 85.714286
OC004-B01/L3 85.714286
OC004-B01/L4 85.714286
OC004-B01/V1 85.714286
OC005-B01/G50 85.714286
OC005-B01/L1 85.714286
OC005-B01/L2 85.714286
OC005-B01/L3 85.714286
OC005-B01/V1 85.714286
OC006-B01/G50 85.714286
OC006-B01/L1 85.714286
OC006-B01/L2 85.714286
OC006-B01/L3 85.714286
OC006-B01/V1 85.714286

2064 rows × 1 columns

2.1.5. Smart(er) comparison

Not all of the dataframe matches. Let us do some basic string formatting, maybe that helps.


In [74]:
sum(planon_meterssensors_intersected['Description']!=master_meterssensors_for_validation_intersected['Description'])


Out[74]:
1549

In [75]:
planon_meterssensors_intersected['Description']=[str(s).lower().strip().replace('  ',' ').replace('   ',' ') for s in planon_meterssensors_intersected['Description'].values]
master_meterssensors_for_validation_intersected['Description']=[str(s).lower().strip().replace('  ',' ').replace('   ',' ') for s in master_meterssensors_for_validation_intersected['Description'].values]

In [76]:
sum(planon_meterssensors_intersected['Description']!=master_meterssensors_for_validation_intersected['Description'])


Out[76]:
269

Some errors fixed, some left. Let's see which ones. These are either:

  • Wrong duplicate dropped
  • Input human erros in the description.
  • Actual erros somewhere in the indexing.

In [77]:
for i in planon_meterssensors_intersected[planon_meterssensors_intersected['Description']!=master_meterssensors_for_validation_intersected['Description']].index:
    print(i,'\t\tPlanon:',planon_meterssensors_intersected.loc[i]['Description'],'\t\tMaster:',master_meterssensors_for_validation_intersected.loc[i]['Description'])


MC011-B01/I1 		Planon: fire alarm active 		Master: xcite/io/16di
MC011-B01/I2 		Planon: lthw pri pmp flow 		Master: xcite/io/8do
MC014-B01/L4 		Planon: nan 		Master: 
MC014-B01/O1 		Planon: heating times 		Master: alarm route 1
MC014-B02/L4 		Planon: nan 		Master: 
MC014-B02/O1 		Planon: heating times 		Master: alarm route 1
MC014-B03/L4 		Planon: nan 		Master: 
MC014-B04/L4 		Planon: nan 		Master: 
MC014-B05/L4 		Planon: nan 		Master: 
MC014-B05/O1 		Planon: heating times 		Master: alarm route 1
MC014-B06/L4 		Planon: nan 		Master: 
MC014-B06/O1 		Planon: heating times 		Master: alarm route 1
MC014-B07/L4 		Planon: nan 		Master: 
MC014-B08/L4 		Planon: nan 		Master: 
MC014-B08/O1 		Planon: heating times 		Master: alarm route 1
MC014-B09/L4 		Planon: nan 		Master: 
MC014-B09/O1 		Planon: heating times 		Master: alarm route 1
MC014-B10/L4 		Planon: nan 		Master: 
MC014-B11/L4 		Planon: nan 		Master: 
MC014-B11/O1 		Planon: heating times 		Master: alarm route 1
MC014-B12/L4 		Planon: nan 		Master: 
MC014-B12/O1 		Planon: heating times 		Master: alarm route 1
MC014-B13/L4 		Planon: nan 		Master: 
MC014-B13/O1 		Planon: heating times 		Master: alarm route 1
MC014-B14/L4 		Planon: nan 		Master: 
MC014-B14/O1 		Planon: heating times 		Master: alarm route 1
MC029-B01/L4 		Planon: nan 		Master: 
MC031-B01/I2 		Planon: heating pump status 		Master: xcite/io/2ui/2ao
MC031-B01/I3 		Planon: greathall ahu on-off 		Master: xcite/io/4do
MC031-B02/I2 		Planon: sump no1 pump 1 trip 		Master: module 2
MC032-B01/I1 		Planon: fire alarm activated 		Master: iq4/io/16di
MC032-B01/I5 		Planon: ct pump flow prove 		Master: iq4/io/8do
MC032-B01/L1 		Planon: nan 		Master: 
MC032-B01/L2 		Planon: nan 		Master: 
MC032-B02/L1 		Planon: nan 		Master: 
MC032-B02/L2 		Planon: nan 		Master: 
MC032-B02/L3 		Planon: nan 		Master: 
MC032-B02/L4 		Planon: nan 		Master: 
MC032-B02/L5 		Planon: nan 		Master: 
MC032-B02/L6 		Planon: nan 		Master: 
MC032-B02/L8 		Planon: nan 		Master: 
MC032-B03/I2 		Planon: emergency stop 		Master: xcite/io/16di
MC032-B03/I4 		Planon: kitchen hws pump trip 		Master: xcite/io/2ui/2ao
MC032-B04/I1 		Planon: thermal wheel fault 		Master: xcite/io/8di
MC032-B07/I3 		Planon: sump no4 pump 2 trip 		Master: module 3
MC033-B01/I1 		Planon: water booster alarm 		Master: 8ui
MC043-B01/I1 		Planon: fire alarm 		Master: mod 1
MC043-B01/I4 		Planon: heat ex pump 2 trip 		Master: mod 4
MC043-B01/I5 		Planon: ct htg pump 1 trip 		Master: mod 5
MC043-B01/I6 		Planon: ct htg pump 2 trip 		Master: mod 6
MC043-B01/L1 		Planon: nan 		Master: 
MC043-B01/L2 		Planon: nan 		Master: 
MC043-B01/L3 		Planon: nan 		Master: 
MC043-B01/L4 		Planon: nan 		Master: 
MC043-B01/L5 		Planon: nan 		Master: 
MC043-B01/L6 		Planon: nan 		Master: 
MC043-B01/L7 		Planon: nan 		Master: 
MC043-B01/O1 		Planon: nan 		Master: 
MC044-B01/I10 		Planon: ahu01 extr dmpr open 		Master: module 10
MC044-B01/I11 		Planon: ahu01 extr fan flow 		Master: module 11
MC044-B01/I3 		Planon: ahu01 sply dmpr open 		Master: module 3
MC044-B01/I4 		Planon: ahu01 sply fan flow 		Master: module 4
MC044-B01/I5 		Planon: ahu01 frost trip 		Master: module 5
MC044-B01/I6 		Planon: ahu01 panel fltr dirty 		Master: module 6
MC044-B01/I8 		Planon: ahu01 th wheel fault 		Master: module 8
MC044-B01/L10 		Planon: nan 		Master: 
MC044-B01/L12 		Planon: nan 		Master: 
MC044-B01/L13 		Planon: nan 		Master: 
MC044-B01/L14 		Planon: nan 		Master: 
MC044-B01/L15 		Planon: nan 		Master: 
MC044-B01/L2 		Planon: nan 		Master: 
MC044-B01/L3 		Planon: nan 		Master: 
MC044-B01/L4 		Planon: nan 		Master: 
MC044-B01/L5 		Planon: nan 		Master: 
MC044-B01/L7 		Planon: nan 		Master: 
MC044-B01/L8 		Planon: nan 		Master: 
MC044-B01/L9 		Planon: nan 		Master: 
MC044-B02/I2 		Planon: fire alarm active 		Master: module 2
MC044-B02/I3 		Planon: emergency stop 		Master: module 3
MC044-B02/I7 		Planon: lthw pu hi press 		Master: module 7
MC044-B02/I8 		Planon: lthw pu lo press 		Master: module 8
MC044-B02/O2 		Planon: vt system 102 		Master: alarm route 2
MC044-B03/I1 		Planon: ups low battery 		Master: module 1
MC044-B04/I1 		Planon: phe1 high temp alarm 		Master: module 1
MC044-B04/I2 		Planon: emergency stop 		Master: module 2
MC044-B04/I3 		Planon: mains failure 		Master: module 3
MC044-B04/I4 		Planon: gas detect fault 		Master: module 4
MC044-B04/I7 		Planon: phe2 high temp alarm 		Master: module 7
MC044-B04/I8 		Planon: hws high temp alarm 		Master: module 8
MC044-B04/O1 		Planon: foyer vt heating 		Master: alarm route 1
MC044-B04/O3 		Planon: lecture vt heating 		Master: alarm route 3
MC044-B06/I1 		Planon: door interlock shut 		Master: module 1
MC044-B06/I2 		Planon: fire alarm active 		Master: module 2
MC044-B06/I4 		Planon: mains failure 		Master: module 4
MC044-B06/I8 		Planon: ahu 2 fa dmpr open 		Master: module 8
MC044-B06/L12 		Planon: nan 		Master: 
MC044-B06/L13 		Planon: nan 		Master: 
MC044-B08/I2 		Planon: emergency stop 		Master: module 2
MC044-B08/I7 		Planon: ahu 5 fa dmpr open 		Master: module 7
MC044-B08/I8 		Planon: large room 3 ndrman status 		Master: module 8
MC044-B08/I9 		Planon: ahu 5 sply fan auto 		Master: module 9
MC044-B08/L3 		Planon: nan 		Master: 
MC044-B08/L4 		Planon: nan 		Master: 
MC044-B08/O1 		Planon: ahu 5 physics store vent 		Master: alarm route 1
MC045-B01/I4 		Planon: chiller failed 		Master: module4 16di
MC045-B01/I7 		Planon: chw pump2fail 		Master: xcite/io/8ao
MC046-B01/I1 		Planon: fire alarm 		Master: mod 1 - 8ao
MC046-B01/I3 		Planon: p1 a fault 		Master: mod 3 - 8ao
MC046-B01/I6 		Planon: cal 1 18kw on 		Master: mod 6 - 8ui
MC051-B01/L4 		Planon: nan 		Master: 
MC051-B01/L5 		Planon: nan 		Master: 
MC051-B01/O1 		Planon: optimum start stop 1 		Master: alarm route 1
MC061-B01/I4 		Planon: boiler no.1 running 		Master: xcite/io/16di
MC061-B01/I7 		Planon: boiler no.2 gas booster switch 		Master: xcite/io/8do
MC061-B01/I8 		Planon: boiler no.2 gas booster fault 		Master: xcite/io/8ao
MC061-B02/I1 		Planon: fire alarm 		Master: io module 1
MC061-B02/I2 		Planon: pump p3 flow dps 		Master: io module 2
MC061-B02/I3 		Planon: biomass gas safety circuit 		Master: module 3
MC061-B03/I2 		Planon: pm-a-01 pump run 		Master: spare
MC063-B01/I1 		Planon: fire alarm active 		Master: module 1
MC063-B01/I2 		Planon: shower fans north fault 		Master: module 2
MC063-B01/I3 		Planon: shower fans south fault 		Master: module 3
MC063-B01/L2 		Planon: nan 		Master: 
MC063-B01/L3 		Planon: nan 		Master: 
MC063-B01/L4 		Planon: nan 		Master: 
MC065-B01/I1 		Planon: phex no.1highlimitstatus 		Master: xcite/io/8ui
MC065-B01/I2 		Planon: phex no.2highlimitstatus 		Master: xcite/io/8di/8ti
MC065-B01/L3 		Planon: nan 		Master: 
MC065-B01/L4 		Planon: nan 		Master: 
MC065-B01/L6 		Planon: nan 		Master: 
MC065-B01/L7 		Planon: nan 		Master: 
MC065-B03/I1 		Planon: fire alarm active 		Master: module 1
MC065-B03/I3 		Planon: for off 		Master: module 3
MC065-B04/I2 		Planon: for auto 		Master: module 2
MC065-B04/I4 		Planon: for extr only 		Master: module 4
MC065-B06/I5 		Planon: ahu-nwsupplypanelfiltersts 		Master: xcite/io/8ao
MC065-B06/L3 		Planon: nan 		Master: 
MC065-B06/L4 		Planon: nan 		Master: 
MC065-B06/O1 		Planon: nw zone 1 floor a oss 		Master: alarm route 1
MC065-B06/O2 		Planon: nw zone 1 floor b oss 		Master: alarm route 1
MC065-B07/I1 		Planon: ahu-ne supply vsd fault 		Master: xcite/io/8ui
MC065-B07/I3 		Planon: ahu-ne extract vsd fault 		Master: xcite/io/8ao
MC065-B07/L3 		Planon: nan 		Master: 
MC065-B07/L4 		Planon: nan 		Master: 
MC065-B08/I2 		Planon: ahu-se supply vsd fault 		Master: xcite/io/8ui
MC065-B08/I4 		Planon: ahu-se extract vsd fault 		Master: xcite/io/8ui
MC065-B08/I7 		Planon: ahu-se bagpanelfiltersts 		Master: xcite/io/8ao
MC065-B08/I9 		Planon: ahu-se frost stat 		Master: xcite/io/8ao
MC065-B08/L3 		Planon: nan 		Master: 
MC065-B08/L4 		Planon: nan 		Master: 
MC065-B08/O2 		Planon: se zone 4 floor b oss 		Master: alarm route 1
MC065-B09/I1 		Planon: ahu-sw supply vsd fault 		Master: xcite/io/8ui
MC065-B09/I2 		Planon: ahu-sw supply flow sts 		Master: xcite/io/8ui
MC065-B09/I5 		Planon: tef1 toilet extrct fault 		Master: xcite/io/8ao
MC065-B09/L3 		Planon: nan 		Master: 
MC065-B09/L4 		Planon: nan 		Master: 
MC065-B09/O1 		Planon: sw zone 3 floor a oss 		Master: alarm route 1
MC065-B09/O2 		Planon: sw zone 3 floor b oss 		Master: alarm route 1
MC066-B01/I1 		Planon: vt pump flow proven 		Master: xcite/io/8ui
MC066-B01/I2 		Planon: ct pump flow proven 		Master: xcite/io/8ui
MC066-B01/I3 		Planon: ahu no2 air flow proven 		Master: xcite/io/8ui
MC066-B01/I4 		Planon: fire alarm 		Master: xcite/io/16di
MC066-B01/L10 		Planon: nan 		Master: 
MC066-B01/L13 		Planon: nan 		Master: 
MC066-B01/L14 		Planon: nan 		Master: 
MC066-B01/L5 		Planon: nan 		Master: 
MC066-B01/L6 		Planon: nan 		Master: 
MC066-B01/L9 		Planon: nan 		Master: 
MC070-B01/L1 		Planon: nan 		Master: 
MC070-B01/L2 		Planon: nan 		Master: 
MC070-B01/L3 		Planon: nan 		Master: 
MC070-B01/L4 		Planon: nan 		Master: 
MC070-B01/L5 		Planon: nan 		Master: 
MC070-B03/I2 		Planon: ahu supply fan run 		Master: io module 2
MC070-B05/I2 		Planon: dhw cyl 2 high limit ok 		Master: xcite/io/8ao
MC070-B05/I3 		Planon: compressor fault 		Master: 4ui
MC071-B01/I1 		Planon: bar lossney hx03 fault 		Master: 16di_module 1
MC071-B01/I2 		Planon: bar lossney hx04 fault 		Master: 8ui_module 2
MC071-B01/I3 		Planon: toilet extract fan a030 fault 		Master: 8ao_module 3
MC071-B01/I4 		Planon: toilet extract fan b013 fault 		Master: 4ao_module 4
MC071-B01/I7 		Planon: toilet extract fan b070 fault 		Master: 8ui_module 7
MC072-B01/I2 		Planon: ct pump 2 fault 		Master: 1 8do
MC072-B01/I3 		Planon: tower pump 1 fault 		Master: io module 3
MC072-B02/I2 		Planon: presurisation unit hp fault 		Master: xcite/io/16di no2
MC072-B02/I4 		Planon: mthw shunt pump p1a fault 		Master: xcite/io/4do no1
MC072-B02/I7 		Planon: lthw shunt pump p2a fault 		Master: xcite/io/8ui no3
MC072-B03/I1 		Planon: alarm mute pb 		Master: module 1
MC072-B03/I2 		Planon: sump so5 pump 1 trip 		Master: module 2
MC075-B01/I2 		Planon: heating pump 2 fault 		Master: xcite/io/4ao/4u
MC076-B02/I3 		Planon: ahu 1 flow proving 1=flow 		Master: xcite/io/8ao
MC076-B02/I4 		Planon: ac unit 01_2 fault =1 		Master: xcite/io/4ao
MC077-B01/O1 		Planon: heating 		Master: alarm route 1
MC078-B01/I2 		Planon: f39 frost 		Master: xcite/io/16di
MC078-B01/I3 		Planon: fan 1 frost 		Master: xcite/io/16di
MC078-B01/I5 		Planon: f40 frost 		Master: xcite/io/8ao
MC078-B01/I6 		Planon: ground floor toilet extract 		Master: xcite/io/8ao
MC078-B01/I7 		Planon: f40 supply 		Master: xcite/io/8ao
MC078-B01/I9 		Planon: f40 filter 		Master: xcite/io/2ui/2ao
MC078-B02/I6 		Planon: main supply filter dirty 		Master: xcite/io/16di
MC078-B02/I8 		Planon: main extract filter dirty 		Master: xcite/io/16di
MC078-B03/I1 		Planon: 2 flr hws cal 1 valve 		Master: xcite/io/16di
MC078-B03/I2 		Planon: 2 flr hws cal 2 valve 		Master: io module 2
MC078-B03/I3 		Planon: 2-3 flr htg pump 1 		Master: io module 3
MC078-B03/L3 		Planon: nan 		Master: 
MC103-B01/I2 		Planon: hws failed 		Master: iq4/io/8do
MC103-B01/L1 		Planon: nan 		Master: 
MC103-B01/O1 		Planon: nan 		Master: 
MC200-B01/I1 		Planon: ahu2 extract fan flow status 		Master: module 1 - 8ui
MC204-B01/I2 		Planon: emergency stop 		Master: module 2
MC204-B01/I3 		Planon: gas detected 		Master: module 3
MC204-B02/I1 		Planon: fire alarm active 		Master: module 1
MC204-B02/I2 		Planon: for normal 		Master: module 2
MC204-B02/I4 		Planon: ahu3 frost trip 		Master: module 4
MC204-B02/I5 		Planon: ahu3 fa dmpr open 		Master: module 5
MC204-B02/L10 		Planon: nan 		Master: 
MC204-B02/L11 		Planon: nan 		Master: 
MC204-B02/L12 		Planon: nan 		Master: 
MC204-B02/L13 		Planon: nan 		Master: 
MC204-B02/L14 		Planon: nan 		Master: 
MC204-B02/L6 		Planon: nan 		Master: 
MC204-B02/L7 		Planon: nan 		Master: 
MC204-B02/L8 		Planon: nan 		Master: 
MC204-B02/L9 		Planon: nan 		Master: 
MC204-B04/L1 		Planon: nan 		Master: 
MC204-B04/L2 		Planon: nan 		Master: 
MC204-B04/L3 		Planon: nan 		Master: 
MC204-B04/O2 		Planon: climbing wall 		Master: alarm route 2
MC204-B05/I2 		Planon: vt pump 3b fault 		Master: module 2
MC204-B05/I3 		Planon: vt pumps flow 		Master: module 3
MC204-B05/I5 		Planon: ufhm1 pump flow 		Master: module 5
MC204-B05/I6 		Planon: ufhm1 htco 		Master: module 6
MC204-B05/O1 		Planon: vt heating 		Master: alarm route 1
MC204-B05/O5 		Planon: ufhm4-pool change 		Master: alarm route 5
MC204-B06/I2 		Planon: ahu4 fa dmpr open 		Master: module 2
MC204-B06/I3 		Planon: ahu4 sply fan fault 		Master: module 3
MC204-B06/L2 		Planon: nan 		Master: 
MC204-B06/L3 		Planon: nan 		Master: 
MC204-B06/L4 		Planon: nan 		Master: 
MC204-B06/L5 		Planon: nan 		Master: 
MC204-B06/L6 		Planon: nan 		Master: 
MC204-B06/L7 		Planon: nan 		Master: 
MC204-B06/L8 		Planon: nan 		Master: 
MC207-B01/I2 		Planon: press unit fault 		Master: io module 2
MC207-B01/I3 		Planon: sec hr pumps flow 		Master: io module 3
MC207-B01/I6 		Planon: lodge pumps flow 		Master: io module 6
MC207-B01/I7 		Planon: training ahu1 run 		Master: io module 7
MC210-B01/I2 		Planon: gas safety cct trip 		Master: xcite/io/8ao
MC210-B01/I4 		Planon: iss hub condenser1 fault 		Master: xcite/io/8do
MC210-B02/I2 		Planon: summer switch active 		Master: xcite/io/8ui
MC210-B03/I14 		Planon: b04 override 		Master: xcite/io/8do
MC210-B03/I2 		Planon: compressedairunit2 fault 		Master: xcite/io/8ui
MC210-B03/I3 		Planon: nitrogen generation alarm 		Master: xcite/io/8ui
MC210-B03/I4 		Planon: cef03 extract fan fault 		Master: xcite/io/8ui
MC210-B03/I5 		Planon: a04a&amp;b extract fan fault 		Master: xcite/io/8di
MC210-B03/I6 		Planon: chemenglab condenser fault 		Master: xcite/io/8ui
MC210-B03/I9 		Planon: a17 override 		Master: xcite/io/8do
MC211-B01/I2 		Planon: boundary water meter 		Master: xcite/io/8ui
MC211-B01/I3 		Planon: incoming water meter 		Master: xcite/io/8ao
MC211-B01/O1 		Planon: optimum start stop 1 		Master: alarm route 1
OC004-B01/L1 		Planon: nan 		Master: 
OC004-B01/L2 		Planon: nan 		Master: 
OC004-B01/L3 		Planon: nan 		Master: 
OC004-B01/L4 		Planon: nan 		Master: 
OC005-B01/L1 		Planon: nan 		Master: 
OC005-B01/L2 		Planon: nan 		Master: 
OC005-B01/L3 		Planon: nan 		Master: 
OC006-B01/L1 		Planon: nan 		Master: 
OC006-B01/L2 		Planon: nan 		Master: 
OC006-B01/L3 		Planon: nan 		Master: 

Let us repeat the exercise for Logger Channel. Cross-validate, flag as highly likely error where both mismatch.


In [78]:
sum(planon_meterssensors_intersected['Logger Channel']!=master_meterssensors_for_validation_intersected['Logger Channel'])


Out[78]:
161

In [79]:
planon_meterssensors_intersected['Logger Channel']=[str(s).lower().strip().replace('  ',' ').replace('   ',' ') for s in planon_meterssensors_intersected['Logger Channel'].values]
master_meterssensors_for_validation_intersected['Logger Channel']=[str(s).lower().strip().replace('  ',' ').replace('   ',' ') for s in master_meterssensors_for_validation_intersected['Logger Channel'].values]

In [80]:
sum(planon_meterssensors_intersected['Logger Channel']!=master_meterssensors_for_validation_intersected['Logger Channel'])


Out[80]:
0

All errors fixed on logger channels.


In [81]:
for i in planon_meterssensors_intersected[planon_meterssensors_intersected['Logger Channel']!=master_meterssensors_for_validation_intersected['Logger Channel']].index:
    print(i,'\t\tPlanon:',planon_meterssensors_intersected.loc[i]['Logger Channel'],'\t\tMaster:',master_meterssensors_for_validation_intersected.loc[i]['Logger Channel'])

New error percentage:


In [82]:
(planon_meterssensors_intersected!=master_meterssensors_for_validation_intersected).sum()/\
len(planon_meterssensors_intersected)*100


Out[82]:
Building Name     1.835276
Tenant meter      0.000000
Logger Channel    0.000000
Building Code     0.000000
Fiscal meter      0.000000
Description       0.933250
Code              0.558562
dtype: float64

2.2. Loggers


In [83]:
buildings=set(planon_loggerscontrollers['BuildingNo.'])
buildings


Out[83]:
{'AP000',
 'AP001',
 'AP009',
 'AP010',
 'AP011',
 'AP057',
 'AP080',
 'AP081',
 'EX000',
 'EX001',
 'EX005',
 'FH000',
 'FH002',
 'FH003',
 'FH008',
 'FH012',
 'MC000',
 'MC001',
 'MC002',
 'MC003',
 'MC007',
 'MC008',
 'MC010',
 'MC011',
 'MC013',
 'MC014',
 'MC029',
 'MC030',
 'MC031',
 'MC032',
 'MC033',
 'MC042',
 'MC043',
 'MC044',
 'MC045',
 'MC046',
 'MC047',
 'MC048',
 'MC050',
 'MC051',
 'MC053',
 'MC055',
 'MC060',
 'MC061',
 'MC062',
 'MC063',
 'MC064',
 'MC065',
 'MC066',
 'MC067',
 'MC068',
 'MC069',
 'MC070',
 'MC071',
 'MC072',
 'MC075',
 'MC076',
 'MC077',
 'MC078',
 'MC083',
 'MC095',
 'MC099',
 'MC102',
 'MC103',
 'MC125',
 'MC126',
 'MC128',
 'MC129',
 'MC131',
 'MC134',
 'MC138',
 'MC139',
 'MC140',
 'MC141',
 'MC171',
 'MC181',
 'MC197',
 'MC198',
 'MC199',
 'MC200',
 'MC202',
 'MC203',
 'MC204',
 'MC207',
 'MC210',
 'MC211',
 'OC001',
 'OC003',
 'OC004',
 'OC005',
 'OC006',
 'OC007',
 'OC008',
 'OC011',
 'OC012'}

In [84]:
master_loggerscontrollers_for_validation = \
    pd.concat([master_loggerscontrollers.loc[master_loggerscontrollers['Building Code'] == building] \
           for building in buildings])
master_loggerscontrollers_for_validation.head(2)


Out[84]:
Building Code Building Name Space Description Classification Group Make Model Logger Serial Number Logger Mac Address Logger Ip Address Logger Modem Serial Number Logger Sim Network Point Id Logger Upstream Comms Target Additional Location Info Code
MC204-L01 MC204 Sports Centre A43 Data logger: Sports Centre Data logger Enercom Multilog G2 050157B3B000 00-50-C2-2C-3D-13 10.23.11.71 NaN NaN NaN NaN Pool Plant Room MC204-L01
MC204-L02 MC204 Sports Centre B08 Data logger: Sports Centre Data logger Enercom Multilog G2 0501988894C00 00-50-C2-2C-3E-25 10.23.11.72 NaN NaN NaN NaN Cleaners Cupboard MC204-L02

In [85]:
master_loggerscontrollers[master_loggerscontrollers['Building Code']=='MC060']


Out[85]:
Building Code Building Name Space Description Classification Group Make Model Logger Serial Number Logger Mac Address Logger Ip Address Logger Modem Serial Number Logger Sim Network Point Id Logger Upstream Comms Target Additional Location Info Code
MC060-L01 MC060 Furness Residences, Bardsea PL1 Data logger: Furness Residences Data logger Enercom Multilog G2 0501988FCB00 00-50-C2-2C-3E-32 10.23.12.13 NaN NaN NaN NaN NaN MC060-L01

In [86]:
planon_loggerscontrollers[planon_loggerscontrollers['BuildingNo.']=='MC060']


Out[86]:
BuildingNo. Building Locations.Space.Space number Space Name Additional Location Info Description Classification Group Record HVAC Ref Element Description ... Logger SIM Meter Pulse Value Meter Units Meter Capacity Network Point ID Tenant Meter.Name Fiscal Meter.Name EIS Space.Space number Utility Type.Name Code
MC060-L01 MC060 Furness Residences, Bardsea PL1 Plant Room NaN Data logger: Furness Residences EN.EN1 Data Logger NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN MC060-L01

1 rows × 30 columns


In [87]:
master_loggerscontrollers.loc['MC060-L01']


Out[87]:
Building Code                                             MC060
Building Name                       Furness Residences, Bardsea
Space                                                       PL1
Description                     Data logger: Furness Residences
Classification Group                                Data logger
Make                                                    Enercom
Model                                               Multilog G2
Logger Serial Number                               0501988FCB00
Logger Mac Address                            00-50-C2-2C-3E-32
Logger Ip Address                                   10.23.12.13
Logger Modem Serial Number                                  NaN
Logger Sim                                                  NaN
Network Point Id                                            NaN
Logger Upstream Comms Target                                NaN
Additional Location Info                                    NaN
Code                                                  MC060-L01
Name: MC060-L01, dtype: object

In [88]:
len(master_loggerscontrollers_for_validation)


Out[88]:
378

In [89]:
len(planon_loggerscontrollers)-len(planon_loggerscontrollers.index[planon_loggerscontrollers.index.duplicated()])


Out[89]:
359

In [90]:
master_loggerscontrollers_for_validation.sort_index(inplace=True)
planon_loggerscontrollers.sort_index(inplace=True)


C:\Anaconda2\envs\python3\lib\site-packages\ipykernel\__main__.py:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  from ipykernel import kernelapp as app

In [91]:
master_loggerscontrollers_for_validation.loc['MC060-L01']


Out[91]:
Building Code                                             MC060
Building Name                       Furness Residences, Bardsea
Space                                                       PL1
Description                     Data logger: Furness Residences
Classification Group                                Data logger
Make                                                    Enercom
Model                                               Multilog G2
Logger Serial Number                               0501988FCB00
Logger Mac Address                            00-50-C2-2C-3E-32
Logger Ip Address                                   10.23.12.13
Logger Modem Serial Number                                  NaN
Logger Sim                                                  NaN
Network Point Id                                            NaN
Logger Upstream Comms Target                                NaN
Additional Location Info                                    NaN
Code                                                  MC060-L01
Name: MC060-L01, dtype: object

In [92]:
planon_loggerscontrollers.T


Out[92]:
AP000-L01 AP000-L02 AP000-L03 AP000-L99 AP001-L01 AP009-L01 AP010-L01 AP011-L01 AP057-L01 AP080-L01 ... OC004-B01 OC004-L99 OC005-B01 OC005-L99 OC006-B01 OC006-L99 OC007-L99 OC008-L99 OC011-L99 OC012-L99
BuildingNo. AP000 AP000 AP000 AP000 AP001 AP009 AP010 AP011 AP057 AP080 ... OC004 OC004 OC005 OC005 OC006 OC006 OC007 OC008 OC011 OC012
Building Alexandra Park Alexandra Park Alexandra Park Alexandra Park House 01 - Bassenthwaite, Graduate College House 09 - Devoke, Graduate College House 10 - Elterwater, Graduate College House 11 - Ennerdale, Graduate College Alexandra Park Laundrette Lonsdale House (Block 12) ... Chancellor's Wharf, Wyre House Chancellor's Wharf, Wyre House Chancellor's Wharf, Lune House Chancellor's Wharf, Lune House Chancellor's Wharf, Kent House Chancellor's Wharf, Kent House Hazelrigg Field Station Downings Wind Turbine North Lodge Cottage
Locations.Space.Space number A0 A0 A0 NaN A104 A124 A109 A102 A0 A13 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Space Name Whole Site Whole Site Whole Site NaN Electrical Riser Electrical Riser/Cupboard Electrical Riser Electrical Riser Whole Building Laundrette ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Additional Location Info NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Description Data logger: Alexandra Park Data logger: Alexandra Park Data logger: Alexandra Park Data logger: Alexandra Park Data logger: Graduate College - House 1 Data logger: Graduate College - House 9 Data logger: Graduate College - House 10 Data logger: Graduate College - House 11 Data logger: Alexandra Park Laundrette Data logger: Lonsdale House - Laundrette ... BMS Controller: Chancellors Wharf Data logger: Chancellor's Wharf, Wyre House BMS Controller: Chancellors Wharf Data logger: Chancellor's Wharf, Lune House BMS Controller: Chancellors Wharf Data logger: Chancellor's Wharf, Kent House Data logger: Hazelrigg Field Station Data logger: Downings Data logger: Wind Turbine Data logger: North Lodge Cottage
Classification Group EN.EN1 Data Logger EN.EN1 Data Logger EN.EN1 Data Logger EN.EN1 Data Logger EN.EN1 Data Logger EN.EN1 Data Logger EN.EN1 Data Logger EN.EN1 Data Logger EN.EN1 Data Logger EN.EN1 Data Logger ... EN.EN4 BMS Controller EN.EN1 Data Logger EN.EN4 BMS Controller EN.EN1 Data Logger EN.EN4 BMS Controller EN.EN1 Data Logger EN.EN1 Data Logger EN.EN1 Data Logger EN.EN1 Data Logger EN.EN1 Data Logger
Record NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
HVAC Ref NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Element Description NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Servicable Area NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Model Multilog G2 Multilog G2 Multilog G2 NaN Multilog G2 Multilog G2 Multilog G2 Multilog G2 Multilog G2 Multilog G2 ... IQ3xact12 NaN IQ3xact12 NaN IQ3xact12 NaN NaN NaN NaN NaN
Make Enercom Enercom Enercom NaN Enercom Enercom Enercom Enercom Enercom Enercom ... Trend NaN Trend NaN Trend NaN NaN NaN NaN NaN
EIS ID 050157C7ED00 37475126 48015355 NaN 0501E3E97100 0501E38A6300 0501E3D07500 0501E3839500 050157C16100 050157AB6700 ... {48352BB4-4B1B-4013-AB9F-14E143E83948} NaN {281682DC-5479-4064-8290-E873933872B0} NaN {BBD3685B-B0DC-417F-A0E8-20139B1074E1} NaN NaN NaN NaN NaN
Logger Channel 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
Logger Upstream Comms Target NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Logger Modem Serial Number NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Logger IP Address 10.23.9.39 NaN NaN NaN 10.23.12.36 NaN 10.23.12.37 10.23.12.38 80.93.175.91:40455 10.23.9.40 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Logger Serial Number NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Logger MAC Address 00-50-C2-2C-3E-43 NaN NaN NaN 00-50-C2-2C-3D-DE 00-50-C2-2C-3D-CB 00-50-C2-2C-3D-D1 00-50-C2-2C-3D-A7 NaN 00-50-C2-2C-3D-1B ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Logger SIM NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Meter Pulse Value NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Meter Units NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Meter Capacity NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Network Point ID NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Tenant Meter.Name NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Fiscal Meter.Name NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
EIS Space.Space number NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Utility Type.Name NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Code AP000-L01 AP000-L02 AP000-L03 AP000-L99 AP001-L01 AP009-L01 AP010-L01 AP011-L01 AP057-L01 AP080-L01 ... OC004-B01 OC004-L99 OC005-B01 OC005-L99 OC006-B01 OC006-L99 OC007-L99 OC008-L99 OC011-L99 OC012-L99

30 rows × 359 columns


In [93]:
master_loggerscontrollers_for_validation.T


Out[93]:
AP000-L01 AP000-L02 AP000-L03 AP000-L99 AP001-L01 AP009-L01 AP010-L01 AP011-L01 AP057-L01 AP080-L01 ... OC004-B01 OC004-L99 OC005-B01 OC005-L99 OC006-B01 OC006-L99 OC007-L99 OC008-L99 OC011-L99 OC012-L99
Building Code AP000 AP000 AP000 AP000 AP001 AP009 AP010 AP011 AP057 AP080 ... OC004 OC004 OC005 OC005 OC006 OC006 OC007 OC008 OC011 OC012
Building Name Alexandra Park Alexandra Park Alexandra Park Alexandra Park House 01 - Bassenthwaite, Graduate College House 09 - Devoke, Graduate College House 10 - Elterwater, Graduate College House 11 - Ennerdale, Graduate College Alexandra Park Laundrette Lonsdale House (Block 12) ... Chancellors Wharf Chancellor's Wharf, Wyre House Chancellors Wharf Chancellor's Wharf, Lune House Chancellors Wharf Chancellor's Wharf, Kent House Hazelrigg Field Station Downings Wind Turbine North Lodge Cottage
Space A0 A0 A0 NaN A104 A124 A109 A102 A0 A13 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Description Data logger: Alexandra Park Data logger: Alexandra Park Data logger: Alexandra Park Data logger: Alexandra Park Data logger: Graduate College - House 1 Data logger: Graduate College - House 9 Data logger: Graduate College - House 10 Data logger: Graduate College - House 11 Data logger: Alexandra Park Laundrette Data logger: Lonsdale House - Laundrette ... BMS Controller: Chancellors Wharf Data logger: Chancellor's Wharf, Wyre House BMS Controller: Chancellors Wharf Data logger: Chancellor's Wharf, Lune House BMS Controller: Chancellors Wharf Data logger: Chancellor's Wharf, Kent House Data logger: Hazelrigg Field Station Data logger: Downings Data logger: Wind Turbine Data logger: North Lodge Cottage
Classification Group Data logger Data logger Data logger Data logger Data logger Data logger Data logger Data logger Data logger Data logger ... BMS controller Data logger BMS controller Data logger BMS controller Data logger Data logger Data logger Data logger Data logger
Make Enercom Enercom Enercom NaN Enercom Enercom Enercom Enercom Enercom Enercom ... Trend NaN Trend NaN Trend NaN NaN NaN NaN NaN
Model Multilog G2 Multilog G2 Multilog G2 NaN Multilog G2 Multilog G2 Multilog G2 Multilog G2 Multilog G2 Multilog G2 ... IQ3xact12 NaN IQ3xact12 NaN IQ3xact12 NaN NaN NaN NaN NaN
Logger Serial Number 050157C7ED00 37475126 48015355 NaN 0501E3E97100 0501E38A6300 0501E3D07500 0501E3839500 050157C16100 050157AB6700 ... {48352BB4-4B1B-4013-AB9F-14E143E83948} NaN {281682DC-5479-4064-8290-E873933872B0} NaN {BBD3685B-B0DC-417F-A0E8-20139B1074E1} NaN NaN NaN NaN NaN
Logger Mac Address 00-50-C2-2C-3E-43 NaN NaN NaN 00-50-C2-2C-3D-DE 00-50-C2-2C-3D-CB 00-50-C2-2C-3D-D1 00-50-C2-2C-3D-A7 NaN 00-50-C2-2C-3D-1B ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Logger Ip Address 10.23.9.39 NaN NaN NaN 10.23.12.36 NaN 10.23.12.37 10.23.12.38 80.93.175.91:40455 10.23.9.40 ... cw-meter03-plant.bms.local NaN cw-meter02-plant.bms.local NaN cw-meter01-plant.bms.local NaN NaN NaN NaN NaN
Logger Modem Serial Number NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Logger Sim NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Network Point Id NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Logger Upstream Comms Target NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Additional Location Info Graduatae 1-11 Plant Room External Gas Meter Building External Water Meter Chamber NaN A017 Devoke House, Room A124 Elderwater House, Room A109 Ennerdale House - Room A102 Cartmel Laundrette Plant Room MCC ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
Code AP000-L01 AP000-L02 AP000-L03 AP000-L99 AP001-L01 AP009-L01 AP010-L01 AP011-L01 AP057-L01 AP080-L01 ... OC004-B01 OC004-L99 OC005-B01 OC005-L99 OC006-B01 OC006-L99 OC007-L99 OC008-L99 OC011-L99 OC012-L99

16 rows × 378 columns

Create dictionary that maps Planon column names onto Master.

From Nicola:

  • EIS ID (Serial Number)
  • Make
  • Model
  • Description
  • Code (Asset Code)
  • Building Code

Building code and Building name are implicitly included. Logger IP or MAC would be essential to include, as well as Make and Model. Additional Location Info is not essnetial but would be useful to have. Locations (Locations.Space.Space number and Space Name) are included in the Planon export - but this is their only viable data source, therefore are not validated against.


In [94]:
#Planon:Master
loggers_match_dict={
      "BuildingNo.":"Building Code",
      "Building":"Building Name",
      "Description":"Description",
      "EIS ID":"Logger Serial Number",
      "Make":"Make",
      "Model":"Model",
      "Code":"Code"
      }

In [95]:
master_loggerscontrollers_for_validation_filtered=master_loggerscontrollers_for_validation[list(loggers_match_dict.values())]
planon_loggerscontrollers_filtered=planon_loggerscontrollers[list(loggers_match_dict.keys())]

In [96]:
master_loggerscontrollers_for_validation_filtered.head(2)


Out[96]:
Building Name Make Logger Serial Number Building Code Model Description Code
AP000-L01 Alexandra Park Enercom 050157C7ED00 AP000 Multilog G2 Data logger: Alexandra Park AP000-L01
AP000-L02 Alexandra Park Enercom 37475126 AP000 Multilog G2 Data logger: Alexandra Park AP000-L02

In [97]:
planon_loggerscontrollers_filtered.head(2)


Out[97]:
Building Make EIS ID BuildingNo. Model Description Code
AP000-L01 Alexandra Park Enercom 050157C7ED00 AP000 Multilog G2 Data logger: Alexandra Park AP000-L01
AP000-L02 Alexandra Park Enercom 37475126 AP000 Multilog G2 Data logger: Alexandra Park AP000-L02

In [98]:
planon_loggerscontrollers_filtered.columns=[loggers_match_dict[i] for i in planon_loggerscontrollers_filtered]

In [99]:
planon_loggerscontrollers_filtered.drop_duplicates(inplace=True)
master_loggerscontrollers_for_validation_filtered.drop_duplicates(inplace=True)


C:\Anaconda2\envs\python3\lib\site-packages\pandas\util\decorators.py:91: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  return func(*args, **kwargs)

In [100]:
planon_loggerscontrollers_filtered.head(2)


Out[100]:
Building Name Make Logger Serial Number Building Code Model Description Code
AP000-L01 Alexandra Park Enercom 050157C7ED00 AP000 Multilog G2 Data logger: Alexandra Park AP000-L01
AP000-L02 Alexandra Park Enercom 37475126 AP000 Multilog G2 Data logger: Alexandra Park AP000-L02

In [101]:
master_loggerscontrollers_for_validation_filtered.head(2)


Out[101]:
Building Name Make Logger Serial Number Building Code Model Description Code
AP000-L01 Alexandra Park Enercom 050157C7ED00 AP000 Multilog G2 Data logger: Alexandra Park AP000-L01
AP000-L02 Alexandra Park Enercom 37475126 AP000 Multilog G2 Data logger: Alexandra Park AP000-L02

In [102]:
a=np.sort(list(set(planon_loggerscontrollers_filtered.index)))
b=np.sort(list(set(master_loggerscontrollers_for_validation_filtered.index)))
loggerscontrollers_not_in_planon=[]
for i in b:
    if i not in a:
        print(i+',',end=" "),
        loggerscontrollers_not_in_planon.append(i)
print('\n\nLoggers in Master, but not in Planon:',
      len(loggerscontrollers_not_in_planon),'/',len(b),':',
      round(len(loggerscontrollers_not_in_planon)/len(b)*100,3),'%')


MC032-L01, MC032-L03, MC044-L02, MC044-L03, MC044-L04, MC044-L05, MC046-L01, MC046-L03, MC046-L04, MC061-L01, MC076-B03, MC202-B17, MC202-L04, MC204-L03, MC204-L04, MC204-L07, MC204-L08, MC204-L09, MC207-L01, 

Loggers in Master, but not in Planon: 19 / 378 : 5.026 %

In [103]:
a=np.sort(list(set(planon_loggerscontrollers_filtered.index)))
b=np.sort(list(set(master_loggerscontrollers_for_validation_filtered.index)))
loggerscontrollers_not_in_master=[]
for i in a:
    if i not in b:
        print(i+',',end=" "),
        loggerscontrollers_not_in_master.append(i)
print('\n\nLoggers in Planon, not in Master:',
      len(loggerscontrollers_not_in_master),'/',len(a),':',
      round(len(loggerscontrollers_not_in_master)/len(a)*100,3),'%')



Loggers in Planon, not in Master: 0 / 359 : 0.0 %

In [104]:
print(len(planon_loggerscontrollers_filtered.index))
print(len(set(planon_loggerscontrollers_filtered.index)))
print(len(master_loggerscontrollers_for_validation_filtered.index))
print(len(set(master_loggerscontrollers_for_validation_filtered.index)))


359
359
378
378

In [105]:
master_loggerscontrollers_for_validation_filtered[master_loggerscontrollers_for_validation_filtered.index.duplicated()]


Out[105]:
Building Name Make Logger Serial Number Building Code Model Description Code

In [106]:
comon_index=list(set(master_loggerscontrollers_for_validation_filtered.index).intersection(set(planon_loggerscontrollers_filtered.index)))

In [107]:
master_loggerscontrollers_for_validation_intersected=master_loggerscontrollers_for_validation_filtered.loc[comon_index].sort_index()
planon_loggerscontrollers_intersected=planon_loggerscontrollers_filtered.loc[comon_index].sort_index()

In [108]:
master_loggerscontrollers_for_validation_intersected.head(2)


Out[108]:
Building Name Make Logger Serial Number Building Code Model Description Code
AP000-L01 Alexandra Park Enercom 050157C7ED00 AP000 Multilog G2 Data logger: Alexandra Park AP000-L01
AP000-L02 Alexandra Park Enercom 37475126 AP000 Multilog G2 Data logger: Alexandra Park AP000-L02

In [109]:
planon_loggerscontrollers_intersected.head(2)


Out[109]:
Building Name Make Logger Serial Number Building Code Model Description Code
AP000-L01 Alexandra Park Enercom 050157C7ED00 AP000 Multilog G2 Data logger: Alexandra Park AP000-L01
AP000-L02 Alexandra Park Enercom 37475126 AP000 Multilog G2 Data logger: Alexandra Park AP000-L02

In [110]:
planon_loggerscontrollers_intersected==master_loggerscontrollers_for_validation_intersected


Out[110]:
Building Name Make Logger Serial Number Building Code Model Description Code
AP000-L01 True True True True True True True
AP000-L02 True True False True True True True
AP000-L03 True True False True True True True
AP000-L99 True False False True False True True
AP001-L01 True True True True True True True
AP009-L01 True True True True True True True
AP010-L01 True True True True True True True
AP011-L01 True True True True True True True
AP057-L01 True True True True True True True
AP080-L01 True True True True True True True
AP080-L79 True False False True False True True
AP080-L80 True False False True False True True
AP080-L81 True False False True False True True
AP081-L01 True True True True True True True
EX000-L99 True False False True False True True
EX001-B01 False True True True True True True
EX005-L99 True False False True False True True
FH000-L99 True False False True False True True
FH002-L99 True False False True False True True
FH003-L99 True False False True False True True
FH008-L99 True False False True False True True
FH012-L99 True False False True False True True
MC000-L01 True True True True True True True
MC000-L99 True False False True False True True
MC001-B01 True True True True True True True
MC001-L01 True True True True True True True
MC001-L02 True True True True True True True
MC001-L82 True False False True False True True
MC001-L99 True False False True False True True
MC002-L99 True False False True False True True
... ... ... ... ... ... ... ...
MC204-L06 True True True True True True True
MC204-L73 True True True True True True True
MC204-L74 True True True True True True True
MC204-L75 True True True True True True True
MC204-L82 True False False True False True True
MC204-L99 True True True True True True True
MC207-B01 True True True True True True True
MC207-L52 True True True True True True True
MC207-L53 True True True True True True True
MC207-L82 True False False True False True True
MC210-B01 True True True True True True True
MC210-B02 True True True True True True True
MC210-B03 True True True True True True True
MC210-L01 True True False True True True True
MC210-L02 True True False True True True True
MC210-L82 True False False True False True True
MC211-B01 True True True True True True True
MC211-L82 True False False True False True True
OC001-L99 True False False True False True True
OC003-L99 True False False True False True True
OC004-B01 False True True True True True True
OC004-L99 True False False True False True True
OC005-B01 False True True True True True True
OC005-L99 True False False True False True True
OC006-B01 False True True True True True True
OC006-L99 True False False True False True True
OC007-L99 True False False True False True True
OC008-L99 True False False True False True True
OC011-L99 True False False True False True True
OC012-L99 True False False True False True True

359 rows × 7 columns

Loggers matching


In [111]:
(planon_loggerscontrollers_intersected==master_loggerscontrollers_for_validation_intersected).sum()


Out[111]:
Building Name           341
Make                    302
Logger Serial Number    288
Building Code           359
Model                   302
Description             359
Code                    359
dtype: int64

Percentage matching


In [112]:
(planon_loggerscontrollers_intersected==master_loggerscontrollers_for_validation_intersected).sum()/\
len(planon_loggerscontrollers_intersected)*100


Out[112]:
Building Name            94.986072
Make                     84.122563
Logger Serial Number     80.222841
Building Code           100.000000
Model                    84.122563
Description             100.000000
Code                    100.000000
dtype: float64

In [113]:
((planon_loggerscontrollers_intersected==master_loggerscontrollers_for_validation_intersected).sum()/\
len(planon_loggerscontrollers_intersected)*100).plot(kind='bar')


Out[113]:
<matplotlib.axes._subplots.AxesSubplot at 0x17e35dd1320>

Loggers not matching on Building Name.


In [114]:
sum(planon_loggerscontrollers_intersected['Building Name']!=master_loggerscontrollers_for_validation_intersected['Building Name'])


Out[114]:
18

In [115]:
planon_loggerscontrollers_intersected['Building Name']=[str(s).lower().strip().replace('  ',' ').replace('   ',' ') for s in planon_loggerscontrollers_intersected['Building Name'].values]
master_loggerscontrollers_for_validation_intersected['Building Name']=[str(s).lower().strip().replace('  ',' ').replace('   ',' ') for s in master_loggerscontrollers_for_validation_intersected['Building Name'].values]

In [116]:
sum(planon_loggerscontrollers_intersected['Building Name']!=master_loggerscontrollers_for_validation_intersected['Building Name'])


Out[116]:
16

That didnt help.


In [117]:
for i in planon_loggerscontrollers_intersected[planon_loggerscontrollers_intersected['Building Name']!=master_loggerscontrollers_for_validation_intersected['Building Name']].index:
    print(i,'\t\tPlanon:',planon_loggerscontrollers_intersected.loc[i]['Building Name'],'\t\tMaster:',master_loggerscontrollers_for_validation_intersected.loc[i]['Building Name'])


EX001-B01 		Planon: roads - main campus 		Master: underpass
MC029-B01 		Planon: cetad 		Master: bowland hall cetad
MC033-L03 		Planon: county john creed 		Master: john creed
MC047-B02 		Planon: welcome centre 		Master: conference centre
MC047-L01 		Planon: welcome centre 		Master: conference centre
MC047-L02 		Planon: welcome centre 		Master: conference centre
MC055-B01 		Planon: furness residences 		Master: furness blocks
MC071-B01 		Planon: furness college 		Master: furness
MC072-B02 		Planon: psc 		Master: psc building
MC072-B04 		Planon: psc 		Master: psc building
MC103-B01 		Planon: lancaster house hotel 		Master: hotel
MC198-B01 		Planon: grizedale college - offices, bar & social space 		Master: grizedale
MC198-B02 		Planon: grizedale college - offices, bar & social space 		Master: grizedale
OC004-B01 		Planon: chancellor's wharf, wyre house 		Master: chancellors wharf
OC005-B01 		Planon: chancellor's wharf, lune house 		Master: chancellors wharf
OC006-B01 		Planon: chancellor's wharf, kent house 		Master: chancellors wharf

Follow up with lexical distance comparison. That would flag this as a match.

Loggers not matching on Serial Number.


In [118]:
sum(planon_loggerscontrollers_intersected['Logger Serial Number']!=master_loggerscontrollers_for_validation_intersected['Logger Serial Number'])


Out[118]:
71

In [119]:
planon_loggerscontrollers_intersected['Logger Serial Number']=[str(s).lower().strip().replace('  ',' ').replace('   ',' ').replace('{','').replace('}','') for s in planon_loggerscontrollers_intersected['Logger Serial Number'].values]
master_loggerscontrollers_for_validation_intersected['Logger Serial Number']=[str(s).lower().strip().replace('  ',' ').replace('   ',' ').replace('{','').replace('}','') for s in master_loggerscontrollers_for_validation_intersected['Logger Serial Number'].values]

In [120]:
sum(planon_loggerscontrollers_intersected['Logger Serial Number']!=master_loggerscontrollers_for_validation_intersected['Logger Serial Number'])


Out[120]:
9

In [121]:
for i in planon_loggerscontrollers_intersected[planon_loggerscontrollers_intersected['Logger Serial Number']!=master_loggerscontrollers_for_validation_intersected['Logger Serial Number']].index:
    print(i,'\t\tPlanon:',planon_loggerscontrollers_intersected.loc[i]['Logger Serial Number'],'\t\tMaster:',master_loggerscontrollers_for_validation_intersected.loc[i]['Logger Serial Number'])


MC032-L04 		Planon: 50198367 		Master: 050198367e00
MC046-L05 		Planon: 50198895300 		Master: 050198895300
MC063-L01 		Planon: 50198829500 		Master: 050198829500
MC064-L03 		Planon: 50198872600 		Master: 050198872600
MC071-L02 		Planon: 50201286300 		Master: 050201286300
MC071-L05 		Planon: 50201221 		Master: 050201221e00
MC071-L16 		Planon: 50198904000 		Master: 050198904000
MC078-L03 		Planon: 50198864300 		Master: 050198864300
MC102-L01 		Planon: 50157909800 		Master: 050157909800

Technically the same, but there is a number format error. Compare based on float value, if they match, replace one of them. This needs to be amended, as it will throw cannot onvert to float exception if strings are left in from the previous step.


In [122]:
z1=[]
z2=[]    
for i in planon_loggerscontrollers_intersected.index:
    if planon_loggerscontrollers_intersected.loc[i]['Logger Serial Number']!=master_loggerscontrollers_for_validation_intersected.loc[i]['Logger Serial Number']:
        if float(planon_loggerscontrollers_intersected.loc[i]['Logger Serial Number'])==\
          float(master_loggerscontrollers_for_validation_intersected.loc[i]['Logger Serial Number']):
                z1.append(str(int(float(planon_loggerscontrollers_intersected.loc[i]['Logger Serial Number']))))
                z2.append(str(int(float(planon_loggerscontrollers_intersected.loc[i]['Logger Serial Number']))))
        else:
            z1.append(planon_loggerscontrollers_intersected.loc[i]['Logger Serial Number'])
            z2.append(master_loggerscontrollers_for_validation_intersected.loc[i]['Logger Serial Number'])
    else:
        z1.append(planon_loggerscontrollers_intersected.loc[i]['Logger Serial Number'])
        z2.append(planon_loggerscontrollers_intersected.loc[i]['Logger Serial Number'])
planon_loggerscontrollers_intersected['Logger Serial Number']=z1
master_loggerscontrollers_for_validation_intersected['Logger Serial Number']=z2

In [123]:
for i in planon_loggerscontrollers_intersected[planon_loggerscontrollers_intersected['Logger Serial Number']!=master_loggerscontrollers_for_validation_intersected['Logger Serial Number']].index:
    print(i,'\t\tPlanon:',planon_loggerscontrollers_intersected.loc[i]['Logger Serial Number'],'\t\tMaster:',master_loggerscontrollers_for_validation_intersected.loc[i]['Logger Serial Number'])

New error percentage:


In [124]:
(planon_loggerscontrollers_intersected!=master_loggerscontrollers_for_validation_intersected).sum()/\
len(planon_loggerscontrollers_intersected)*100


Out[124]:
Building Name            4.456825
Make                    15.877437
Logger Serial Number     0.000000
Building Code            0.000000
Model                   15.877437
Description              0.000000
Code                     0.000000
dtype: float64

(Bearing in my mind the above, this is technically 0)


In [125]:
a=np.sort(list(set(planon_meterssensors_filtered.index)))
b=np.sort(list(set(master_meterssensors_for_validation_filtered.index)))
meterssensors_not_in_planon=[]
for i in b:
    if i not in a:
        print(i+',',end=" "),
        meterssensors_not_in_planon.append(i)
print('\n\nMeters in Master, but not in Planon:',
      len(meterssensors_not_in_planon),'/',len(b),':',
      round(len(meterssensors_not_in_planon)/len(b)*100,3),'%')


AP000-L99/M303, AP000-L99/M308, AP080-L79/M001, AP080-L80/M001, AP080-L81/M001, EX001-B01/N1, EX001-B01/O1, EX001-B01/O2, EX001-B01/O3, MC000-L99/M201, MC000-L99/M202, MC000-L99/M203, MC000-L99/M506, MC001-B01/N1, MC001-L82-M972, MC001-L82-M973, MC001-L82-M974, MC001-L82-M975, MC001-L82-M976, MC001-L99/M100, MC001-L99/M222, MC001-L99/M224, MC001-L99/M306, MC001-L99/M508, MC003-B01/N1, MC003-L99/M207, MC003-L99/M304, MC003-L99/M509, MC007-L99/M211, MC007-L99/M511, MC008-L82-M916, MC008-L99/M302, MC010-L82-M745, MC010-L82-M746, MC010-L82-M747, MC010-L82-M748, MC010-L82-M749, MC010-L82-M750, MC010-L82-M751, MC010-L82-M752, MC010-L82-M753, MC010-L82-M754, MC010-L82-M755, MC010-L82-M756, MC010-L82-M757, MC010-L82-M758, MC010-L82-M759, MC010-L82-M760, MC010-L82-M761, MC010-L82-M762, MC010-L82-M763, MC010-L82-M764, MC010-L82-M765, MC010-L82-M766, MC010-L82-M767, MC010-L82-M768, MC010-L82-M769, MC010-L82-M770, MC010-L82-M771, MC010-L82-M772, MC011-B01/N1, MC011-B01/O2, MC011-L82-M953, MC011-L82-M954, MC014-B01/N1, MC014-B01/O2, MC014-B01/O3, MC014-B02/N1, MC014-B02/O2, MC014-B02/O3, MC014-B03/N1, MC014-B03/O2, MC014-B03/O3, MC014-B04/N1, MC014-B04/O2, MC014-B04/O3, MC014-B05/N1, MC014-B05/O2, MC014-B05/O3, MC014-B06/N1, MC014-B06/O2, MC014-B06/O3, MC014-B07/N1, MC014-B07/O2, MC014-B07/O3, MC014-B08/N1, MC014-B08/O2, MC014-B08/O3, MC014-B09/N1, MC014-B09/O2, MC014-B09/O3, MC014-B10/N1, MC014-B10/O2, MC014-B10/O3, MC014-B11/N1, MC014-B11/O2, MC014-B11/O3, MC014-B12/N1, MC014-B12/O2, MC014-B12/O3, MC014-B13/N1, MC014-B13/O2, MC014-B13/O3, MC014-B14/N1, MC014-B14/O2, MC014-B14/O3, MC029-B01/N1, MC030-B01/N1, MC030-B01/O1, MC030-B01/O2, MC030-B01/O3, MC031-B01/N1, MC031-B02/N1, MC031-B02/O1, MC031-B02/O2, MC031-B02/O3, MC032-B01/N1, MC032-B01/N10, MC032-B01/N11, MC032-B01/N2, MC032-B01/N3, MC032-B01/N6, MC032-B01/O1, MC032-B02/N1, MC032-B02/O2, MC032-B02/O3, MC032-B03/N1, MC032-B03/O1, MC032-B04/N1, MC032-B04/O1, MC032-B05/N1, MC032-B06/N1, MC032-B06/N2, MC032-B07/N1, MC032-B07/O1, MC032-B07/O2, MC032-B07/O3, MC032-L82-M773, MC032-L82-M774, MC033-B01/N1, MC033-L82-M898, MC033-L82-M899, MC043-B01/N1, MC043-B01/N10, MC043-B01/N11, MC043-B01/N3, MC043-B01/N6, MC044-B01/N1, MC044-B01/N2, MC044-B01/N6, MC044-B01/O1, MC044-B01/O2, MC044-B01/O3, MC044-B02/N1, MC044-B02/N2, MC044-B02/N3, MC044-B02/N6, MC044-B02/O1, MC044-B02/O3, MC044-B03/N1, MC044-B03/N3, MC044-B03/N6, MC044-B03/O1, MC044-B03/O2, MC044-B03/O3, MC044-B04/N1, MC044-B04/N10, MC044-B04/N11, MC044-B04/N12, MC044-B04/N13, MC044-B04/N14, MC044-B04/N3, MC044-B04/N6, MC044-B04/N9, MC044-B05/N1, MC044-B05/N2, MC044-B05/N3, MC044-B05/N6, MC044-B05/O1, MC044-B05/O2, MC044-B05/O3, MC044-B06/N1, MC044-B06/N3, MC044-B06/N4, MC044-B06/N6, MC044-B06/O1, MC044-B06/O2, MC044-B06/O3, MC044-B07/N1, MC044-B07/N2, MC044-B07/N3, MC044-B07/N4, MC044-B07/N5, MC044-B07/N6, MC044-B07/N7, MC044-B08/N1, MC044-B08/N2, MC044-B08/N3, MC044-B08/N6, MC044-B08/O2, MC044-B08/O3, MC044-B09/I1, MC044-B09/I2, MC044-B09/I3, MC044-B09/I4, MC044-B09/N1, MC044-B09/N10, MC044-B09/N11, MC044-B09/N2, MC044-B09/N3, MC044-B09/N4, MC044-B09/N5, MC044-B09/N6, MC044-B09/N7, MC044-B09/N8, MC044-B09/N9, MC044-B10/N1, MC044-B10/N10, MC044-B10/N100, MC044-B10/N101, MC044-B10/N102, MC044-B10/N103, MC044-B10/N104, MC044-B10/N105, MC044-B10/N106, MC044-B10/N107, MC044-B10/N108, MC044-B10/N109, MC044-B10/N11, MC044-B10/N110, MC044-B10/N111, MC044-B10/N112, MC044-B10/N113, MC044-B10/N114, MC044-B10/N115, MC044-B10/N116, MC044-B10/N117, MC044-B10/N118, MC044-B10/N119, MC044-B10/N12, MC044-B10/N120, MC044-B10/N121, MC044-B10/N122, MC044-B10/N123, MC044-B10/N124, MC044-B10/N125, MC044-B10/N126, MC044-B10/N127, MC044-B10/N128, MC044-B10/N129, MC044-B10/N13, MC044-B10/N130, MC044-B10/N131, MC044-B10/N132, MC044-B10/N133, MC044-B10/N134, MC044-B10/N135, MC044-B10/N136, MC044-B10/N137, MC044-B10/N138, MC044-B10/N139, MC044-B10/N14, MC044-B10/N140, MC044-B10/N141, MC044-B10/N142, MC044-B10/N143, MC044-B10/N144, MC044-B10/N145, MC044-B10/N146, MC044-B10/N147, MC044-B10/N148, MC044-B10/N149, MC044-B10/N15, MC044-B10/N150, MC044-B10/N151, MC044-B10/N152, MC044-B10/N153, MC044-B10/N154, MC044-B10/N155, MC044-B10/N156, MC044-B10/N157, MC044-B10/N158, MC044-B10/N159, MC044-B10/N16, MC044-B10/N160, MC044-B10/N161, MC044-B10/N162, MC044-B10/N163, MC044-B10/N164, MC044-B10/N165, MC044-B10/N166, MC044-B10/N167, MC044-B10/N168, MC044-B10/N169, MC044-B10/N17, MC044-B10/N170, MC044-B10/N171, MC044-B10/N172, MC044-B10/N173, MC044-B10/N174, MC044-B10/N175, MC044-B10/N176, MC044-B10/N177, MC044-B10/N178, MC044-B10/N179, MC044-B10/N18, MC044-B10/N180, MC044-B10/N181, MC044-B10/N182, MC044-B10/N183, MC044-B10/N184, MC044-B10/N185, MC044-B10/N186, MC044-B10/N187, MC044-B10/N188, MC044-B10/N189, MC044-B10/N19, MC044-B10/N190, MC044-B10/N191, MC044-B10/N192, MC044-B10/N193, MC044-B10/N194, MC044-B10/N195, MC044-B10/N196, MC044-B10/N197, MC044-B10/N198, MC044-B10/N199, MC044-B10/N2, MC044-B10/N20, MC044-B10/N200, MC044-B10/N201, MC044-B10/N202, MC044-B10/N203, MC044-B10/N204, MC044-B10/N205, MC044-B10/N206, MC044-B10/N207, MC044-B10/N208, MC044-B10/N209, MC044-B10/N21, MC044-B10/N210, MC044-B10/N211, MC044-B10/N212, MC044-B10/N213, MC044-B10/N214, MC044-B10/N215, MC044-B10/N216, MC044-B10/N217, MC044-B10/N218, MC044-B10/N219, MC044-B10/N22, MC044-B10/N220, MC044-B10/N23, MC044-B10/N24, MC044-B10/N25, MC044-B10/N26, MC044-B10/N27, MC044-B10/N28, MC044-B10/N29, MC044-B10/N3, MC044-B10/N30, MC044-B10/N31, MC044-B10/N32, MC044-B10/N33, MC044-B10/N34, MC044-B10/N35, MC044-B10/N36, MC044-B10/N37, MC044-B10/N38, MC044-B10/N39, MC044-B10/N4, MC044-B10/N40, MC044-B10/N41, MC044-B10/N42, MC044-B10/N43, MC044-B10/N44, MC044-B10/N45, MC044-B10/N46, MC044-B10/N47, MC044-B10/N48, MC044-B10/N49, MC044-B10/N5, MC044-B10/N50, MC044-B10/N51, MC044-B10/N52, MC044-B10/N53, MC044-B10/N54, MC044-B10/N55, MC044-B10/N56, MC044-B10/N57, MC044-B10/N58, MC044-B10/N59, MC044-B10/N6, MC044-B10/N60, MC044-B10/N61, MC044-B10/N62, MC044-B10/N63, MC044-B10/N64, MC044-B10/N65, MC044-B10/N66, MC044-B10/N67, MC044-B10/N68, MC044-B10/N69, MC044-B10/N7, MC044-B10/N70, MC044-B10/N71, MC044-B10/N72, MC044-B10/N73, MC044-B10/N74, MC044-B10/N75, MC044-B10/N76, MC044-B10/N77, MC044-B10/N78, MC044-B10/N79, MC044-B10/N8, MC044-B10/N80, MC044-B10/N81, MC044-B10/N82, MC044-B10/N83, MC044-B10/N84, MC044-B10/N85, MC044-B10/N86, MC044-B10/N87, MC044-B10/N88, MC044-B10/N89, MC044-B10/N9, MC044-B10/N90, MC044-B10/N91, MC044-B10/N92, MC044-B10/N93, MC044-B10/N94, MC044-B10/N95, MC044-B10/N96, MC044-B10/N97, MC044-B10/N98, MC044-B10/N99, MC044-B10/O1, MC044-B10/O2, MC044-B10/O3, MC044-B11/N1, MC044-B11/N10, MC044-B11/N100, MC044-B11/N101, MC044-B11/N102, MC044-B11/N103, MC044-B11/N104, MC044-B11/N105, MC044-B11/N106, MC044-B11/N107, MC044-B11/N108, MC044-B11/N109, MC044-B11/N11, MC044-B11/N110, MC044-B11/N111, MC044-B11/N112, MC044-B11/N113, MC044-B11/N114, MC044-B11/N115, MC044-B11/N116, MC044-B11/N117, MC044-B11/N118, MC044-B11/N119, MC044-B11/N12, MC044-B11/N120, MC044-B11/N121, MC044-B11/N122, MC044-B11/N123, MC044-B11/N124, MC044-B11/N125, MC044-B11/N126, MC044-B11/N127, MC044-B11/N128, MC044-B11/N129, MC044-B11/N13, MC044-B11/N130, MC044-B11/N131, MC044-B11/N132, MC044-B11/N133, MC044-B11/N134, MC044-B11/N135, MC044-B11/N136, MC044-B11/N137, MC044-B11/N138, MC044-B11/N139, MC044-B11/N14, MC044-B11/N140, MC044-B11/N141, MC044-B11/N142, MC044-B11/N143, MC044-B11/N144, MC044-B11/N145, MC044-B11/N146, MC044-B11/N147, MC044-B11/N148, MC044-B11/N149, MC044-B11/N15, MC044-B11/N150, MC044-B11/N151, MC044-B11/N152, MC044-B11/N153, MC044-B11/N154, MC044-B11/N155, MC044-B11/N156, MC044-B11/N157, MC044-B11/N158, MC044-B11/N159, MC044-B11/N16, MC044-B11/N160, MC044-B11/N161, MC044-B11/N162, MC044-B11/N163, MC044-B11/N164, MC044-B11/N165, MC044-B11/N166, MC044-B11/N167, MC044-B11/N168, MC044-B11/N169, MC044-B11/N17, MC044-B11/N170, MC044-B11/N171, MC044-B11/N172, MC044-B11/N173, MC044-B11/N174, MC044-B11/N175, MC044-B11/N176, MC044-B11/N177, MC044-B11/N178, MC044-B11/N179, MC044-B11/N18, MC044-B11/N180, MC044-B11/N181, MC044-B11/N182, MC044-B11/N183, MC044-B11/N184, MC044-B11/N185, MC044-B11/N186, MC044-B11/N187, MC044-B11/N19, MC044-B11/N2, MC044-B11/N20, MC044-B11/N21, MC044-B11/N22, MC044-B11/N23, MC044-B11/N24, MC044-B11/N25, MC044-B11/N26, MC044-B11/N27, MC044-B11/N28, MC044-B11/N29, MC044-B11/N3, MC044-B11/N30, MC044-B11/N31, MC044-B11/N32, MC044-B11/N33, MC044-B11/N34, MC044-B11/N35, MC044-B11/N36, MC044-B11/N37, MC044-B11/N38, MC044-B11/N39, MC044-B11/N4, MC044-B11/N40, MC044-B11/N41, MC044-B11/N42, MC044-B11/N43, MC044-B11/N44, MC044-B11/N45, MC044-B11/N46, MC044-B11/N47, MC044-B11/N48, MC044-B11/N49, MC044-B11/N5, MC044-B11/N50, MC044-B11/N51, MC044-B11/N52, MC044-B11/N53, MC044-B11/N54, MC044-B11/N55, MC044-B11/N56, MC044-B11/N57, MC044-B11/N58, MC044-B11/N59, MC044-B11/N6, MC044-B11/N60, MC044-B11/N61, MC044-B11/N62, MC044-B11/N63, MC044-B11/N64, MC044-B11/N65, MC044-B11/N66, MC044-B11/N67, MC044-B11/N68, MC044-B11/N69, MC044-B11/N7, MC044-B11/N70, MC044-B11/N71, MC044-B11/N72, MC044-B11/N73, MC044-B11/N74, MC044-B11/N75, MC044-B11/N76, MC044-B11/N77, MC044-B11/N78, MC044-B11/N79, MC044-B11/N8, MC044-B11/N80, MC044-B11/N81, MC044-B11/N82, MC044-B11/N83, MC044-B11/N84, MC044-B11/N85, MC044-B11/N86, MC044-B11/N87, MC044-B11/N88, MC044-B11/N89, MC044-B11/N9, MC044-B11/N90, MC044-B11/N91, MC044-B11/N92, MC044-B11/N93, MC044-B11/N94, MC044-B11/N95, MC044-B11/N96, MC044-B11/N97, MC044-B11/N98, MC044-B11/N99, MC044-B11/O1, MC044-B11/O2, MC044-B11/O3, MC044-B12/N1, MC044-B12/O1, MC044-L82-M794, MC044-L82-M795, MC044-L82-M796, MC044-L82-M797, MC044-L82-M798, MC044-L82-M799, MC044-L82-M800, MC044-L82-M801, MC044-L82-M802, MC044-L82-M803, MC044-L82-M804, MC044-L82-M805, MC044-L82-M806, MC044-L82-M807, MC044-L82-M808, MC044-L82-M809, MC044-L82-M810, MC044-L82-M811, MC044-L82-M812, MC044-L82-M813, MC044-L82-M814, MC044-L82-M815, MC044-L82-M816, MC044-L82-M817, MC044-L82-M818, MC044-L82-M819, MC044-L82-M820, MC044-L82-M821, MC044-L82-M822, MC044-L82-M823, MC044-L82-M824, MC044-L82-M825, MC044-L82-M826, MC044-L82-M827, MC044-L82-M828, MC044-L82-M829, MC044-L82-M830, MC044-L82-M831, MC044-L82-M832, MC044-L82-M833, MC044-L82-M834, MC044-L82-M835, MC044-L82-M836, MC044-L82-M837, MC044-L82-M838, MC044-L82-M839, MC044-L82-M840, MC044-L82-M841, MC044-L82-M842, MC044-L82-M843, MC044-L82-M844, MC045-B01/I5, MC045-B01/I8, MC045-B01/N1, MC045-B01/N3, MC045-B01/N6, MC045-B01/O1, MC045-L82-M775, MC045-L82-M776, MC045-L82-M777, MC045-L82-M778, MC045-L82-M779, MC045-L82-M780, MC045-L82-M781, MC045-L82-M782, MC045-L82-M783, MC045-L82-M784, MC045-L82-M785, MC045-L82-M786, MC045-L82-M787, MC045-L82-M788, MC045-L82-M789, MC045-L82-M790, MC045-L82-M791, MC045-L82-M792, MC045-L82-M793, MC045-L82-M947, MC045-L82-M948, MC045-L82-M949, MC045-L82-M950, MC045-L82-M951, MC045-L82-M952, MC046-B01/N1, MC046-B01/N4, MC046-B01/O4, MC046-L82-M736, MC046-L82-M737, MC046-L82-M738, MC046-L82-M739, MC046-L82-M740, MC046-L82-M741, MC046-L82-M742, MC046-L82-M743, MC046-L82-M744, MC047-B02/N1, MC047-B02/N4, MC047-B02/O1, MC047-L02/M888, MC048-B01/N1, MC048-B01/O1, MC048-B01/O3, MC051-B01/N1, MC055-B01/N1, MC055-B01/O5, MC055-B01/O6, MC055-B01/O7, MC061-B01/N1, MC061-B01/N2, MC061-B01/N3, MC061-B01/N4, MC061-B01/N5, MC061-B01/N6, MC061-B01/O2, MC061-B01/O3, MC061-B01/O4, MC061-B02/N1, MC061-B02/N2, MC061-B02/N3, MC061-B02/N4, MC061-B02/N5, MC061-B02/N6, MC061-B02/N7, MC061-B02/N8, MC061-B02/N9, MC061-B02/O1, MC061-B02/O2, MC061-B02/O3, MC061-B03/N1, MC061-B03/N10, MC061-B03/N11, MC061-B03/N12, MC061-B03/N13, MC061-B03/N14, MC061-B03/N15, MC061-B03/N16, MC061-B03/N2, MC061-B03/N3, MC061-B03/N4, MC061-B03/N5, MC061-B03/N6, MC061-B03/N7, MC061-B03/N8, MC061-B03/N9, MC061-L99/M305, MC061-L99/M310, MC063-B01/N1, MC063-B01/O1, MC063-B01/O2, MC063-B01/O3, MC063-L82-M955, MC065-B01/N1, MC065-B01/N2, MC065-B01/N3, MC065-B01/N4, MC065-B01/N5, MC065-B01/N6, MC065-B01/N7, MC065-B01/N8, MC065-B01/O1, MC065-B01/O3, MC065-B02/N1, MC065-B02/N2, MC065-B02/O1, MC065-B02/O2, MC065-B02/O3, MC065-B03/N1, MC065-B03/N2, MC065-B03/O1, MC065-B03/O2, MC065-B03/O3, MC065-B04/N1, MC065-B04/O1, MC065-B04/O2, MC065-B04/O3, MC065-B05/N1, MC065-B05/N2, MC065-B05/O1, MC065-B05/O2, MC065-B05/O3, MC065-B06/N1, MC065-B06/N2, MC065-B06/N3, MC065-B06/N4, MC065-B06/N5, MC065-B06/N6, MC065-B06/N7, MC065-B06/N8, MC065-B07/N1, MC065-B07/N10, MC065-B07/N2, MC065-B07/N3, MC065-B07/N7, MC065-B07/N8, MC065-B07/N9, MC065-B08/N1, MC065-B08/N2, MC065-B08/N3, MC065-B08/N4, MC065-B08/N5, MC065-B08/N6, MC065-B08/N7, MC065-B08/N8, MC065-B09/N1, MC065-B09/N10, MC065-B09/N11, MC065-B09/N12, MC065-B09/N13, MC065-B09/N14, MC065-B09/N15, MC065-B09/N2, MC065-B09/N3, MC065-B09/N4, MC065-B09/N5, MC065-B09/N7, MC065-B09/N8, MC065-B09/N9, MC065-B10/N1, MC065-L82-M900, MC065-L82-M901, MC065-L82-M902, MC065-L82-M903, MC065-L82-M904, MC065-L82-M905, MC065-L82-M906, MC065-L82-M907, MC065-L82-M908, MC065-L82-M909, MC065-L82-M910, MC065-L82-M911, MC065-L82-M912, MC065-L82-M913, MC065-L82-M914, MC065-L82-M915, MC065-L82-M935, MC065-L82-M936, MC065-L82-M937, MC066-B01/N1, MC067-B01/N1, MC070-B01/N1, MC070-B01/O1, MC070-B01/O2, MC070-B01/O3, MC070-B02/N1, MC070-B02/O2, MC070-B03/N1, MC070-B03/N2, MC070-B03/O1, MC070-B03/O2, MC070-B05/N1, MC070-B05/O1, MC070-B06/N1, MC070-L82-M932, MC070-L82-M933, MC070-L82-M934, MC070-L82-M960, MC070-L82-M961, MC070-L82-M962, MC070-L82-M963, MC070-L82-M964, MC070-L82-M965, MC070-L82-M966, MC070-L82-M967, MC070-L82-M968, MC070-L82-M969, MC070-L82-M970, MC070-L82-M971, MC071-B01/N1, MC071-B01/N2, MC071-B01/N3, MC071-L82-M917, MC071-L82-M918, MC071-L82-M919, MC071-L82-M920, MC071-L82-M921, MC072-B01/N1, MC072-B02/N1, MC072-B02/N10, MC072-B02/N11, MC072-B02/N12, MC072-B02/N13, MC072-B02/N14, MC072-B02/N15, MC072-B02/N16, MC072-B02/N17, MC072-B02/N18, MC072-B02/N19, MC072-B02/N2, MC072-B02/N20, MC072-B02/N21, MC072-B02/N22, MC072-B02/N23, MC072-B02/N3, MC072-B02/N4, MC072-B02/N5, MC072-B02/N6, MC072-B02/N7, MC072-B02/N8, MC072-B02/N9, MC072-B03/N1, MC072-B03/O1, MC072-B03/O2, MC072-B03/O3, MC072-B04/I1, MC072-B04/I2, MC072-B04/I3, MC072-B04/I4, MC072-B04/I5, MC072-B04/I6, MC072-B04/I7, MC072-B04/N1, MC072-B04/N2, MC072-B04/N3, MC072-B04/N4, MC072-B04/O1, MC072-B05/N1, MC072-B05/O1, MC072-B05/O2, MC072-B05/O3, MC072-L82-M928, MC075-B01/N1, MC075-B02/N1, MC075-L82-M942, MC075-L82-M943, MC075-L82-M944, MC075-L82-M945, MC075-L82-M946, MC076-B01/N1, MC076-B02/N1, MC076-B04/N1, MC077-B01/N1, MC078-B01/N1, MC078-B01/N2, MC078-B01/N3, MC078-B01/N4, MC078-B01/N5, MC078-B01/N6, MC078-B01/N7, MC078-B01/O1, MC078-B01/O2, MC078-B02/N1, MC078-B02/N2, MC078-B02/N3, MC078-B02/N4, MC078-B02/O1, MC078-B02/O2, MC078-B03/N1, MC078-B03/N10, MC078-B03/N11, MC078-B03/N2, MC078-B03/N3, MC078-B03/N4, MC078-B03/N5, MC078-B03/N6, MC078-B03/N7, MC078-B03/N8, MC078-B03/N9, MC078-B03/O1, MC078-B03/O2, MC083-B01/N1, MC083-B01/O1, MC102-L82-M700, MC102-L82-M701, MC102-L82-M702, MC102-L82-M703, MC102-L82-M704, MC102-L82-M705, MC102-L82-M706, MC102-L82-M707, MC102-L82-M708, MC102-L82-M709, MC102-L82-M710, MC102-L82-M711, MC102-L82-M712, MC102-L82-M713, MC102-L82-M714, MC102-L82-M715, MC102-L82-M716, MC102-L82-M717, MC102-L82-M718, MC102-L82-M719, MC102-L82-M866, MC102-L82-M867, MC102-L82-M868, MC102-L82-M869, MC102-L82-M870, MC102-L82-M871, MC102-L82-M872, MC102-L82-M873, MC102-L82-M874, MC102-L82-M875, MC102-L82-M876, MC102-L82-M877, MC102-L82-M878, MC102-L82-M879, MC102-L82-M880, MC102-L82-M881, MC102-L82-M882, MC102-L82-M883, MC102-L82-M884, MC102-L82-M885, MC102-L82-M886, MC102-L82-M887, MC102-L99/M309, MC103-B01/N1, MC103-B01/N10, MC103-B01/N11, MC103-B01/N3, MC103-B01/N6, MC103-L99/M216, MC103-L99/M300, MC103-L99/M504, MC125-L82-M929, MC126-L82-M930, MC126-L82-M931, MC128-L82-M926, MC128-L82-M927, MC129-L82-M922, MC129-L82-M923, MC131-L82-M924, MC131-L82-M925, MC197-L82-M888, MC197-L82-M889, MC197-L82-M890, MC197-L82-M891, MC197-L82-M892, MC197-L82-M893, MC197-L82-M894, MC197-L82-M895, MC197-L82-M896, MC197-L82-M897, MC198-B01/N1, MC198-B01/O2, MC198-B02/N1, MC198-B02/O1, MC200-B01/N1, MC200-B01/N2, MC200-B01/O1, MC200-B01/O2, MC200-L82-M938, MC200-L82-M939, MC200-L82-M940, MC200-L82-M941, MC202-B01/N1, MC202-B01/O1, MC202-B02/N1, MC202-B02/O1, MC202-B03/N1, MC202-B03/O1, MC202-B04/N1, MC202-B04/O1, MC202-B05/N1, MC202-B05/O1, MC202-B06/N1, MC202-B06/N2, MC202-B06/O1, MC202-B07/N1, MC202-B07/N2, MC202-B07/O1, MC202-B08/N1, MC202-B08/O1, MC202-B09/N1, MC202-B09/N2, MC202-B09/O1, MC202-B10/N1, MC202-B10/N2, MC202-B10/O1, MC202-B11/N1, MC202-B11/O1, MC202-B12/N1, MC202-B12/N2, MC202-B12/O1, MC202-B13/N1, MC202-B13/N2, MC202-B13/O1, MC202-B14/N1, MC202-B14/N2, MC202-B14/O1, MC202-B15/N1, MC202-B15/N2, MC202-B15/O1, MC202-B16/N1, MC202-B16/N2, MC202-B16/O1, MC204-B01/N1, MC204-B01/N2, MC204-B01/N3, MC204-B01/N4, MC204-B01/O1, MC204-B01/O2, MC204-B01/O3, MC204-B01/O4, MC204-B01/O5, MC204-B01/O6, MC204-B02/N1, MC204-B02/N10, MC204-B02/N11, MC204-B02/N2, MC204-B02/N3, MC204-B02/N4, MC204-B02/N5, MC204-B02/N6, MC204-B02/N7, MC204-B02/N8, MC204-B02/N9, MC204-B02/O1, MC204-B02/O2, MC204-B02/O3, MC204-B02/O4, MC204-B02/O5, MC204-B02/O6, MC204-B03/N1, MC204-B03/O1, MC204-B03/O2, MC204-B03/O3, MC204-B04/N1, MC204-B04/N2, MC204-B04/O1, MC204-B04/O3, MC204-B04/O4, MC204-B04/O5, MC204-B04/O6, MC204-B05/N1, MC204-B05/N2, MC204-B05/O6, MC204-B06/N1, MC204-B06/N2, MC204-B06/N3, MC204-B06/O1, MC204-B06/O2, MC204-B06/O4, MC204-B06/O5, MC204-B06/O6, MC204-L82-M956, MC204-L82-M957, MC204-L82-M958, MC204-L82-M959, MC204-L99/M312, MC207-B01/N1, MC207-B01/O2, MC207-B01/O3, MC207-L82-M845, MC207-L82-M846, MC207-L82-M847, MC207-L82-M848, MC207-L82-M849, MC207-L82-M850, MC207-L82-M851, MC207-L82-M852, MC207-L82-M853, MC207-L82-M854, MC207-L82-M855, MC207-L82-M856, MC207-L82-M857, MC210-B01/N1, MC210-B01/N2, MC210-B01/N3, MC210-B01/N4, MC210-B01/N5, MC210-B01/N6, MC210-B01/N7, MC210-B01/O1, MC210-B01/O2, MC210-B02/I10, MC210-B02/I11, MC210-B02/I12, MC210-B02/I13, MC210-B02/I14, MC210-B02/I4, MC210-B02/I5, MC210-B02/I6, MC210-B02/I7, MC210-B02/I8, MC210-B02/I9, MC210-B02/N1, MC210-B02/N10, MC210-B02/N11, MC210-B02/N2, MC210-B02/N3, MC210-B02/N4, MC210-B02/N5, MC210-B02/N6, MC210-B02/N7, MC210-B02/N8, MC210-B02/N9, MC210-B02/O1, MC210-B02/O2, MC210-B03/N1, MC210-B03/N2, MC210-B03/N3, MC210-B03/N4, MC210-B03/N5, MC210-B03/O1, MC210-B03/O2, MC210-L01/M001, MC210-L01/M002, MC210-L01/M003, MC210-L01/M004, MC210-L01/M005, MC210-L01/M006, MC210-L01/M007, MC210-L01/M008, MC210-L01/M009, MC210-L01/M010, MC210-L01/M011, MC210-L01/M012, MC210-L01/M013, MC210-L01/M014, MC210-L01/M015, MC210-L01/M016, MC210-L01/M017, MC210-L01/M018, MC210-L01/M019, MC210-L01/M020, MC210-L01/M021, MC210-L01/M022, MC210-L01/M023, MC210-L01/M024, MC210-L01/M025, MC210-L01/M026, MC210-L01/M027, MC210-L01/M028, MC210-L01/M029, MC210-L01/M030, MC210-L02/M001, MC210-L02/M002, MC210-L02/M003, MC210-L02/M004, MC210-L02/M005, MC210-L02/M006, MC210-L02/M007, MC210-L02/M008, MC210-L02/M009, MC210-L02/M010, MC210-L02/M011, MC210-L02/M012, MC210-L02/M013, MC210-L02/M014, MC210-L02/M015, MC210-L02/M016, MC210-L02/M017, MC210-L02/M018, MC210-L02/M019, MC210-L02/M020, MC210-L02/M021, MC210-L02/M022, MC210-L02/M023, MC210-L82-M720, MC210-L82-M721, MC210-L82-M722, MC210-L82-M723, MC210-L82-M724, MC210-L82-M725, MC210-L82-M726, MC210-L82-M727, MC210-L82-M728, MC210-L82-M729, MC210-L82-M730, MC210-L82-M731, MC210-L82-M732, MC210-L82-M733, MC210-L82-M734, MC210-L82-M735, MC211-B01/N1, MC211-L82-M858, MC211-L82-M859, MC211-L82-M860, MC211-L82-M861, MC211-L82-M862, MC211-L82-M863, MC211-L82-M864, MC211-L82-M865, OC004-B01/N1, OC004-L99/M206, OC004-L99/M512, OC005-B01/N1, OC005-L99/M204, OC005-L99/M505, OC006-B01/N1, OC006-L99/M200, OC006-L99/M503, 

Meters in Master, but not in Planon: 1311 / 30135 : 4.35 %

In [126]:
q1=pd.DataFrame(meterssensors_not_in_planon)

In [127]:
a=np.sort(list(set(planon_meterssensors_filtered.index)))
b=np.sort(list(set(master_meterssensors_for_validation_filtered.index)))
meterssensors_not_in_master=[]
for i in a:
    if i not in b:
        print(i+',',end=" "),
        meterssensors_not_in_master.append(i)
print('\n\nMeters in Planon, not in Master:',
      len(meterssensors_not_in_master),'/',len(a),':',
      round(len(meterssensors_not_in_master)/len(a)*100,3),'%')



Meters in Planon, not in Master: 0 / 28824 : 0.0 %

In [128]:
q2=pd.DataFrame(meterssensors_not_in_master)

In [129]:
a=np.sort(list(set(planon_loggerscontrollers_filtered.index)))
b=np.sort(list(set(master_loggerscontrollers_for_validation_filtered.index)))
loggerscontrollers_not_in_planon=[]
for i in b:
    if i not in a:
        print(i+',',end=" "),
        loggerscontrollers_not_in_planon.append(i)
print('\n\nLoggers in Master, but not in Planon:',
      len(loggerscontrollers_not_in_planon),'/',len(b),':',
      round(len(loggerscontrollers_not_in_planon)/len(b)*100,3),'%')


MC032-L01, MC032-L03, MC044-L02, MC044-L03, MC044-L04, MC044-L05, MC046-L01, MC046-L03, MC046-L04, MC061-L01, MC076-B03, MC202-B17, MC202-L04, MC204-L03, MC204-L04, MC204-L07, MC204-L08, MC204-L09, MC207-L01, 

Loggers in Master, but not in Planon: 19 / 378 : 5.026 %

In [130]:
q3=pd.DataFrame(loggerscontrollers_not_in_planon)

In [131]:
a=np.sort(list(set(planon_loggerscontrollers_filtered.index)))
b=np.sort(list(set(master_loggerscontrollers_for_validation_filtered.index)))
loggerscontrollers_not_in_master=[]
for i in a:
    if i not in b:
        print(i+',',end=" "),
        loggerscontrollers_not_in_master.append(i)
print('\n\nLoggers in Planon, not in Master:',
      len(loggerscontrollers_not_in_master),'/',len(a),':',
      round(len(loggerscontrollers_not_in_master)/len(a)*100,3),'%')



Loggers in Planon, not in Master: 0 / 359 : 0.0 %

In [132]:
q4=pd.DataFrame(loggerscontrollers_not_in_master)

In [133]:
q5=pd.DataFrame((planon_meterssensors_intersected!=master_meterssensors_for_validation_intersected).sum()/\
len(planon_meterssensors_intersected)*100)

In [134]:
q6=pd.DataFrame((planon_loggerscontrollers_intersected!=master_loggerscontrollers_for_validation_intersected).sum()/\
len(planon_loggerscontrollers_intersected)*100)

In [135]:
w1=[]
for i in planon_meterssensors_intersected[planon_meterssensors_intersected['Description']!=master_meterssensors_for_validation_intersected['Description']].index:
    w1.append({"Meter":i,'Planon':planon_meterssensors_intersected.loc[i]['Description'],
               'Master':master_meterssensors_for_validation_intersected.loc[i]['Description']})

In [136]:
q7=pd.DataFrame(w1)

In [137]:
w2=[]
for i in planon_loggerscontrollers_intersected[planon_loggerscontrollers_intersected['Building Name']!=master_loggerscontrollers_for_validation_intersected['Building Name']].index:
    w2.append({"Logger":i,'Planon':planon_loggerscontrollers_intersected.loc[i]['Building Name'],
               'Master':master_loggerscontrollers_for_validation_intersected.loc[i]['Building Name']})

In [138]:
q8=pd.DataFrame(w2)

In [139]:
writer = pd.ExcelWriter('final5.xlsx')
q1.to_excel(writer,'Meters Master, not Planon')
q2.to_excel(writer,'Meters Planon, not Master')
q3.to_excel(writer,'Loggers Master, not Planon')
q4.to_excel(writer,'Loggers Planon, not Master')
q5.to_excel(writer,'Meters error perc')
q6.to_excel(writer,'Loggers error perc')
q7.to_excel(writer,'Meters naming conflcits')
q8.to_excel(writer,'Loggers naming conflicts')
writer.save()