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()))
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 _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
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'
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)
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)
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')
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))
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()))
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)
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()))
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)
) 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"]),
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)),
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