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")
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())
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)
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)
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)
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)
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)
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)
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)
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)
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_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])
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])
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))
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)
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))
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)
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')
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())
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')
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')
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'))
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]))
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)
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))
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)
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'])
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()
def setUp(self): self.ts = Series(np.random.randn(1000), index=date_range('1/1/2000', periods=1000))
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')
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')
def _simple_ts(start, end, freq='D'): rng = date_range(start, end, freq=freq) return Series(np.random.randn(len(rng)), index=rng)
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])
def test_hongkong_tz_convert(self): # #1673 dr = date_range('2012-01-01', '2012-01-10', freq='D', tz='Hongkong') # it works! dr.hour
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))
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))
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)
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))
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)
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)
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)
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))
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)
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)
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