예제 #1
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()))
예제 #2
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(('', ''))
예제 #3
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
예제 #4
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'
예제 #5
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)
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)
예제 #7
0
 def test_reversions_all_reverse(self):
     timestamps = pd.date_range(pd.Timestamp('2018-07-03 22:00:00'),
                                pd.Timestamp('2018-07-03 00:00:00'),
                                freq=offsets.Minute(-60))
     actual = list(self.validation.invalids_reversions(timestamps))
     expected = list(map(lambda x: (True, x), timestamps[1:]))
     self.assertListEqual(expected, actual)
예제 #8
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')
예제 #9
0
    def test_to_offset_pd_timedelta(self):
        # Tests for #9064
        td = Timedelta(days=1, seconds=1)
        result = frequencies.to_offset(td)
        expected = offsets.Second(86401)
        assert (expected == result)

        td = Timedelta(days=-1, seconds=1)
        result = frequencies.to_offset(td)
        expected = offsets.Second(-86399)
        assert (expected == result)

        td = Timedelta(hours=1, minutes=10)
        result = frequencies.to_offset(td)
        expected = offsets.Minute(70)
        assert (expected == result)

        td = Timedelta(hours=1, minutes=-10)
        result = frequencies.to_offset(td)
        expected = offsets.Minute(50)
        assert (expected == result)

        td = Timedelta(weeks=1)
        result = frequencies.to_offset(td)
        expected = offsets.Day(7)
        assert (expected == result)

        td1 = Timedelta(hours=1)
        result1 = frequencies.to_offset(td1)
        result2 = frequencies.to_offset('60min')
        assert (result1 == result2)

        td = Timedelta(microseconds=1)
        result = frequencies.to_offset(td)
        expected = offsets.Micro(1)
        assert (expected == result)

        td = Timedelta(microseconds=0)
        pytest.raises(ValueError, lambda: frequencies.to_offset(td))
예제 #10
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()))
예제 #11
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)
예제 #12
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()))
예제 #13
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)
예제 #14
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"]),
예제 #15
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)),
예제 #16
0
print("Test")

# 一分間隔でグループにする
data = []

# 範囲指定で取り出す
# print(df[(df["test"] > dt.datetime(2019,6,13,0,1)) & (df["test"] < dt.datetime(2019,6,13,0,2))])

time_data = df["test"][5727:]
cnt = 0
# print(df[(df["test"] > dt.datetime(2019,6,13,14) - offsets.Minute(1))])
print("Start")
for i in time_data:
    cnt = 0
    # 一分前
    prev_time = i - offsets.Minute(1)
    # 検索スタート位置
    now_time = i
    datas = df[(df["test"] < now_time) & (df["test"] > prev_time)]
    if len(datas) <= 1:
        print("Nothing")
        continue
    time = datas["elapsed_time"]
    t = np.array(time)

    if len(t) <= 1:
        print("LF_HF is Zero")
        LF_HF = 0
    else:
        
        # calc Start