Pandas:Period时间段类型及其常用操作

1. 引言

  Pandas中的period时期表示的是一个时间区间,比如数月、数年等。可以使用pandas.Period类进行定义。具体如下:

import pandas as pd
p1=pd.Period(year=2022,freq='Y')

Period类型变量可以使用start_time、end_time属性查看该时间区间的具体起始终止时间,具体如下:

print("开始时间:",p1.start_time)
print('结束时间:',p1.end_time)

其结果如下:
在这里插入图片描述

2. Period变量的创建

  这部分将详细介绍如何使用pandas.Period类创建Period变量。Period类的__init__变量中的参数如下:
在这里插入图片描述
这里只重点介绍freq,freq的全部取值可以参考网页:https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#timeseries-offset-aliases。但不是所有的值都能用在Period类中,下面仅将适合Period类中的freq取值列出:

选项说明
B工作日
C用户自定义工作日
D日历日
W周,另外W还可以和SUN、MON、TUE、WED、THU、FRI、SAT组合,比如W-TUE表示以周二为一个星期的最后一天
M
Q季度末。另外Q也可以和DEC、JAN、FEB、MAR、APR、MAY、JUN、JUL、AUG、SEP、OCT、NOV组合,比如Q-FEB表示一年的第4季度为二月
A,Y年末。另外A(Y不可以)也可以和DEC、JAN、FEB、MAR、APR、MAY、JUN、JUL、AUG、SEP、OCT、NOV组合
H小时
T,min分钟
S
L,ms毫秒
U,us微秒
N纳秒

其用法举例如下:

import pandas as pd

p1=pd.Period(year=2022,freq='B')
#2022-01-03为周一
print("p1->开始时间:{},结束时间:{}".format(p1.start_time,p1.end_time))

p2=pd.Period(year=2022,day=9,freq='D')
print("p2->开始时间:{},结束时间:{}".format(p2.start_time,p2.end_time))

p3=pd.Period(year=2022,hour=9,freq='D')
#这里可以发现当freq='D',那么在定义Period时比freq对应的时间元素低的元素不发挥作用,比如这里的hour 
print("p3->开始时间:{},结束时间:{}".format(p3.start_time,p3.end_time))

#freq前可以与数字一起使用
p4=pd.Period(year=2022,quarter=3,freq='2M')
#2022年第3季度中的2个月长的时间段
print("p4->开始时间:{},结束时间:{}".format(p4.start_time,p4.end_time))

p5=pd.Period(year=2022,quarter=1,freq='Q-FEB')
#将二月设定为季度的最后一个月,所以2022年的第1个季度为2022年3月到5月
print("p5->开始时间:{},结束时间:{}".format(p5.start_time,p5.end_time))

p6=pd.Period(year=2022,month=7,freq='W-TUE')
#将星期二作为一周的最后一天,那么2022年7月的第1周从2022-6-29日开始
print("p6->开始时间:{},结束时间:{}".format(p6.start_time,p6.end_time))

其结果如下:
在这里插入图片描述

3. Period变量的常用操作
3.1 加减操作

  Period变量可以执行加减操作,将Period变量前移或后移相应单位。具体如下:

p6=pd.Period(year=2022,month=7,freq='W-TUE')
print("p6->开始时间:{},结束时间:{}".format(p6.start_time,p6.end_time))
p7=p6+2
print('p7->开始时间:{},结束时间:{}'.format(p7.start_time,p7.end_time))
p8=p6-1
print('p8->开始时间:{},结束时间:{}'.format(p8.start_time,p8.end_time))

其结果如下:
在这里插入图片描述

3.2 asfreq频率转化函数

  Period变量可以使用asfreq方法转化为另一时间段。具体如下:

p6=pd.Period(year=2022,month=7,freq='W-TUE')
p6_1=p6.asfreq(freq='M',how='start')
p6_2=p6.asfreq(freq='M',how='end')
print("p6_1-->开始时间:{},结束时间:{}".format(p6_1.start_time,p6_1.end_time))
print("p6_2-->开始时间:{},结束时间:{}".format(p6_2.start_time,p6_2.end_time)

其结果如下:
在这里插入图片描述

参考文献
  • https://blog.csdn.net/bqw18744018044/article/details/80947243
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值