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']