"""Data cleaning code and configuration for T009."""fromfunctoolsimportlru_cache#: Fetch directly from the source, or cache.FETCH=True#: iTEM data flow matching the data from this source.DATAFLOW="STOCK"COMMON_DIMS=dict(mode="Road",source="United Nations Economic Commission for Europe",variable="Stock",unit="10^3 vehicle",)COLUMNS=dict(rename=dict(country_name="Country",date="TIME_PERIOD",type_of_vehicle_name="VEHICLE",value="VALUE",),)
[docs]@lru_cache()defmap_service(value):"""Determine 'service' dimension based on a vehicle type."""ifvaluein["Light goods road vehicles","Lorries (vehicle wt over 3500 kg)","Road tractors",]:return"F"elifvaluein["Motor coaches, buses and trolleybuses","Passenger cars"]:return"P"else:raiseValueError(value)
[docs]defprocess(df):"""Process input data for data set T009. - Assign “SERVICE” based on “VEHICLE” values. - Assign “TECHNOLOGY” by stripping "- " prefix from “fuel_type_name” values. """return(df.rename(columns=COLUMNS["rename"]).assign(SERVICE=lambdadf_:df_["VEHICLE"].apply(map_service),TECHNOLOGY=lambdadf_:df_["fuel_type_name"].str.lstrip("- ").replace({"Total":"_T"}),).drop(columns=["fuel_type_name"]))