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