在日期的操作中,我们经常会用到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
网友评论