52 pandas pd.Period周期属性方法及实例- 时间序列(tcy)

1.1函数:

class pd.Period(value=None, freq=None, ordinal=None, year=None, month=None,
quarter=None, day=None, hour=None, minute=None, second=None)#代表一段时间

1.2参数: 

value=None:Period或compat.string_types代表的时间段; 例如4Q2005'2005年第四季'
freq=None:str period周期字符串或相应对象之一
year/quarter =None: int
month/hour/minute/second=0 : int 

1.3属性:

p=pd.Period('2019-01-15 14:35:30', freq='S')
p=pd.Period.now(freq="S")#获得包含当前时间的时间段
# Period('2019-01-15 14:35:30', 'S')

p.start_time#Timestamp('2019-01-15 14:35:30')#获取期间开始的时间戳
p.end_time #Timestamp('2019-01-15 14:35:30.999999999')

p.freq # <Second>
p.freqstr #'S'

p.ordinal #1547562930

p.year # 2019
p.qyear #2019
p.is_leap_year # False 是否是闰年

p.quarter#1

p.month #1
p.days_in_month#31获取该期间所在月份的总天数
p.daysinmonth #31

p.week #3 期间的一年中的第几周
p.weekday #1一周的第几天,周一为0
p.weekofyear #3

p.day #15#获取某个时段所在月份的第几天
p.dayofweek #1
p.dayofyear #15

p.hour #14
p.minute #35
p.second#30

1.4方法: 

方法  
asfreq 将周期转换为所需频率,在间隔的开始或结束时
strftime 返回字符串表示形式,具体取决于所选的Periodfmt
to_timestamp 将时间段转时间戳
now 现在时间 

2.创建 

# pd.Period()创建时期-时间段

# Period表示时间跨度(例如,一天,一个月,四分之一等)。
# 用freq=频率别名指定范围。freq代表一个跨度Period,它不能像“-3D”那样

# 实例1:从日期时间字符串格式推断
pd.Period('2019-01') #Period('2019-01', 'M')

#实例2:范围Period可以显式指定
pd.Period('2019-01-15 14:35:30', freq='2D')# Period('2019-01-15', '2D')

3.加减计算 

#实例3.1:周期加减运算-freq必须相同

p = pd.Period('2019', freq='A-DEC')

p+1#Period('2020', 'A-DEC')
p-1#Period('2018', 'A-DEC')

#实例3.2::如freq是每天或更高(D,H,T,S,L,U,N),offsets和timedelta格式的,可以添加;
# 结果具有相同频率。否则,ValueError将被提出。

p = pd.Period('2019-09-01 09:00', freq='H')

p + pd.tseries.offsets.Hour(2) #Period('2019-09-01 11:00', 'H')
p + pd.Timedelta(minutes=120)#Period('2019-09-01 11:00', 'H')
p + np.timedelta64(2, 'h') #Period('2019-09-01 11:00', 'H')
p+np.timedelta64(7200,'s') #错误
p+np.timedelta64(7200,'s').astype('timedelta64[h]')# Period('2019-09-01 11:00', 'H')

#实例3.3:如果Period有其他频率,则只能offsets添加相同的频率。否则,ValueError将被提出。
p = pd.Period('2019-09', freq='M')
p + pd.tseries.offsets.MonthEnd(3) # Period('2019-12', 'M')
p + pd.tseries.offsets.MonthBegin(3)#错误

#实例3.4:获取Period具有相同频率的实例的差异将返回它们之间的频率单位数:
pd.Period('2019', freq='A-DEC') - pd.Period('2010', freq='A-DEC')#9

4.转换:

p = pd.Period('2019-09-01 09:00', freq='H')

p.asfreq('D',how='start') #Period('2019-09-01', 'D')将周期转换为所需频率
p.to_timestamp(how='end') #Timestamp('2019-09-01 09:59:59')时间段转时间戳
p.now(freq='S') #Period('2019-01-15 16:30:48', 'S')必须指定freq
p.strftime('%Y-%m-%d %H:%M:%S')#'2019-09-01 09:00:00'

 

猜你喜欢

转载自blog.csdn.net/tcy23456/article/details/86495163