erfactoring recommendations

This commit is contained in:
Khalim Conn-Kowlessar 2023-07-21 15:22:22 +01:00
parent caedd79523
commit 2f88f2a0af
6 changed files with 98 additions and 122 deletions

View file

@ -101,7 +101,6 @@ async def trigger_plan(body: PlanTriggerRequest):
p.set_is_in_conservation_area(in_conservation_area)
logger.info("Getting components and properties recommendations")
recommendations = []
for property_id, p in enumerate(input_properties):
# For each property, classiy floor area decide
@ -114,14 +113,29 @@ async def trigger_plan(body: PlanTriggerRequest):
# Property recommendations
p.get_components(cleaned)
# This is placeholder, until the full dataset is loaded into the database and we just make a read to the
# database
floors_u_value_estimate = [
x for x in uvalue_estimates_floors
if (x['local-authority'] == p.data["local-authority"]) &
(x['property-type'] == p.data["property-type"]) &
(x['built-form'] == p.data["built-form"]) &
(x['floor-energy-eff'] == p.data["floor-energy-eff"] if p.data["floor-energy-eff"] != 'N/A' else True) &
(x['floor-env-eff'] == p.data["floor-env-eff"] if p.data["floor-env-eff"] != 'N/A' else True)
]
# Floor recommendations
floor_recommender = FloorRecommendations(property_instance=p, uvalue_estimates=uvalue_estimates_floors)
floor_recommender = FloorRecommendations(
property_instance=p, uvalue_estimates=floors_u_value_estimate,
total_floor_area_group_decile=total_floor_area_group_decile
)
floor_recommender.recommend()
floor_recommendations = floor_recommender.recommendations
# insert property id
for rec in floor_recommendations:
for rec in floor_recommender.recommendations:
rec["property_id"] = property_id
recommendations.extend(floor_recommender.recommendations)
# Wall recommendations
# We would make this u-value query directly to the database
total_floor_area_group_decile = classify_decile_newvalues(
@ -137,20 +151,20 @@ async def trigger_plan(body: PlanTriggerRequest):
if (x['local-authority'] == p.data["local-authority"]) &
(x['property-type'] == p.data["property-type"]) &
(x['built-form'] == p.data["built-form"]) &
(x['walls-energy-eff'] == p.data["walls-energy-eff"]) &
(x['walls-env-eff'] == p.data["walls-env-eff"])
(x['walls-energy-eff'] == p.data["walls-energy-eff"] if p.data["walls-energy-eff"] != 'N/A' else True) &
(x['walls-env-eff'] == p.data["walls-env-eff"] if p.data["walls-env-eff"] != 'N/A' else True)
]
wall_recomendations = WallRecommendations(
property_instance=p, uvalue_estimates=walls_u_value_estimate,
property_instance=p,
uvalue_estimates=walls_u_value_estimate,
total_floor_area_group_decile=total_floor_area_group_decile
)
wall_recomendations.recommend()
wall_recomendations = wall_recomendations.recommendations
# insert property id
for rec in wall_recomendations:
for rec in wall_recomendations.recommendations:
rec["property_id"] = property_id
recommendations.extend(floor_recommendations)
recommendations.extend(wall_recomendations.recommendations)
return {"message": "Plan complete"}
return {"recommendations": recommendations}

View file

@ -64,13 +64,13 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': 0.38, 'n_samples': 5},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'floor-energy-eff': 'Average', 'floor-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'floor-energy-eff': 'Average', 'floor-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': 0.41500000000000004, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'floor-energy-eff': 'Average', 'floor-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'floor-energy-eff': 'Average', 'floor-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': 0.39, 'n_samples': 2},
@ -190,7 +190,7 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': 0.26, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': 0.25, 'n_samples': 8},
@ -591,13 +591,13 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': 0.22, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'House', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'House', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 0.21, 'n_samples': 6},
{'local-authority': 'E09000012', 'property-type': 'House', 'floor-energy-eff': 'Poor', 'floor-env-eff': 'Poor',
'built-form': 'Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'House', 'floor-energy-eff': 'Poor', 'floor-env-eff': 'Poor',
'built-form': 'End-Terrace', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 0.47, 'n_samples': 2},
@ -832,7 +832,7 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': 0.25, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'Maisonette', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'Maisonette', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 0.21, 'n_samples': 4},
@ -1032,7 +1032,7 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': 0.31, 'n_samples': 2},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'floor-energy-eff': 'Average', 'floor-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'floor-energy-eff': 'Average', 'floor-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': 0.4, 'n_samples': 1},
@ -1137,7 +1137,7 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 0.25, 'n_samples': 1},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': 0.26, 'n_samples': 2},
@ -1200,7 +1200,7 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 0.67, 'n_samples': 9},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'floor-energy-eff': 'Poor', 'floor-env-eff': 'Poor',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'floor-energy-eff': 'Poor', 'floor-env-eff': 'Poor',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 2', 'median_thermal_transmittance': 0.66, 'n_samples': 1},
@ -1372,7 +1372,7 @@ uvalue_estimates_floors = [
'median_thermal_transmittance': 0.975, 'n_samples': 2},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'floor-energy-eff': 'Very Poor',
'floor-env-eff': 'Very Poor', 'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 2', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 2', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'floor-energy-eff': 'Very Poor',
'floor-env-eff': 'Very Poor', 'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': 1.78, 'n_samples': 1},
@ -1807,7 +1807,7 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': 0.26, 'n_samples': 9},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 2', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 2', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': 0.25, 'n_samples': 5},
@ -1819,7 +1819,7 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': 0.29, 'n_samples': 1},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': 0.26, 'n_samples': 1},
@ -1882,7 +1882,7 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': 0.56, 'n_samples': 1},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'floor-energy-eff': 'Poor', 'floor-env-eff': 'Poor',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'floor-energy-eff': 'Poor', 'floor-env-eff': 'Poor',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': 0.46, 'n_samples': 1},
@ -2114,7 +2114,7 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': 0.25, 'n_samples': 2},
{'local-authority': 'E09000014', 'property-type': 'House', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000014', 'property-type': 'House', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': 0.23, 'n_samples': 2},
@ -2186,7 +2186,7 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': 0.11, 'n_samples': 2},
{'local-authority': 'E09000014', 'property-type': 'House', 'floor-energy-eff': 'Very Good',
'floor-env-eff': 'Very Good', 'built-form': 'Mid-Terrace', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000014', 'property-type': 'House', 'floor-energy-eff': 'Very Good',
'floor-env-eff': 'Very Good', 'built-form': 'Mid-Terrace', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': 0.14, 'n_samples': 10},
@ -2277,7 +2277,7 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': 0.29, 'n_samples': 4},
{'local-authority': 'E09000014', 'property-type': 'Maisonette', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000014', 'property-type': 'Maisonette', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': 0.29, 'n_samples': 2},
@ -2963,11 +2963,11 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': 0.18, 'n_samples': 4},
{'local-authority': 'E09000028', 'property-type': 'House', 'floor-energy-eff': 'Very Good',
'floor-env-eff': 'Very Good', 'built-form': 'Semi-Detached', 'number-habitable-rooms': '',
'number-heated-rooms': '', 'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': nan,
'number-heated-rooms': '', 'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': None,
'n_samples': 2}, {'local-authority': 'E09000028', 'property-type': 'House', 'floor-energy-eff': 'Very Good',
'floor-env-eff': 'Very Good', 'built-form': 'Semi-Detached', 'number-habitable-rooms': '',
'number-heated-rooms': '', 'total-floor-area_group': 'Decile 6',
'median_thermal_transmittance': nan, 'n_samples': 2},
'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000028', 'property-type': 'House', 'floor-energy-eff': 'Very Good',
'floor-env-eff': 'Very Good', 'built-form': 'Semi-Detached', 'number-habitable-rooms': '',
'number-heated-rooms': '', 'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': 0.12,
@ -3015,7 +3015,7 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': 0.22, 'n_samples': 8},
{'local-authority': 'E09000028', 'property-type': 'Maisonette', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000028', 'property-type': 'Maisonette', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': 0.24, 'n_samples': 2},
@ -3633,10 +3633,10 @@ uvalue_estimates_floors = [
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': 0.22, 'n_samples': 4},
{'local-authority': 'E09000030', 'property-type': 'Maisonette', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 2', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 2', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000030', 'property-type': 'Maisonette', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000030', 'property-type': 'Maisonette', 'floor-energy-eff': 'Good', 'floor-env-eff': 'Good',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': 0.25, 'n_samples': 2},

View file

@ -91,16 +91,16 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 1.0, 'n_samples': 29},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Average', 'walls-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Average', 'walls-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': 0.93, 'n_samples': 24},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Average', 'walls-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Average', 'walls-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Average', 'walls-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 0.97, 'n_samples': 3},
@ -208,13 +208,13 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 0.39, 'n_samples': 8},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': nan, 'n_samples': 3},
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': None, 'n_samples': 3},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 2', 'median_thermal_transmittance': 0.32, 'n_samples': 7},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': nan, 'n_samples': 4},
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': None, 'n_samples': 4},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': 0.33, 'n_samples': 7},
@ -334,7 +334,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 1.35, 'n_samples': 14},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': nan, 'n_samples': 8},
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': None, 'n_samples': 8},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': 1.13, 'n_samples': 1},
@ -352,7 +352,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': 1.45, 'n_samples': 25},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': 1.51, 'n_samples': 14},
@ -622,7 +622,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': 1.87, 'n_samples': 145},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Very Poor',
'walls-env-eff': 'Very Poor', 'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'Flat', 'walls-energy-eff': 'Very Poor',
'walls-env-eff': 'Very Poor', 'built-form': 'Semi-Detached', 'number-habitable-rooms': '',
'number-heated-rooms': '', 'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': 1.92,
@ -894,13 +894,13 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 0.44, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'Maisonette', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000012', 'property-type': 'Maisonette', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': 0.5, 'n_samples': 26},
{'local-authority': 'E09000012', 'property-type': 'Maisonette', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': nan, 'n_samples': 4},
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': None, 'n_samples': 4},
{'local-authority': 'E09000012', 'property-type': 'Maisonette', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': 1.01, 'n_samples': 2},
@ -1122,7 +1122,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': 0.98, 'n_samples': 28},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'walls-energy-eff': 'Average', 'walls-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'walls-energy-eff': 'Average', 'walls-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': 0.675, 'n_samples': 2},
@ -1221,7 +1221,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': 0.36, 'n_samples': 3},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': nan, 'n_samples': 6},
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': None, 'n_samples': 6},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': 0.35, 'n_samples': 3},
@ -1281,10 +1281,10 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': 1.03, 'n_samples': 3},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 2', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 2', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000013', 'property-type': 'Flat', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': 1.46, 'n_samples': 1},
@ -1634,7 +1634,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 2.1, 'n_samples': 2},
{'local-authority': 'E09000013', 'property-type': 'House', 'walls-energy-eff': 'Very Poor',
'walls-env-eff': 'Very Poor', 'built-form': 'Mid-Terrace', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000013', 'property-type': 'House', 'walls-energy-eff': 'Very Poor',
'walls-env-eff': 'Very Poor', 'built-form': 'Mid-Terrace', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 1.75, 'n_samples': 2},
@ -1643,7 +1643,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 1.86, 'n_samples': 2},
{'local-authority': 'E09000013', 'property-type': 'Maisonette', 'walls-energy-eff': 'Average',
'walls-env-eff': 'Average', 'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000013', 'property-type': 'Maisonette', 'walls-energy-eff': 'Average',
'walls-env-eff': 'Average', 'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': 0.83, 'n_samples': 2},
@ -1682,10 +1682,10 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': 0.57, 'n_samples': 2},
{'local-authority': 'E09000013', 'property-type': 'Maisonette', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000013', 'property-type': 'Maisonette', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000013', 'property-type': 'Maisonette', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': 0.3, 'n_samples': 4},
@ -1694,7 +1694,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': 1.41, 'n_samples': 2},
{'local-authority': 'E09000013', 'property-type': 'Maisonette', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000013', 'property-type': 'Maisonette', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': 1.05, 'n_samples': 2},
@ -1859,7 +1859,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': 0.64, 'n_samples': 3},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'walls-energy-eff': 'Average', 'walls-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'walls-energy-eff': 'Average', 'walls-env-eff': 'Average',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 0.83, 'n_samples': 14},
@ -1964,7 +1964,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 2', 'median_thermal_transmittance': 0.32, 'n_samples': 3},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': 0.305, 'n_samples': 4},
@ -1979,10 +1979,10 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': 0.32, 'n_samples': 3},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': 0.44, 'n_samples': 6},
@ -2036,7 +2036,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': 1.41, 'n_samples': 2},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000014', 'property-type': 'Flat', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': 1.37, 'n_samples': 1},
@ -2299,7 +2299,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 0.435, 'n_samples': 4},
{'local-authority': 'E09000014', 'property-type': 'House', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000014', 'property-type': 'House', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': 0.27, 'n_samples': 2},
@ -2466,7 +2466,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': 1.41, 'n_samples': 2},
{'local-authority': 'E09000014', 'property-type': 'Maisonette', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000014', 'property-type': 'Maisonette', 'walls-energy-eff': 'Very Good',
'walls-env-eff': 'Very Good', 'built-form': 'Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': 0.26, 'n_samples': 2},
@ -2533,7 +2533,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 0.22, 'n_samples': 2},
{'local-authority': 'E09000014', 'property-type': 'Maisonette', 'walls-energy-eff': 'Very Good',
'walls-env-eff': 'Very Good', 'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000014', 'property-type': 'Maisonette', 'walls-energy-eff': 'Very Good',
'walls-env-eff': 'Very Good', 'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': 0.275, 'n_samples': 4},
@ -3234,10 +3234,10 @@ uvalue_estimates_walls = [
'n_samples': 2}, {'local-authority': 'E09000028', 'property-type': 'House', 'walls-energy-eff': 'Very Good',
'walls-env-eff': 'Very Good', 'built-form': 'Semi-Detached', 'number-habitable-rooms': '',
'number-heated-rooms': '', 'total-floor-area_group': 'Decile 6',
'median_thermal_transmittance': nan, 'n_samples': 2},
'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000028', 'property-type': 'House', 'walls-energy-eff': 'Very Good',
'walls-env-eff': 'Very Good', 'built-form': 'Semi-Detached', 'number-habitable-rooms': '',
'number-heated-rooms': '', 'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': nan,
'number-heated-rooms': '', 'total-floor-area_group': 'Decile 8', 'median_thermal_transmittance': None,
'n_samples': 2}, {'local-authority': 'E09000028', 'property-type': 'House', 'walls-energy-eff': 'Very Good',
'walls-env-eff': 'Very Good', 'built-form': 'Semi-Detached', 'number-habitable-rooms': '',
'number-heated-rooms': '', 'total-floor-area_group': 'Decile 9',
@ -3267,7 +3267,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 9', 'median_thermal_transmittance': 0.35, 'n_samples': 4},
{'local-authority': 'E09000028', 'property-type': 'Maisonette', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': nan, 'n_samples': 4},
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': None, 'n_samples': 4},
{'local-authority': 'E09000028', 'property-type': 'Maisonette', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'Semi-Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': 0.45, 'n_samples': 2},
@ -3572,7 +3572,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': 1.08, 'n_samples': 2},
{'local-authority': 'E09000030', 'property-type': 'Flat', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': nan, 'n_samples': 4},
'total-floor-area_group': 'Decile 4', 'median_thermal_transmittance': None, 'n_samples': 4},
{'local-authority': 'E09000030', 'property-type': 'Flat', 'walls-energy-eff': 'Very Good',
'walls-env-eff': 'Very Good', 'built-form': 'Detached', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': 0.19, 'n_samples': 403},
@ -3735,7 +3735,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 0.2, 'n_samples': 33},
{'local-authority': 'E09000030', 'property-type': 'Flat', 'walls-energy-eff': 'Very Good',
'walls-env-eff': 'Very Good', 'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': nan, 'n_samples': 1},
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': None, 'n_samples': 1},
{'local-authority': 'E09000030', 'property-type': 'Flat', 'walls-energy-eff': 'Very Good',
'walls-env-eff': 'Very Good', 'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 2', 'median_thermal_transmittance': 0.14, 'n_samples': 20},
@ -3919,10 +3919,10 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 1', 'median_thermal_transmittance': 0.38, 'n_samples': 2},
{'local-authority': 'E09000030', 'property-type': 'Maisonette', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 5', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000030', 'property-type': 'Maisonette', 'walls-energy-eff': 'Good', 'walls-env-eff': 'Good',
'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000030', 'property-type': 'Maisonette', 'walls-energy-eff': 'Poor', 'walls-env-eff': 'Poor',
'built-form': 'Mid-Terrace', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 6', 'median_thermal_transmittance': 1.14, 'n_samples': 2},
@ -3973,7 +3973,7 @@ uvalue_estimates_walls = [
'total-floor-area_group': 'Decile 10', 'median_thermal_transmittance': 0.195, 'n_samples': 4},
{'local-authority': 'E09000030', 'property-type': 'Maisonette', 'walls-energy-eff': 'Very Good',
'walls-env-eff': 'Very Good', 'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': nan, 'n_samples': 2},
'total-floor-area_group': 'Decile 3', 'median_thermal_transmittance': None, 'n_samples': 2},
{'local-authority': 'E09000030', 'property-type': 'Maisonette', 'walls-energy-eff': 'Very Good',
'walls-env-eff': 'Very Good', 'built-form': 'NO DATA!', 'number-habitable-rooms': '', 'number-heated-rooms': '',
'total-floor-area_group': 'Decile 7', 'median_thermal_transmittance': 0.26, 'n_samples': 2},

View file

@ -1,10 +1,11 @@
import math
from typing import List
from model_data.BaseUtility import BaseUtility
from model_data.Property import Property
from model_data.rdsap_tables import default_wall_thickness, age_band_data
from recommendations.recommendation_utils import (
r_value_per_mm_to_u_value, calculate_u_value_uplift, is_diminishing_returns, update_lowest_selected_u_value,
get_recommended_part
get_recommended_part, get_uvalue_estimate
)
suspended_floor_insulation_parts = [
@ -91,11 +92,13 @@ class FloorRecommendations(BaseUtility):
"4th": 4,
# We set
"00": 0,
"3rd": 3
}
def __init__(self, property_instance: Property, uvalue_estimates):
def __init__(self, property_instance: Property, uvalue_estimates: List, total_floor_area_group_decile: str):
self.property = property_instance
self.uvalue_estimates = uvalue_estimates
self.total_floor_area_group_decile = total_floor_area_group_decile
# For audit purposes, when estimating u values we'll store it
self.estimated_u_value = None
@ -242,7 +245,11 @@ class FloorRecommendations(BaseUtility):
age_band=age_band,
)
else:
u_value = self._get_floors_uvalue_estimate()
u_value = get_uvalue_estimate(
uvalue_estimates=self.uvalue_estimates,
property=self.property,
total_floor_area_group_decile=self.total_floor_area_group_decile
)
self.estimated_u_value = u_value
@ -254,54 +261,6 @@ class FloorRecommendations(BaseUtility):
# Given the U-value, we recommend solid floor insulation options which are usually solid foam
self.recommend_floor_insulation(u_value=u_value, parts=solid_floor_insulation_parts)
def _get_floors_uvalue_estimate(self, total_floor_area_group_decile):
blah
"""
Wrapper function which contains the methodology to extract a property's walls u-value estimate
when we don't have a true value and if we can't base our assumption off of the material
:return:
"""
# total_floor_area_group_decile = UvalueEstimations.classify_decile_newvalues(
# decile_boundaries=self.uvalue_estimates.floors_decile_data["decile_boundaries"],
# decile_labels=self.uvalue_estimates.floors_decile_data["decile_labels"],
# new_values=[float(self.property.data["total-floor-area"])],
# )[0]
u_value_estimate = self.uvalue_estimates.floors[
(self.uvalue_estimates.floors["local-authority"] == self.property.data["local-authority"]) &
(self.uvalue_estimates.floors["property-type"] == self.property.data["property-type"]) &
(self.uvalue_estimates.floors["built-form"] == self.property.data["built-form"]) &
(self.uvalue_estimates.floors["floor-energy-eff"] == self.property.data["floor-energy-eff"]) &
(self.uvalue_estimates.floors["floor-env-eff"] == self.property.data["floor-env-eff"]) &
(self.uvalue_estimates.floors["total-floor-area_group"] == total_floor_area_group_decile)
]
if u_value_estimate.empty:
raise ValueError("No U-value estimate found for the given property")
# Because of how spuriously populated the data is for number-habitable-rooms and number-heated-rooms,
# we will try and filter on these to see if we get a result
habitable_rooms_filter = (
self.uvalue_estimates.walls["number-habitable-rooms"] == self.property.data["number-habitable-rooms"]
)
if any(habitable_rooms_filter):
u_value_estimate = u_value_estimate[habitable_rooms_filter]
heated_rooms_filter = (
self.uvalue_estimates.walls["number-heated-rooms"] == self.property.data["number-heated-rooms"]
)
if any(heated_rooms_filter):
u_value_estimate = u_value_estimate[heated_rooms_filter]
# It's possible for us to have multiple rows if we didn't do a habitable/heated rooms filter so we
# average
return u_value_estimate["median_thermal_transmittance"].mean()
def recommend_floor_insulation(self, u_value, parts):
"""
This method is tasked with estimating the impact of performing suspended floor insulation

View file

@ -5,7 +5,7 @@ from model_data.Property import Property
from model_data.BaseUtility import BaseUtility
from recommendations.recommendation_utils import (
r_value_per_mm_to_u_value, calculate_u_value_uplift, is_diminishing_returns, update_lowest_selected_u_value,
get_recommended_part
get_recommended_part, get_uvalue_estimate
)
external_wall_insulation_parts = [
@ -284,7 +284,10 @@ class WallRecommendations(BaseUtility):
# This is an estimated figure based on industry standards
u_value = self.DEFAULT_U_VALUES["solid_brick"]
else:
u_value = self._get_walls_uvalue_estimate()
u_value = get_uvalue_estimate(
uvalue_estimates=self.uvalue_estimates, property=self.property,
total_floor_area_group_decile=self.total_floor_area_group_decile
)
self.estimated_u_value = u_value
if u_value >= self.BUILDING_REGULATIONS_PART_L_MAX_U_VALUE:

View file

@ -114,7 +114,7 @@ def get_recommended_part(part, selected_depth):
return recommended_part
def get_uvalue_estimate(uvalue_estimates, property: Property):
def get_uvalue_estimate(uvalue_estimates, property: Property, total_floor_area_group_decile):
"""
Wrapper function which contains the methodology to extract a property's walls u-value estimate
when we don't have a true value and if we can't base our assumption off of the material
@ -127,7 +127,7 @@ def get_uvalue_estimate(uvalue_estimates, property: Property):
# We try and filter on total_floor_area_group_decile
floor_area_filter = [
x for x in uvalue_estimates if
x["total-floor-area_group"] == property.data["total_floor_area_group_decile"]
x["total-floor-area_group"] == total_floor_area_group_decile
]
if not floor_area_filter: