add eurostat data for GB agriculture
This commit is contained in:
parent
0e1e509006
commit
53bbc28908
@ -55,6 +55,21 @@ logger = logging.getLogger(__name__)
|
|||||||
idx = pd.IndexSlice
|
idx = pd.IndexSlice
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# from JRC-2021 methodology p.58
|
||||||
|
agriculture_idees_eurostat_mapping = {
|
||||||
|
"Solids": ["C0000X0350-0370", "P1000", "S2000"],
|
||||||
|
"LPG": ["O4630"],
|
||||||
|
"Diesel oil and liquid biofuels": ["O4671XR5220B", "R5210P", "R5210B", "R5220P", "R5220B", "R5230P", "R5230B", "R5290"],
|
||||||
|
"Fuel oil and other liquids": ["O4680", "O4100_TOT_4200-4500XBIO", "O4652XR5210B", "O4651", "O4653", "O4661XR5230B", "O4669", "O4640", "O4691", "O4692", "O4695", "O4694", "O4693", "O4699"],
|
||||||
|
"Natural gas and biogas": ["G3000", "C0350-0370", "R5300"],
|
||||||
|
"Biomass and waste": ["R5110-5150_W6000RI", "R5160", "W6210", "W6100_6220"],
|
||||||
|
"Solar and geothermal": ["RA200", "RA410"],
|
||||||
|
"Ambient heat": ["RA600"],
|
||||||
|
"Distributed heat": ["H8000"],
|
||||||
|
"Electricity": ["E7000"]
|
||||||
|
}
|
||||||
|
|
||||||
def cartesian(s1: pd.Series, s2: pd.Series) -> pd.DataFrame:
|
def cartesian(s1: pd.Series, s2: pd.Series) -> pd.DataFrame:
|
||||||
"""
|
"""
|
||||||
Compute the Cartesian product of two pandas Series.
|
Compute the Cartesian product of two pandas Series.
|
||||||
@ -648,6 +663,33 @@ def build_energy_totals(
|
|||||||
df = pd.concat([df.drop("CH", errors="ignore"), swiss]).sort_index()
|
df = pd.concat([df.drop("CH", errors="ignore"), swiss]).sort_index()
|
||||||
|
|
||||||
# get values for missing countries based on Eurostat EnergyBalances
|
# get values for missing countries based on Eurostat EnergyBalances
|
||||||
|
|
||||||
|
# agriculture
|
||||||
|
|
||||||
|
to_fill = df.index[
|
||||||
|
df["total agriculture"].isna()
|
||||||
|
& df.index.get_level_values("country").isin(eurostat_countries)
|
||||||
|
]
|
||||||
|
c = to_fill.get_level_values("country")
|
||||||
|
y = to_fill.get_level_values("year")
|
||||||
|
|
||||||
|
# take total final energy consumption from Eurostat
|
||||||
|
eurostat_sector = 'Agriculture & forestry'
|
||||||
|
slicer = idx[c, y, :, :, eurostat_sector]
|
||||||
|
|
||||||
|
fill_values = eurostat.loc[slicer]["Total all products"].groupby(level=[0,1]).sum()
|
||||||
|
# fill missing years for some countries by mean over the other years
|
||||||
|
means = fill_values.groupby(level='country').transform('mean')
|
||||||
|
fill_values = fill_values.where(fill_values != 0, means)
|
||||||
|
|
||||||
|
# split into end uses by average EU data from IDEES
|
||||||
|
uses = ["electricity", "heat", "machinery"]
|
||||||
|
|
||||||
|
for use in uses:
|
||||||
|
avg = (idees["total agriculture electricity"]
|
||||||
|
/idees["total agriculture"]).mean()
|
||||||
|
df.loc[to_fill, f"total agriculture {use}"] = df.loc[to_fill, "total agriculture"] * avg
|
||||||
|
|
||||||
# divide cooking/space/water according to averages in EU28
|
# divide cooking/space/water according to averages in EU28
|
||||||
|
|
||||||
uses = ["space", "cooking", "water"]
|
uses = ["space", "cooking", "water"]
|
||||||
|
Loading…
Reference in New Issue
Block a user