Ejemplo n.º 1
0
    def test_frequency_misc(self):
        assert (resolution.get_freq_group('T') == frequencies.FreqGroup.FR_MIN)

        code, stride = frequencies.get_freq_code(offsets.Hour())
        assert code == frequencies.FreqGroup.FR_HR

        code, stride = frequencies.get_freq_code((5, 'T'))
        assert code == frequencies.FreqGroup.FR_MIN
        assert stride == 5

        offset = offsets.Hour()
        result = frequencies.to_offset(offset)
        assert result == offset

        result = frequencies.to_offset((5, 'T'))
        expected = offsets.Minute(5)
        assert result == expected

        with tm.assert_raises_regex(ValueError, 'Invalid frequency'):
            frequencies.get_freq_code((5, 'baz'))

        with tm.assert_raises_regex(ValueError, 'Invalid frequency'):
            frequencies.to_offset('100foo')

        with tm.assert_raises_regex(ValueError, 'Could not evaluate'):
            frequencies.to_offset(('', ''))

        with tm.assert_produces_warning(FutureWarning, check_stacklevel=False):
            result = frequencies.get_standard_freq(offsets.Hour())
        assert result == 'H'
Ejemplo n.º 2
0
    def test_with_tz_ambiguous_times(self):
        tz = self.tz('US/Eastern')

        # March 13, 2011, spring forward, skip from 2 AM to 3 AM
        dr = date_range(datetime(2011, 3, 13, 1, 30),
                        periods=3,
                        freq=offsets.Hour())
        pytest.raises(pytz.NonExistentTimeError, dr.tz_localize, tz)

        # after dst transition, it works
        dr = date_range(datetime(2011, 3, 13, 3, 30),
                        periods=3,
                        freq=offsets.Hour(),
                        tz=tz)

        # November 6, 2011, fall back, repeat 2 AM hour
        dr = date_range(datetime(2011, 11, 6, 1, 30),
                        periods=3,
                        freq=offsets.Hour())
        pytest.raises(pytz.AmbiguousTimeError, dr.tz_localize, tz)

        # UTC is OK
        dr = date_range(datetime(2011, 3, 13),
                        periods=48,
                        freq=offsets.Minute(30),
                        tz=pytz.utc)
Ejemplo n.º 3
0
    def test_frequency_misc(self):
        assert (resolution.get_freq_group('T') ==
                frequencies.FreqGroup.FR_MIN)

        code, stride = frequencies.get_freq_code(offsets.Hour())
        assert code == frequencies.FreqGroup.FR_HR

        code, stride = frequencies.get_freq_code((5, 'T'))
        assert code == frequencies.FreqGroup.FR_MIN
        assert stride == 5

        offset = offsets.Hour()
        result = frequencies.to_offset(offset)
        assert result == offset

        result = frequencies.to_offset((5, 'T'))
        expected = offsets.Minute(5)
        assert result == expected

        with pytest.raises(ValueError, match='Invalid frequency'):
            frequencies.get_freq_code((5, 'baz'))

        with pytest.raises(ValueError, match='Invalid frequency'):
            frequencies.to_offset('100foo')

        with pytest.raises(ValueError, match='Could not evaluate'):
            frequencies.to_offset(('', ''))
def data_range_test():
  times = pd.date_range('2019-01-01', '2019-02-01', )
  print('指定开始、结束,默认频率为每天 \r\n', times)
  times = pd.date_range(start='2019-01-01', periods=10)
  print('指定日期数量的日期范围 \r\n', times)
  times = pd.date_range(start='2019-01-01', periods=10, freq='M')
  print('使用日期偏移量的日期范围 (每月) \r\n', times)
  times = pd.date_range(start='2019-01-01 10:00:00', periods=10)
  print('带时间信息的日期范围 \r\n', times)
  times = pd.date_range(start='2019-01-01 10:00:00', periods=10, normalize=True)
  print('规范化参数产生的日期范围 将时间变成00:00:00\r\n', times)
  times = pd.date_range(start='2019-01-01', periods=10, freq='4h')
  print('频率 每4小时\r\n', times)
  times = pd.date_range(start='2019-01-01', periods=10, freq='2h30min')
  print('频率 每2h30min小时\r\n', times)
  times = pd.date_range(start='2019-01-01', periods=10, freq='wom-3FRI')
  print('频率 每个月的第3个星期五\r\n', times)

  hour = offset.Hour()
  times = pd.date_range(start='2019-01-01', periods=10, freq=hour)
  print('使用日期偏移量类 每小时 \r\n', times)
  hour = offset.Hour(4)
  times = pd.date_range(start='2019-01-01', periods=10, freq=hour)
  print('使用日期偏移量类 每4小时 \r\n', times)
  mins = offset.Minute(30)
  times = pd.date_range(start='2019-01-01', periods=10, freq=hour + mins)
  print('使用日期偏移量类 每4小时30分 \r\n', times)
Ejemplo n.º 5
0
def test_is_superperiod_subperiod():
    assert (frequencies.is_superperiod(offsets.YearEnd(), offsets.MonthEnd()))
    assert (frequencies.is_subperiod(offsets.MonthEnd(), offsets.YearEnd()))

    assert (frequencies.is_superperiod(offsets.Hour(), offsets.Minute()))
    assert (frequencies.is_subperiod(offsets.Minute(), offsets.Hour()))

    assert (frequencies.is_superperiod(offsets.Second(), offsets.Milli()))
    assert (frequencies.is_subperiod(offsets.Milli(), offsets.Second()))

    assert (frequencies.is_superperiod(offsets.Milli(), offsets.Micro()))
    assert (frequencies.is_subperiod(offsets.Micro(), offsets.Milli()))

    assert (frequencies.is_superperiod(offsets.Micro(), offsets.Nano()))
    assert (frequencies.is_subperiod(offsets.Nano(), offsets.Micro()))
Ejemplo n.º 6
0
    def test_nat(self):
        # GH 5546
        dates = [NaT]
        idx = DatetimeIndex(dates)
        idx = idx.tz_localize('US/Pacific')
        self.assert_(idx.equals(DatetimeIndex(dates, tz='US/Pacific')))
        idx = idx.tz_convert('US/Eastern')
        self.assert_(idx.equals(DatetimeIndex(dates, tz='US/Eastern')))
        idx = idx.tz_convert('UTC')
        self.assert_(idx.equals(DatetimeIndex(dates, tz='UTC')))

        dates = ['2010-12-01 00:00', '2010-12-02 00:00', NaT]
        idx = DatetimeIndex(dates)
        idx = idx.tz_localize('US/Pacific')
        self.assert_(idx.equals(DatetimeIndex(dates, tz='US/Pacific')))
        idx = idx.tz_convert('US/Eastern')
        expected = ['2010-12-01 03:00', '2010-12-02 03:00', NaT]
        self.assert_(idx.equals(DatetimeIndex(expected, tz='US/Eastern')))

        idx = idx + offsets.Hour(5)
        expected = ['2010-12-01 08:00', '2010-12-02 08:00', NaT]
        self.assert_(idx.equals(DatetimeIndex(expected, tz='US/Eastern')))
        idx = idx.tz_convert('US/Pacific')
        expected = ['2010-12-01 05:00', '2010-12-02 05:00', NaT]
        self.assert_(idx.equals(DatetimeIndex(expected, tz='US/Pacific')))

        if not _np_version_under1p7:
            idx = idx + np.timedelta64(3, 'h')
            expected = ['2010-12-01 08:00', '2010-12-02 08:00', NaT]
            self.assert_(idx.equals(DatetimeIndex(expected, tz='US/Pacific')))

            idx = idx.tz_convert('US/Eastern')
            expected = ['2010-12-01 11:00', '2010-12-02 11:00', NaT]
            self.assert_(idx.equals(DatetimeIndex(expected, tz='US/Eastern')))
Ejemplo n.º 7
0
    def test_nat(self):
        # GH 5546
        dates = [NaT]
        idx = DatetimeIndex(dates)
        idx = idx.tz_localize('US/Pacific')
        tm.assert_index_equal(idx, DatetimeIndex(dates, tz='US/Pacific'))
        idx = idx.tz_convert('US/Eastern')
        tm.assert_index_equal(idx, DatetimeIndex(dates, tz='US/Eastern'))
        idx = idx.tz_convert('UTC')
        tm.assert_index_equal(idx, DatetimeIndex(dates, tz='UTC'))

        dates = ['2010-12-01 00:00', '2010-12-02 00:00', NaT]
        idx = DatetimeIndex(dates)
        idx = idx.tz_localize('US/Pacific')
        tm.assert_index_equal(idx, DatetimeIndex(dates, tz='US/Pacific'))
        idx = idx.tz_convert('US/Eastern')
        expected = ['2010-12-01 03:00', '2010-12-02 03:00', NaT]
        tm.assert_index_equal(idx, DatetimeIndex(expected, tz='US/Eastern'))

        idx = idx + offsets.Hour(5)
        expected = ['2010-12-01 08:00', '2010-12-02 08:00', NaT]
        tm.assert_index_equal(idx, DatetimeIndex(expected, tz='US/Eastern'))
        idx = idx.tz_convert('US/Pacific')
        expected = ['2010-12-01 05:00', '2010-12-02 05:00', NaT]
        tm.assert_index_equal(idx, DatetimeIndex(expected, tz='US/Pacific'))

        idx = idx + np.timedelta64(3, 'h')
        expected = ['2010-12-01 08:00', '2010-12-02 08:00', NaT]
        tm.assert_index_equal(idx, DatetimeIndex(expected, tz='US/Pacific'))

        idx = idx.tz_convert('US/Eastern')
        expected = ['2010-12-01 11:00', '2010-12-02 11:00', NaT]
        tm.assert_index_equal(idx, DatetimeIndex(expected, tz='US/Eastern'))
Ejemplo n.º 8
0
    def test_with_tz(self):
        tz = self.tz('US/Central')

        # just want it to work
        start = datetime(2011, 3, 12, tzinfo=pytz.utc)
        dr = bdate_range(start, periods=50, freq=offsets.Hour())
        assert dr.tz is pytz.utc

        # DateRange with naive datetimes
        dr = bdate_range('1/1/2005', '1/1/2009', tz=pytz.utc)
        dr = bdate_range('1/1/2005', '1/1/2009', tz=tz)

        # normalized
        central = dr.tz_convert(tz)
        assert central.tz is tz
        comp = self.localize(
            tz, central[0].to_pydatetime().replace(tzinfo=None)).tzinfo
        assert central[0].tz is comp

        # compare vs a localized tz
        comp = self.localize(tz,
                             dr[0].to_pydatetime().replace(tzinfo=None)).tzinfo
        assert central[0].tz is comp

        # datetimes with tzinfo set
        dr = bdate_range(datetime(2005, 1, 1, tzinfo=pytz.utc),
                         datetime(2009, 1, 1, tzinfo=pytz.utc))

        pytest.raises(Exception,
                      bdate_range,
                      datetime(2005, 1, 1, tzinfo=pytz.utc),
                      '1/1/2009',
                      tz=tz)
Ejemplo n.º 9
0
    def _construct_bt_dt_index(self):
        """ constructs the t0 dates index that runs from t0 to T
        if the price series is longer than the weights series use the the l
        The function takes the weights index and prepends it either with the last available previous date from the
        price index or else prepends t1 with a timedelta """
        dt_t0_tmp = self.price_date_index.copy()
        # where is first date
        first_weight_date = self.trading_dt_index[0]

        if dt_t0_tmp[0] < first_weight_date:
            # prices start before first weight date, bt index starts at date closest to weight date start
            # initialization date t0 is the date closest to the date of the first weight t1
            initialization_date_index = dt_t0_tmp.get_loc(first_weight_date) - 1
            dates_t0_index = dt_t0_tmp[initialization_date_index:]

        else:
            freq = self.frequency
            if freq == 'B':
                initialization_date = dt_t0_tmp[0] - time_offset.BDay(1)
            elif freq == 'D':
                initialization_date = dt_t0_tmp[0] - time_offset.Day(1)
            elif freq == 'min':
                initialization_date = dt_t0_tmp[0] - time_offset.Minute(1)
            elif freq == 'H':
                initialization_date = dt_t0_tmp[0] - time_offset.Hour(1)
            else:
                import pdb
                pdb.set_trace()
                assert freq == 'S'
                initialization_date = dt_t0_tmp[0] - time_offset.Second(1)
            # prepend index with "artificial" first datetime; interval chosen to match frequency of price index
            dates_t0_index = dt_t0_tmp.append(pd.DatetimeIndex([initialization_date])).sort_values()
        return dates_t0_index
Ejemplo n.º 10
0
    def test_tzaware_offset(self):
        dates = date_range('2012-11-01', periods=3, tz='US/Pacific')
        offset = dates + offsets.Hour(5)
        self.assertEqual(dates[0] + offsets.Hour(5), offset[0])

        # GH 6818
        for tz in ['UTC', 'US/Pacific', 'Asia/Tokyo']:
            dates = date_range('2010-11-01 00:00', periods=3, tz=tz, freq='H')
            expected = DatetimeIndex(['2010-11-01 05:00', '2010-11-01 06:00',
                                      '2010-11-01 07:00'], freq='H', tz=tz)

            offset = dates + offsets.Hour(5)
            self.assertTrue(offset.equals(expected))
            offset = dates + np.timedelta64(5, 'h')
            self.assertTrue(offset.equals(expected))
            offset = dates + timedelta(hours=5)
            self.assertTrue(offset.equals(expected))
Ejemplo n.º 11
0
def test_resample_reresample():
    dti = date_range(start=datetime(2005, 1, 1), end=datetime(2005, 1, 10), freq="D")
    s = Series(np.random.rand(len(dti)), dti)
    bs = s.resample("B", closed="right", label="right").mean()
    result = bs.resample("8H").mean()
    assert len(result) == 22
    assert isinstance(result.index.freq, offsets.DateOffset)
    assert result.index.freq == offsets.Hour(8)
Ejemplo n.º 12
0
 def test_resample_reresample(self):
     dti = DatetimeIndex(start=datetime(2005,1,1), end=datetime(2005,1,10),
                         freq='D')
     s = Series(np.random.rand(len(dti)), dti)
     bs = s.resample('B')
     result = bs.resample('8H')
     self.assertEquals(len(result), 22)
     self.assert_(isinstance(result.index.freq, offsets.DateOffset))
     self.assert_(result.index.freq == offsets.Hour(8))
Ejemplo n.º 13
0
    def test_to_offset_multiple(self):
        freqstr = '2h30min'
        freqstr2 = '2h 30min'

        result = frequencies.to_offset(freqstr)
        assert (result == frequencies.to_offset(freqstr2))
        expected = offsets.Minute(150)
        assert (result == expected)

        freqstr = '2h30min15s'
        result = frequencies.to_offset(freqstr)
        expected = offsets.Second(150 * 60 + 15)
        assert (result == expected)

        freqstr = '2h 60min'
        result = frequencies.to_offset(freqstr)
        expected = offsets.Hour(3)
        assert (result == expected)

        freqstr = '15l500u'
        result = frequencies.to_offset(freqstr)
        expected = offsets.Micro(15500)
        assert (result == expected)

        freqstr = '10s75L'
        result = frequencies.to_offset(freqstr)
        expected = offsets.Milli(10075)
        assert (result == expected)

        freqstr = '2800N'
        result = frequencies.to_offset(freqstr)
        expected = offsets.Nano(2800)
        assert (result == expected)

        freqstr = '2SM'
        result = frequencies.to_offset(freqstr)
        expected = offsets.SemiMonthEnd(2)
        assert (result == expected)

        freqstr = '2SM-16'
        result = frequencies.to_offset(freqstr)
        expected = offsets.SemiMonthEnd(2, day_of_month=16)
        assert (result == expected)

        freqstr = '2SMS-14'
        result = frequencies.to_offset(freqstr)
        expected = offsets.SemiMonthBegin(2, day_of_month=14)
        assert (result == expected)

        freqstr = '2SMS-15'
        result = frequencies.to_offset(freqstr)
        expected = offsets.SemiMonthBegin(2)
        assert (result == expected)

        # malformed
        with tm.assertRaisesRegexp(ValueError, 'Invalid frequency: 2h20m'):
            frequencies.to_offset('2h20m')
Ejemplo n.º 14
0
def csv_to_df(csv):
    usdjpy = csv[csv['<TICKER>'] == 'USDJPY']
    del usdjpy['<TICKER>']
    usdjpy.index = pd.to_datetime(usdjpy['<DTYYYYMMDD>'].map(str) + usdjpy['<TIME>'].map(lambda x: "{0:06d}".format(x)))
    usdjpy.index += offsets.Hour(8)
    del usdjpy['<DTYYYYMMDD>']
    del usdjpy['<TIME>']
    usdjpy.columns = ['Open', 'High', 'Low', 'Close']
    return usdjpy
Ejemplo n.º 15
0
    def test_to_offset_invalid(self):
        # GH 13930
        with tm.assert_raises_regex(ValueError, 'Invalid frequency: U1'):
            frequencies.to_offset('U1')
        with tm.assert_raises_regex(ValueError, 'Invalid frequency: -U'):
            frequencies.to_offset('-U')
        with tm.assert_raises_regex(ValueError, 'Invalid frequency: 3U1'):
            frequencies.to_offset('3U1')
        with tm.assert_raises_regex(ValueError, 'Invalid frequency: -2-3U'):
            frequencies.to_offset('-2-3U')
        with tm.assert_raises_regex(ValueError, 'Invalid frequency: -2D:3H'):
            frequencies.to_offset('-2D:3H')
        with tm.assert_raises_regex(ValueError, 'Invalid frequency: 1.5.0S'):
            frequencies.to_offset('1.5.0S')

        # split offsets with spaces are valid
        assert frequencies.to_offset('2D 3H') == offsets.Hour(51)
        assert frequencies.to_offset('2 D3 H') == offsets.Hour(51)
        assert frequencies.to_offset('2 D 3 H') == offsets.Hour(51)
        assert frequencies.to_offset('  2 D 3 H  ') == offsets.Hour(51)
        assert frequencies.to_offset('   H    ') == offsets.Hour()
        assert frequencies.to_offset(' 3  H    ') == offsets.Hour(3)

        # special cases
        assert frequencies.to_offset('2SMS-15') == offsets.SemiMonthBegin(2)
        with tm.assert_raises_regex(ValueError,
                                    'Invalid frequency: 2SMS-15-15'):
            frequencies.to_offset('2SMS-15-15')
        with tm.assert_raises_regex(ValueError, 'Invalid frequency: 2SMS-15D'):
            frequencies.to_offset('2SMS-15D')
Ejemplo n.º 16
0
    def test_to_offset_invalid(self):
        # GH 13930
        with tm.assertRaisesRegexp(ValueError, 'Invalid frequency: U1'):
            frequencies.to_offset('U1')
        with tm.assertRaisesRegexp(ValueError, 'Invalid frequency: -U'):
            frequencies.to_offset('-U')
        with tm.assertRaisesRegexp(ValueError, 'Invalid frequency: 3U1'):
            frequencies.to_offset('3U1')
        with tm.assertRaisesRegexp(ValueError, 'Invalid frequency: -2-3U'):
            frequencies.to_offset('-2-3U')
        with tm.assertRaisesRegexp(ValueError, 'Invalid frequency: -2D:3H'):
            frequencies.to_offset('-2D:3H')

        # ToDo: Must be fixed in #8419
        with tm.assertRaisesRegexp(ValueError, 'Invalid frequency: .5S'):
            frequencies.to_offset('.5S')

        # split offsets with spaces are valid
        assert frequencies.to_offset('2D 3H') == offsets.Hour(51)
        assert frequencies.to_offset('2 D3 H') == offsets.Hour(51)
        assert frequencies.to_offset('2 D 3 H') == offsets.Hour(51)
        assert frequencies.to_offset('  2 D 3 H  ') == offsets.Hour(51)
        assert frequencies.to_offset('   H    ') == offsets.Hour()
        assert frequencies.to_offset(' 3  H    ') == offsets.Hour(3)

        # special cases
        assert frequencies.to_offset('2SMS-15') == offsets.SemiMonthBegin(2)
        with tm.assertRaisesRegexp(ValueError,
                                   'Invalid frequency: 2SMS-15-15'):
            frequencies.to_offset('2SMS-15-15')
        with tm.assertRaisesRegexp(ValueError, 'Invalid frequency: 2SMS-15D'):
            frequencies.to_offset('2SMS-15D')
Ejemplo n.º 17
0
    def test_ambiguous_infer(self):
        # November 6, 2011, fall back, repeat 2 AM hour
        # With no repeated hours, we cannot infer the transition
        tz = self.tz('US/Eastern')
        dr = date_range(datetime(2011, 11, 6, 0),
                        periods=5,
                        freq=offsets.Hour())
        pytest.raises(pytz.AmbiguousTimeError, dr.tz_localize, tz)

        # With repeated hours, we can infer the transition
        dr = date_range(datetime(2011, 11, 6, 0),
                        periods=5,
                        freq=offsets.Hour(),
                        tz=tz)
        times = [
            '11/06/2011 00:00', '11/06/2011 01:00', '11/06/2011 01:00',
            '11/06/2011 02:00', '11/06/2011 03:00'
        ]
        di = DatetimeIndex(times)
        localized = di.tz_localize(tz, ambiguous='infer')
        tm.assert_index_equal(dr, localized)
        with tm.assert_produces_warning(FutureWarning):
            localized_old = di.tz_localize(tz, infer_dst=True)
        tm.assert_index_equal(dr, localized_old)
        tm.assert_index_equal(dr, DatetimeIndex(times,
                                                tz=tz,
                                                ambiguous='infer'))

        # When there is no dst transition, nothing special happens
        dr = date_range(datetime(2011, 6, 1, 0),
                        periods=10,
                        freq=offsets.Hour())
        localized = dr.tz_localize(tz)
        localized_infer = dr.tz_localize(tz, ambiguous='infer')
        tm.assert_index_equal(localized, localized_infer)
        with tm.assert_produces_warning(FutureWarning):
            localized_infer_old = dr.tz_localize(tz, infer_dst=True)
        tm.assert_index_equal(localized, localized_infer_old)
Ejemplo n.º 18
0
    def test_localize_utc_conversion_explicit(self):
        # Localizing to time zone should:
        #  1) check for DST ambiguities
        #  2) convert to UTC

        rng = date_range('3/10/2012', '3/11/2012', freq='30T')
        converted = rng.tz_localize(self.tz('US/Eastern'))
        expected_naive = rng + offsets.Hour(5)
        self.assert_(np.array_equal(converted.asi8, expected_naive.asi8))

        # DST ambiguity, this should fail
        rng = date_range('3/11/2012', '3/12/2012', freq='30T')
        # Is this really how it should fail??
        self.assertRaises(NonExistentTimeError, rng.tz_localize, self.tz('US/Eastern'))
Ejemplo n.º 19
0
    def test_localize_utc_conversion(self):
        # Localizing to time zone should:
        #  1) check for DST ambiguities
        #  2) convert to UTC

        rng = date_range('3/10/2012', '3/11/2012', freq='30T')

        converted = rng.tz_localize('US/Eastern')
        expected_naive = rng + offsets.Hour(5)
        self.assert_(np.array_equal(converted.asi8, expected_naive.asi8))

        # DST ambiguity, this should fail
        rng = date_range('3/11/2012', '3/12/2012', freq='30T')
        self.assertRaises(Exception, rng.tz_localize, 'US/Eastern')
Ejemplo n.º 20
0
def test_is_superperiod_subperiod():

    # input validation
    assert not (frequencies.is_superperiod(offsets.YearEnd(), None))
    assert not (frequencies.is_subperiod(offsets.MonthEnd(), None))
    assert not (frequencies.is_superperiod(None, offsets.YearEnd()))
    assert not (frequencies.is_subperiod(None, offsets.MonthEnd()))
    assert not (frequencies.is_superperiod(None, None))
    assert not (frequencies.is_subperiod(None, None))

    assert (frequencies.is_superperiod(offsets.YearEnd(), offsets.MonthEnd()))
    assert (frequencies.is_subperiod(offsets.MonthEnd(), offsets.YearEnd()))

    assert (frequencies.is_superperiod(offsets.Hour(), offsets.Minute()))
    assert (frequencies.is_subperiod(offsets.Minute(), offsets.Hour()))

    assert (frequencies.is_superperiod(offsets.Second(), offsets.Milli()))
    assert (frequencies.is_subperiod(offsets.Milli(), offsets.Second()))

    assert (frequencies.is_superperiod(offsets.Milli(), offsets.Micro()))
    assert (frequencies.is_subperiod(offsets.Micro(), offsets.Milli()))

    assert (frequencies.is_superperiod(offsets.Micro(), offsets.Nano()))
    assert (frequencies.is_subperiod(offsets.Nano(), offsets.Micro()))
Ejemplo n.º 21
0
 def read(self, start_date=None, end_date=None,
                 time_offset=7, ohlc='c', **kwargs):
     self.historical_data = pd.read_csv(self.read_dir, **kwargs)
     self.historical_data.index += offsets.Hour(time_offset)
     start_date = start_date if start_date is not None else 0
     end_date = end_date if end_date is not None else -1
     self.historical_data = self.historical_data[start_date:end_date]
     if ohlc != 'ohlc':
         if ohlc == 'o':
             self.historical_data = self.historical_data['open']
         elif ohlc == 'h':
             self.historical_data = self.historical_data['high']
         elif ohlc == 'l':
             self.historical_data = self.historical_data['low']
         elif ohlc == 'c':
             self.historical_data = self.historical_data['close']
     self.index = self.historical_data.index
     self.ohlc = ohlc
Ejemplo n.º 22
0
def test_to_offset_multiple():
    freqstr = '2h30min'
    freqstr2 = '2h 30min'

    result = to_offset(freqstr)
    assert (result == to_offset(freqstr2))
    expected = offsets.Minute(150)
    assert (result == expected)

    freqstr = '2h30min15s'
    result = to_offset(freqstr)
    expected = offsets.Second(150 * 60 + 15)
    assert (result == expected)

    freqstr = '2h 60min'
    result = to_offset(freqstr)
    expected = offsets.Hour(3)
    assert (result == expected)

    freqstr = '15l500u'
    result = to_offset(freqstr)
    expected = offsets.Micro(15500)
    assert (result == expected)

    freqstr = '10s75L'
    result = to_offset(freqstr)
    expected = offsets.Milli(10075)
    assert (result == expected)

    if not _np_version_under1p7:
        freqstr = '2800N'
        result = to_offset(freqstr)
        expected = offsets.Nano(2800)
        assert (result == expected)

    # malformed
    try:
        to_offset('2h20m')
    except ValueError:
        pass
    else:
        assert (False)
Ejemplo n.º 23
0
def forward(df=None, periods=180):
    '''Generate hourly prediction of events for the next `periods`'''
    weekdays = {
        1: 'Monday',
        2: 'Tuesday',
        3: 'Wednesday',
        4: 'Thursday',
        5: 'Friday',
        6: 'Saturday',
        7: 'Sunday'
    }
    dist = daily_hours(df, to_json=False, how='mean')
    hourly = df.resample('H', how='sum')
    h_range = pd.date_range(hourly.index[-1] + offsets.Hour(),
                            periods=periods,
                            freq='H')
    forward = pd.DataFrame({'Events': h_range}, index=h_range)
    to_tuple = lambda x: (x.hour, weekdays[x.isoweekday()])
    forward['Events'] = forward['Events'].apply(to_tuple)
    index_dist = lambda x: dist[x[1]][x[0]]
    forward['Events'] = forward['Events'].apply(index_dist)
    return forward
Ejemplo n.º 24
0
)
def test_period_str_to_code(obj, expected):
    assert _period_str_to_code(obj) == expected


@pytest.mark.parametrize(
    "p1,p2,expected",
    [
        # Input validation.
        (offsets.MonthEnd(), None, False),
        (offsets.YearEnd(), None, False),
        (None, offsets.YearEnd(), False),
        (None, offsets.MonthEnd(), False),
        (None, None, False),
        (offsets.YearEnd(), offsets.MonthEnd(), True),
        (offsets.Hour(), offsets.Minute(), True),
        (offsets.Second(), offsets.Milli(), True),
        (offsets.Milli(), offsets.Micro(), True),
        (offsets.Micro(), offsets.Nano(), True),
    ],
)
def test_super_sub_symmetry(p1, p2, expected):
    assert is_superperiod(p1, p2) is expected
    assert is_subperiod(p2, p1) is expected


@pytest.mark.parametrize(
    "freq,expected,aliases",
    [
        ("D", 6000, ["DAY", "DLY", "DAILY"]),
        ("M", 3000, ["MTH", "MONTH", "MONTHLY"]),
Ejemplo n.º 25
0
import re

import pytest

from pandas import Timedelta

import pandas.tseries.frequencies as frequencies
import pandas.tseries.offsets as offsets


@pytest.mark.parametrize(
    "freq_input,expected",
    [
        (frequencies.to_offset("10us"), offsets.Micro(10)),
        (offsets.Hour(), offsets.Hour()),
        ((5, "T"), offsets.Minute(5)),
        ("2h30min", offsets.Minute(150)),
        ("2h 30min", offsets.Minute(150)),
        ("2h30min15s", offsets.Second(150 * 60 + 15)),
        ("2h 60min", offsets.Hour(3)),
        ("2h 20.5min", offsets.Second(8430)),
        ("1.5min", offsets.Second(90)),
        ("0.5S", offsets.Milli(500)),
        ("15l500u", offsets.Micro(15500)),
        ("10s75L", offsets.Milli(10075)),
        ("1s0.25ms", offsets.Micro(1000250)),
        ("1s0.25L", offsets.Micro(1000250)),
        ("2800N", offsets.Nano(2800)),
        ("2SM", offsets.SemiMonthEnd(2)),
        ("2SM-16", offsets.SemiMonthEnd(2, day_of_month=16)),
        ("2SMS-14", offsets.SemiMonthBegin(2, day_of_month=14)),
Ejemplo n.º 26
0
def test_apply_ticks():
    result = offsets.Hour(3)._apply(offsets.Hour(4))
    exp = offsets.Hour(7)
    assert result == exp
Ejemplo n.º 27
0
 def test_tzaware_offset(self):
     dates = date_range('2012-11-01', periods=3, tz='US/Pacific')
     offset = dates + offsets.Hour(5)
     self.assertEqual(dates[0] + offsets.Hour(5), offset[0])
Ejemplo n.º 28
0
def test_to_offset_multiple():
    freqstr = '2h30min'
    freqstr2 = '2h 30min'

    result = frequencies.to_offset(freqstr)
    assert (result == frequencies.to_offset(freqstr2))
    expected = offsets.Minute(150)
    assert (result == expected)

    freqstr = '2h30min15s'
    result = frequencies.to_offset(freqstr)
    expected = offsets.Second(150 * 60 + 15)
    assert (result == expected)

    freqstr = '2h 60min'
    result = frequencies.to_offset(freqstr)
    expected = offsets.Hour(3)
    assert (result == expected)

    freqstr = '15l500u'
    result = frequencies.to_offset(freqstr)
    expected = offsets.Micro(15500)
    assert (result == expected)

    freqstr = '10s75L'
    result = frequencies.to_offset(freqstr)
    expected = offsets.Milli(10075)
    assert (result == expected)

    freqstr = '2800N'
    result = frequencies.to_offset(freqstr)
    expected = offsets.Nano(2800)
    assert (result == expected)

    freqstr = '2SM'
    result = frequencies.to_offset(freqstr)
    expected = offsets.SemiMonthEnd(2)
    assert (result == expected)

    freqstr = '2SM-16'
    result = frequencies.to_offset(freqstr)
    expected = offsets.SemiMonthEnd(2, day_of_month=16)
    assert (result == expected)

    freqstr = '2SMS-14'
    result = frequencies.to_offset(freqstr)
    expected = offsets.SemiMonthBegin(2, day_of_month=14)
    assert (result == expected)

    freqstr = '2SMS-15'
    result = frequencies.to_offset(freqstr)
    expected = offsets.SemiMonthBegin(2)
    assert (result == expected)

    # malformed
    try:
        frequencies.to_offset('2h20m')
    except ValueError:
        pass
    else:
        assert (False)
Ejemplo n.º 29
0
def test_is_superperiod_subperiod():
    assert (fmod.is_superperiod(offsets.YearEnd(), offsets.MonthEnd()))
    assert (fmod.is_subperiod(offsets.MonthEnd(), offsets.YearEnd()))

    assert (fmod.is_superperiod(offsets.Hour(), offsets.Minute()))
    assert (fmod.is_subperiod(offsets.Minute(), offsets.Hour()))
Ejemplo n.º 30
0
        (("M", -2), (get_freq("M"), -2)),
        ((5, "T"), (FreqGroup.FR_MIN, 5)),

        # Numeric Tuple.
        ((1000, 1), (1000, 1)),

        # Offsets.
        (offsets.Day(), (get_freq("D"), 1)),
        (offsets.Day(3), (get_freq("D"), 3)),
        (offsets.Day(-2), (get_freq("D"), -2)),
        (offsets.MonthEnd(), (get_freq("M"), 1)),
        (offsets.MonthEnd(3), (get_freq("M"), 3)),
        (offsets.MonthEnd(-2), (get_freq("M"), -2)),
        (offsets.Week(), (get_freq("W"), 1)),
        (offsets.Week(3), (get_freq("W"), 3)),
        (offsets.Week(-2), (get_freq("W"), -2)),
        (offsets.Hour(), (FreqGroup.FR_HR, 1)),

        # Monday is weekday=0.
        (offsets.Week(weekday=1), (get_freq("W-TUE"), 1)),
        (offsets.Week(3, weekday=0), (get_freq("W-MON"), 3)),
        (offsets.Week(-2, weekday=4), (get_freq("W-FRI"), -2)),
    ])
def test_get_freq_code(freq_input, expected):
    assert get_freq_code(freq_input) == expected


def test_get_code_invalid():
    with pytest.raises(ValueError, match="Invalid frequency"):
        get_freq_code((5, "baz"))