[Pandas]时序数据

1.固定时间

1.1时间的表示

from datetime import datetime
#当前时间
datetime.now()

#指定时间
datetime(2022,12,26)
datetime(year = 2019,month = 12,day = 25)

1.2创建时间点

pd.Timestamp是pandas定义时间的主要函数,代替python中的datetime.datetime对象

#使用python的datetime库
#至少需要传入年、月、日
pd.Timestamp('2022-10-29')

#指定时、分、秒
pd.Timestamp(datetime(2020,11,13,15,16,17))

#指定时间字符串
pd.Timestamp('2012-05-01')
pd.Timestamp('2022-12-12T13')#输出  Timestamp('2022-12-12 13:00:00')
#还可以依次定义year,month,day,hour,minute,second,microsecond
pd.Timestamp(year = 2022,month = 10,day = 30,hour = 17, minute = 59)#Timestamp('2022-10-30 17:59:00')
#解析时间戳
pd.Timestamp(1513393355.5,unit = 's') #单位为秒    输出:Timestamp('2017-12-16 03:02:35.500000')
#用tz指定时区,北京时间是:Asia/Shanghai
pd.Timestamp(1513393355.5,unit = 's',tz = 'Asia/Shanghai')#Timestamp('2017-12-16 11:02:35.500000+0800', tz='Asia/Shanghai')


#获取当前时间
pd.Timestamp('today')  #Timestamp('2022-10-29 11:27:03.529548')
pd.Timestamp('now')  #Timestamp('2022-10-29 11:27:03.529548')

#通过当前时间计算出昨天、明天等信息
#昨天
pd.Timestamp('now') - pd.Timedelta(days = 1)  #Timestamp('2022-10-28 11:28:20.628187')
#明天
pd.Timestamp('now') + pd.Timedelta(days = 1)  #Timestamp('2022-10-30 11:28:43.424174')

#当月初,一日
pd.Timestamp('now').replace(day = 1)  #Timestamp('2022-10-01 11:29:31.132332')

#只取日期
pd.Timestamp('now').date().replace(day = 1)  #datetime.date(2022, 10, 1)

#pd.to_datetime()也可以实现上述功能,不过常用在时间转换上
pd.to_datetime('now')  #Timestamp('2022-10-29 03:31:05.711735')

1.3时间的属性

time = pd.Timestamp('now')

time.asm8  #返回numpy datetime64格式(以纳秒为单位)  numpy.datetime64('2022-10-29T11:35:45.920166000')
time.dayofweek   #返回周几。周一为0    out: 5
time.dayofyear  #302 (一年中的第几天)
time.days_in_month  #31  (当月有多少天)
time.freqstr  #周期字符
time.is_leap_year  #False,是否是公历闰年
time.is_month_end  #False(是否是当月最后一天)
time.is_month_start
time.is_quarter_end  #False(是否是当季最后一天)
time.is_quarter_start
time.is_year_end #False (是否是当年最后一天)
time.is_year_start
time.quarter  #4 (返回当前季度数)
time.week #43 当年第几周
time.weekofyear  #43 同上
time.day  #29  ,29号
time.fold

1.4时间的方法

time = pd.Timestamp('now',tz = 'Asia/Shanghai')

#转换为指定时区
time.astimezone('UTC')  #timestamp('2022-10-29 03:48:46.357820+0000', tz='UTC')
time.tz_convert('UTC')

#转换单位,向上舍入
time.ceil('s')   #转换以秒为单位     Timestamp('2022-10-29 11:49:27+0800', tz='Asia/Shanghai')
time.ceil('ns')   #转换以纳秒为单位     Timestamp('2022-10-29 11:50:00.283949+0800', tz='Asia/Shanghai')
time.ceil('d')    #保留日    Timestamp('2022-10-30 00:00:00+0800', tz='Asia/Shanghai')
time.ceil('h')    #保留时    Timestamp('2022-10-29 12:00:00+0800', tz='Asia/Shanghai')

#转换单位,向下舍入
time.floor('h')   #保留时     Timestamp('2022-10-29 11:00:00+0800', tz='Asia/Shanghai')

#类似四舍五入
time.round('h')  #保留时     Timestamp('2022-10-29 12:00:00+0800', tz='Asia/Shanghai')

#返回星期名
time.day_name()

#月份名称
time.month_name()

#将时间戳规范化为午夜,保留时区tz信息
time.normalize()  #  Timestamp('2022-10-29 00:00:00+0800', tz='Asia/Shanghai')

#将时间元素替换datetime.replace
time.replace(year = 2023)  #Timestamp('2023-10-29 11:54:21.996544+0800', tz='Asia/Shanghai')

#月份换为8月
time.replace(month = 8)  #Timestamp('2022-08-29 11:55:21.935710+0800', tz='Asia/Shanghai')

#转换为周期类型,将丢失时区
time.to_period(freq = 'h')  #Period('2022-10-29 11:00', 'H')

#本地化时区转换
time = pd.Timestamp('now')
time.tz_localize('Asia/Shanghai') #Timestamp('2022-10-29 11:58:24.845443+0800', tz='Asia/Shanghai')

#删除时区
time.tz_localize(None)

2.时长数据

2.1创建时间差

#创建时间差
pd.Timestamp('2020-11-01 15')-pd.Timestamp('2020-11-01 14') #Timedelta('0 days 01:00:00')
pd.Timestamp('2020-11-01 15')-pd.Timestamp('2020-11-02 14') #Timedelta('-1 days +01:00:00')
#一天
pd.Timedelta('1 days 2 hours 2min ')  #Timedelta('1 days 02:02:00')
pd.Timedelta(days = 5, minutes = 4, seconds = 10)  #Timedelta('5 days 00:04:10')

#使用带周期量的偏移量别名
#一天
pd.Timedelta('1D')  #Timedelta('1 days 00:00:00')
#两周
pd.Timedelta('2W')  #Timedelta('14 days 00:00:00')
#一天零2小时3分钟4秒
pd.Ti
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值