from item.historical import OUTPUT_PATH
from item.util import convert_units
[docs]def compute(activity, stock):
"""Quality diagnostic for freight load factor.
Returns the ratio of road freight traffic from :mod:`.T003` and the total number
of freight vehicles from :mod:`.T009`.
Parameters
----------
activity : pandas.DataFrame
From :mod:`.T003`.
stock : pandas.DataFrame
From :mod:`.T009`.
"""
spacetime = ["REF_AREA", "TIME_PERIOD"]
# Select activity
activity = activity.query("MODE == 'Road' and VEHICLE == '_T'").set_index(spacetime)
# Select stock
mask = stock.FUEL.isin(["_Z"]) & stock.VEHICLE.isin(
[
"Light goods road vehicles",
"Lorries (vehicle wt over 3500 kg)",
"Road tractors",
]
)
stock = stock[mask].groupby(spacetime).sum(numeric_only=True)
df = (
# Compute ratio, drop nulls
(activity["VALUE"] / stock["VALUE"])
.dropna()
# Restore column names, for convert_units()
.rename("VALUE")
.reset_index()
.assign(VARIABLE="Load factor", SERVICE="F", MODE="Road")
# To preferred units
.pipe(convert_units, "Gt km / year / kvehicle", "kt km / year / vehicle")
)
# Save output before returning
df.to_csv(OUTPUT_PATH / "A003.csv")
return df