build_energy_totals: output district heat share to separate file

This commit is contained in:
Tom Brown 2024-01-15 17:51:08 +01:00 committed by Fabian Neumann
parent 6c20ce83d7
commit bd8a5ecf2b
2 changed files with 22 additions and 10 deletions

View File

@ -256,6 +256,7 @@ rule build_energy_totals:
energy_name=RESOURCES + "energy_totals.csv", energy_name=RESOURCES + "energy_totals.csv",
co2_name=RESOURCES + "co2_totals.csv", co2_name=RESOURCES + "co2_totals.csv",
transport_name=RESOURCES + "transport_data.csv", transport_name=RESOURCES + "transport_data.csv",
district_heat_share=RESOURCES + "district_heat_share.csv",
threads: 16 threads: 16
resources: resources:
mem_mb=10000, mem_mb=10000,

View File

@ -391,13 +391,6 @@ def build_idees(countries, year):
# convert TWh/100km to kWh/km # convert TWh/100km to kWh/km
totals.loc["passenger car efficiency"] *= 10 totals.loc["passenger car efficiency"] *= 10
# district heating share
district_heat = totals.loc[
["derived heat residential", "derived heat services"]
].sum()
total_heat = totals.loc[["thermal uses residential", "thermal uses services"]].sum()
totals.loc["district heat share"] = district_heat.div(total_heat)
return totals.T return totals.T
@ -572,16 +565,31 @@ def build_energy_totals(countries, eurostat, swiss, idees):
ratio = df.at["BA", "total residential"] / df.at["RS", "total residential"] ratio = df.at["BA", "total residential"] / df.at["RS", "total residential"]
df.loc["BA", missing] = ratio * df.loc["RS", missing] df.loc["BA", missing] = ratio * df.loc["RS", missing]
return df
def build_district_heat_share(idees):
# district heating share
district_heat = idees[
["derived heat residential", "derived heat services"]
].sum(axis=1)
total_heat = idees[["thermal uses residential", "thermal uses services"]].sum(axis=1)
district_heat_share = district_heat/total_heat
# Missing district heating share # Missing district heating share
dh_share = pd.read_csv( dh_share = pd.read_csv(
snakemake.input.district_heat_share, index_col=0, usecols=[0, 1] snakemake.input.district_heat_share, index_col=0, usecols=[0, 1]
) )
# make conservative assumption and take minimum from both data sets # make conservative assumption and take minimum from both data sets
df["district heat share"] = pd.concat( district_heat_share = pd.concat(
[df["district heat share"], dh_share.reindex(index=df.index) / 100], axis=1 [district_heat_share, dh_share.reindex(index=district_heat_share.index) / 100], axis=1
).min(axis=1) ).min(axis=1)
return df district_heat_share.name = "district heat share"
return district_heat_share
def build_eea_co2(input_co2, year=1990, emissions_scope="CO2"): def build_eea_co2(input_co2, year=1990, emissions_scope="CO2"):
@ -750,6 +758,9 @@ if __name__ == "__main__":
energy = build_energy_totals(countries, eurostat, swiss, idees) energy = build_energy_totals(countries, eurostat, swiss, idees)
energy.to_csv(snakemake.output.energy_name) energy.to_csv(snakemake.output.energy_name)
district_heat_share = build_district_heat_share(idees)
district_heat_share.to_csv(snakemake.output.district_heat_share)
base_year_emissions = params["base_emissions_year"] base_year_emissions = params["base_emissions_year"]
emissions_scope = snakemake.params.energy["emissions"] emissions_scope = snakemake.params.energy["emissions"]
eea_co2 = build_eea_co2(snakemake.input.co2, base_year_emissions, emissions_scope) eea_co2 = build_eea_co2(snakemake.input.co2, base_year_emissions, emissions_scope)