Model/etl/customers/mhs/new_programme.py
2025-07-09 17:41:21 +01:00

116 lines
4.4 KiB
Python

#
import pandas as pd
asset_list = pd.read_excel(
"/Users/khalimconn-kowlessar/Documents/hestia/Customers/MHS/New programme/12052025 MHS Standardised Asset List - "
"programme.xlsx",
sheet_name="Standardised Asset List"
)
new_cavity_programme = pd.read_excel(
"/Users/khalimconn-kowlessar/Documents/hestia/Customers/MHS/New programme/12052025 MHS Standardised Asset List - "
"programme.xlsx",
sheet_name="New Cavity Programme"
)
new_cavity_pilot = pd.read_excel(
"/Users/khalimconn-kowlessar/Documents/hestia/Customers/MHS/New programme/12052025 MHS Standardised Asset List - "
"programme.xlsx",
sheet_name="Empty Cavity Pilot"
)
new_solar_programme = pd.read_excel(
"/Users/khalimconn-kowlessar/Documents/hestia/Customers/MHS/New programme/12052025 MHS Standardised Asset List - "
"programme.xlsx",
sheet_name="New Solar Programme"
)
in_fill_properties_houses = pd.read_excel(
"/Users/khalimconn-kowlessar/Documents/hestia/Customers/MHS/New programme/Domna updated programme list May 2025 ("
"1).xlsx",
sheet_name="Houses and Bungalows"
)
in_fill_properties_flats = pd.read_excel(
"/Users/khalimconn-kowlessar/Documents/hestia/Customers/MHS/New programme/Domna updated programme list May 2025 ("
"1).xlsx",
sheet_name="Flats and Maistonettes"
)
# Q1) What are these properties? Do we have them on our list already?
# All of the houses are already in the asset list
in_fill_properties_houses["is_in_asset_list"] = in_fill_properties_houses["UPRN"].isin(
asset_list["landlord_property_id"].values
)
# All of the flats are already in the asset list
in_fill_properties_flats["is_in_asset_list"] = in_fill_properties_flats["UPRN"].isin(
asset_list["landlord_property_id"].values
)
# Q2) Which properties are excluded from the new programme?
in_fill_properties = pd.concat(
[in_fill_properties_houses, in_fill_properties_flats], ignore_index=True, sort=False
)
# Merge on the data
in_fill_properties = in_fill_properties.merge(
asset_list,
left_on="UPRN",
right_on="landlord_property_id",
how="left"
)
# How many properties are in the new programme?
in_fill_properties["in_new_cavity_programme"] = in_fill_properties["UPRN"].isin(
new_cavity_programme["landlord_property_id"].values
)
in_fill_properties["in_new_solar_programme"] = in_fill_properties["UPRN"].isin(
new_solar_programme["landlord_property_id"].values
)
in_fill_properties["in_new_cavity_pilot"] = in_fill_properties["UPRN"].isin(
new_cavity_pilot["landlord_property_id"].values
)
not_in_new_programme = in_fill_properties[
(~in_fill_properties["in_new_cavity_programme"] & ~in_fill_properties["in_new_solar_programme"] & ~
in_fill_properties["in_new_cavity_pilot"])
].copy()
# Why?
not_in_new_programme["cavity_reason"].value_counts()
not_in_new_programme["solar_reason"].value_counts()
not_identified_for_anything = not_in_new_programme[
pd.isnull(not_in_new_programme["cavity_reason"]) &
pd.isnull(not_in_new_programme["solar_reason"])
]
# Flag the potential re-inspections which is 994 properties though any extractions we need to consider the HA funding
# the extraction
not_in_new_programme["funded_extractions"] = not_in_new_programme["cavity_reason"].isin(
[
"Non-Intrusive Data Shows Cavity Extraction: SAP Rating 69-75",
"Non-Intrusive Data Shows Cavity Extraction: SAP Rating 55-68",
"Non-Intrusive Data Shows Cavity Extraction: SAP Rating 76 or more",
"Non-Intrusive Data Shows Cavity Extraction: SAP Rating 54 or less",
"EPC Shows Empty Cavity, inspections show non-cavity build: SAP Rating 76 or more",
"EPC Shows Empty Cavity, inspections show non-cavity build: SAP Rating 54 or less",
"EPC Shows Empty Cavity, inspections show retro drilled: SAP Rating 54 or less",
"EPC Shows Empty Cavity, inspections show retro drilled: SAP Rating 76 or more",
]
)
not_in_new_programme["excluded"] = not_identified_for_anything["landlord_property_id"].isin(
not_identified_for_anything["landlord_property_id"].values
)
not_in_new_programme[
not_in_new_programme["funded_extractions"]
].to_csv(
"/Users/khalimconn-kowlessar/Documents/hestia/Customers/MHS/New programme/funded_extractions.csv",
index=False
)
not_in_new_programme[
not_in_new_programme["excluded"] == True
].to_csv(
"/Users/khalimconn-kowlessar/Documents/hestia/Customers/MHS/New programme/excluded_properties.csv",
index=False
)