def test_compute_occupancy_feature(even_occupancy): index = pd.date_range("2017-01-01", periods=1000, freq="H", tz="UTC") time_features = compute_time_features(index, hour_of_week=True) hour_of_week = time_features.hour_of_week occupancy = compute_occupancy_feature(hour_of_week, even_occupancy) assert occupancy.name == "occupancy" assert occupancy.shape == (1000, ) assert occupancy.sum().sum() == 500
def test_compute_occupancy_feature_hour_of_week_has_nan(even_occupancy): index = pd.date_range("2017-01-01", periods=72, freq="H", tz="UTC") time_features = compute_time_features(index, hour_of_week=True) hour_of_week = time_features.hour_of_week hour_of_week.iloc[-1] = np.nan occupancy = compute_occupancy_feature(hour_of_week, even_occupancy) assert occupancy.name == "occupancy" assert occupancy.shape == (72, ) assert occupancy.sum() == 36
def test_compute_occupancy_feature_with_nans(even_occupancy): """If there are less than 168 periods, the NaN at the end causes problems""" index = pd.date_range("2017-01-01", periods=100, freq="H", tz="UTC") time_features = compute_time_features(index, hour_of_week=True) hour_of_week = time_features.hour_of_week hour_of_week[-1] = np.nan # comment out line below to see the error from not dropping na when # calculationg _add_weights when there are less than 168 periods. # TODO (ssuffian): Refactor so get_missing_hours_warnings propogates. # right now, it will error if the dropna below isn't used. hour_of_week.dropna(inplace=True) occupancy = compute_occupancy_feature(hour_of_week, even_occupancy)