DegreeDayFeatures
Compute degree-day features (HDD/CDD) from daily temperatures.
Computes Heating Degree Days (HDD) and Cooling Degree Days (CDD) from daily temperature inputs.
Degree days convert temperature into a simple proxy for heating/cooling demand by measuring how far a day’s mean temperature is from a base (balance-point) temperature.
transform returns a DataFrame with column names hdd and cdd, indexed the same as the input. If return_tmean=True, also includes a tmean column.
Definitions (daily):
tmean = (tmax + tmin) / 2hdd = max(0, base_temp - tmean)cdd = max(0, tmean - base_temp)
Supports two input modes:
If no column names are provided via
tmax_col,tmin_col, ortmean_col: 1 column is treated as mean temperature (tmean); 2+ columns use the first two columns as (tmax,tmin).If column names are provided, the transformer uses those columns.
Schnellstart
from sktime.transformations.degree_day import DegreeDayFeatures
estimator = DegreeDayFeatures(base_temp: float=65.0, tmax_col: str | None=None, tmin_col: str | None=None, tmean_col: str | None=None, return_tmean: bool=True, strict: bool=False, keep_original_columns: bool=False)Parameter(6)
- base_tempfloat, default=65.0
- Base (balance-point) temperature in the same units as the input.
- tmax_col, tmin_colstr or None, default=None
- Column names for daily max/min temperature. If both provided, uses them.
- tmean_colstr or None, default=None
- Column name for mean temperature. If provided and present, uses it.
- return_tmeanbool, default=True
- If True, include tmean in the output.
- strictbool, default=False
- If True, raises when tmin > tmax; if False, auto-swaps those rows.
- keep_original_columnsbool, default=False
- If True, appends features to X. If False, returns only features.
Beispiele
Basic usage with explicit max/min temperature columns: import pandas as pd from sktime.transformations.degree_day import DegreeDayFeatures X = pd.DataFrame(… {“high”: [60, 70, 90], “low”: [40, 60, 70]}, … index=pd.to_datetime([“2025-01-01”, “2025-01-02”, “2025-01-03”]), …) tx = DegreeDayFeatures(base_temp=65.0, tmax_col=”high”, tmin_col=”low”) tx.fit_transform(X)[[“hdd”, “cdd”]].round(1) hdd cdd 2025-01-01 15.0 0.0 2025-01-02 0.0 0.0 2025-01-03 0.0 15.0 Auto mode: if X has a single column, it is treated as mean temperature (tmean): X_mean = pd.DataFrame(… {“temp”: [50.0, 65.0, 80.0]}, … index=pd.to_datetime([“2025-01-01”, “2025-01-02”, “2025-01-03”]), …) DegreeDayFeatures(base_temp=65.0, return_tmean=False).fit_transform(X_mean) hdd cdd 2025-01-01 15.0 0.0 2025-01-02 0.0 0.0 2025-01-03 0.0 15.0 Append features to the original data using keep_original_columns=True: DegreeDayFeatures(… base_temp=65.0, tmax_col=”high”, tmin_col=”low”, keep_original_columns=True …).fit_transform(X).columns.tolist() [‘high’, ‘low’, ‘tmean’, ‘hdd’, ‘cdd’]