美文网首页
时间序列分析

时间序列分析

作者: 六六的建斌 | 来源:发表于2017-07-22 11:16 被阅读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();

    相关文章

      网友评论

          本文标题:时间序列分析

          本文链接:https://www.haomeiwen.com/subject/mmgykxtx.html