In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from pandas import DataFrame, Series
In [2]:
import datetime as datetime
from pandas.tseries.offsets import Hour, Minute
hour = Hour()
hour
Out[2]:
In [3]:
four_hours = Hour(4)
four_hours
Out[3]:
In [4]:
pd.date_range('1/1/2000', '1/3/2000 23:59', freq='4h')
Out[4]:
In [5]:
Hour(2) + Minute(30)
Out[5]:
In [6]:
pd.date_range('1/1/2000', periods=10, freq='1h30min')
Out[6]:
In [7]:
rng = pd.date_range('1/1/2012', '9/1/2012', freq='WOM-3FRI')
list(rng)
Out[7]:
In [8]:
ts = Series(np.random.randn(4),
index=pd.date_range('1/1/2000', periods=4, freq='M'))
ts
Out[8]:
In [9]:
ts.shift(2)
Out[9]:
In [10]:
ts.shift(-2)
Out[10]:
In [11]:
ts / ts.shift(1) - 1
Out[11]:
In [12]:
ts.shift(2, freq='M')
Out[12]:
In [13]:
ts.shift(3, freq='D')
Out[13]:
In [14]:
ts.shift(1, freq='3D')
Out[14]:
In [15]:
ts.shift(1, freq='90T')
Out[15]:
In [16]:
from datetime import datetime
from pandas.tseries.offsets import Day, MonthEnd
now = datetime(2011, 11, 17)
now + 3 * Day()
Out[16]:
In [17]:
now + MonthEnd()
Out[17]:
In [18]:
now + MonthEnd(2)
Out[18]:
In [19]:
now + 2 * MonthEnd()
Out[19]:
In [20]:
offset = MonthEnd()
offset.rollforward(now)
Out[20]:
In [21]:
offset.rollback(now)
Out[21]:
In [22]:
ts = Series(np.random.randn(20),
index=pd.date_range('1/15/2000', periods=20, freq='4d'))
ts.groupby(offset.rollforward).mean()
Out[22]:
In [23]:
ts.resample('M').mean()
Out[23]:
In [24]:
import pytz
pytz.common_timezones[-5:]
Out[24]:
In [25]:
tz = pytz.timezone('US/Eastern')
tz
Out[25]:
In [26]:
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)
In [27]:
pd.date_range('3/9/2012 9:30', periods=10, freq='D', tz='UTC')
Out[27]:
In [28]:
ts_utc = ts.tz_localize('UTC')
ts_utc
Out[28]:
In [29]:
ts_utc.index
Out[29]:
In [30]:
ts_utc.tz_convert('US/Eastern')
Out[30]:
In [31]:
ts_eastern = ts.tz_localize('US/Eastern')
ts_eastern.tz_convert('UTC')
Out[31]:
In [32]:
ts_eastern.tz_convert('Europe/Berlin')
Out[32]:
In [33]:
ts_eastern.tz_convert('Asia/Shanghai')
Out[33]:
In [34]:
ts.index.tz_localize('Asia/Shanghai')
Out[34]:
In [35]:
stamp = pd.Timestamp('2011-03-12 04:00')
stamp_utc = stamp.tz_localize('utc')
stamp_utc.tz_convert('US/Eastern')
Out[35]:
In [36]:
stamp_moscow = pd.Timestamp('2011-03-12 04:00', tz='Europe/Moscow')
stamp_moscow
Out[36]:
In [37]:
stamp_utc.value
Out[37]:
In [38]:
stamp_utc.tz_convert('US/Eastern').value
Out[38]:
In [39]:
# 夏令时转变前30分钟
from pandas.tseries.offsets import Hour
stamp = pd.Timestamp('2012-03-11 01:30', tz='US/Eastern')
stamp
Out[39]:
In [40]:
stamp + Hour()
Out[40]:
In [41]:
# 夏令时转变前90分钟
stamp = pd.Timestamp('2012-11-04 00:30', tz='US/Eastern')
stamp
Out[41]:
In [42]:
stamp + 2 * Hour()
Out[42]:
In [43]:
rng = pd.date_range('3/7/2012 9:30', periods=10, freq='B')
ts = Series(np.random.randn(len(rng)), index=rng)
ts
Out[43]:
In [44]:
ts1 = ts[:7].tz_localize('Europe/London')
ts2 = ts1[2:].tz_convert('Europe/Moscow')
result = ts1 + ts2
result.index
Out[44]:
In [45]:
p = pd.Period(2007, freq='A-DEC')
p
Out[45]:
In [46]:
p+5
Out[46]:
In [47]:
p - 2
Out[47]:
In [48]:
pd.Period('2014', freq='A-DEC') - p
Out[48]:
In [49]:
rng = pd.period_range('1/1/2000', '6/30/2000', freq='M')
rng
Out[49]:
In [50]:
Series(np.random.randn(6), index=rng)
Out[50]:
In [51]:
values = ['2001Q3', '2002Q2', '2003Q1']
index = pd.PeriodIndex(values, freq='Q-DEC')
index
Out[51]:
In [52]:
p = pd.Period('2007', freq='A-DEC')
p.asfreq('M', how='start')
Out[52]:
In [53]:
p.asfreq('M', how='end')
Out[53]:
In [54]:
p = pd.Period('2007', freq='A-JUN')
p.asfreq('M', 'start')
Out[54]:
In [55]:
p.asfreq('M', 'end')
Out[55]:
In [56]:
p = pd.Period('2007-08', 'M')
p.asfreq('A-JUN')
Out[56]:
In [57]:
rng = pd.period_range('2006', '2009', freq='A-DEC')
ts = Series(np.random.randn(len(rng)), index=rng)
ts
Out[57]:
In [58]:
ts.asfreq('M', how='start')
Out[58]:
In [59]:
ts.asfreq('B', how='end')
Out[59]:
In [60]:
p = pd.Period('2012Q4', freq='Q-JAN')
p
Out[60]:
In [61]:
p.asfreq('D', 'start')
Out[61]:
In [62]:
p.asfreq('D', 'end')
Out[62]:
In [63]:
p4pm = (p.asfreq('B', 'e') - 1).asfreq('T', 's') + 16 * 60
p4pm
Out[63]:
In [64]:
p4pm.to_timestamp()
Out[64]:
In [65]:
rng = pd.period_range('2011Q3', '2012Q4', freq='Q-JAN')
ts = Series(np.arange(len(rng)), index=rng)
ts
Out[65]:
In [66]:
new_rng = (rng.asfreq('B', 'e') - 1).asfreq('T', 's') + 16 * 60
ts.index = new_rng.to_timestamp()
ts
Out[66]:
In [71]:
rng = pd.date_range('1/1/2000', periods=3, freq='M')
ts = Series(np.random.randn(3), index=rng)
pts = ts.to_period()
ts
Out[71]:
In [72]:
pts
Out[72]:
In [73]:
rng = pd.date_range('1/29/2000', periods=6, freq='D')
ts2 = Series(np.random.randn(6), index=rng)
ts2.to_period('M')
Out[73]:
In [74]:
ts2.to_period()
Out[74]:
In [75]:
ts2.to_period('H')
Out[75]:
In [76]:
pts = ts.to_period()
pts
Out[76]:
In [77]:
pts.to_timestamp(how='end')
Out[77]:
In [ ]: