Period

作者: forjie | 来源:发表于2019-12-06 18:52 被阅读0次

    在日期的操作中,我们经常会用到period的操作,

    参数:
    frep:偏移量,参数可以参考date_range里面的参数

    生成一个period对象

    # 生成一个2018
    df=pd.Period('2017',frep='M')
    # 执行结果
    2017-01 <class 'pandas._libs.tslibs.period.Period'>
    2017-02
    

    可以直接进项加减

    p=pd.Period('2017',frep='M')
    p+1
    p-1
    

    period_range创建范围,和date_range差不多,可以指定起始时间和结束时间,

    # 根据起始时间和结束时间,按月份偏移得到数据
    prng = pd.period_range('1/1/2011', '1/1/2012', freq='M')
    ==>
    PeriodIndex(['2011-01', '2011-02', '2011-03', '2011-04', '2011-05', '2011-06',
                 '2011-07', '2011-08', '2011-09', '2011-10', '2011-11', '2011-12',
                 '2012-01'],
    

    period可以通过asfrep进行频率的转换,比如过月份转换成天

    参数:how 可以是start,也可以是end
    利用start打个比方: how=start,表示时间获取的时候,展示的是开始的时间,如果是月份,那就是现实每个月的1号,类似的end,就是现实月末

    prng = pd.period_range('2017','2018',freq = 'M')
    ts1 = pd.Series(np.random.rand(len(prng)), index = prng)
    ts2 = pd.Series(np.random.rand(len(prng)), index = prng.asfreq('D', how = 'start'))
    ==>
    2017-01    0.935882
    2017-02    0.459180
    2017-03    0.213135
    2017-04    0.433050
    2017-05    0.995488
    Freq: M, dtype: float64 13
    *******************5********************
    2017-01-01    0.182071
    2017-02-01    0.796967
    2017-03-01    0.209907
    2017-04-01    0.385255
    2017-05-01    0.972818
    Freq: D, dtype: float64 13
    

    period可以和timestamp进行转化

    # 时间戳与时期之间的转换:pd.to_period()、pd.to_timestamp()
    
    rng = pd.date_range('2017/1/1', periods = 10, freq = 'M')
    prng = pd.period_range('2017','2018', freq = 'M')
    
    ts1 = pd.Series(np.random.rand(len(rng)), index = rng)
    print("1".center(40,'*'))
    print(ts1.head())
    print("2".center(40,'*'))
    print(ts1.to_period().head())
    # 每月最后一日,转化为每月
    
    ts2 = pd.Series(np.random.rand(len(prng)), index = prng)
    print("3".center(40,'*'))
    print(ts2.head())
    print("4".center(40,'*'))
    print(ts2.to_timestamp().head())
    # 每月,转化为每月第一天
    #执行结果
    *******************1********************
    2017-01-31    0.945223
    2017-02-28    0.243593
    2017-03-31    0.343948
    2017-04-30    0.283476
    2017-05-31    0.959287
    Freq: M, dtype: float64
    *******************2********************
    2017-01    0.945223
    2017-02    0.243593
    2017-03    0.343948
    2017-04    0.283476
    2017-05    0.959287
    Freq: M, dtype: float64
    *******************3********************
    2017-01    0.808551
    2017-02    0.623877
    2017-03    0.659665
    2017-04    0.719965
    2017-05    0.152045
    Freq: M, dtype: float64
    *******************4********************
    2017-01-01    0.808551
    2017-02-01    0.623877
    2017-03-01    0.659665
    2017-04-01    0.719965
    2017-05-01    0.152045
    Freq: MS, dtype: float64
    

    相关文章

      网友评论

          本文标题:Period

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