def slide8():
    import pytz
    print pytz.common_timezones[-5:]

    print 'US/Eastern'
    tz = pytz.timezone('US/Eastern')
    print tz

    rng = pd.date_range('3/9/2012 9:30', periods=6, freq='D')
    ts = Series(np.random.randn(len(rng)), index=rng)
    print ts.index.tz

    print 'date_range utc'
    print pd.date_range('3/9/2012 9:30', periods=10, freq='D', tz='UTC')

    print 'tz_localize to UTC'
    ts_utc = ts.tz_localize('UTC')
    print ts_utc
    print ts_utc.index

    print 'tz_convert to us/Eastern'
    print ts_utc.tz_convert('US/Eastern')

    print 'tz_localize to us/Eastern'
    ts_eastern = ts.tz_localize('US/Eastern')
    print ts_eastern.tz_convert('UTC')

    print 'tz_convert'
    print ts_eastern.tz_convert('Europe/Berlin')

    stamp = pd.Timestamp('2011-03-12 04:00')
    stamp_utc = stamp.tz_localize('utc')
    print 'us/eastern'
    print stamp_utc.tz_convert('US/Eastern')

    stamp_moscow = pd.Timestamp('2011-03-12 04:00', tz='Europe/Moscow')
    print 'moscow'
    print stamp_moscow

    print 'nano seconds'
    print stamp_utc.value
    print stamp_utc.tz_convert('US/Eastern').value

    from pandas.tseries.offsets import Hour
    stamp = pd.Timestamp('2012-03-12 01:30', tz='US/Eastern')
    print stamp
    print '+hour'
    print stamp + Hour()
    stamp = pd.Timestamp('2012-11-04 00:30', tz='US/Eastern')
    print 'summer time'
    print stamp + 2 * Hour()

    print 'between different time zones'
    rng = pd.date_range('3/7/2012 9:30', periods=10, freq='B')
    ts = Series(np.random.randn(len(rng)), index=rng)
    print ts
    ts1 = ts[:7].tz_localize('Europe/London')
    ts2 = ts1[2:].tz_convert('Europe/Moscow')
    result = ts1 + ts2
    print result.index
Example #2
0
    def test_tz_localize_nonexistent(self, tz, method, exp):
        # GH 8917
        n = 60
        dti = date_range(start="2015-03-29 02:00:00", periods=n, freq="min")
        ser = Series(1, index=dti)
        df = ser.to_frame()

        if method == "raise":

            with tm.external_error_raised(pytz.NonExistentTimeError):
                dti.tz_localize(tz, nonexistent=method)
            with tm.external_error_raised(pytz.NonExistentTimeError):
                ser.tz_localize(tz, nonexistent=method)
            with tm.external_error_raised(pytz.NonExistentTimeError):
                df.tz_localize(tz, nonexistent=method)

        elif exp == "invalid":
            with pytest.raises(ValueError, match="argument must be one of"):
                dti.tz_localize(tz, nonexistent=method)
            with pytest.raises(ValueError, match="argument must be one of"):
                ser.tz_localize(tz, nonexistent=method)
            with pytest.raises(ValueError, match="argument must be one of"):
                df.tz_localize(tz, nonexistent=method)

        else:
            result = ser.tz_localize(tz, nonexistent=method)
            expected = Series(1, index=DatetimeIndex([exp] * n, tz=tz))
            tm.assert_series_equal(result, expected)

            result = df.tz_localize(tz, nonexistent=method)
            expected = expected.to_frame()
            tm.assert_frame_equal(result, expected)
Example #3
0
def slide8():
    import pytz
    print pytz.common_timezones[-5:]

    print 'US/Eastern'
    tz = pytz.timezone('US/Eastern')
    print tz

    rng = pd.date_range('3/9/2012 9:30', periods=6, freq='D')
    ts = Series(np.random.randn(len(rng)), index=rng)
    print ts.index.tz

    print 'date_range utc'
    print pd.date_range('3/9/2012 9:30', periods=10, freq='D', tz='UTC')

    print 'tz_localize to UTC'
    ts_utc = ts.tz_localize('UTC')
    print ts_utc
    print ts_utc.index

    print 'tz_convert to us/Eastern'
    print ts_utc.tz_convert('US/Eastern')

    print 'tz_localize to us/Eastern'
    ts_eastern = ts.tz_localize('US/Eastern')
    print ts_eastern.tz_convert('UTC')

    print 'tz_convert'
    print ts_eastern.tz_convert('Europe/Berlin')

    stamp = pd.Timestamp('2011-03-12 04:00')
    stamp_utc = stamp.tz_localize('utc')
    print 'us/eastern'
    print stamp_utc.tz_convert('US/Eastern')

    stamp_moscow = pd.Timestamp('2011-03-12 04:00', tz='Europe/Moscow')
    print 'moscow'
    print stamp_moscow

    print 'nano seconds'
    print stamp_utc.value
    print stamp_utc.tz_convert('US/Eastern').value

    from pandas.tseries.offsets import Hour
    stamp = pd.Timestamp('2012-03-12 01:30', tz='US/Eastern')
    print stamp
    print '+hour'
    print stamp + Hour()
    stamp = pd.Timestamp('2012-11-04 00:30', tz='US/Eastern')
    print 'summer time'
    print stamp + 2 * Hour()

    print 'between different time zones'
    rng = pd.date_range('3/7/2012 9:30', periods=10, freq='B')
    ts = Series(np.random.randn(len(rng)), index=rng)
    print ts
    ts1 = ts[:7].tz_localize('Europe/London')
    ts2 = ts1[2:].tz_convert('Europe/Moscow')
    result = ts1 + ts2
    print result.index
Example #4
0
    def test_series_tz_localize_empty(self, tzstr):
        # GH#2248
        ser = Series(dtype=object)

        ser2 = ser.tz_localize("utc")
        assert ser2.index.tz == pytz.utc

        ser2 = ser.tz_localize(tzstr)
        timezones.tz_compare(ser2.index.tz, timezones.maybe_get_tz(tzstr))
Example #5
0
    def test_tz_localize_naive(self, frame_or_series):

        # Can't localize if already tz-aware
        rng = date_range("1/1/2011", periods=100, freq="H", tz="utc")
        ts = Series(1, index=rng)
        ts = frame_or_series(ts)

        with pytest.raises(TypeError, match="Already tz-aware"):
            ts.tz_localize("US/Eastern")
Example #6
0
    def test_series_tz_localize_empty(self, tzstr):
        # GH#2248
        ser = Series()

        ser2 = ser.tz_localize('utc')
        assert ser2.index.tz == pytz.utc

        ser2 = ser.tz_localize(tzstr)
        timezones.tz_compare(ser2.index.tz, timezones.maybe_get_tz(tzstr))
    def test_tz_localize_empty_series(self):
        # #2248

        ts = Series()

        ts2 = ts.tz_localize("utc")
        self.assertTrue(ts2.index.tz == pytz.utc)

        ts2 = ts.tz_localize(self.tzstr("US/Eastern"))
        self.assertTrue(self.cmptz(ts2.index.tz, self.tz("US/Eastern")))
Example #8
0
    def test_tz_localize_empty_series(self):
        # #2248

        ts = Series()

        ts2 = ts.tz_localize('utc')
        self.assertTrue(ts2.index.tz == pytz.utc)

        ts2 = ts.tz_localize('US/Eastern')
        self.assertTrue(ts2.index.tz == pytz.timezone('US/Eastern'))
Example #9
0
    def test_tz_localize_empty_series(self):
        # #2248

        ts = Series()

        ts2 = ts.tz_localize('utc')
        self.assertTrue(ts2.index.tz == pytz.utc)

        ts2 = ts.tz_localize('US/Eastern')
        self.assertTrue(ts2.index.tz == pytz.timezone('US/Eastern'))
Example #10
0
    def test_series_tz_localize(self):

        rng = date_range("1/1/2011", periods=100, freq="H")
        ts = Series(1, index=rng)

        result = ts.tz_localize("utc")
        assert result.index.tz.zone == "UTC"

        # Can't localize if already tz-aware
        rng = date_range("1/1/2011", periods=100, freq="H", tz="utc")
        ts = Series(1, index=rng)

        with pytest.raises(TypeError, match="Already tz-aware"):
            ts.tz_localize("US/Eastern")
Example #11
0
    def test_series_tz_localize(self):

        rng = date_range('1/1/2011', periods=100, freq='H')
        ts = Series(1, index=rng)

        result = ts.tz_localize('utc')
        assert result.index.tz.zone == 'UTC'

        # Can't localize if already tz-aware
        rng = date_range('1/1/2011', periods=100, freq='H', tz='utc')
        ts = Series(1, index=rng)

        with pytest.raises(TypeError, match='Already tz-aware'):
            ts.tz_localize('US/Eastern')
Example #12
0
    def test_series_tz_localize(self):

        rng = date_range('1/1/2011', periods=100, freq='H')
        ts = Series(1, index=rng)

        result = ts.tz_localize('utc')
        assert result.index.tz.zone == 'UTC'

        # Can't localize if already tz-aware
        rng = date_range('1/1/2011', periods=100, freq='H', tz='utc')
        ts = Series(1, index=rng)

        with pytest.raises(TypeError, match='Already tz-aware'):
            ts.tz_localize('US/Eastern')
Example #13
0
 def test_series_tz_localize_nonexistent(self, tz, method, exp):
     # GH 8917
     n = 60
     dti = date_range(start='2015-03-29 02:00:00', periods=n, freq='min')
     s = Series(1, dti)
     if method == 'raise':
         with pytest.raises(pytz.NonExistentTimeError):
             s.tz_localize(tz, nonexistent=method)
     elif exp == 'invalid':
         with pytest.raises(ValueError):
             dti.tz_localize(tz, nonexistent=method)
     else:
         result = s.tz_localize(tz, nonexistent=method)
         expected = Series(1, index=DatetimeIndex([exp] * n, tz=tz))
         tm.assert_series_equal(result, expected)
Example #14
0
 def test_series_tz_localize_nonexistent(self, tz, method, exp):
     # GH 8917
     n = 60
     dti = date_range(start="2015-03-29 02:00:00", periods=n, freq="min")
     s = Series(1, dti)
     if method == "raise":
         with pytest.raises(pytz.NonExistentTimeError):
             s.tz_localize(tz, nonexistent=method)
     elif exp == "invalid":
         with pytest.raises(ValueError):
             dti.tz_localize(tz, nonexistent=method)
     else:
         result = s.tz_localize(tz, nonexistent=method)
         expected = Series(1, index=DatetimeIndex([exp] * n, tz=tz))
         tm.assert_series_equal(result, expected)
Example #15
0
    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=range(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 #16
0
    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=range(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 #17
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 #18
0
def filter_series(ds: pd.Series, first_date: datetime.date, last_date: datetime.date) -> pd.DataFrame:
    if not isinstance(first_date, datetime.datetime) and not isinstance(last_date, datetime.datetime):
        return ds[list(
            filter(lambda x: last_date + datetime.timedelta(days=1) > x > first_date - datetime.timedelta(days=1),
                   ds.index))]

    if ds.index.tz == first_date.tz and ds.index.tz == last_date.tz:
        return ds[list(
            filter(lambda x: last_date + datetime.timedelta(days=1) > x > first_date - datetime.timedelta(days=1),
                   ds.index))]

    if isinstance(first_date, datetime.datetime):
        if first_date.tzinfo != datetime.timezone.utc:
            first_date_utc = first_date.replace(tzinfo=datetime.timezone.utc)
            return filter_series(ds, first_date_utc, last_date)
    if isinstance(last_date, datetime.datetime):
        if last_date.tzinfo != datetime.timezone.utc:
            last_date_utc = last_date.replace(tzinfo=datetime.timezone.utc)
            return filter_series(ds, first_date, last_date_utc)
    if hasattr(ds.index.tz, 'zone'):
        if ds.index.tz.zone != "UTC":
            ds = ds.tz_localize(datetime.timezone.utc)

    return ds[list(
        filter(lambda x: last_date + datetime.timedelta(days=1) > x > first_date - datetime.timedelta(days=1),
               ds.index))]
Example #19
0
def part4():
    """时区处理"""
    import pytz
    # print(pytz.common_timezones[-5:])  # 时区名
    # print(pytz.timezone('US/Eastern'))  # 时区对象

    # 1、本地化和转换
    # 默认,pandas中德时间序列是naive时区,也就是没有时区的
    rng = pd.date_range('3/9/2012 9:30', periods=6, freq='D')
    ts = Series(np.random.randn(len(rng)), index=rng)
    # print(ts.index.tz)

    rng = pd.date_range('3/9/2012 9:30', periods=6, freq='D', tz='UTC')
    ts_utc = Series(np.random.randn(len(rng)), index=rng)
    # print(ts_utc.index.tz)

    # 通过tz_localize方法可以为没有时区的时间序列赋予时区
    ts_utc = ts.tz_localize('UTC')
    # print(ts_utc)

    # 一旦时间序列被本地化到某个特定时区,就可以用tz_convert将其转换到别的时区了
    # print(ts_utc.tz_convert('US/Eastern'))

    # 2、操作时区意识型Timestamp对象
    stamp = pd.Timestamp('2022-03-12 04:00')
    stamp_utc = stamp.tz_localize('utc')
    stamp_utc.tz_convert('US/Eastern')
Example #20
0
    def test_resample_tz_localized(self):
        dr = date_range(start="2012-4-13", end="2012-5-1")
        ts = Series(range(len(dr)), index=dr)

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

        result = ts_local.resample("W").mean()

        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").mean().tz_localize("America/Los_Angeles")
        exp.index = pd.DatetimeIndex(exp.index, freq="W")

        tm.assert_series_equal(result, exp)

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

        # #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").mean()
        ex_index = date_range("2001-09-21", periods=1, freq="D", tz="Australia/Sydney")
        expected = Series([1.5], index=ex_index)

        tm.assert_series_equal(result, expected)

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

        # GH 6397
        # comparing an offset that doesn't propagate 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").sum()["first"],
                "second": ts.resample("A").mean()["second"],
            },
            columns=["first", "second"],
        )
        result = (
            ts.resample("A")
            .agg({"first": np.sum, "second": np.mean})
            .reindex(columns=["first", "second"])
        )
        tm.assert_frame_equal(result, expected)
Example #21
0
    def test_join_naive_with_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)
Example #22
0
    def test_join_naive_with_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)
Example #23
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').mean()

        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').mean().tz_localize('America/Los_Angeles')

        assert_series_equal(result, exp)

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

        # #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').mean()
        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').mean()
        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 propagate 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').sum()['first'],
                'second': ts.resample('A').mean()['second']},
            columns=['first', 'second'])
        result = ts.resample(
            'A').agg({'first': np.sum,
                      'second': np.mean}).reindex(columns=['first', 'second'])
        assert_frame_equal(result, expected)
Example #24
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').mean()

        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').mean().tz_localize('America/Los_Angeles')

        assert_series_equal(result, exp)

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

        # #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').mean()
        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').mean()
        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 propagate 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').sum()['first'],
                'second': ts.resample('A').mean()['second']},
            columns=['first', 'second'])
        result = ts.resample(
            'A').agg({'first': np.sum,
                      'second': np.mean}).reindex(columns=['first', 'second'])
        assert_frame_equal(result, expected)
Example #25
0
    def test_series_add_aware_naive_raises(self):
        rng = date_range('1/1/2011', periods=10, freq='H')
        ser = Series(np.random.randn(len(rng)), index=rng)

        ser_utc = ser.tz_localize('utc')

        with pytest.raises(Exception):
            ser + ser_utc

        with pytest.raises(Exception):
            ser_utc + ser
Example #26
0
    def test_series_add_aware_naive_raises(self):
        rng = date_range("1/1/2011", periods=10, freq="H")
        ser = Series(np.random.randn(len(rng)), index=rng)

        ser_utc = ser.tz_localize("utc")

        with pytest.raises(Exception):
            ser + ser_utc

        with pytest.raises(Exception):
            ser_utc + ser
Example #27
0
    def test_series_add_aware_naive_raises(self):
        rng = date_range("1/1/2011", periods=10, freq="H")
        ser = Series(np.random.randn(len(rng)), index=rng)

        ser_utc = ser.tz_localize("utc")

        msg = "Cannot join tz-naive with tz-aware DatetimeIndex"
        with pytest.raises(Exception, match=msg):
            ser + ser_utc

        with pytest.raises(Exception, match=msg):
            ser_utc + ser
Example #28
0
    def test_localized_at_time(self, tzstr):
        tz = timezones.maybe_get_tz(tzstr)

        rng = date_range("4/16/2012", "5/1/2012", freq="H")
        ts = Series(np.random.randn(len(rng)), index=rng)

        ts_local = ts.tz_localize(tzstr)

        result = ts_local.at_time(time(10, 0))
        expected = ts.at_time(time(10, 0)).tz_localize(tzstr)
        tm.assert_series_equal(result, expected)
        assert timezones.tz_compare(result.index.tz, tz)
Example #29
0
    def test_localized_between_time(self, tzstr, frame_or_series):
        tz = timezones.maybe_get_tz(tzstr)

        rng = date_range("4/16/2012", "5/1/2012", freq="H")
        ts = Series(np.random.randn(len(rng)), index=rng)
        if frame_or_series is DataFrame:
            ts = ts.to_frame()

        ts_local = ts.tz_localize(tzstr)

        t1, t2 = time(10, 0), time(11, 0)
        result = ts_local.between_time(t1, t2)
        expected = ts.between_time(t1, t2).tz_localize(tzstr)
        tm.assert_equal(result, expected)
        assert timezones.tz_compare(result.index.tz, tz)
Example #30
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 #31
0
    def test_resample_tz_localized(self):
        dr = date_range(start='2012-4-13', end='2012-5-1')
        ts = Series(range(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)
Example #32
0
    def test_resample_nonexistent_time_bin_edge(self):
        # GH 19375
        index = date_range('2017-03-12', '2017-03-12 1:45:00', freq='15T')
        s = Series(np.zeros(len(index)), index=index)
        expected = s.tz_localize('US/Pacific')
        result = expected.resample('900S').mean()
        tm.assert_series_equal(result, expected)

        # GH 23742
        index = date_range(start='2017-10-10', end='2017-10-20', freq='1H')
        index = index.tz_localize('UTC').tz_convert('America/Sao_Paulo')
        df = DataFrame(data=list(range(len(index))), index=index)
        result = df.groupby(pd.Grouper(freq='1D')).count()
        expected = date_range(start='2017-10-09', end='2017-10-20', freq='D',
                              tz="America/Sao_Paulo",
                              nonexistent='shift_forward', closed='left')
        tm.assert_index_equal(result.index, expected)
Example #33
0
    def test_resample_nonexistent_time_bin_edge(self):
        # GH 19375
        index = date_range('2017-03-12', '2017-03-12 1:45:00', freq='15T')
        s = Series(np.zeros(len(index)), index=index)
        expected = s.tz_localize('US/Pacific')
        result = expected.resample('900S').mean()
        tm.assert_series_equal(result, expected)

        # GH 23742
        index = date_range(start='2017-10-10', end='2017-10-20', freq='1H')
        index = index.tz_localize('UTC').tz_convert('America/Sao_Paulo')
        df = DataFrame(data=list(range(len(index))), index=index)
        result = df.groupby(pd.Grouper(freq='1D')).count()
        expected = date_range(start='2017-10-09', end='2017-10-20', freq='D',
                              tz="America/Sao_Paulo",
                              nonexistent='shift_forward', closed='left')
        tm.assert_index_equal(result.index, expected)
Example #34
0
    def test_series_frame_tz_localize(self):
        rng = date_range('1/1/2011', periods=100, freq='H')
        ts = Series(1, index=rng)

        result = ts.tz_localize('utc')
        self.assert_(result.index.tz.zone == 'UTC')

        df = DataFrame({'a': 1}, index=rng)
        result = df.tz_localize('utc')
        expected = DataFrame({'a': 1}, rng.tz_localize('UTC'))
        self.assert_(result.index.tz.zone == 'UTC')
        assert_frame_equal(result, expected)

        df = df.T
        result = df.tz_localize('utc', axis=1)
        self.assert_(result.columns.tz.zone == 'UTC')
        assert_frame_equal(result, expected.T)
Example #35
0
    def test_series_frame_tz_localize(self):
        rng = date_range('1/1/2011', periods=100, freq='H')
        ts = Series(1, index=rng)

        result = ts.tz_localize('utc')
        self.assert_(result.index.tz.zone == 'UTC')

        df = DataFrame({'a': 1}, index=rng)
        result = df.tz_localize('utc')
        expected = DataFrame({'a': 1}, rng.tz_localize('UTC'))
        self.assert_(result.index.tz.zone == 'UTC')
        assert_frame_equal(result, expected)

        df = df.T
        result = df.tz_localize('utc', axis=1)
        self.assert_(result.columns.tz.zone == 'UTC')
        assert_frame_equal(result, expected.T)
Example #36
0
    def test_resample_tz_localized(self):
        dr = date_range(start='2012-4-13', end='2012-5-1')
        ts = Series(range(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)
Example #37
0
    def test_localized_at_time_between_time(self):
        from datetime import time

        rng = date_range('4/16/2012', '5/1/2012', freq='H')
        ts = Series(np.random.randn(len(rng)), index=rng)

        ts_local = ts.tz_localize('US/Eastern')

        result = ts_local.at_time(time(10, 0))
        expected = ts.at_time(time(10, 0)).tz_localize('US/Eastern')
        assert_series_equal(result, expected)
        self.assert_(result.index.tz.zone == 'US/Eastern')

        t1, t2 = time(10, 0), time(11, 0)
        result = ts_local.between_time(t1, t2)
        expected = ts.between_time(t1, t2).tz_localize('US/Eastern')
        assert_series_equal(result, expected)
        self.assert_(result.index.tz.zone == 'US/Eastern')
Example #38
0
    def test_localized_at_time_between_time(self):
        from datetime import time

        rng = date_range('4/16/2012', '5/1/2012', freq='H')
        ts = Series(np.random.randn(len(rng)), index=rng)

        ts_local = ts.tz_localize('US/Eastern')

        result = ts_local.at_time(time(10, 0))
        expected = ts.at_time(time(10, 0)).tz_localize('US/Eastern')
        assert_series_equal(result, expected)
        self.assert_(result.index.tz.zone == 'US/Eastern')

        t1, t2 = time(10, 0), time(11, 0)
        result = ts_local.between_time(t1, t2)
        expected = ts.between_time(t1, t2).tz_localize('US/Eastern')
        assert_series_equal(result, expected)
        self.assert_(result.index.tz.zone == 'US/Eastern')
    def test_localized_at_time_between_time(self):
        from datetime import time

        rng = date_range("4/16/2012", "5/1/2012", freq="H")
        ts = Series(np.random.randn(len(rng)), index=rng)

        ts_local = ts.tz_localize(self.tzstr("US/Eastern"))

        result = ts_local.at_time(time(10, 0))
        expected = ts.at_time(time(10, 0)).tz_localize(self.tzstr("US/Eastern"))
        tm.assert_series_equal(result, expected)
        self.assertTrue(self.cmptz(result.index.tz, self.tz("US/Eastern")))

        t1, t2 = time(10, 0), time(11, 0)
        result = ts_local.between_time(t1, t2)
        expected = ts.between_time(t1, t2).tz_localize(self.tzstr("US/Eastern"))
        tm.assert_series_equal(result, expected)
        self.assertTrue(self.cmptz(result.index.tz, self.tz("US/Eastern")))
Example #40
0
    def test_localized_at_time_between_time(self, tzstr):
        from datetime import time
        tz = timezones.maybe_get_tz(tzstr)

        rng = date_range('4/16/2012', '5/1/2012', freq='H')
        ts = Series(np.random.randn(len(rng)), index=rng)

        ts_local = ts.tz_localize(tzstr)

        result = ts_local.at_time(time(10, 0))
        expected = ts.at_time(time(10, 0)).tz_localize(tzstr)
        tm.assert_series_equal(result, expected)
        assert timezones.tz_compare(result.index.tz, tz)

        t1, t2 = time(10, 0), time(11, 0)
        result = ts_local.between_time(t1, t2)
        expected = ts.between_time(t1, t2).tz_localize(tzstr)
        tm.assert_series_equal(result, expected)
        assert timezones.tz_compare(result.index.tz, tz)
Example #41
0
    def test_resample_tz_localized(self):
        dr = date_range(start='2012-4-13', end='2012-5-1')
        ts = Series(range(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 #42
0
    def test_localized_at_time_between_time(self, tzstr):
        from datetime import time
        tz = timezones.maybe_get_tz(tzstr)

        rng = date_range('4/16/2012', '5/1/2012', freq='H')
        ts = Series(np.random.randn(len(rng)), index=rng)

        ts_local = ts.tz_localize(tzstr)

        result = ts_local.at_time(time(10, 0))
        expected = ts.at_time(time(10, 0)).tz_localize(tzstr)
        tm.assert_series_equal(result, expected)
        assert timezones.tz_compare(result.index.tz, tz)

        t1, t2 = time(10, 0), time(11, 0)
        result = ts_local.between_time(t1, t2)
        expected = ts.between_time(t1, t2).tz_localize(tzstr)
        tm.assert_series_equal(result, expected)
        assert timezones.tz_compare(result.index.tz, tz)
Example #43
0
    def test_resample_nonexistent_time_bin_edge(self):
        # GH 19375
        index = date_range("2017-03-12", "2017-03-12 1:45:00", freq="15T")
        s = Series(np.zeros(len(index)), index=index)
        expected = s.tz_localize("US/Pacific")
        result = expected.resample("900S").mean()
        tm.assert_series_equal(result, expected)

        # GH 23742
        index = date_range(start="2017-10-10", end="2017-10-20", freq="1H")
        index = index.tz_localize("UTC").tz_convert("America/Sao_Paulo")
        df = DataFrame(data=list(range(len(index))), index=index)
        result = df.groupby(pd.Grouper(freq="1D")).count()
        expected = date_range(
            start="2017-10-09",
            end="2017-10-20",
            freq="D",
            tz="America/Sao_Paulo",
            nonexistent="shift_forward",
            closed="left",
        )
        tm.assert_index_equal(result.index, expected)
Example #44
0
    def test_series_frame_tz_localize(self):

        rng = date_range('1/1/2011', periods=100, freq='H')
        ts = Series(1, index=rng)

        result = ts.tz_localize('utc')
        self.assert_(result.index.tz.zone == 'UTC')

        df = DataFrame({'a': 1}, index=rng)
        result = df.tz_localize('utc')
        expected = DataFrame({'a': 1}, rng.tz_localize('UTC'))
        self.assert_(result.index.tz.zone == 'UTC')
        assert_frame_equal(result, expected)

        df = df.T
        result = df.tz_localize('utc', axis=1)
        self.assert_(result.columns.tz.zone == 'UTC')
        assert_frame_equal(result, expected.T)

        # Can't localize if already tz-aware
        rng = date_range('1/1/2011', periods=100, freq='H', tz='utc')
        ts = Series(1, index=rng)
        self.assertRaises(Exception, ts.tz_localize, 'US/Eastern')
Example #45
0
    def test_series_frame_tz_localize(self):

        rng = date_range('1/1/2011', periods=100, freq='H')
        ts = Series(1, index=rng)

        result = ts.tz_localize('utc')
        self.assert_(result.index.tz.zone == 'UTC')

        df = DataFrame({'a': 1}, index=rng)
        result = df.tz_localize('utc')
        expected = DataFrame({'a': 1}, rng.tz_localize('UTC'))
        self.assert_(result.index.tz.zone == 'UTC')
        assert_frame_equal(result, expected)

        df = df.T
        result = df.tz_localize('utc', axis=1)
        self.assert_(result.columns.tz.zone == 'UTC')
        assert_frame_equal(result, expected.T)

        # Can't localize if already tz-aware
        rng = date_range('1/1/2011', periods=100, freq='H', tz='utc')
        ts = Series(1, index=rng)
        self.assertRaises(Exception, ts.tz_localize, 'US/Eastern')
    def test_series_frame_tz_localize(self):

        rng = date_range("1/1/2011", periods=100, freq="H")
        ts = Series(1, index=rng)

        result = ts.tz_localize("utc")
        self.assertEqual(result.index.tz.zone, "UTC")

        df = DataFrame({"a": 1}, index=rng)
        result = df.tz_localize("utc")
        expected = DataFrame({"a": 1}, rng.tz_localize("UTC"))
        self.assertEqual(result.index.tz.zone, "UTC")
        assert_frame_equal(result, expected)

        df = df.T
        result = df.tz_localize("utc", axis=1)
        self.assertEqual(result.columns.tz.zone, "UTC")
        assert_frame_equal(result, expected.T)

        # Can't localize if already tz-aware
        rng = date_range("1/1/2011", periods=100, freq="H", tz="utc")
        ts = Series(1, index=rng)
        tm.assertRaisesRegexp(TypeError, "Already tz-aware", ts.tz_localize, "US/Eastern")
    def test_resample_tz_localized(self):
        dr = date_range(start='2012-4-13', end='2012-5-1')
        ts = Series(range(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 #48
0
print(pytz.common_timezones[:])

# 获得pytz的时区对象,可使用pytz。timezone
tz = pytz.timezone('America/New_York')
print("This is tz", tz)

# 11.4.1时区的本地化和转换
rng = pd.date_range('3/9/2012 9:30', periods=6, freq='D')
ts = pd.Series(np.random.randn(len(rng)), index=rng)
print(ts)
print(ts.index.tz)

print(pd.date_range('3/9/2012 9:30', periods=10, freq='D', tz='UTC'))
# 使用tz_localize方法可从简单时区转换到本地化时区
print("This is ts", ts)
ts_utc = ts.tz_localize('UTC')
print("This is us_utc", ts_utc)
print(ts_utc.index)
print(ts_utc.tz_convert('America/New_York'))

# 将其本地化到EST并转换为UTC或柏林时间
ts_eastern = ts.tz_localize('America/New_York')
print(ts_eastern.tz_convert('UTC'))
print(ts_eastern.tz_convert('Europe/Berlin'))
print("Asia shanghai")
print(ts.index.tz_localize('Asia/Shanghai'))
print(ts)

# 11.4.2时区感知时间戳对象的操作
stamp = pd.Timestamp('2011-03-12 04:00')
stamp_utc = stamp.tz_localize('utc')
ts2 = Series(np.random.randn(20),
             index=pd.date_range('1/15/2000', periods=20, freq='4d'))
#计算当月的平均值并赋给当月最后一个日期
ts2.groupby(offset.rollforward).mean()

#时区处理
#查看所有时区
pytz.common_timezones
#本地化和转换
#生成时间序列
rng = pd.date_range('3/9/2012 9:30', periods=6, freq='D')
#以时间序列rng作为index构建Series
ts3 = Series(np.random.randn(len(rng)), index=rng)
#时区化、本地化
#将'3/9/2012 9:30'及后面的6个时间赋给UTC时区,UTC默认永远是0时区
ts3_utc = ts3.tz_localize('UTC')
#转化到别的时区
ts3_utc.tz_convert('US/Eastern')
#将'3/9/2012 9:30'及后面的6个时间赋给美国东部时区,但UTC仍为0时区
ts3_eastern = ts3.tz_localize('US/Eastern')
#验证UTC仍为0时区
ts3_eastern.tz_convert('UTC')

#操作时区意识型Timestamp对象
stamp = pd.Timestamp('2011-03-12 04:00')
#Timestamp对象也可以时区化
stamp_utc = stamp.tz_localize('utc')
#查看美国东部时间
stamp_utc.tz_convert('US/Eastern')
#创建Timestamp时还可以传入一个时区信息,此时仍是以UTC作为0时区
stamp_moscow = pd.Timestamp('2011-03-12 04:00', tz='Europe/Moscow')
rng = pd.date_range('1/2/2011 9:30', periods=6, freq='D')
ts = Series(np.random.randn(6), index=rng)
ts

# In[5]:

print(ts.index.tz)

# In[6]:

pd.date_range('1/2/2011 9:30', periods=6, freq='D', tz='UTC')

# In[7]:

ts_utc = ts.tz_localize('UTC')

# In[8]:

ts_utc

# In[9]:

ts_utc.tz_convert('US/Eastern')

# In[10]:

ts_eastern = ts.tz_localize('US/Eastern')
ts_eastern.tz_convert('Europe/Berlin')

# ### 操作时区意识型TimeStamp对象
Example #51
0
# pandas中方法既可以接受时区名, 也可以接受时区对象, 建议只用时区名

# 本地化和转化
# pandas中时间序列默认是 单纯的(naive)时区
rng = pd.date_range('3/9/2012 9:30', periods=6, freq='D')
ts = Series(np.random.randn(len(rng)), index=rng)

# tz字段索引为None
print ts.index.tz

# 在生成日期范围的时候可以加上一个时区集
print pd.date_range('3/9/2012 9:30', periods=10, freq='D', tz='UTC')

# 从单纯(naive)到本地化的转换是通过tz_localize方法
ts_utc = ts.tz_localize('UTC')
print ts_utc
print ts_utc.index

# 被本地化后, 可以通过tz_convert转换到别的时区
print ts_utc.tz_convert('US/Eastern')

# 对于跨越夏令时转变期, 我们可以先本地化到EST,然后在转换到UTC或者柏林时间
ts_eastern = ts.tz_localize('US/Eastern')
print ts_eastern.tz_convert('UTC')
print ts_eastern.tz_convert('Europe/Berlin')

# 下面的也是DatetimeIndex的实例方法
print ts.index.tz_localize('Asia/Shanghai')