def test_date_range_localize(self):
        rng = date_range("3/11/2012 03:00", periods=15, freq="H", tz="US/Eastern")
        rng2 = DatetimeIndex(["3/11/2012 03:00", "3/11/2012 04:00"], tz="US/Eastern")
        rng3 = date_range("3/11/2012 03:00", periods=15, freq="H")
        rng3 = rng3.tz_localize("US/Eastern")

        self.assertTrue(rng.equals(rng3))

        # DST transition time
        val = rng[0]
        exp = Timestamp("3/11/2012 03:00", tz="US/Eastern")

        self.assertEqual(val.hour, 3)
        self.assertEqual(exp.hour, 3)
        self.assertEqual(val, exp)  # same UTC value
        self.assertTrue(rng[:2].equals(rng2))

        # Right before the DST transition
        rng = date_range("3/11/2012 00:00", periods=2, freq="H", tz="US/Eastern")
        rng2 = DatetimeIndex(["3/11/2012 00:00", "3/11/2012 01:00"], tz="US/Eastern")
        self.assertTrue(rng.equals(rng2))
        exp = Timestamp("3/11/2012 00:00", tz="US/Eastern")
        self.assertEqual(exp.hour, 0)
        self.assertEqual(rng[0], exp)
        exp = Timestamp("3/11/2012 01:00", tz="US/Eastern")
        self.assertEqual(exp.hour, 1)
        self.assertEqual(rng[1], exp)

        rng = date_range("3/11/2012 00:00", periods=10, freq="H", tz="US/Eastern")
        self.assertEqual(rng[2].hour, 3)
    def test_tz_localize_naive(self):
        rng = date_range("1/1/2011", periods=100, freq="H")

        conv = rng.tz_localize("US/Pacific")
        exp = date_range("1/1/2011", periods=100, freq="H", tz="US/Pacific")

        self.assertTrue(conv.equals(exp))
    def test_join_aware(self):
        rng = date_range("1/1/2011", periods=10, freq="H")
        ts = Series(np.random.randn(len(rng)), index=rng)

        ts_utc = ts.tz_localize("utc")

        self.assertRaises(Exception, ts.__add__, ts_utc)
        self.assertRaises(Exception, ts_utc.__add__, ts)

        test1 = DataFrame(
            np.zeros((6, 3)), index=date_range("2012-11-15 00:00:00", periods=6, freq="100L", tz="US/Central")
        )
        test2 = DataFrame(
            np.zeros((3, 3)),
            index=date_range("2012-11-15 00:00:00", periods=3, freq="250L", tz="US/Central"),
            columns=lrange(3, 6),
        )

        result = test1.join(test2, how="outer")
        ex_index = test1.index.union(test2.index)

        self.assertTrue(result.index.equals(ex_index))
        self.assertTrue(result.index.tz.zone == "US/Central")

        # non-overlapping
        rng = date_range("2012-11-15 00:00:00", periods=6, freq="H", tz="US/Central")

        rng2 = date_range("2012-11-15 12:00:00", periods=6, freq="H", tz="US/Eastern")

        result = rng.union(rng2)
        self.assertTrue(result.tz.zone == "UTC")
Example #4
0
    def test_with_tz_ambiguous_times(self):
        _skip_if_no_pytz()
        tz = pytz.timezone('US/Eastern')

        # regular no problem
        self.assert_(self.rng.tz_validate())

        # March 13, 2011, spring forward, skip from 2 AM to 3 AM
        dr = date_range(datetime(2011, 3, 13, 1, 30), periods=3,
                        freq=datetools.Hour(), tz=tz)
        self.assert_(not dr.tz_validate())

        # after dst transition
        dr = date_range(datetime(2011, 3, 13, 3, 30), periods=3,
                        freq=datetools.Hour(), tz=tz)
        self.assert_(dr.tz_validate())

        # November 6, 2011, fall back, repeat 2 AM hour
        dr = date_range(datetime(2011, 11, 6, 1, 30), periods=3,
                        freq=datetools.Hour(), tz=tz)
        self.assert_(not dr.tz_validate())

        # UTC is OK
        dr = date_range(datetime(2011, 3, 13), periods=48,
                        freq=datetools.Minute(30), tz=pytz.utc)
        self.assert_(dr.tz_validate())
Example #5
0
    def test_resample_upsampling_picked_but_not_correct(self):

        # Test for issue #3020
        dates = date_range('01-Jan-2014','05-Jan-2014', freq='D')
        series = Series(1, index=dates)

        result = series.resample('D')
        self.assertEqual(result.index[0], dates[0])

        # GH 5955
        # incorrect deciding to upsample when the axis frequency matches the resample frequency

        import datetime
        s = Series(np.arange(1.,6),index=[datetime.datetime(1975, 1, i, 12, 0) for i in range(1, 6)])
        expected = Series(np.arange(1.,6),index=date_range('19750101',periods=5,freq='D'))

        result = s.resample('D',how='count')
        assert_series_equal(result,Series(1,index=expected.index))

        result1 = s.resample('D',how='sum')
        result2 = s.resample('D',how='mean')
        result3 = s.resample('D')
        assert_series_equal(result1,expected)
        assert_series_equal(result2,expected)
        assert_series_equal(result3,expected)
    def test_resample_anchored_intraday(self):
        # #1471, #1458

        rng = date_range('1/1/2012', '4/1/2012', freq='100min')
        df = DataFrame(rng.month, index=rng)

        result = df.resample('M')
        expected = df.resample('M', kind='period').to_timestamp(how='end')
        tm.assert_frame_equal(result, expected)

        result = df.resample('M', closed='left')
        exp = df.tshift(1, freq='D').resample('M', kind='period')
        exp = exp.to_timestamp(how='end')

        tm.assert_frame_equal(result, exp)

        rng = date_range('1/1/2012', '4/1/2012', freq='100min')
        df = DataFrame(rng.month, index=rng)

        result = df.resample('Q')
        expected = df.resample('Q', kind='period').to_timestamp(how='end')
        tm.assert_frame_equal(result, expected)

        result = df.resample('Q', closed='left')
        expected = df.tshift(1, freq='D').resample('Q', kind='period',
                                                   closed='left')
        expected = expected.to_timestamp(how='end')
        tm.assert_frame_equal(result, expected)

        ts = _simple_ts('2012-04-29 23:00', '2012-04-30 5:00', freq='h')
        resampled = ts.resample('M')
        self.assert_(len(resampled) == 1)
Example #7
0
    def test_evenly_divisible_with_no_extra_bins(self):
        # 4076
        # when the frequency is evenly divisible, sometimes extra bins

        df = DataFrame(np.random.randn(9, 3), index=date_range('2000-1-1', periods=9))
        result = df.resample('5D')
        expected = pd.concat([df.iloc[0:5].mean(),df.iloc[5:].mean()],axis=1).T
        expected.index = [Timestamp('2000-1-1'),Timestamp('2000-1-6')]
        assert_frame_equal(result,expected)

        index = date_range(start='2001-5-4', periods=28)
        df = DataFrame(
            [{'REST_KEY': 1, 'DLY_TRN_QT': 80, 'DLY_SLS_AMT': 90,
              'COOP_DLY_TRN_QT': 30, 'COOP_DLY_SLS_AMT': 20}] * 28 +
            [{'REST_KEY': 2, 'DLY_TRN_QT': 70, 'DLY_SLS_AMT': 10,
              'COOP_DLY_TRN_QT': 50, 'COOP_DLY_SLS_AMT': 20}] * 28,
            index=index.append(index)).sort()

        index = date_range('2001-5-4',periods=4,freq='7D')
        expected = DataFrame(
            [{'REST_KEY': 14, 'DLY_TRN_QT': 14, 'DLY_SLS_AMT': 14,
              'COOP_DLY_TRN_QT': 14, 'COOP_DLY_SLS_AMT': 14}] * 4,
            index=index)
        result = df.resample('7D', how='count')
        assert_frame_equal(result,expected)

        expected = DataFrame(
            [{'REST_KEY': 21, 'DLY_TRN_QT': 1050, 'DLY_SLS_AMT': 700,
              'COOP_DLY_TRN_QT': 560, 'COOP_DLY_SLS_AMT': 280}] * 4,
            index=index)
        result = df.resample('7D', how='sum')
        assert_frame_equal(result,expected)
Example #8
0
    def test_ts_plot_format_coord(self):
        def check_format_of_first_point(ax, expected_string):
            first_line = ax.get_lines()[0]
            first_x = first_line.get_xdata()[0].ordinal
            first_y = first_line.get_ydata()[0]
            try:
                self.assertEqual(expected_string,
                                 ax.format_coord(first_x, first_y))
            except (ValueError):
                raise nose.SkipTest("skipping test because issue forming "
                                    "test comparison GH7664")

        annual = Series(1, index=date_range('2014-01-01', periods=3,
                                            freq='A-DEC'))
        check_format_of_first_point(annual.plot(), 't = 2014  y = 1.000000')

        # note this is added to the annual plot already in existence, and
        # changes its freq field
        daily = Series(1, index=date_range('2014-01-01', periods=3, freq='D'))
        check_format_of_first_point(daily.plot(),
                                    't = 2014-01-01  y = 1.000000')
        tm.close()

        # tsplot
        import matplotlib.pyplot as plt
        from pandas.tseries.plotting import tsplot
        tsplot(annual, plt.Axes.plot)
        check_format_of_first_point(plt.gca(), 't = 2014  y = 1.000000')
        tsplot(daily, plt.Axes.plot)
        check_format_of_first_point(plt.gca(), 't = 2014-01-01  y = 1.000000')
    def test_from_resampling_area_line_mixed(self):
        idxh = date_range("1/1/1999", periods=52, freq="W")
        idxl = date_range("1/1/1999", periods=12, freq="M")
        high = DataFrame(np.random.rand(len(idxh), 3), index=idxh, columns=[0, 1, 2])
        low = DataFrame(np.random.rand(len(idxl), 3), index=idxl, columns=[0, 1, 2])

        # low to high
        for kind1, kind2 in [("line", "area"), ("area", "line")]:
            ax = low.plot(kind=kind1, stacked=True)
            ax = high.plot(kind=kind2, stacked=True, ax=ax)

            # check low dataframe result
            expected_x = np.array(
                [1514, 1519, 1523, 1527, 1531, 1536, 1540, 1544, 1549, 1553, 1558, 1562], dtype=np.float64
            )
            expected_y = np.zeros(len(expected_x), dtype=np.float64)
            for i in range(3):
                l = ax.lines[i]
                self.assertEqual(PeriodIndex(l.get_xdata()).freq, idxh.freq)
                self.assert_numpy_array_equal(l.get_xdata(orig=False), expected_x)
                # check stacked values are correct
                expected_y += low[i].values
                self.assert_numpy_array_equal(l.get_ydata(orig=False), expected_y)

            # check high dataframe result
            expected_x = idxh.to_period().asi8.astype(np.float64)
            expected_y = np.zeros(len(expected_x), dtype=np.float64)
            for i in range(3):
                l = ax.lines[3 + i]
                self.assertEqual(PeriodIndex(data=l.get_xdata()).freq, idxh.freq)
                self.assert_numpy_array_equal(l.get_xdata(orig=False), expected_x)
                expected_y += high[i].values
                self.assert_numpy_array_equal(l.get_ydata(orig=False), expected_y)

        # high to low
        for kind1, kind2 in [("line", "area"), ("area", "line")]:
            ax = high.plot(kind=kind1, stacked=True)
            ax = low.plot(kind=kind2, stacked=True, ax=ax)

            # check high dataframe result
            expected_x = idxh.to_period().asi8.astype(np.float64)
            expected_y = np.zeros(len(expected_x), dtype=np.float64)
            for i in range(3):
                l = ax.lines[i]
                self.assertEqual(PeriodIndex(data=l.get_xdata()).freq, idxh.freq)
                self.assert_numpy_array_equal(l.get_xdata(orig=False), expected_x)
                expected_y += high[i].values
                self.assert_numpy_array_equal(l.get_ydata(orig=False), expected_y)

            # check low dataframe result
            expected_x = np.array(
                [1514, 1519, 1523, 1527, 1531, 1536, 1540, 1544, 1549, 1553, 1558, 1562], dtype=np.float64
            )
            expected_y = np.zeros(len(expected_x), dtype=np.float64)
            for i in range(3):
                l = ax.lines[3 + i]
                self.assertEqual(PeriodIndex(data=l.get_xdata()).freq, idxh.freq)
                self.assert_numpy_array_equal(l.get_xdata(orig=False), expected_x)
                expected_y += low[i].values
                self.assert_numpy_array_equal(l.get_ydata(orig=False), expected_y)
Example #10
0
    def test_from_resampling_area_line_mixed(self):
        idxh = date_range('1/1/1999', periods=52, freq='W')
        idxl = date_range('1/1/1999', periods=12, freq='M')
        high = DataFrame(np.random.rand(len(idxh), 3),
                         index=idxh, columns=[0, 1, 2])
        low = DataFrame(np.random.rand(len(idxl), 3),
                     index=idxl, columns=[0, 1, 2])

        # low to high
        for kind1, kind2 in [('line', 'area'), ('area', 'line')]:
            ax = low.plot(kind=kind1, stacked=True)
            ax = high.plot(kind=kind2, stacked=True, ax=ax)

            # check low dataframe result
            expected_x = np.array([1514, 1519, 1523, 1527, 1531, 1536, 1540, 1544, 1549,
                                   1553, 1558, 1562])
            expected_y = np.zeros(len(expected_x))
            for i in range(3):
                l = ax.lines[i]
                self.assertTrue(PeriodIndex(data=l.get_xdata()).freq.startswith('W'))
                self.assert_numpy_array_equal(l.get_xdata(orig=False), expected_x)
                # check stacked values are correct
                expected_y += low[i].values
                self.assert_numpy_array_equal(l.get_ydata(orig=False), expected_y)

            # check high dataframe result
            expected_x = idxh.to_period().asi8
            expected_y = np.zeros(len(expected_x))
            for i in range(3):
                l = ax.lines[3 + i]
                self.assertTrue(PeriodIndex(data=l.get_xdata()).freq.startswith('W'))
                self.assert_numpy_array_equal(l.get_xdata(orig=False), expected_x)
                expected_y += high[i].values
                self.assert_numpy_array_equal(l.get_ydata(orig=False), expected_y)

        # high to low
        for kind1, kind2 in [('line', 'area'), ('area', 'line')]:
            ax = high.plot(kind=kind1, stacked=True)
            ax = low.plot(kind=kind2, stacked=True, ax=ax)

            # check high dataframe result
            expected_x = idxh.to_period().asi8
            expected_y = np.zeros(len(expected_x))
            for i in range(3):
                l = ax.lines[i]
                self.assertTrue(PeriodIndex(data=l.get_xdata()).freq.startswith('W'))
                self.assert_numpy_array_equal(l.get_xdata(orig=False), expected_x)
                expected_y += high[i].values
                self.assert_numpy_array_equal(l.get_ydata(orig=False), expected_y)

            # check low dataframe result
            expected_x = np.array([1514, 1519, 1523, 1527, 1531, 1536, 1540, 1544, 1549,
                                   1553, 1558, 1562])
            expected_y = np.zeros(len(expected_x))
            for i in range(3):
                l = ax.lines[3 + i]
                self.assertTrue(PeriodIndex(data=l.get_xdata()).freq.startswith('W'))
                self.assert_numpy_array_equal(l.get_xdata(orig=False), expected_x)
                expected_y += low[i].values
                self.assert_numpy_array_equal(l.get_ydata(orig=False), expected_y)
Example #11
0
    def test_resample_anchored_intraday(self):
        # #1471, #1458

        rng = date_range("1/1/2012", "4/1/2012", freq="100min")
        df = DataFrame(rng.month, index=rng)

        result = df.resample("M")
        expected = df.resample("M", kind="period").to_timestamp(how="end")
        tm.assert_frame_equal(result, expected)

        result = df.resample("M", closed="left")
        exp = df.tshift(1, freq="D").resample("M", kind="period")
        exp = exp.to_timestamp(how="end")

        tm.assert_frame_equal(result, exp)

        rng = date_range("1/1/2012", "4/1/2012", freq="100min")
        df = DataFrame(rng.month, index=rng)

        result = df.resample("Q")
        expected = df.resample("Q", kind="period").to_timestamp(how="end")
        tm.assert_frame_equal(result, expected)

        result = df.resample("Q", closed="left")
        expected = df.tshift(1, freq="D").resample("Q", kind="period", closed="left")
        expected = expected.to_timestamp(how="end")
        tm.assert_frame_equal(result, expected)

        ts = _simple_ts("2012-04-29 23:00", "2012-04-30 5:00", freq="h")
        resampled = ts.resample("M")
        self.assertEqual(len(resampled), 1)
Example #12
0
    def test_resample_upsampling_picked_but_not_correct(self):

        # Test for issue #3020
        dates = date_range("01-Jan-2014", "05-Jan-2014", freq="D")
        series = Series(1, index=dates)

        result = series.resample("D")
        self.assertEquals(result.index[0], dates[0])

        # GH 5955
        # incorrect deciding to upsample when the axis frequency matches the resample frequency

        import datetime

        s = Series(np.arange(1.0, 6), index=[datetime.datetime(1975, 1, i, 12, 0) for i in range(1, 6)])
        expected = Series(np.arange(1.0, 6), index=date_range("19750101", periods=5, freq="D"))

        result = s.resample("D", how="count")
        assert_series_equal(result, Series(1, index=expected.index))

        result1 = s.resample("D", how="sum")
        result2 = s.resample("D", how="mean")
        result3 = s.resample("D")
        assert_series_equal(result1, expected)
        assert_series_equal(result2, expected)
        assert_series_equal(result3, expected)
Example #13
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=datetools.Hour())
        self.assertRaises(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=datetools.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')
        self.assert_numpy_array_equal(dr, localized)
        with tm.assert_produces_warning(FutureWarning):
            localized_old = di.tz_localize(tz, infer_dst=True)
        self.assert_numpy_array_equal(dr, localized_old)
        self.assert_numpy_array_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=datetools.Hour())
        localized = dr.tz_localize(tz)
        localized_infer = dr.tz_localize(tz, ambiguous='infer')
        self.assert_numpy_array_equal(localized, localized_infer)
        with tm.assert_produces_warning(FutureWarning):
            localized_infer_old = dr.tz_localize(tz, infer_dst=True)
        self.assert_numpy_array_equal(localized, localized_infer_old)
Example #14
0
    def test_range_closed_with_tz_aware_start_end(self):
        # GH12409
        begin = Timestamp('2011/1/1', tz='US/Eastern')
        end = Timestamp('2014/1/1', tz='US/Eastern')

        for freq in ["3D", "2M", "7W", "3H", "A"]:
            closed = date_range(begin, end, closed=None, freq=freq)
            left = date_range(begin, end, closed="left", freq=freq)
            right = date_range(begin, end, closed="right", freq=freq)
            expected_left = left
            expected_right = right

            if end == closed[-1]:
                expected_left = closed[:-1]
            if begin == closed[0]:
                expected_right = closed[1:]

            self.assertTrue(expected_left.equals(left))
            self.assertTrue(expected_right.equals(right))

        # test with default frequency, UTC
        begin = Timestamp('2011/1/1', tz='UTC')
        end = Timestamp('2014/1/1', tz='UTC')

        intervals = ['left', 'right', None]
        for i in intervals:
            result = date_range(start=begin, end=end, closed=i)
            self.assertEqual(result[0], begin)
            self.assertEqual(result[-1], end)
Example #15
0
    def test_tz_localize_naive(self):
        rng = date_range('1/1/2011', periods=100, freq='H')

        conv = rng.tz_localize('US/Pacific')
        exp = date_range('1/1/2011', periods=100, freq='H', tz='US/Pacific')

        self.assertTrue(conv.equals(exp))
Example #16
0
    def test_resample_loffset(self):
        rng = date_range("1/1/2000 00:00:00", "1/1/2000 00:13:00", freq="min")
        s = Series(np.random.randn(14), index=rng)

        result = s.resample("5min", how="mean", closed="right", label="right", loffset=timedelta(minutes=1))
        idx = date_range("1/1/2000", periods=4, freq="5min")
        expected = Series([s[0], s[1:6].mean(), s[6:11].mean(), s[11:].mean()], index=idx + timedelta(minutes=1))
        assert_series_equal(result, expected)

        expected = s.resample("5min", how="mean", closed="right", label="right", loffset="1min")
        assert_series_equal(result, expected)

        expected = s.resample("5min", how="mean", closed="right", label="right", loffset=Minute(1))
        assert_series_equal(result, expected)

        self.assertEqual(result.index.freq, Minute(5))

        # from daily
        dti = DatetimeIndex(start=datetime(2005, 1, 1), end=datetime(2005, 1, 10), freq="D")
        ser = Series(np.random.rand(len(dti)), dti)

        # to weekly
        result = ser.resample("w-sun", how="last")
        expected = ser.resample("w-sun", how="last", loffset=-bday)
        self.assertEqual(result.index[0] - bday, expected.index[0])
Example #17
0
    def test_range_tz_dst_straddle_pytz(self):

        tm._skip_if_no_pytz()
        from pytz import timezone
        tz = timezone('US/Eastern')
        dates = [(tz.localize(datetime(2014, 3, 6)),
                  tz.localize(datetime(2014, 3, 12))),
                 (tz.localize(datetime(2013, 11, 1)),
                  tz.localize(datetime(2013, 11, 6)))]
        for (start, end) in dates:
            dr = date_range(start, end, freq='D')
            self.assertEqual(dr[0], start)
            self.assertEqual(dr[-1], end)
            self.assertEqual(np.all(dr.hour == 0), True)

            dr = date_range(start, end, freq='D', tz='US/Eastern')
            self.assertEqual(dr[0], start)
            self.assertEqual(dr[-1], end)
            self.assertEqual(np.all(dr.hour == 0), True)

            dr = date_range(start.replace(tzinfo=None), end.replace(
                tzinfo=None), freq='D', tz='US/Eastern')
            self.assertEqual(dr[0], start)
            self.assertEqual(dr[-1], end)
            self.assertEqual(np.all(dr.hour == 0), True)
    def test_resample_loffset(self):
        rng = date_range('1/1/2000 00:00:00', '1/1/2000 00:13:00', freq='min')
        s = Series(np.random.randn(14), index=rng)

        result = s.resample('5min', how='mean', closed='right', label='right',
                            loffset=timedelta(minutes=1))
        idx = date_range('1/1/2000', periods=4, freq='5min')
        expected = Series([s[0], s[1:6].mean(), s[6:11].mean(), s[11:].mean()],
                          index=idx + timedelta(minutes=1))
        assert_series_equal(result, expected)

        expected = s.resample(
            '5min', how='mean', closed='right', label='right',
            loffset='1min')
        assert_series_equal(result, expected)

        expected = s.resample(
            '5min', how='mean', closed='right', label='right',
            loffset=Minute(1))
        assert_series_equal(result, expected)

        self.assert_(result.index.freq == Minute(5))

                # from daily
        dti = DatetimeIndex(
            start=datetime(2005, 1, 1), end=datetime(2005, 1, 10),
            freq='D')
        ser = Series(np.random.rand(len(dti)), dti)

        # to weekly
        result = ser.resample('w-sun', how='last')
        expected = ser.resample('w-sun', how='last', loffset=-bday)
        self.assertEqual(result.index[0] - bday, expected.index[0])
Example #19
0
    def test_resample_base(self):
        rng = date_range("1/1/2000 00:00:00", "1/1/2000 02:00", freq="s")
        ts = Series(np.random.randn(len(rng)), index=rng)

        resampled = ts.resample("5min", base=2)
        exp_rng = date_range("12/31/1999 23:57:00", "1/1/2000 01:57", freq="5min")
        self.assert_(resampled.index.equals(exp_rng))
Example #20
0
    def test_resample_tz_localized(self):
        dr = date_range(start="2012-4-13", end="2012-5-1")
        ts = Series(lrange(len(dr)), dr)

        ts_utc = ts.tz_localize("UTC")
        ts_local = ts_utc.tz_convert("America/Los_Angeles")

        result = ts_local.resample("W")

        ts_local_naive = ts_local.copy()
        ts_local_naive.index = [x.replace(tzinfo=None) for x in ts_local_naive.index.to_pydatetime()]

        exp = ts_local_naive.resample("W").tz_localize("America/Los_Angeles")

        assert_series_equal(result, exp)

        # it works
        result = ts_local.resample("D")

        # #2245
        idx = date_range("2001-09-20 15:59", "2001-09-20 16:00", freq="T", tz="Australia/Sydney")
        s = Series([1, 2], index=idx)

        result = s.resample("D", closed="right", label="right")
        ex_index = date_range("2001-09-21", periods=1, freq="D", tz="Australia/Sydney")
        expected = Series([1.5], index=ex_index)

        assert_series_equal(result, expected)

        # for good measure
        result = s.resample("D", kind="period")
        ex_index = period_range("2001-09-20", periods=1, freq="D")
        expected = Series([1.5], index=ex_index)
        assert_series_equal(result, expected)
Example #21
0
    def test_from_weekly_resampling(self):
        idxh = date_range('1/1/1999', periods=52, freq='W')
        idxl = date_range('1/1/1999', periods=12, freq='M')
        high = Series(np.random.randn(len(idxh)), idxh)
        low = Series(np.random.randn(len(idxl)), idxl)
        low.plot()
        ax = high.plot()

        expected_h = idxh.to_period().asi8.astype(np.float64)
        expected_l = np.array([1514, 1519, 1523, 1527, 1531, 1536, 1540, 1544,
                               1549, 1553, 1558, 1562], dtype=np.float64)
        for l in ax.get_lines():
            self.assertTrue(PeriodIndex(data=l.get_xdata()).freq, idxh.freq)
            xdata = l.get_xdata(orig=False)
            if len(xdata) == 12:  # idxl lines
                self.assert_numpy_array_equal(xdata, expected_l)
            else:
                self.assert_numpy_array_equal(xdata, expected_h)
        tm.close()

        # tsplot
        from pandas.tseries.plotting import tsplot
        import matplotlib.pyplot as plt

        tsplot(low, plt.Axes.plot)
        lines = tsplot(high, plt.Axes.plot)
        for l in lines:
            self.assertTrue(PeriodIndex(data=l.get_xdata()).freq, idxh.freq)
            xdata = l.get_xdata(orig=False)
            if len(xdata) == 12:  # idxl lines
                self.assert_numpy_array_equal(xdata, expected_l)
            else:
                self.assert_numpy_array_equal(xdata, expected_h)
    def test_resample_base(self):
        rng = date_range('1/1/2000 00:00:00', '1/1/2000 02:00', freq='s')
        ts = Series(np.random.randn(len(rng)), index=rng)

        resampled = ts.resample('5min', base=2)
        exp_rng = date_range('12/31/1999 23:57:00', '1/1/2000 01:57',
                             freq='5min')
        self.assert_(resampled.index.equals(exp_rng))
Example #23
0
 def test_align_aware(self):
     idx1 = date_range('2001', periods=5, freq='H', tz='US/Eastern')
     idx2 = date_range('2001', periods=5, freq='2H', tz='US/Eastern')
     df1 = DataFrame(np.random.randn(len(idx1), 3), idx1)
     df2 = DataFrame(np.random.randn(len(idx2), 3), idx2)
     new1, new2 = df1.align(df2)
     self.assertEqual(df1.index.tz, new1.index.tz)
     self.assertEqual(df2.index.tz, new2.index.tz)
 def test_align_aware(self):
     idx1 = date_range("2001", periods=5, freq="H", tz="US/Eastern")
     idx2 = date_range("2001", periods=5, freq="2H", tz="US/Eastern")
     df1 = DataFrame(np.random.randn(len(idx1), 3), idx1)
     df2 = DataFrame(np.random.randn(len(idx2), 3), idx2)
     new1, new2 = df1.align(df2)
     self.assertEqual(df1.index.tz, new1.index.tz)
     self.assertEqual(df2.index.tz, new2.index.tz)
Example #25
0
 def test_mixed_freq_hf_first(self):
     idxh = date_range('1/1/1999', periods=365, freq='D')
     idxl = date_range('1/1/1999', periods=12, freq='M')
     high = Series(np.random.randn(len(idxh)), idxh)
     low = Series(np.random.randn(len(idxl)), idxl)
     high.plot()
     ax = low.plot()
     for l in ax.get_lines():
         self.assertEqual(PeriodIndex(data=l.get_xdata()).freq, 'D')
Example #26
0
 def test_to_weekly_resampling(self):
     idxh = date_range('1/1/1999', periods=52, freq='W')
     idxl = date_range('1/1/1999', periods=12, freq='M')
     high = Series(np.random.randn(len(idxh)), idxh)
     low = Series(np.random.randn(len(idxl)), idxl)
     high.plot()
     ax = low.plot()
     for l in ax.get_lines():
         self.assertTrue(PeriodIndex(data=l.get_xdata()).freq.startswith('W'))
    def test_date_range_span_dst_transition(self):
        # #1778

        # Standard -> Daylight Savings Time
        dr = date_range("03/06/2012 00:00", periods=200, freq="W-FRI", tz="US/Eastern")

        self.assertTrue((dr.hour == 0).all())

        dr = date_range("2012-11-02", periods=10, tz=self.tzstr("US/Eastern"))
        self.assertTrue((dr.hour == 0).all())
Example #28
0
 def test_mixed_freq_hf_first(self):
     import matplotlib.pyplot as plt
     plt.close('all')
     idxh = date_range('1/1/1999', periods=365, freq='D')
     idxl = date_range('1/1/1999', periods=12, freq='M')
     high = Series(np.random.randn(len(idxh)), idxh)
     low = Series(np.random.randn(len(idxl)), idxl)
     high.plot()
     ax = low.plot()
     for l in ax.get_lines():
         self.assert_(PeriodIndex(data=l.get_xdata()).freq == 'D')
Example #29
0
 def test_secondary_upsample(self):
     idxh = date_range('1/1/1999', periods=365, freq='D')
     idxl = date_range('1/1/1999', periods=12, freq='M')
     high = Series(np.random.randn(len(idxh)), idxh)
     low = Series(np.random.randn(len(idxl)), idxl)
     low.plot()
     ax = high.plot(secondary_y=True)
     for l in ax.get_lines():
         self.assertEqual(l.get_xdata().freq, 'D')
     for l in ax.right_ax.get_lines():
         self.assertEqual(l.get_xdata().freq, 'D')
Example #30
0
 def test_from_weekly_resampling(self):
     import matplotlib.pyplot as plt
     plt.close('all')
     idxh = date_range('1/1/1999', periods=52, freq='W')
     idxl = date_range('1/1/1999', periods=12, freq='M')
     high = Series(np.random.randn(len(idxh)), idxh)
     low = Series(np.random.randn(len(idxl)), idxl)
     low.plot()
     ax = high.plot()
     for l in ax.get_lines():
         self.assert_(PeriodIndex(data=l.get_xdata()).freq.startswith('W'))
Example #31
0
    def test_tslib_tz_convert_dst(self):
        for freq, n in [('H', 1), ('T', 60), ('S', 3600)]:
            # Start DST
            idx = date_range('2014-03-08 23:00',
                             '2014-03-09 09:00',
                             freq=freq,
                             tz='UTC')
            idx = idx.tz_convert('US/Eastern')
            expected = np.repeat(
                np.array([18, 19, 20, 21, 22, 23, 0, 1, 3, 4, 5]),
                np.array([n, n, n, n, n, n, n, n, n, n, 1]))
            self.assert_numpy_array_equal(idx.hour, expected)

            idx = date_range('2014-03-08 18:00',
                             '2014-03-09 05:00',
                             freq=freq,
                             tz='US/Eastern')
            idx = idx.tz_convert('UTC')
            expected = np.repeat(np.array([23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
                                 np.array([n, n, n, n, n, n, n, n, n, n, 1]))
            self.assert_numpy_array_equal(idx.hour, expected)

            # End DST
            idx = date_range('2014-11-01 23:00',
                             '2014-11-02 09:00',
                             freq=freq,
                             tz='UTC')
            idx = idx.tz_convert('US/Eastern')
            expected = np.repeat(
                np.array([19, 20, 21, 22, 23, 0, 1, 1, 2, 3, 4]),
                np.array([n, n, n, n, n, n, n, n, n, n, 1]))
            self.assert_numpy_array_equal(idx.hour, expected)

            idx = date_range('2014-11-01 18:00',
                             '2014-11-02 05:00',
                             freq=freq,
                             tz='US/Eastern')
            idx = idx.tz_convert('UTC')
            expected = np.repeat(
                np.array([22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),
                np.array([n, n, n, n, n, n, n, n, n, n, n, n, 1]))
            self.assert_numpy_array_equal(idx.hour, expected)

        # daily
        # Start DST
        idx = date_range('2014-03-08 00:00',
                         '2014-03-09 00:00',
                         freq='D',
                         tz='UTC')
        idx = idx.tz_convert('US/Eastern')
        self.assert_numpy_array_equal(idx.hour, np.array([19, 19]))

        idx = date_range('2014-03-08 00:00',
                         '2014-03-09 00:00',
                         freq='D',
                         tz='US/Eastern')
        idx = idx.tz_convert('UTC')
        self.assert_numpy_array_equal(idx.hour, np.array([5, 5]))

        # End DST
        idx = date_range('2014-11-01 00:00',
                         '2014-11-02 00:00',
                         freq='D',
                         tz='UTC')
        idx = idx.tz_convert('US/Eastern')
        self.assert_numpy_array_equal(idx.hour, np.array([20, 20]))

        idx = date_range('2014-11-01 00:00',
                         '2014-11-02 000:00',
                         freq='D',
                         tz='US/Eastern')
        idx = idx.tz_convert('UTC')
        self.assert_numpy_array_equal(idx.hour, np.array([4, 4]))
Example #32
0
    def test_parsers(self):
        cases = {
            '2011-01-01': datetime.datetime(2011, 1, 1),
            '2Q2005': datetime.datetime(2005, 4, 1),
            '2Q05': datetime.datetime(2005, 4, 1),
            '2005Q1': datetime.datetime(2005, 1, 1),
            '05Q1': datetime.datetime(2005, 1, 1),
            '2011Q3': datetime.datetime(2011, 7, 1),
            '11Q3': datetime.datetime(2011, 7, 1),
            '3Q2011': datetime.datetime(2011, 7, 1),
            '3Q11': datetime.datetime(2011, 7, 1),

            # quarterly without space
            '2000Q4': datetime.datetime(2000, 10, 1),
            '00Q4': datetime.datetime(2000, 10, 1),
            '4Q2000': datetime.datetime(2000, 10, 1),
            '4Q00': datetime.datetime(2000, 10, 1),
            '2000q4': datetime.datetime(2000, 10, 1),
            '2000-Q4': datetime.datetime(2000, 10, 1),
            '00-Q4': datetime.datetime(2000, 10, 1),
            '4Q-2000': datetime.datetime(2000, 10, 1),
            '4Q-00': datetime.datetime(2000, 10, 1),
            '2000q4': datetime.datetime(2000, 10, 1),
            '00q4': datetime.datetime(2000, 10, 1),
            '2005': datetime.datetime(2005, 1, 1),
            '2005-11': datetime.datetime(2005, 11, 1),
            '2005 11': datetime.datetime(2005, 11, 1),
            '11-2005': datetime.datetime(2005, 11, 1),
            '11 2005': datetime.datetime(2005, 11, 1),
            '200511': datetime.datetime(2020, 5, 11),
            '20051109': datetime.datetime(2005, 11, 9),
            '20051109 10:15': datetime.datetime(2005, 11, 9, 10, 15),
            '20051109 08H': datetime.datetime(2005, 11, 9, 8, 0),
            '2005-11-09 10:15': datetime.datetime(2005, 11, 9, 10, 15),
            '2005-11-09 08H': datetime.datetime(2005, 11, 9, 8, 0),
            '2005/11/09 10:15': datetime.datetime(2005, 11, 9, 10, 15),
            '2005/11/09 08H': datetime.datetime(2005, 11, 9, 8, 0),
            "Thu Sep 25 10:36:28 2003":
            datetime.datetime(2003, 9, 25, 10, 36, 28),
            "Thu Sep 25 2003": datetime.datetime(2003, 9, 25),
            "Sep 25 2003": datetime.datetime(2003, 9, 25),
            "January 1 2014": datetime.datetime(2014, 1, 1),

            # GH 10537
            '2014-06': datetime.datetime(2014, 6, 1),
            '06-2014': datetime.datetime(2014, 6, 1),
            '2014-6': datetime.datetime(2014, 6, 1),
            '6-2014': datetime.datetime(2014, 6, 1),
        }

        for date_str, expected in compat.iteritems(cases):
            result1, _, _ = tools.parse_time_string(date_str)
            result2 = to_datetime(date_str)
            result3 = to_datetime([date_str])
            result4 = to_datetime(np.array([date_str], dtype=object))
            result5 = Timestamp(date_str)
            result6 = DatetimeIndex([date_str])[0]
            result7 = date_range(date_str, freq='S', periods=1)
            self.assertEqual(result1, expected)
            self.assertEqual(result2, expected)
            self.assertEqual(result3, expected)
            self.assertEqual(result4, expected)
            self.assertEqual(result5, expected)
            self.assertEqual(result6, expected)
            self.assertEqual(result7, expected)

        # NaT
        result1, _, _ = tools.parse_time_string('NaT')
        result2 = to_datetime('NaT')
        result3 = Timestamp('NaT')
        result4 = DatetimeIndex(['NaT'])[0]
        self.assertTrue(result1 is tslib.NaT)
        self.assertTrue(result1 is tslib.NaT)
        self.assertTrue(result1 is tslib.NaT)
        self.assertTrue(result1 is tslib.NaT)
def buildNumericDataFrame(columns, length):
    index = date_range("1/1/2010", periods=length, freq="D")
    return DataFrame(randn(length, len(columns)), index=index, columns=columns)
def buildTextDataFrame(columns, length, factors=["False", "True"]):
    index = date_range("1/1/2010", periods=length, freq="D")
    return DataFrame(choice(factors, (length, len(columns))),
                     index=index,
                     columns=columns)
Example #35
0
 def test_years_only(self):
     # GH 6961
     dr = date_range('2014', '2015', freq='M')
     self.assertEqual(dr[0], datetime(2014, 1, 31))
     self.assertEqual(dr[-1], datetime(2014, 12, 31))
Example #36
0
    def test_shift_localized(self):
        dr = date_range('2011/1/1', '2012/1/1', freq='W-FRI')
        dr_tz = dr.tz_localize(self.tzstr('US/Eastern'))

        result = dr_tz.shift(1, '10T')
        self.assertEqual(result.tz, dr_tz.tz)
Example #37
0
    def test_resample_basic(self):
        rng = date_range('1/1/2000 00:00:00', '1/1/2000 00:13:00', freq='min')
        s = Series(np.random.randn(14), index=rng)
        result = s.resample('5min', how='mean', closed='right', label='right')
        expected = Series([s[0], s[1:6].mean(), s[6:11].mean(), s[11:].mean()],
                          index=date_range('1/1/2000', periods=4, freq='5min'))
        assert_series_equal(result, expected)

        result = s.resample('5min', how='mean', closed='left', label='right')
        expected = Series([s[:5].mean(), s[5:10].mean(), s[10:].mean()],
                          index=date_range('1/1/2000 00:05',
                                           periods=3,
                                           freq='5min'))
        assert_series_equal(result, expected)

        s = self.series
        result = s.resample('5Min', how='last')
        grouper = TimeGrouper(Minute(5), closed='right', label='right')
        expect = s.groupby(grouper).agg(lambda x: x[-1])
        assert_series_equal(result, expect)

        # from daily
        dti = DatetimeIndex(start=datetime(2005, 1, 1),
                            end=datetime(2005, 1, 10),
                            freq='D')

        s = Series(np.random.rand(len(dti)), dti)

        # to weekly
        result = s.resample('w-sun', how='last')

        self.assertEquals(len(result), 3)
        self.assert_((result.index.dayofweek == [6, 6, 6]).all())
        self.assertEquals(result.irow(0), s['1/2/2005'])
        self.assertEquals(result.irow(1), s['1/9/2005'])
        self.assertEquals(result.irow(2), s.irow(-1))

        result = s.resample('W-MON', how='last')
        self.assertEquals(len(result), 2)
        self.assert_((result.index.dayofweek == [0, 0]).all())
        self.assertEquals(result.irow(0), s['1/3/2005'])
        self.assertEquals(result.irow(1), s['1/10/2005'])

        result = s.resample('W-TUE', how='last')
        self.assertEquals(len(result), 2)
        self.assert_((result.index.dayofweek == [1, 1]).all())
        self.assertEquals(result.irow(0), s['1/4/2005'])
        self.assertEquals(result.irow(1), s['1/10/2005'])

        result = s.resample('W-WED', how='last')
        self.assertEquals(len(result), 2)
        self.assert_((result.index.dayofweek == [2, 2]).all())
        self.assertEquals(result.irow(0), s['1/5/2005'])
        self.assertEquals(result.irow(1), s['1/10/2005'])

        result = s.resample('W-THU', how='last')
        self.assertEquals(len(result), 2)
        self.assert_((result.index.dayofweek == [3, 3]).all())
        self.assertEquals(result.irow(0), s['1/6/2005'])
        self.assertEquals(result.irow(1), s['1/10/2005'])

        result = s.resample('W-FRI', how='last')
        self.assertEquals(len(result), 2)
        self.assert_((result.index.dayofweek == [4, 4]).all())
        self.assertEquals(result.irow(0), s['1/7/2005'])
        self.assertEquals(result.irow(1), s['1/10/2005'])

        # to biz day
        result = s.resample('B', how='last')
        self.assertEquals(len(result), 6)
        self.assert_((result.index.dayofweek == [0, 1, 2, 3, 4, 0]).all())
        self.assertEquals(result.irow(0), s['1/3/2005'])
        self.assertEquals(result.irow(1), s['1/4/2005'])
        self.assertEquals(result.irow(5), s['1/10/2005'])
Example #38
0
 def test_timezone_comparaison_bug(self):
     start = Timestamp('20130220 10:00', tz='US/Eastern')
     try:
         date_range(start, periods=2, tz='US/Eastern')
     except AssertionError:
         self.fail()
Example #39
0
 def setUp(self):
     self.ts = Series(np.random.randn(1000),
                      index=date_range('1/1/2000', periods=1000))
Example #40
0
 def test_monthly_resample_error(self):
     # #1451
     dates = date_range('4/16/2012 20:00', periods=5000, freq='h')
     ts = Series(np.random.randn(len(dates)), index=dates)
     # it works!
     result = ts.resample('M')
Example #41
0
 def test_anchored_lowercase_buglet(self):
     dates = date_range('4/16/2012 20:00', periods=50000, freq='s')
     ts = Series(np.random.randn(len(dates)), index=dates)
     # it works!
     ts.resample('d')
Example #42
0
def _simple_ts(start, end, freq='D'):
    rng = date_range(start, end, freq=freq)
    return Series(np.random.randn(len(rng)), index=rng)
Example #43
0
    def test_string_index_alias_tz_aware(self):
        rng = date_range('1/1/2000', periods=10, tz=self.tzstr('US/Eastern'))
        ts = Series(np.random.randn(len(rng)), index=rng)

        result = ts['1/3/2000']
        self.assertAlmostEqual(result, ts[2])
Example #44
0
    def test_hongkong_tz_convert(self):
        # #1673
        dr = date_range('2012-01-01', '2012-01-10', freq='D', tz='Hongkong')

        # it works!
        dr.hour
Example #45
0
    def test_tz_string(self):
        result = date_range('1/1/2000', periods=10, tz=self.tzstr('US/Eastern'))
        expected = date_range('1/1/2000', periods=10,
                              tz=self.tz('US/Eastern'))

        self.assertTrue(result.equals(expected))
Example #46
0
 def test_datetimeindex_tz(self):
     rng = date_range('03/12/2012 00:00', periods=10, freq='W-FRI',
                      tz='US/Eastern')
     rng2 = DatetimeIndex(data=rng, tz='US/Eastern')
     self.assertTrue(rng.equals(rng2))
Example #47
0
 def test_high_freq(self):
     freaks = ['ms', 'us']
     for freq in freaks:
         rng = date_range('1/1/2012', periods=100000, freq=freq)
         ser = Series(np.random.randn(len(rng)), rng)
         _check_plot_works(ser.plot)
Example #48
0
 def test_cached_range_bug(self):
     rng = date_range('2010-09-01 05:00:00',
                      periods=50,
                      freq=datetools.DateOffset(hours=6))
     self.assertEqual(len(rng), 50)
     self.assertEqual(rng[0], datetime(2010, 9, 1, 5))
Example #49
0
    def test_from_resampling_area_line_mixed(self):
        idxh = date_range('1/1/1999', periods=52, freq='W')
        idxl = date_range('1/1/1999', periods=12, freq='M')
        high = DataFrame(np.random.rand(len(idxh), 3),
                         index=idxh,
                         columns=[0, 1, 2])
        low = DataFrame(np.random.rand(len(idxl), 3),
                        index=idxl,
                        columns=[0, 1, 2])

        # low to high
        for kind1, kind2 in [('line', 'area'), ('area', 'line')]:
            ax = low.plot(kind=kind1, stacked=True)
            ax = high.plot(kind=kind2, stacked=True, ax=ax)

            # check low dataframe result
            expected_x = np.array([
                1514, 1519, 1523, 1527, 1531, 1536, 1540, 1544, 1549, 1553,
                1558, 1562
            ])
            expected_y = np.zeros(len(expected_x))
            for i in range(3):
                l = ax.lines[i]
                self.assertEqual(PeriodIndex(l.get_xdata()).freq, idxh.freq)
                self.assert_numpy_array_equal(l.get_xdata(orig=False),
                                              expected_x)
                # check stacked values are correct
                expected_y += low[i].values
                self.assert_numpy_array_equal(l.get_ydata(orig=False),
                                              expected_y)

            # check high dataframe result
            expected_x = idxh.to_period().asi8
            expected_y = np.zeros(len(expected_x))
            for i in range(3):
                l = ax.lines[3 + i]
                self.assertEqual(
                    PeriodIndex(data=l.get_xdata()).freq, idxh.freq)
                self.assert_numpy_array_equal(l.get_xdata(orig=False),
                                              expected_x)
                expected_y += high[i].values
                self.assert_numpy_array_equal(l.get_ydata(orig=False),
                                              expected_y)

        # high to low
        for kind1, kind2 in [('line', 'area'), ('area', 'line')]:
            ax = high.plot(kind=kind1, stacked=True)
            ax = low.plot(kind=kind2, stacked=True, ax=ax)

            # check high dataframe result
            expected_x = idxh.to_period().asi8
            expected_y = np.zeros(len(expected_x))
            for i in range(3):
                l = ax.lines[i]
                self.assertEqual(
                    PeriodIndex(data=l.get_xdata()).freq, idxh.freq)
                self.assert_numpy_array_equal(l.get_xdata(orig=False),
                                              expected_x)
                expected_y += high[i].values
                self.assert_numpy_array_equal(l.get_ydata(orig=False),
                                              expected_y)

            # check low dataframe result
            expected_x = np.array([
                1514, 1519, 1523, 1527, 1531, 1536, 1540, 1544, 1549, 1553,
                1558, 1562
            ])
            expected_y = np.zeros(len(expected_x))
            for i in range(3):
                l = ax.lines[3 + i]
                self.assertEqual(
                    PeriodIndex(data=l.get_xdata()).freq, idxh.freq)
                self.assert_numpy_array_equal(l.get_xdata(orig=False),
                                              expected_x)
                expected_y += low[i].values
                self.assert_numpy_array_equal(l.get_ydata(orig=False),
                                              expected_y)
Example #50
0
    def test_resample_tz_localized(self):
        dr = date_range(start='2012-4-13', end='2012-5-1')
        ts = Series(lrange(len(dr)), dr)

        ts_utc = ts.tz_localize('UTC')
        ts_local = ts_utc.tz_convert('America/Los_Angeles')

        result = ts_local.resample('W')

        ts_local_naive = ts_local.copy()
        ts_local_naive.index = [
            x.replace(tzinfo=None)
            for x in ts_local_naive.index.to_pydatetime()
        ]

        exp = ts_local_naive.resample('W').tz_localize('America/Los_Angeles')

        assert_series_equal(result, exp)

        # it works
        result = ts_local.resample('D')

        # #2245
        idx = date_range('2001-09-20 15:59',
                         '2001-09-20 16:00',
                         freq='T',
                         tz='Australia/Sydney')
        s = Series([1, 2], index=idx)

        result = s.resample('D', closed='right', label='right')
        ex_index = date_range('2001-09-21',
                              periods=1,
                              freq='D',
                              tz='Australia/Sydney')
        expected = Series([1.5], index=ex_index)

        assert_series_equal(result, expected)

        # for good measure
        result = s.resample('D', kind='period')
        ex_index = period_range('2001-09-20', periods=1, freq='D')
        expected = Series([1.5], index=ex_index)
        assert_series_equal(result, expected)

        # GH 6397
        # comparing an offset that doesn't propogate tz's
        rng = date_range('1/1/2011', periods=20000, freq='H')
        rng = rng.tz_localize('EST')
        ts = DataFrame(index=rng)
        ts['first'] = np.random.randn(len(rng))
        ts['second'] = np.cumsum(np.random.randn(len(rng)))
        expected = DataFrame(
            {
                'first': ts.resample('A', how=np.sum)['first'],
                'second': ts.resample('A', how=np.mean)['second']
            },
            columns=['first', 'second'])
        result = ts.resample('A', how={
            'first': np.sum,
            'second': np.mean
        }).reindex(columns=['first', 'second'])
        assert_frame_equal(result, expected)
Example #51
0
    def test_index_drop_dont_lose_tz(self):
        # #2621
        ind = date_range("2012-12-01", periods=10, tz="utc")
        ind = ind.drop(ind[-1])

        self.assertTrue(ind.tz is not None)
Example #52
0
    def test_index_equals_with_tz(self):
        left = date_range('1/1/2011', periods=100, freq='H', tz='utc')
        right = date_range('1/1/2011', periods=100, freq='H', tz='US/Eastern')

        self.assertFalse(left.equals(right))
Example #53
0
    def test_parsers(self):

        # https://github.com/dateutil/dateutil/issues/217
        import dateutil
        yearfirst = dateutil.__version__ >= LooseVersion('2.5.0')

        cases = {'2011-01-01': datetime.datetime(2011, 1, 1),
                 '2Q2005': datetime.datetime(2005, 4, 1),
                 '2Q05': datetime.datetime(2005, 4, 1),
                 '2005Q1': datetime.datetime(2005, 1, 1),
                 '05Q1': datetime.datetime(2005, 1, 1),
                 '2011Q3': datetime.datetime(2011, 7, 1),
                 '11Q3': datetime.datetime(2011, 7, 1),
                 '3Q2011': datetime.datetime(2011, 7, 1),
                 '3Q11': datetime.datetime(2011, 7, 1),

                 # quarterly without space
                 '2000Q4': datetime.datetime(2000, 10, 1),
                 '00Q4': datetime.datetime(2000, 10, 1),
                 '4Q2000': datetime.datetime(2000, 10, 1),
                 '4Q00': datetime.datetime(2000, 10, 1),
                 '2000q4': datetime.datetime(2000, 10, 1),
                 '2000-Q4': datetime.datetime(2000, 10, 1),
                 '00-Q4': datetime.datetime(2000, 10, 1),
                 '4Q-2000': datetime.datetime(2000, 10, 1),
                 '4Q-00': datetime.datetime(2000, 10, 1),
                 '00q4': datetime.datetime(2000, 10, 1),
                 '2005': datetime.datetime(2005, 1, 1),
                 '2005-11': datetime.datetime(2005, 11, 1),
                 '2005 11': datetime.datetime(2005, 11, 1),
                 '11-2005': datetime.datetime(2005, 11, 1),
                 '11 2005': datetime.datetime(2005, 11, 1),
                 '200511': datetime.datetime(2020, 5, 11),
                 '20051109': datetime.datetime(2005, 11, 9),
                 '20051109 10:15': datetime.datetime(2005, 11, 9, 10, 15),
                 '20051109 08H': datetime.datetime(2005, 11, 9, 8, 0),
                 '2005-11-09 10:15': datetime.datetime(2005, 11, 9, 10, 15),
                 '2005-11-09 08H': datetime.datetime(2005, 11, 9, 8, 0),
                 '2005/11/09 10:15': datetime.datetime(2005, 11, 9, 10, 15),
                 '2005/11/09 08H': datetime.datetime(2005, 11, 9, 8, 0),
                 "Thu Sep 25 10:36:28 2003": datetime.datetime(2003, 9, 25, 10,
                                                               36, 28),
                 "Thu Sep 25 2003": datetime.datetime(2003, 9, 25),
                 "Sep 25 2003": datetime.datetime(2003, 9, 25),
                 "January 1 2014": datetime.datetime(2014, 1, 1),

                 # GH 10537
                 '2014-06': datetime.datetime(2014, 6, 1),
                 '06-2014': datetime.datetime(2014, 6, 1),
                 '2014-6': datetime.datetime(2014, 6, 1),
                 '6-2014': datetime.datetime(2014, 6, 1),

                 '20010101 12': datetime.datetime(2001, 1, 1, 12),
                 '20010101 1234': datetime.datetime(2001, 1, 1, 12, 34),
                 '20010101 123456': datetime.datetime(2001, 1, 1, 12, 34, 56),
                 }

        for date_str, expected in compat.iteritems(cases):
            result1, _, _ = tools.parse_time_string(date_str,
                                                    yearfirst=yearfirst)
            result2 = to_datetime(date_str, yearfirst=yearfirst)
            result3 = to_datetime([date_str], yearfirst=yearfirst)
            # result5 is used below
            result4 = to_datetime(np.array([date_str], dtype=object),
                                  yearfirst=yearfirst)
            result6 = DatetimeIndex([date_str], yearfirst=yearfirst)
            # result7 is used below
            result8 = DatetimeIndex(Index([date_str]), yearfirst=yearfirst)
            result9 = DatetimeIndex(Series([date_str]), yearfirst=yearfirst)

            for res in [result1, result2]:
                self.assertEqual(res, expected)
            for res in [result3, result4, result6, result8, result9]:
                exp = DatetimeIndex([pd.Timestamp(expected)])
                tm.assert_index_equal(res, exp)

            # these really need to have yearfist, but we don't support
            if not yearfirst:
                result5 = Timestamp(date_str)
                self.assertEqual(result5, expected)
                result7 = date_range(date_str, freq='S', periods=1,
                                     yearfirst=yearfirst)
                self.assertEqual(result7, expected)

        # NaT
        result1, _, _ = tools.parse_time_string('NaT')
        result2 = to_datetime('NaT')
        result3 = Timestamp('NaT')
        result4 = DatetimeIndex(['NaT'])[0]
        self.assertTrue(result1 is tslib.NaT)
        self.assertTrue(result1 is tslib.NaT)
        self.assertTrue(result1 is tslib.NaT)
        self.assertTrue(result1 is tslib.NaT)
Example #54
0
 def test_ts_plot_with_tz(self):
     # GH2877
     index = date_range('1/1/2011', periods=2, freq='H',
                        tz='Europe/Brussels')
     ts = Series([188.5, 328.25], index=index)
     _check_plot_works(ts.plot)
Example #55
0
    def update(self):
        '''
        Plots the 3D bars and axis.
        :return:
        '''
        is_first_update = False

        if self._last_view is None:
            self._last_view = (38, 8, 205, array([8, 17.5, 49.25]))
            self.scene.mlab.view(*self._last_view)
            is_first_update = True
        else:
            self._last_view = self.scene.mlab.view()

        self.scene.disable_render = True
        self.clear_figure()
        #print "Day: %s" % time.ctime(self.current_time)

        max_z = 0

        time_index = ((self._data_times <= self.current_time) &
                      (self._data_times >=
                       (datetools.to_datetime(self.current_time) -
                        self._num_of_shown_days_to_timedelta())))

        if self.selected_source is None:  # Plot all sources
            x = []
            y = []
            z = []
            severities = []

            for source in range(self._num_of_sources):
                for data_index in array(range(len(self._data)))[time_index][
                        self._data_sources[time_index] == source]:
                    if self.used_cache_size > 0 and self._cache.has_key(
                            data_index):
                        devsptr, sevs, expectptr, min2, max2, count = self._cache[
                            data_index]
                    else:
                        devs, sevs, expect, min2, max2 = self._vis_model.calc_one(
                            data_index)

                        devsptr = pyisc._to_cpp_array(devs)
                        expectptr = pyisc._to_cpp_array(expect)

                        count = None

                    if count is None:
                        self._trim_cache(data_index, self.used_cache_size)
                        vec = self._data._get_intfloat(data_index)
                        count = sum([
                            pyisc._get_intfloat_value(
                                vec,
                                self._vis_model.get_event_hierarchy().
                                get_index_value(l)) for l in range(
                                    self._vis_model.num_of_severity_levels_)
                            if self._vis_model.get_event_hierarchy().
                            get_index_value(l) != -1
                        ])
                        self._cache[data_index] = (devsptr, sevs, expectptr,
                                                   min2, max2, count)

                    ztime = self._num_of_shown_days_to_int() - (
                        self.current_time - self._data_times[data_index]).days

                    x.append(source)
                    y.append(ztime)

                    z.append(count)

                    sev_max = argmax(sevs)
                    sev = (-1
                           if sevs[sev_max] < self.anomaly_detection_threshold
                           else sev_max)

                    severities.append(sev)
            self._create_barcharts(severities, x, y, z)

            max_z = max([max_z] + z)
        else:  # Plot for selected source
            source_index = self._data_sources[
                time_index] == self.selected_source

            data_indexes = array(range(len(
                self._data)))[time_index][source_index]
            x = []
            y = []
            z = []
            severities = []

            # Plot selected events
            for data_index in data_indexes:
                if self.used_cache_size > 0 and self._cache.has_key(
                        data_index):
                    devsptr, sevs, expectptr, min2, max2, _ = self._cache[
                        data_index]
                else:
                    devs, sevs, expect, min2, max2 = self._vis_model.calc_one(
                        data_index)
                    devsptr = pyisc._to_cpp_array(devs)
                    expectptr = pyisc._to_cpp_array(expect)

                    self._trim_cache(data_index, self.used_cache_size)

                    self._cache[data_index] = (devsptr, sevs, expectptr, min2,
                                               max2, None)

                ztime = self._num_of_shown_days_to_int() - (
                    self.current_time - self._data_times[data_index]).days

                if self._vis_model.get_num_of_selected_events() > 0:
                    for element in range(
                            self._vis_model.get_num_of_selected_events()):
                        x.append(element)
                        y.append(ztime)

                        (dev, sev, count, mexp,
                         maxind) = self._vis_model.summarize_event_children(
                             self._vis_model.get_selected_event(element),
                             devsptr, expectptr,
                             self._data._get_intfloat(data_index),
                             1 if element >= self.selected_event else 0)
                        z.append(count)

                        if dev < self.anomaly_detection_threshold:
                            severities.append(-1)
                        else:
                            severities.append(sev)

            self._create_barcharts(severities, x, y, z)
            max_z = max([max_z] + z)

        self.scene.disable_render = True

        curr_t = self.current_time
        time_strs = [
            str(t) for t in date_range(
                curr_t - self._num_of_shown_days_to_timedelta(), curr_t)
        ]
        time_max_len = min([len(t) for t in time_strs])

        max_x = (self._num_of_sources if self.selected_source is None else
                 self._vis_model.get_num_of_selected_events())
        max_y = self._num_of_shown_days_to_int()

        if len(self.time_text3ds) != len(time_strs):
            self.scene.remove_actors(
                [t.actor.actors[0] for t in self.time_text3ds])
            self.time_text3ds = []

            for slot in range(len(time_strs)):
                name = time_strs[slot]
                pos = (max_x + time_max_len / 2 - 1, slot, 0)
                self.time_text3ds.append(
                    self.scene.mlab.text3d(*pos,
                                           text=name,
                                           scale=0.5,
                                           color=(0, 0, 0),
                                           orient_to_camera=False,
                                           orientation=(180, 180, 0)))
        else:
            for slot in range(len(time_strs)):
                name = time_strs[slot]
                pos = (max_x + time_max_len / 2 - 1, slot, 0)

                self.time_text3ds[slot].position = pos
                self.time_text3ds[slot].text = name

        if self.selected_source is None:
            source_strs = [
                self._get_source_name(source)
                for source in range(self._num_of_sources)
            ]
            num_of_sources = self._num_of_sources
        else:
            source_strs = [
                self._get_event_name(element) for element in range(
                    self._vis_model.get_num_of_selected_events())
            ]
            num_of_sources = self._vis_model.get_num_of_selected_events()

        if len(self.source_text3ds
               ) != num_of_sources or self.selected_source is None:
            self.scene.remove_actors(
                [t.actor.actors[0] for t in self.source_text3ds])
            self.source_text3ds = []
            for source in range(num_of_sources):
                name = source_strs[source]
                if self.selected_source is None:
                    self.source_text3ds.append(
                        self.scene.mlab.text3d(source,
                                               max_y + 0.5,
                                               0,
                                               name,
                                               scale=0.6,
                                               color=(0, 0, 0),
                                               orient_to_camera=False,
                                               orientation=(0, 0, 90)))
                else:
                    self.source_text3ds.append(
                        self.scene.mlab.text3d(
                            source,
                            max_y + 0.5,
                            0,
                            name,
                            color=(0, 0,
                                   0) if source < self.selected_event else
                            (0, 0, 0.8) if source > self.selected_event else
                            (0, 0, 1),
                            scale=0.5,
                            orient_to_camera=False,
                            orientation=(0, 0, 90)))
        else:
            for source in range(num_of_sources):
                name = source_strs[source]
                self.source_text3ds[source].text = name
                self.source_text3ds[source].position = (source, max_y + 0.5, 0)

        if is_first_update:
            self.scene.reset_zoom()

        self.scene.disable_render = False

        return