示例#1
0
    def test_hdfstore_timeseries_manager_sorted(self, tmpdir):
        """Check hdfstore returns a sorted index dataframe"""
        t_start1 = dt.datetime(2017, 1, 1)
        t_end1 = dt.datetime(2017, 1, 6)
        index1 = pd.date_range(t_start1, t_end1, freq='D', closed='left')
        t_start2 = dt.datetime(2017, 1, 3)
        t_end2 = dt.datetime(2017, 1, 5)
        index2 = pd.date_range(t_start2, t_end2, freq='D', closed='left')
        df1 = pd.DataFrame({'data': range(len(index1))}, index=index1)
        df2 = pd.DataFrame({'data': range(len(index2))}, index=index2)

        mgr = HDFStoreTimeseriesMgr(str(tmpdir))
        mgr.set('test', 'df', Timeseries.from_dataframe(df1))
        mgr.set('test', 'df', Timeseries.from_dataframe(df2))
        ts_out = mgr.get('test', 'df', t_start=t_start1, t_end=t_end1)
        assert ts_out.dataframe.index.equals(index1)
示例#2
0
def tsload(data_list):
    """Deserialize timeseries values from a dict to a structured DataFrame.

    :param list data_list: Timeseries values (as a list of dicts).
    :return Timeseries: Timeseries values loaded in structured DataFrame.
    """
    if not data_list:
        return Timeseries()

    # Create dataframe and rename columns
    dataframe = pd.DataFrame(data_list)
    dataframe = dataframe.rename(
        columns={
            'timestamp': Timeseries.TIMESTAMPS_COL,
            'value': Timeseries.DATA_COL,
            'update_ts': Timeseries.UPDATE_TIMESTAMP_COL,
            'quality': Timeseries.QUALITY_COL,
        })

    # Reject if duplicate indexes
    dups = dataframe[Timeseries.TIMESTAMPS_COL].duplicated()
    if any(dups):
        abort(422,
              errors={
                  'data':
                  '{} duplicate indexe(s)'.format(np.count_nonzero(dups))
              })

    # Create and return timeseries
    return Timeseries.from_dataframe(dataframe)
示例#3
0
 def test_timeseries_stats(self):
     index = [
         dt.datetime(2017, 1, 5),
         dt.datetime(2017, 1, 1),
         dt.datetime(2017, 1, 8),
         dt.datetime(2017, 1, 3),
     ]
     data = [1, 2, 3, 4]
     df = pd.DataFrame({'data': data}, index=index)
     ts = Timeseries.from_dataframe(df)
     assert ts.stats() == {
         'count': 4,
         'start': dt.datetime(2017, 1, 1),
         'end': dt.datetime(2017, 1, 8),
         'update_ts': ts.dataframe[Timeseries.UPDATE_TIMESTAMP_COL].max()
     }