mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-30 13:10:47 +00:00
ai mappings
This commit is contained in:
parent
5391afeaaa
commit
8fa8307e33
5 changed files with 77 additions and 14 deletions
|
|
@ -598,7 +598,35 @@ class AssetList:
|
||||||
self.standardised_asset_list[self.landlord_year_built].dt.year
|
self.standardised_asset_list[self.landlord_year_built].dt.year
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError("Year built column must be a datetime - implement me")
|
# We attempt to convert the year built to a datetime, by detecting the format and converting
|
||||||
|
|
||||||
|
def extract_year(date_str):
|
||||||
|
"""
|
||||||
|
Extracts the year from a date string in the format '01-Jul-YYYY'.
|
||||||
|
Returns the extracted year as an integer or None if the format is incorrect.
|
||||||
|
"""
|
||||||
|
known_errors = ["#MULTIVALUE"]
|
||||||
|
|
||||||
|
if pd.isnull(date_str) or date_str in known_errors:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if isinstance(date_str, str):
|
||||||
|
match = re.match(r"\d{1,2}-[A-Za-z]{3}-(\d{4})", date_str)
|
||||||
|
if match:
|
||||||
|
return int(match.group(1)) # Extract the year and convert to integer
|
||||||
|
|
||||||
|
if isinstance(date_str, datetime):
|
||||||
|
return date_str.year
|
||||||
|
|
||||||
|
# Check if date_str is a year itself
|
||||||
|
if str(date_str).isdigit() & (len(str(date_str)) == 4):
|
||||||
|
return int(date_str)
|
||||||
|
|
||||||
|
raise NotImplementedError("Unhandled format for year built - implement me")
|
||||||
|
|
||||||
|
self.standardised_asset_list[self.landlord_year_built] = self.standardised_asset_list[
|
||||||
|
self.landlord_year_built
|
||||||
|
].apply(extract_year)
|
||||||
|
|
||||||
# We now create standard lookups
|
# We now create standard lookups
|
||||||
to_remap = {
|
to_remap = {
|
||||||
|
|
@ -619,6 +647,8 @@ class AssetList:
|
||||||
"standard_map": existing_pv_mappings.EXISTING_PV_MAPPINGS
|
"standard_map": existing_pv_mappings.EXISTING_PV_MAPPINGS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
# Keep just entries where the key is not None
|
||||||
|
to_remap = {k: v for k, v in to_remap.items() if k is not None}
|
||||||
|
|
||||||
for variable, config in to_remap.items():
|
for variable, config in to_remap.items():
|
||||||
logger.info("Standardising variable: %s", variable)
|
logger.info("Standardising variable: %s", variable)
|
||||||
|
|
|
||||||
|
|
@ -255,7 +255,7 @@ def app():
|
||||||
landlord_wall_construction = "Wallinsul"
|
landlord_wall_construction = "Wallinsul"
|
||||||
landlord_heating_system = "HeatSorc"
|
landlord_heating_system = "HeatSorc"
|
||||||
landlord_existing_pv = None
|
landlord_existing_pv = None
|
||||||
landlord_property_id = None
|
landlord_property_id = "Property Reference"
|
||||||
|
|
||||||
# Maps addresses to uprn in problematic cases
|
# Maps addresses to uprn in problematic cases
|
||||||
MANUAL_UPRN_MAP = {}
|
MANUAL_UPRN_MAP = {}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
STANDARD_HEATING_SYSTEMS = {
|
STANDARD_HEATING_SYSTEMS = {
|
||||||
"gas combi boiler",
|
"gas combi boiler",
|
||||||
"electric storage heaters",
|
"electric storage heaters",
|
||||||
|
|
@ -35,12 +37,31 @@ HEATING_MAPPINGS = {
|
||||||
"Eco Electric Radiators": "electric radiators",
|
"Eco Electric Radiators": "electric radiators",
|
||||||
"Gas fire": "other",
|
"Gas fire": "other",
|
||||||
"Backboiler - Solid fuel": "other",
|
"Backboiler - Solid fuel": "other",
|
||||||
'combi - gas': 'gas combi boiler', 'e7 storage heaters': 'electric storage heaters',
|
'combi - gas': 'gas combi boiler',
|
||||||
'district heating system': 'district heating', 'condensing boiler - gas': 'gas condensing boiler',
|
'e7 storage heaters': 'electric storage heaters',
|
||||||
'boiler oil/other': 'oil boiler', 'condensing combi - gas': 'gas condensing combi',
|
'district heating system': 'district heating',
|
||||||
'air source source heat pump': 'air source heat pump', 'biomass boiler': 'boiler - other fuel',
|
'condensing boiler - gas': 'gas condensing boiler',
|
||||||
'ground source heat pump': 'ground source heat pump', 'electric oil filled radiators': 'electric radiators',
|
'boiler oil/other': 'oil boiler',
|
||||||
'solid fuel': 'other', 'lpg boiler': 'boiler - other fuel', 'electric boiler': 'electric boiler',
|
'condensing combi - gas': 'gas condensing combi',
|
||||||
|
'air source source heat pump': 'air source heat pump',
|
||||||
|
'biomass boiler': 'boiler - other fuel',
|
||||||
|
'ground source heat pump': 'ground source heat pump',
|
||||||
|
'electric oil filled radiators': 'electric radiators',
|
||||||
|
'solid fuel': 'other',
|
||||||
|
'lpg boiler': 'boiler - other fuel',
|
||||||
|
'electric boiler': 'electric boiler',
|
||||||
'no data': 'unknown', 'boiler communal/commercial - gas': 'communal gas boiler',
|
'no data': 'unknown', 'boiler communal/commercial - gas': 'communal gas boiler',
|
||||||
'eco electric radiators': 'electric radiators', 'gas fire': 'other', 'backboiler - solid fuel': 'other',
|
'eco electric radiators': 'electric radiators',
|
||||||
|
'gas fire': 'other', 'backboiler - solid fuel': 'other',
|
||||||
|
'ASHP': 'air source heat pump',
|
||||||
|
'COMMHEAT': 'communal gas boiler',
|
||||||
|
'GBB': 'gas combi boiler',
|
||||||
|
'GFS': 'gas condensing boiler',
|
||||||
|
'GWA': 'gas condensing boiler',
|
||||||
|
'GWM': 'gas condensing combi',
|
||||||
|
'HDU': 'district heating',
|
||||||
|
'OILBLR': 'oil boiler',
|
||||||
|
'SOLIDFUEL': 'boiler - other fuel',
|
||||||
|
'STORHTR': 'high heat retention storage heaters',
|
||||||
|
np.nan: 'unknown',
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# These are the standard categories for property types
|
# These are the standard categories for property types
|
||||||
STANDARD_PROPERTY_TYPES = {
|
STANDARD_PROPERTY_TYPES = {
|
||||||
"house", "flat", "maisonette", "bungalow", "park home", "block house", "bedsit", "coach house",
|
"house", "flat", "maisonette", "bungalow", "park home", "block house", "bedsit", "coach house",
|
||||||
"unknown", "other"
|
"unknown", "other", "block of flats"
|
||||||
}
|
}
|
||||||
|
|
||||||
# This is a basic mapping that we use to map values that we've seen commonly to standard values
|
# This is a basic mapping that we use to map values that we've seen commonly to standard values
|
||||||
|
|
@ -15,4 +15,11 @@ PROPERTY_MAPPING = {
|
||||||
"BEDSIT": "bedsit",
|
"BEDSIT": "bedsit",
|
||||||
"COACHSE": "coach house",
|
"COACHSE": "coach house",
|
||||||
"coachse": "coach house",
|
"coachse": "coach house",
|
||||||
|
'Admin Unit Type': 'unknown',
|
||||||
|
'Block': 'block of flats',
|
||||||
|
'Bungalow': 'bungalow',
|
||||||
|
'Flat': 'flat',
|
||||||
|
'House': 'house',
|
||||||
|
'Maisonette': 'maisonette',
|
||||||
|
'Stairwell': 'other'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
STANDARD_WALL_CONSTRUCTIONS = {
|
STANDARD_WALL_CONSTRUCTIONS = {
|
||||||
"uninsulated cavity", "filled cavity", "partial insulated cavity", "cavity unknown insulation",
|
"uninsulated cavity", "filled cavity", "partial insulated cavity", "cavity unknown insulation",
|
||||||
"timber frame", "uninsulated solid brick",
|
"uninsulated solid brick", "insulated solid brick", "solid brick unknown insulation",
|
||||||
"insulated solid brick", "system built", "granite or whinstone", "other", "unknown", "sandstone or limestone",
|
"timber frame",
|
||||||
|
"system built", "granite or whinstone", "other", "unknown", "sandstone or limestone",
|
||||||
"cob",
|
"cob",
|
||||||
"new build - average thermal transmittance",
|
"new build - average thermal transmittance",
|
||||||
}
|
}
|
||||||
|
|
@ -70,8 +71,7 @@ WALL_CONSTRUCTION_MAPPINGS = {
|
||||||
'average thermal transmittance 0.28 w/m?k': 'unknown',
|
'average thermal transmittance 0.28 w/m?k': 'unknown',
|
||||||
'Cavity wall, filled cavity': 'filled cavity',
|
'Cavity wall, filled cavity': 'filled cavity',
|
||||||
'Cavity wall, filled cavity and external insulation': 'filled cavity',
|
'Cavity wall, filled cavity and external insulation': 'filled cavity',
|
||||||
'Granite or whinstone, as built, no insulation (assumed)': 'granite or '
|
'Granite or whinstone, as built, no insulation (assumed)': 'granite or whinstone',
|
||||||
'whinstone',
|
|
||||||
'Solid brick, as built, insulated (assumed)': 'insulated solid brick',
|
'Solid brick, as built, insulated (assumed)': 'insulated solid brick',
|
||||||
'Solid brick, as built, no insulation (assumed)': 'uninsulated solid brick',
|
'Solid brick, as built, no insulation (assumed)': 'uninsulated solid brick',
|
||||||
'Solid brick, with external insulation': 'insulated solid brick',
|
'Solid brick, with external insulation': 'insulated solid brick',
|
||||||
|
|
@ -84,4 +84,9 @@ WALL_CONSTRUCTION_MAPPINGS = {
|
||||||
'Timber frame, as built, no insulation (assumed)': 'timber frame',
|
'Timber frame, as built, no insulation (assumed)': 'timber frame',
|
||||||
'Timber frame, as built, partial insulation (assumed)': 'timber frame',
|
'Timber frame, as built, partial insulation (assumed)': 'timber frame',
|
||||||
'Timber frame, with additional insulation': 'timber frame',
|
'Timber frame, with additional insulation': 'timber frame',
|
||||||
|
'CAVITY': 'partial unknown cavity',
|
||||||
|
'COMB': 'unknown',
|
||||||
|
'NONE': 'unknown',
|
||||||
|
'NOTKNOWN': 'unknown',
|
||||||
|
'SOLID': 'solid brick unknown insulation',
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue