def test_adjust_timeseries_for_interval_label_no_tz(): test_data = TEST_DATA.tz_localize(None) label = None start = pd.Timestamp('2019-01-24T00:00Z') end = pd.Timestamp('2019-01-24T00:04Z') with pytest.raises(ValueError): utils.adjust_timeseries_for_interval_label(test_data, label, start, end)
def test_adjust_timeseries_for_interval_label_no_tz_empty(): test_data = pd.DataFrame() label = None start = pd.Timestamp('2019-01-24T00:00Z') end = pd.Timestamp('2019-01-24T00:04Z') out = utils.adjust_timeseries_for_interval_label(test_data, label, start, end) pdt.assert_frame_equal(test_data, out)
def get_observation_values(self, observation_id, start, end, interval_label=None): """ Get observation values from start to end for observation_id from the API Parameters ---------- observation_id : string UUID of the observation object. start : timelike object Start time in interval to retrieve values for end : timelike object End time of the interval interval_label : str or None If beginning, ending, adjust the data to return only data that is valid between start and end. If None or instant, return any data between start and end inclusive of the endpoints. Returns ------- pandas.DataFrame With a datetime index and (value, quality_flag) columns Raises ------ ValueError If start or end cannot be converted into a Pandas Timestamp """ req = self.get(f'/observations/{observation_id}/values', params={ 'start': start, 'end': end }) out = json_payload_to_observation_df(req.json()) return adjust_timeseries_for_interval_label(out, interval_label, start, end)
def get_forecast_values(self, forecast_id, start, end, interval_label=None): """ Get forecast values from start to end for forecast_id Parameters ---------- forecast_id : string UUID of the forecast object start : timelike object Start of the interval to retrieve values for end : timelike object End of the interval interval_label : str or None If beginning, ending, adjust the data to return only data that is valid between start and end. If None or instant, return any data between start and end inclusive of the endpoints. Returns ------- pandas.Series With the forecast values and a datetime index Raises ------ ValueError If start or end cannot be converted into a Pandas Timestamp """ req = self.get(f'/forecasts/single/{forecast_id}/values', params={ 'start': start, 'end': end }) out = json_payload_to_forecast_series(req.json()) return adjust_timeseries_for_interval_label(out, interval_label, start, end)
def test_adjust_timeseries_for_interval_label_series(label, exp): start = pd.Timestamp('2019-01-24T00:00Z') end = pd.Timestamp('2019-01-24T00:04Z') out = utils.adjust_timeseries_for_interval_label(TEST_DATA['value'], label, start, end) pdt.assert_series_equal(exp, out)
def test_adjust_timeseries_for_interval_label(label, exp, start, end): start = start or pd.Timestamp('2019-01-24T00:00Z') end = end or pd.Timestamp('2019-01-24T00:04Z') out = utils.adjust_timeseries_for_interval_label(TEST_DATA, label, start, end) pdt.assert_frame_equal(exp, out)
def load_data(observation, data_start, data_end): data = obs_data.loc[data_start:data_end] return adjust_timeseries_for_interval_label(data, observation.interval_label, data_start, data_end)