mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
Added HA8
This commit is contained in:
parent
4e077053cd
commit
a7ed3b84e5
1 changed files with 93 additions and 5 deletions
|
|
@ -517,6 +517,11 @@ class DataLoader:
|
|||
asset_list["Address3"].astype(str).str.lower().str.strip() + ", " + \
|
||||
asset_list["Postcode"].astype(str).str.lower().str.strip()
|
||||
asset_list["matching_postcode"] = asset_list["Postcode"].astype(str).str.lower().str.strip()
|
||||
elif ha_name == "HA8":
|
||||
asset_list["matching_address"] = asset_list["AddressLine1"].astype(str).str.lower().str.strip() + ", " + \
|
||||
asset_list["AddressLine2"].astype(str).str.lower().str.strip() + ", " + \
|
||||
asset_list["Postcode"].astype(str).str.lower().str.strip()
|
||||
asset_list["matching_postcode"] = asset_list["Postcode"].astype(str).str.lower().str.strip()
|
||||
elif ha_name == "HA9":
|
||||
asset_list["matching_address"] = asset_list["House Number"].astype(str).str.lower().str.strip() + ", " + \
|
||||
asset_list["Address Line 1"].astype(str).str.lower().str.strip() + ", " + \
|
||||
|
|
@ -2293,6 +2298,30 @@ class DataLoader:
|
|||
def correct_ha49_survey_list(survey_list):
|
||||
return survey_list
|
||||
|
||||
@staticmethod
|
||||
def correct_ha8_survey_list(survey_list):
|
||||
# Split on / and take the first half
|
||||
survey_list["Street / Block Name"] = survey_list["Street / Block Name"].str.split("/").str[0]
|
||||
|
||||
survey_list["Street / Block Name"] = survey_list["Street / Block Name"].str.replace(
|
||||
"WESTONIA COURT HOUSE", "Westonia Court"
|
||||
)
|
||||
|
||||
survey_list["Street / Block Name"] = survey_list["Street / Block Name"].str.replace(
|
||||
"Hillesdon Avenue", "Hillesden Avenue"
|
||||
)
|
||||
|
||||
survey_list["Street / Block Name"] = survey_list["Street / Block Name"].str.replace(
|
||||
"Weston Street", "Western Street"
|
||||
)
|
||||
|
||||
# Remove placeholder rows where postcode is missing
|
||||
survey_list = survey_list[
|
||||
~pd.isnull(survey_list["Post Code"])
|
||||
]
|
||||
|
||||
return survey_list
|
||||
|
||||
@staticmethod
|
||||
def levenstein_match(matching_string, df):
|
||||
match_to = df["matching_address"].tolist()
|
||||
|
|
@ -5464,7 +5493,7 @@ def forecast_remaining_sales(loader):
|
|||
|
||||
def fml_data_pull(loader):
|
||||
has_bruh = [
|
||||
# "HA7", "HA14", "HA25", "HA39", "HA16", "HA28", "HA13",
|
||||
"HA7", "HA14", "HA25", "HA39", "HA16", "HA28", "HA13",
|
||||
# Updated get_property_type_and_built_form, still needs running
|
||||
"HA50", "HA24", "HA15", "HA32", "HA28", "HA6", "HA1", "HA107", "HA41", "HA48", "HA2", "HA63", "HA12",
|
||||
"HA117", "HA35", "HA34", "HA56", "HA19", "HA18", "HA9", "HA27", "HA30", "HA31", "HA54", "HA49",
|
||||
|
|
@ -5561,7 +5590,13 @@ def classify_loft(x):
|
|||
|
||||
def fml_analysis(loader):
|
||||
assumed_ciga_pass_rate = 0.731
|
||||
has_bruh = ["HA7", "HA14", "HA25", "HA39", "HA16", "HA1"]
|
||||
has_bruh = [
|
||||
"HA7", "HA14", "HA25", "HA39", "HA16", "HA28", "HA13",
|
||||
# Updated get_property_type_and_built_form, still needs running
|
||||
"HA50", "HA24", "HA15", "HA32", "HA28", "HA6", "HA1", "HA107", "HA41", "HA48", "HA2", "HA63", "HA12",
|
||||
"HA117", "HA35", "HA34", "HA56", "HA19", "HA18", "HA9", "HA27", "HA30", "HA31", "HA54", "HA49",
|
||||
# todo
|
||||
]
|
||||
|
||||
no_ciga_cavity_descriptions = [
|
||||
"Cavity wall, as built, insulated (assumed)",
|
||||
|
|
@ -5597,12 +5632,13 @@ def fml_analysis(loader):
|
|||
|
||||
results = []
|
||||
wall_descriptions = []
|
||||
for ha_name in has_bruh:
|
||||
for ha_name in tqdm(has_bruh):
|
||||
|
||||
original_figures = loader.december_figures[
|
||||
loader.december_figures["HA Name"] == ha_name
|
||||
].copy()
|
||||
original_remaining = original_figures["ECO4 remaining"].values[0]
|
||||
original_gbis_remaining = original_figures["GBIS remaining"].values[0]
|
||||
postcode_list_remaining = remaining_eligible_mapping[ha_name]
|
||||
|
||||
# Read in the epc data
|
||||
|
|
@ -5669,7 +5705,54 @@ def fml_analysis(loader):
|
|||
raise Exception("SOMETHING WENT WRONG")
|
||||
|
||||
if any(fuck_this["ECO Eligibility"].str.contains("subject to archetype")):
|
||||
raise Exception("DO THE DAMN ARCHETYPE CHECK BRO")
|
||||
# We perform the archetype test. If the property is a house, we it needs to be detached, semi-detached
|
||||
# or end terrace. If it's a bungalow, it must be attached
|
||||
fuck_this["passes_archetype"] = None
|
||||
fuck_this["passes_archetype"] = np.where(
|
||||
(fuck_this["property-type"] == "House") &
|
||||
(fuck_this["built-form"].isin(["Semi-Detached", "End-Terrace", "Detached"])),
|
||||
True,
|
||||
fuck_this["passes_archetype"]
|
||||
)
|
||||
|
||||
fuck_this["passes_archetype"] = np.where(
|
||||
(fuck_this["property-type"] == "Bungalow") &
|
||||
(fuck_this["built-form"].isin(["Detached"])),
|
||||
True,
|
||||
fuck_this["passes_archetype"]
|
||||
)
|
||||
|
||||
fuck_this["ECO Eligibility"] = np.where(
|
||||
(fuck_this["ECO Eligibility"] == "eco4 (subject to ciga) (subject to archetype)") &
|
||||
(fuck_this["passes_archetype"] == True),
|
||||
"eco4 (subject to ciga)",
|
||||
fuck_this["ECO Eligibility"]
|
||||
)
|
||||
|
||||
# If failed the archetype check and needs a CIGA, it's not eligibile
|
||||
fuck_this["ECO Eligibility"] = np.where(
|
||||
(fuck_this["ECO Eligibility"] == "eco4 (subject to ciga) (subject to archetype)") &
|
||||
(fuck_this["passes_archetype"] != True),
|
||||
"not eligible",
|
||||
fuck_this["ECO Eligibility"]
|
||||
)
|
||||
|
||||
fuck_this["ECO Eligibility"] = np.where(
|
||||
(fuck_this["ECO Eligibility"] == "eco4 (subject to archetype)") &
|
||||
(fuck_this["passes_archetype"] == True),
|
||||
"eco4",
|
||||
fuck_this["ECO Eligibility"]
|
||||
)
|
||||
|
||||
fuck_this["ECO Eligibility"] = np.where(
|
||||
(fuck_this["ECO Eligibility"] == "eco4 (subject to archetype)") &
|
||||
(fuck_this["passes_archetype"] != True),
|
||||
"gbis",
|
||||
fuck_this["ECO Eligibility"]
|
||||
)
|
||||
|
||||
if any(fuck_this["ECO Eligibility"].str.contains("subject to archetype")):
|
||||
raise Exception("DO THE DAMN ARCHETYPE CHECK BRO")
|
||||
|
||||
# clean roof insulation
|
||||
fuck_this["roof_insulation_thickness"] = fuck_this["roof_insulation_thickness"].fillna("0")
|
||||
|
|
@ -5685,6 +5768,9 @@ def fml_analysis(loader):
|
|||
fuck_this["roof_insulation_thickness"] = fuck_this[
|
||||
"roof_insulation_thickness"
|
||||
].str.replace("average", "150")
|
||||
fuck_this["roof_insulation_thickness"] = fuck_this[
|
||||
"roof_insulation_thickness"
|
||||
].str.replace("above 150", "150")
|
||||
|
||||
fuck_this["roof_classiciation"] = fuck_this.apply(lambda x: classify_loft(x), axis=1)
|
||||
|
||||
|
|
@ -5884,6 +5970,7 @@ def fml_analysis(loader):
|
|||
{
|
||||
"HA Name": ha_name,
|
||||
"Original ECO4 Estimate - Remaining": original_remaining,
|
||||
"Original GGBIS Estimate - Remaining": original_gbis_remaining,
|
||||
"Postcode List - Remaining": postcode_list_remaining,
|
||||
# "Of which sold": sales_since_nov,
|
||||
"Of which ECO4 Eligible - Remaining": int(total_eco4_expectation),
|
||||
|
|
@ -5927,7 +6014,8 @@ def app():
|
|||
"HA1", "HA2", "HA6", "HA7", "HA9", "HA12", "HA13", "HA14", "HA15", "HA16", "HA18", "HA19", "HA24", "HA25",
|
||||
"HA27", "HA28", "HA30", "HA31", "HA32", "HA34", "HA35", "HA39", "HA41", "HA48", "HA49", "HA50", "HA54", "HA56",
|
||||
"HA63", "HA107", "HA117",
|
||||
|
||||
# Added as of March 17th
|
||||
"HA8",
|
||||
# New HAS
|
||||
"HAXX", "HAXXX",
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue