mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
116 lines
4.4 KiB
Python
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
|
|
)
|