昨天睡了一天,是头晕的那种,然后也没心思来做笔记,没心思来看书,其实,我知道,或许我现在做的只是在转移一种矛盾,可是我还是想剑走偏锋,渴望能够渡过陈仓。我现在是知道霸王为何要自刭了,虽然江东弟子多才俊,卷土重来未可知,可是他那可骄傲的心该往哪里安放呢,为赢天下,生死都是小事。惟楚有才啊。。。我的南楚湘中啊。。。
算了,今天弄时间序列,时间一天天的过去了,自己是在是没有学到什么东西,可能还是量的积累过程吧,总会有质变的,只要自己坚持下去。我一直想进入实操阶段,可是每每一开始,就发现自己的基础不牢固,然后反而浪费了很多时间。
from datetime import datetime
datetime(2014, 12, 15, 17, 30) datetime.now()获取现在的时间
datetime.date(datetime(2014, 12, 15)) 可以创建时间 用函数
datetime.now().date() 获取日期
datetime.time(datetime(2014, 12, 15, 17, 30)) datetime.now().time() 获取时间
Timestamp objects 时间戳 应该叫这个吧 里面有引号
pd.Timestamp('2014-12-15')
pd.Timestamp('17:30') 返回当前时间
Timedelta 两个时间之间的差
Datetime Index
将格式不同的序列转换为时间索引,值得注意的是pd.to_datetime()函数默人返回的是Numpy数组,如果他有不能解析的时间戳的时候。所以一般情况下以防万一,加一个coerce=True参数放在后面
pd.to_datetime(['Aug 1, 2014', 'foo'], coerce=True)
pd.date_range() function.这个函数可以方便的创建连续的时间索引
periods = pd.date_range('8/1/2014', periods=10)
date_series = pd.Series(np.random.randn(10), index=periods)
subset = date_series[3:7]
s2 = pd.Series([10, 100, 1000, 10000], subset.index) 他山之石,可以攻玉
date_series['2014-08-05':'2014-08-07']
s3 = pd.Series(0, pd.date_range('2013-01-01', '2014-12-31'))
Creating time-series data with specific frequencies 用特别的周期创建时间序列
在pd.date_range()里面加上参数freq=‘’就可以打
pd.date_range('2014-08-01 12:10:01', freq='S', periods=10) 按秒递增
Calculating new dates using offsets 按偏移量计算时间
还有一些内建的参数 可以使用
d = datetime(2014, 8, 29)
do = pd.Date Offset(days = 1)
d + do 得到8月30
from pandas.tseries.offsets import *
d + Business Day() d + 2 * Business Day() 得先导入模块才能用
BMonth End().rollforward(datetime(2014, 9, 15)) 滚动到本月月末的那天
d - Week(weekday = 1) 得到的是d的上个周二
固定的偏移量,例子如下
上面有每个字母的含义,但还是没懂结果的意思,尤其是月份那个参数
Representing durations of time using Period objects 呈现时间区间用
aug2014 = pd.Period('2014-08', freq='M')
mp2013 = pd.period_range('1/1/2013', '12/31/2013', freq='M')
for p in mp2013:
print ("{0} {1}".format(p.start_time, p.end_time))
ps = pd.Series(np.random.randn(24),pd.period_range('1/1/2013','12/31/2014', freq='M'))
Handling holidays using calendars 处理假期用日历
from pandas.tseries.holiday import * 导入模块
cal = USFederal Holiday Calendar() 初始化函数
for d in cal.holidays(start='2014-01-01', end='2014-12-31'):
print (d)
cbd = CustomBusinessDay(holidays=cal.holidays())
datetime(2014, 8, 29) + cbd
Shifting and lagging
np.random.seed(123456)
ts = Series([1, 2, 2.5, 1.5, 0.5],
pd.date_range('2014-08-01', periods=5))
ts.shift(1) 值 向前偏移一天
ts.shift(-2) 从后向前偏移
ts / ts.shift(1) ts.shift(1, freq="B") ts.tshift(5, freq="H")
ts.shift(1, Date Offset(minutes=0.5)) ts.tshift(-1, freq='H')
daily = hourly.asfreq('D') daily.asfreq('H') daily.asfreq('H', method='ffill')
daily.asfreq('H', method='bfill')
first_minute = walk['2014-08-01 00:00']
first_minute.plot()
plt.legend(labels=['Rolling Mean', 'Raw']);
mean_abs_dev = lambda x: np.fabs(x - x.mean()).mean()
pd.rolling_apply(h1w, 5, mean_abs_dev).plot();