Пример #1
0
    def test_constructor(self):
        cdate_range(START, END, freq=CDay())
        cdate_range(START, periods=20, freq=CDay())
        cdate_range(end=START, periods=20, freq=CDay())

        msg = 'periods must be a number, got C'
        with tm.assert_raises_regex(TypeError, msg):
            date_range('2011-1-1', '2012-1-1', 'C')

        with tm.assert_raises_regex(TypeError, msg):
            cdate_range('2011-1-1', '2012-1-1', 'C')
Пример #2
0
    def test_constructor(self):
        bdate_range(START, END, freq=CDay())
        bdate_range(START, periods=20, freq=CDay())
        bdate_range(end=START, periods=20, freq=CDay())

        msg = 'periods must be a number, got C'
        with pytest.raises(TypeError, match=msg):
            date_range('2011-1-1', '2012-1-1', 'C')

        with pytest.raises(TypeError, match=msg):
            bdate_range('2011-1-1', '2012-1-1', 'C')
Пример #3
0
def get_not_workdays(start_date, end_date):
    workdays = pd.DatetimeIndex(start=start_date,
                                end=end_date,
                                freq=CDay(calendar=cal))
    all_days = pd.date_range(start_date, end_date)
    days = all_days - workdays
    return list(days.strftime('%Y-%m-%d'))
Пример #4
0
    def test_daterange_bug_456(self):
        # GH #456
        rng1 = cdate_range('12/5/2011', '12/5/2011')
        rng2 = cdate_range('12/2/2011', '12/5/2011')
        rng2.offset = CDay()

        result = rng1.union(rng2)
        tm.assertIsInstance(result, DatetimeIndex)
Пример #5
0
    def test_daterange_bug_456(self):
        # GH #456
        rng1 = bdate_range("12/5/2011", "12/5/2011", freq="C")
        rng2 = bdate_range("12/2/2011", "12/5/2011", freq="C")
        assert rng2._data.freq == CDay()

        result = rng1.union(rng2)
        assert isinstance(result, DatetimeIndex)
Пример #6
0
    def test_daterange_bug_456(self):
        # GH #456
        rng1 = bdate_range("12/5/2011", "12/5/2011", freq="C")
        rng2 = bdate_range("12/2/2011", "12/5/2011", freq="C")
        rng2._data.freq = CDay()  # TODO: shouldn't this already be set?

        result = rng1.union(rng2)
        assert isinstance(result, DatetimeIndex)
Пример #7
0
    def test_misc(self):
        end = datetime(2009, 5, 13)
        dr = bdate_range(end=end, periods=20, freq='C')
        firstDate = end - 19 * CDay()

        assert len(dr) == 20
        assert dr[0] == firstDate
        assert dr[-1] == end
Пример #8
0
    def test_daterange_bug_456(self):
        # GH #456
        rng1 = bdate_range('12/5/2011', '12/5/2011', freq='C')
        rng2 = bdate_range('12/2/2011', '12/5/2011', freq='C')
        rng2.freq = CDay()

        result = rng1.union(rng2)
        assert isinstance(result, DatetimeIndex)
Пример #9
0
def get_previous_sweden_business_day_before_today():
    sweden = SwedenHolidayCalendar(rules=holidays_sw)
    return date_offset_foll(
        dt.date.today() - dt.timedelta(days=1),
        calendar=CDay(calendar=sweden),
        months_offset=0,
        adjust=True,
        following=False,
    )
Пример #10
0
    def test_shift(self):

        shifted = self.rng.shift(5)
        self.assertEqual(shifted[0], self.rng[5])
        self.assertEqual(shifted.offset, self.rng.offset)

        shifted = self.rng.shift(-5)
        self.assertEqual(shifted[5], self.rng[0])
        self.assertEqual(shifted.offset, self.rng.offset)

        shifted = self.rng.shift(0)
        self.assertEqual(shifted[0], self.rng[0])
        self.assertEqual(shifted.offset, self.rng.offset)

        with tm.assert_produces_warning(com.PerformanceWarning):
            rng = date_range(START, END, freq=BMonthEnd())
            shifted = rng.shift(1, freq=CDay())
            self.assertEqual(shifted[0], rng[0] + CDay())
Пример #11
0
    def test_shift(self):

        shifted = self.rng.shift(5)
        assert shifted[0] == self.rng[5]
        assert shifted.offset == self.rng.offset

        shifted = self.rng.shift(-5)
        assert shifted[5] == self.rng[0]
        assert shifted.offset == self.rng.offset

        shifted = self.rng.shift(0)
        assert shifted[0] == self.rng[0]
        assert shifted.offset == self.rng.offset

        # PerformanceWarning
        with warnings.catch_warnings(record=True):
            rng = date_range(START, END, freq=BMonthEnd())
            shifted = rng.shift(1, freq=CDay())
            assert shifted[0] == rng[0] + CDay()
Пример #12
0
    def test_shift(self):

        shifted = self.rng.shift(5)
        assert shifted[0] == self.rng[5]
        assert shifted.freq == self.rng.freq

        shifted = self.rng.shift(-5)
        assert shifted[5] == self.rng[0]
        assert shifted.freq == self.rng.freq

        shifted = self.rng.shift(0)
        assert shifted[0] == self.rng[0]
        assert shifted.freq == self.rng.freq

        with warnings.catch_warnings(record=True):
            warnings.simplefilter("ignore", pd.errors.PerformanceWarning)
            rng = date_range(START, END, freq=BMonthEnd())
            shifted = rng.shift(1, freq=CDay())
            assert shifted[0] == rng[0] + CDay()
Пример #13
0
def process_stress_matrix(str_data):
    recent_date = datetime.date.today() - CDay(1, calendar=USTradingCalendar())
    stress_period_df = pd.read_csv(StringIO(str_data))
    stress_period_df.loc[pd.isnull(stress_period_df['EndDate']), 'EndDate'] = recent_date

    for index, row in stress_period_df.iterrows():
        if row['Type'] == 'Relative':
            if row['Units'] == 'D':
                stress_period_df.at[index, 'StartDate'] = recent_date - CDay(row['Offset'], calendar=USTradingCalendar())
            elif row['Units'] == 'W':
                stress_period_df.at[index, 'StartDate'] = recent_date - relativedelta(weeks=row['Offset'])
            elif row['Units'] == 'M':
                stress_period_df.at[index, 'StartDate'] = recent_date - relativedelta(months=row['Offset'])
            elif row['Units'] == 'Y':
                stress_period_df.at[index, 'StartDate'] = recent_date - relativedelta(years=row['Offset'])

            stress_period_df.at[index, 'EndDate'] = recent_date

    stress_period_df['StartDate'] = pd.to_datetime(stress_period_df['StartDate'])
    stress_period_df['EndDate'] = pd.to_datetime(stress_period_df['EndDate'])
    stress_period_df = stress_period_df[['Label', 'StartDate', 'EndDate']]
    return stress_period_df
def numberOfDay():
    now = datetime.datetime.now()
    start = datetime.datetime(year=now.year, month=now.month, day=1)
    end = start + pd.offsets.Day(now.day)
    # Creating a custom calendar
    cal = NYSECalendar()
    # Getting the holidays (off-days) between two dates
    cal.holidays(start=start, end=end)
    se = pd.bdate_range(start=start, end=end,
                        freq=CDay(calendar=cal)).to_series()
    # Counting the number of working days in range
    num = se.count() - 1
    return num
def numOfTradingDaysTotal():
    now = datetime.datetime.now()
    start = datetime.datetime(year=now.year, month=now.month, day=1)
    end = start + pd.offsets.MonthEnd(1)
    # Creating a custom calendar
    cal = NYSECalendar()
    # Getting the holidays (off-days) between two dates
    cal.holidays(start=start, end=end)
    se = pd.bdate_range(start=start, end=end,
                        freq=CDay(calendar=cal)).to_series()
    # Counting the number of working days by month
    num = se.count()
    print(num)
    return num
 def get_totals(self, data):
     pos_order_obj = self.env['pos.order']
     rng = date_range(datetime.strptime(data['form']['date_start'], DF),
                      datetime.strptime(data['form']['date_end'], DF),
                      freq=CDay(weekmask='Mon Tue Wed Thu Fri Sat'))
     result = []
     totals = {}
     total_total = total_bank = total_cash = total_tax = 0
     for date in rng:
         total = bank = cash = tax = 0
         date_start = date + timedelta(hours=10)
         date_start_utc = self.get_date_in_utc(date_start)
         date_end = date + timedelta(hours=18)
         date_end_utc = self.get_date_in_utc(date_end)
         pos_order = pos_order_obj.search([
             ('date_order', '>=', date_start_utc),
             ('date_order', '<=', date_end_utc),
             ('session_id.config_id', '=', data['form']['pos_config_id'][0])
         ])
         for order in pos_order:
             tax += order.amount_tax
             total_tax += order.amount_tax
             total += order.amount_total
             total_total += order.amount_total
             for statement in order.statement_ids:
                 if statement.journal_id.type == 'cash':
                     cash += statement.amount
                     total_cash += statement.amount
                 elif statement.journal_id.type == 'bank':
                     bank += statement.amount
                     total_bank += statement.amount
         result.append({
             'date': date.strftime(DF),
             'cash': cash,
             'bank': bank,
             'subtotal': total - tax,
             'tax': tax,
             'total': total,
         })
     totals['total_total'] = total_total,
     totals['total_bank'] = total_bank,
     totals['total_cash'] = total_cash,
     totals['total_tax'] = total_tax,
     totals['total_subtotal'] = total_total - total_tax,
     return {
         'result': result,
         'totals': totals,
     }
Пример #17
0
    def test_getitem(self):
        smaller = self.rng[:5]
        exp = DatetimeIndex(self.rng.view(np.ndarray)[:5])
        self.assert_index_equal(smaller, exp)
        self.assertEqual(smaller.offset, self.rng.offset)

        sliced = self.rng[::5]
        self.assertEqual(sliced.offset, CDay() * 5)

        fancy_indexed = self.rng[[4, 3, 2, 1, 0]]
        self.assertEqual(len(fancy_indexed), 5)
        tm.assertIsInstance(fancy_indexed, DatetimeIndex)
        self.assertIsNone(fancy_indexed.freq)

        # 32-bit vs. 64-bit platforms
        self.assertEqual(self.rng[4], self.rng[np.int_(4)])
Пример #18
0
    def test_getitem(self):
        smaller = self.rng[:5]
        exp = DatetimeIndex(self.rng.view(np.ndarray)[:5])
        tm.assert_index_equal(smaller, exp)
        assert smaller.offset == self.rng.offset

        sliced = self.rng[::5]
        assert sliced.offset == CDay() * 5

        fancy_indexed = self.rng[[4, 3, 2, 1, 0]]
        assert len(fancy_indexed) == 5
        assert isinstance(fancy_indexed, DatetimeIndex)
        assert fancy_indexed.freq is None

        # 32-bit vs. 64-bit platforms
        assert self.rng[4] == self.rng[np.int_(4)]
Пример #19
0
    def test_dti_custom_getitem(self):
        rng = pd.bdate_range(START, END, freq="C")
        smaller = rng[:5]
        exp = DatetimeIndex(rng.view(np.ndarray)[:5])
        tm.assert_index_equal(smaller, exp)
        assert smaller.freq == rng.freq

        sliced = rng[::5]
        assert sliced.freq == CDay() * 5

        fancy_indexed = rng[[4, 3, 2, 1, 0]]
        assert len(fancy_indexed) == 5
        assert isinstance(fancy_indexed, DatetimeIndex)
        assert fancy_indexed.freq is None

        # 32-bit vs. 64-bit platforms
        assert rng[4] == rng[np.int_(4)]
    def test_cumulative_returns(
        self, returns, ret_freq, period_len, expected_vals
    ):
        if "CD" in ret_freq:
            ret_freq_class = CDay(weekmask="Tue Wed Thu Fri Sun")
            ret_freq = ret_freq_class
        elif "B" in ret_freq:
            ret_freq_class = BDay()
        else:
            ret_freq_class = Day()

        period_len = Timedelta(period_len)
        index = date_range("1/1/1999", periods=len(returns), freq=ret_freq)
        returns = Series(returns, index=index)

        cum_ret = cumulative_returns(returns)

        expected = Series(expected_vals, index=cum_ret.index)

        assert_series_equal(cum_ret, expected)
Пример #21
0
    def test_cumulative_returns(self, returns, ret_freq, period_len,
                                expected_vals):

        if 'CD' in ret_freq:
            ret_freq_class = CDay(weekmask='Tue Wed Thu Fri Sun')
            ret_freq = ret_freq_class
        elif 'B' in ret_freq:
            ret_freq_class = BDay()
        else:
            ret_freq_class = Day()

        period_len = Timedelta(period_len)
        index = date_range('1/1/1999', periods=len(returns), freq=ret_freq)
        returns = Series(returns, index=index)
        returns.index.freq = ret_freq_class

        cum_ret = cumulative_returns(returns, period_len)

        expected = Series(expected_vals, index=cum_ret.index)

        assert_series_equal(cum_ret, expected, check_less_precise=True)
Пример #22
0
    def test_cached_range(self):
        DatetimeIndex._cached_range(START, END, offset=CDay())
        DatetimeIndex._cached_range(START, periods=20,
                                    offset=CDay())
        DatetimeIndex._cached_range(end=START, periods=20,
                                    offset=CDay())

        self.assertRaises(Exception, DatetimeIndex._cached_range, START, END)

        self.assertRaises(Exception, DatetimeIndex._cached_range, START,
                          freq=CDay())

        self.assertRaises(Exception, DatetimeIndex._cached_range, end=END,
                          freq=CDay())

        self.assertRaises(Exception, DatetimeIndex._cached_range, periods=20,
                          freq=CDay())
Пример #23
0
    def test_cached_range(self):
        DatetimeIndex._cached_range(START, END, freq=CDay())
        DatetimeIndex._cached_range(START, periods=20, freq=CDay())
        DatetimeIndex._cached_range(end=START, periods=20, freq=CDay())

        # with pytest.raises(TypeError):
        with tm.assert_raises_regex(TypeError, "freq"):
            DatetimeIndex._cached_range(START, END)

        # with pytest.raises(TypeError):
        with tm.assert_raises_regex(TypeError, "specify period"):
            DatetimeIndex._cached_range(START, freq=CDay())

        # with pytest.raises(TypeError):
        with tm.assert_raises_regex(TypeError, "specify period"):
            DatetimeIndex._cached_range(end=END, freq=CDay())

        # with pytest.raises(TypeError):
        with tm.assert_raises_regex(TypeError, "start or end"):
            DatetimeIndex._cached_range(periods=20, freq=CDay())
Пример #24
0
    if mult == 1:
        return code
    return str(mult) + code


#----------------------------------------------------------------------
# Offset names ("time rules") and related functions

from pandas.tseries.offsets import (Nano, Micro, Milli, Second, Minute, Hour,
                                    Day, BDay, CDay, Week, MonthBegin,
                                    MonthEnd, BMonthBegin, BMonthEnd,
                                    QuarterBegin, QuarterEnd, BQuarterBegin,
                                    BQuarterEnd, YearBegin, YearEnd,
                                    BYearBegin, BYearEnd, _make_offset)
try:
    cday = CDay()
except NotImplementedError:
    cday = None

#: cache of previously seen offsets
_offset_map = {}

_offset_to_period_map = {
    'WEEKDAY': 'D',
    'EOM': 'M',
    'BM': 'M',
    'BQS': 'Q',
    'QS': 'Q',
    'BQ': 'Q',
    'BA': 'A',
    'AS': 'A',
Пример #25
0
def get_workdays(start_date, end_date):
    days = pd.DatetimeIndex(start=start_date,
                            end=end_date,
                            freq=CDay(calendar=cal))
    return list(days.strftime('%Y-%m-%d'))
Пример #26
0
 def test_generate_cday(self):
     rng1 = list(generate_range(START, END, offset=CDay()))
     rng2 = list(generate_range(START, END, offset='C'))
     assert rng1 == rng2
Пример #27
0
        Holiday('Första maj',month=5, day=1),
        Holiday('Kristi himmelfärdsdag',month=5, day=30),
        Holiday('Sveriges nationaldag',month=6, day=6),
        Holiday('Julafton', month=12, day=24),
        Holiday('Juldagen', month=12, day=25),
        Holiday('Annandag jul',month=12, day=26),
        Holiday('Nyårsafton',month=12, day=31),
       #fyll in andra röda dagar tex midsommar osv
        Holiday('midsommarafton',year=2019,month=6, day=21),
        Holiday('midsommardagen',year=2019,month=6, day=22)
    ]




business = CDay(calendar=HolidayCalendar())

cal=Sweden()



df = pd.DataFrame(index = pd.date_range(Min_date, Max_date, freq='D'))
df['one']=1
df['Date']=df.index
df['DateKey'] = df.groupby(['one'])['one'].apply(lambda x: x.cumsum())
df["DatumNyckel"] = df.Date.dt.strftime('%Y%m%d')
df["YearMonthDay"] = df.Date.dt.strftime('%Y%m%d')
df["YearMonth"] = df.Date.dt.strftime('%Y%m')
df["DayDate"] = df.Date
df['YearCode']= df.Date.dt.strftime('%Y')
df["IsLeapYear"] = df.Date.dt.is_leap_year
Пример #28
0
                day=31,
                offset=DateOffset(weekday=MO(-1))),
        Holiday('Summer bank holiday',
                month=8,
                day=31,
                offset=DateOffset(weekday=MO(-1))),
        Holiday('Christmas Day', month=12, day=25, observance=next_monday),
        Holiday('Boxing Day',
                month=12,
                day=26,
                observance=next_monday_or_tuesday)
    ]


from pandas.tseries.offsets import CDay
business = CDay(calendar=EnglandAndWalesHolidayCalendar())


def remove_duplicates(values):
    output = []
    seen = set()
    for value in values:
        # If value has not been encountered yet,
        # ... add it to both list and set.
        if value not in seen:
            output.append(value)
            seen.add(value)
    return output


def getCubicSplineParameters(data):
Пример #29
0
 def test_generate_cday(self):
     rng1 = list(generate_range(START, END, offset=CDay()))
     rng2 = list(generate_range(START, END, time_rule='C'))
     self.assertEqual(rng1, rng2)
Пример #30
0
 def test_constructor(self):
     cdate_range(START, END, freq=CDay())
     cdate_range(START, periods=20, freq=CDay())
     cdate_range(end=START, periods=20, freq=CDay())
     self.assertRaises(ValueError, date_range, '2011-1-1', '2012-1-1', 'C')
     self.assertRaises(ValueError, cdate_range, '2011-1-1', '2012-1-1', 'C')