时间序列分析

2017-07-22  本文已影响0人  六六的建斌

昨天睡了一天,是头晕的那种,然后也没心思来做笔记,没心思来看书,其实,我知道,或许我现在做的只是在转移一种矛盾,可是我还是想剑走偏锋,渴望能够渡过陈仓。我现在是知道霸王为何要自刭了,虽然江东弟子多才俊,卷土重来未可知,可是他那可骄傲的心该往哪里安放呢,为赢天下,生死都是小事。惟楚有才啊。。。我的南楚湘中啊。。。


算了,今天弄时间序列,时间一天天的过去了,自己是在是没有学到什么东西,可能还是量的积累过程吧,总会有质变的,只要自己坚持下去。我一直想进入实操阶段,可是每每一开始,就发现自己的基础不牢固,然后反而浪费了很多时间。


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();

上一篇 下一篇

猜你喜欢

热点阅读