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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)
Esempio n. 7
0
 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)