def test_convert_upsample(self): # from daily dti = DatetimeIndex(start=datetime(2005,1,1), end=datetime(2005,1,10), freq='D') s = Series(rand(len(dti)), dti) # to minutely, by padding result = s.convert('Min', method='pad') self.assertEquals(len(result), 12961) self.assertEquals(result[0], s[0]) self.assertEquals(result[-1], s[-1])
class TestTimeGrouper(unittest.TestCase): def setUp(self): self.ts = Series(np.random.randn(1000), index=date_range('1/1/2000', periods=1000)) def test_apply(self): grouper = TimeGrouper('A', label='right', closed='right') grouped = self.ts.groupby(grouper) f = lambda x: x.order()[-3:] applied = grouped.apply(f) expected = self.ts.groupby(lambda x: x.year).apply(f) applied.index = applied.index.droplevel(0) expected.index = expected.index.droplevel(0) assert_series_equal(applied, expected) def test_count(self): self.ts[::3] = np.nan grouper = TimeGrouper('A', label='right', closed='right') result = self.ts.convert('A', how='count') expected = self.ts.groupby(lambda x: x.year).count() expected.index = result.index assert_series_equal(result, expected) def test_numpy_reduction(self): result = self.ts.convert('A', how='prod', closed='right') expected = self.ts.groupby(lambda x: x.year).agg(np.prod) expected.index = result.index assert_series_equal(result, expected)
def test_ohlc_5min(self): def _ohlc(group): if isnull(group).all(): return np.repeat(np.nan, 4) return [group[0], group.max(), group.min(), group[-1]] rng = date_range('1/1/2000 00:00:00', '1/1/2000 5:59:50', freq='10s') ts = Series(np.random.randn(len(rng)), index=rng) converted = ts.convert('5min', how='ohlc') self.assert_((converted.ix['1/1/2000 00:00'] == ts[0]).all()) exp = _ohlc(ts[1:31]) self.assert_((converted.ix['1/1/2000 00:05'] == exp).all()) exp = _ohlc(ts['1/1/2000 5:55:01':]) self.assert_((converted.ix['1/1/2000 6:00:00'] == exp).all())
def test_convert_reconvert(self): dti = DatetimeIndex(start=datetime(2005,1,1), end=datetime(2005,1,10), freq='D') s = Series(rand(len(dti)), dti) s = s.convert('B').convert('8H') self.assertEquals(len(s), 22)
def test_convert_basic(self): s = self.series result = s.convert('5Min') 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(rand(len(dti)), dti) # to weekly result = s.convert('w-sun') 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.convert('W-MON') 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.convert('W-TUE') 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.convert('W-WED') 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.convert('W-THU') 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.convert('W-FRI') 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.convert('B') 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'])