예제 #1
0
    def test_resample_to_quarterly(self):
        for month in MONTHS:
            ts = simple_period_range_series('1990',
                                            '1992',
                                            freq='A-%s' % month)
            quar_ts = ts.resample('Q-%s' % month).ffill()

            stamps = ts.to_timestamp('D', how='start')
            qdates = period_range(ts.index[0].asfreq('D', 'start'),
                                  ts.index[-1].asfreq('D', 'end'),
                                  freq='Q-%s' % month)

            expected = stamps.reindex(qdates.to_timestamp('D', 's'),
                                      method='ffill')
            expected.index = qdates

            assert_series_equal(quar_ts, expected)

        # conforms, but different month
        ts = simple_period_range_series('1990', '1992', freq='A-JUN')

        for how in ['start', 'end']:
            result = ts.resample('Q-MAR', convention=how).ffill()
            expected = ts.asfreq('Q-MAR', how=how)
            expected = expected.reindex(result.index, method='ffill')

            # .to_timestamp('D')
            # expected = expected.resample('Q-MAR').ffill()

            assert_series_equal(result, expected)
예제 #2
0
    def test_upsample_daily_business_daily(self):
        ts = simple_period_range_series('1/1/2000', '2/1/2000', freq='B')

        result = ts.resample('D').asfreq()
        expected = ts.asfreq('D').reindex(period_range('1/3/2000', '2/1/2000'))
        assert_series_equal(result, expected)

        ts = simple_period_range_series('1/1/2000', '2/1/2000')
        result = ts.resample('H', convention='s').asfreq()
        exp_rng = period_range('1/1/2000', '2/1/2000 23:00', freq='H')
        expected = ts.asfreq('H', how='s').reindex(exp_rng)
        assert_series_equal(result, expected)
예제 #3
0
 def test_weekly_upsample(self, day, target, convention):
     freq = 'W-{day}'.format(day=day)
     ts = simple_period_range_series('1/1/1990', '12/31/1995', freq=freq)
     result = ts.resample(target, convention=convention).ffill()
     expected = result.to_timestamp(target, how=convention)
     expected = expected.asfreq(target, 'ffill').to_period()
     assert_series_equal(result, expected)
예제 #4
0
 def test_quarterly_upsample(self, month, target, convention):
     freq = 'Q-{month}'.format(month=month)
     ts = simple_period_range_series('1/1/1990', '12/31/1995', freq=freq)
     result = ts.resample(target, convention=convention).ffill()
     expected = result.to_timestamp(target, how=convention)
     expected = expected.asfreq(target, 'ffill').to_period()
     assert_series_equal(result, expected)
예제 #5
0
 def test_not_subperiod(self):
     # These are incompatible period rules for resampling
     ts = simple_period_range_series('1/1/1990', '6/30/1995', freq='w-wed')
     pytest.raises(ValueError, lambda: ts.resample('a-dec').mean())
     pytest.raises(ValueError, lambda: ts.resample('q-mar').mean())
     pytest.raises(ValueError, lambda: ts.resample('M').mean())
     pytest.raises(ValueError, lambda: ts.resample('w-thu').mean())
예제 #6
0
    def test_basic_upsample(self, freq):
        ts = simple_period_range_series('1/1/1990', '6/30/1995', freq='M')
        result = ts.resample('a-dec').mean()

        resampled = result.resample(freq, convention='end').ffill()
        expected = result.to_timestamp(freq, how='end')
        expected = expected.asfreq(freq, 'ffill').to_period(freq)
        assert_series_equal(resampled, expected)
예제 #7
0
    def _check_annual_upsample_cases(self, targ, conv, meth, end='12/31/1991'):
        for month in MONTHS:
            ts = simple_period_range_series('1/1/1990',
                                            end,
                                            freq='A-%s' % month)

            result = getattr(ts.resample(targ, convention=conv), meth)()
            expected = result.to_timestamp(targ, how=conv)
            expected = expected.asfreq(targ, meth).to_period()
            assert_series_equal(result, expected)
예제 #8
0
    def test_basic_downsample(self):
        ts = simple_period_range_series('1/1/1990', '6/30/1995', freq='M')
        result = ts.resample('a-dec').mean()

        expected = ts.groupby(ts.index.year).mean()
        expected.index = period_range('1/1/1990', '6/30/1995', freq='a-dec')
        assert_series_equal(result, expected)

        # this is ok
        assert_series_equal(ts.resample('a-dec').mean(), result)
        assert_series_equal(ts.resample('a').mean(), result)
예제 #9
0
    def test_annual_upsample(self):
        ts = simple_period_range_series('1/1/1990', '12/31/1995', freq='A-DEC')
        df = DataFrame({'a': ts})
        rdf = df.resample('D').ffill()
        exp = df['a'].resample('D').ffill()
        assert_series_equal(rdf['a'], exp)

        rng = period_range('2000', '2003', freq='A-DEC')
        ts = Series([1, 2, 3, 4], index=rng)

        result = ts.resample('M').ffill()
        ex_index = period_range('2000-01', '2003-12', freq='M')

        expected = ts.asfreq('M', how='start').reindex(ex_index,
                                                       method='ffill')
        assert_series_equal(result, expected)
예제 #10
0
    def test_resample_to_timestamps(self):
        ts = simple_period_range_series('1/1/1990', '12/31/1995', freq='M')

        result = ts.resample('A-DEC', kind='timestamp').mean()
        expected = ts.to_timestamp(how='start').resample('A-DEC').mean()
        assert_series_equal(result, expected)
예제 #11
0
 def test_monthly_upsample(self, target, convention):
     ts = simple_period_range_series('1/1/1990', '12/31/1995', freq='M')
     result = ts.resample(target, convention=convention).ffill()
     expected = result.to_timestamp(target, how=convention)
     expected = expected.asfreq(target, 'ffill').to_period()
     assert_series_equal(result, expected)