Pandas的时间操作

时间操作

(本文默认导入Pandas模块并命名为pd)

1.创建时间戳和时间增量

# 创建时间戳和时间增量
print('从字符串创建时间戳:',pd.Timestamp('2023-10-06'))

print('从整数创建时间戳:',pd.Timestamp(1664553000,unit='s'))

from datetime import datetime
dt = datetime(2023, 10, 6)
print('从datetime对象创建时间戳:',pd.Timestamp(dt))

# 创建时间增量(支持字符串、数字和时间差)
print('to_timedelta创建时间增量:',pd.Timestamp('2023-10-06') + pd.to_timedelta('24:00:00'))

在这里插入图片描述

在 pd.Timestamp() 函数中,unit 参数指定输入的时间戳是基于哪个时间单位计算的。

以下是几个常用的时间单位:
‘ns’:纳秒(默认)
‘us’:微秒
‘ms’:毫秒
‘s’:秒
‘m’:分钟
‘h’:小时
‘D’:天
‘W’:周
‘M’:月
‘Q’:季度
‘Y’:年

时间戳(Timestamp)对象的属性:

year:表示时间戳的年份。
month:表示时间戳的月份。
day:表示时间戳的日。
hour:表示时间戳的小时。
minute:表示时间戳的分钟。
second:表示时间戳的秒。
microsecond:表示时间戳的微秒。
nanosecond:表示时间戳的纳秒。
weekday():返回时间戳对应的星期几,0表示星期一,6表示星期日。
is_leap_year:判断时间戳所在的年份是否是闰年。

(注:用dir()函数列出给定对象的所有属性和方法,某些属性和方法名称以双下划线(__)开头和结尾,这些是 Python 中的特殊属性和方法,往往是由 Python 解释器自动调用的。(^U^)ノ~YO)

2.时间差

# 时间差
print('Timestamp相减后的结果:',pd.Timestamp('2023-10-06') - pd.Timestamp('2000-01-21'))

print('to_period转换频率,将时间戳转换为月度频率的时间段对象:',pd.Timestamp('2023-10-06 14:47:24').to_period('M'))

print('将时间差转换为分钟频率的时间段对象:',(pd.Timestamp('2023-10-06') - pd.Timestamp('2000-01-21')) / pd.Timedelta('1 hour'))

在这里插入图片描述
时间频率的转化还涉及更多因素(比如闰年),to_period只适用于时间戳数据,也就是说两个时间戳相减后的数据是不能用to_period转换的,只能用‘/ pd.Timedelta(‘1 hour’)’转换时间频率。

时间差(Timedelta)对象的属性:

days:表示时间差的天数。
seconds:表示时间差除天数以外的秒数。
microseconds:表示时间差除天数和秒数以外的微秒数。
nanoseconds:表示时间差除天数、秒数和微秒数以外的纳秒数。
total_seconds():返回时间差总共的秒数,包括天数、秒数、微秒数和纳秒数等。

3.时间索引

#  时间索引
print('创建的DatetimeIndex为:\n',pd.DatetimeIndex(['2023-01-01','2023-02-01','2023-02-14','2023-03-01','2023-04-01','2023-05-01','2023-06-01']))

dt = pd.date_range(start='2023-01-01 00:00:00',end='2023-07-01 00:00:01',freq='M')
index = pd.DatetimeIndex(dt)
print('创建的时间序列为:\n',pd.Series(dt,index=index))

print('访问23年1月到4月的数据:\n',pd.Series(dt,index=index)['2023-01':'2023-04'])

在这里插入图片描述
pandas 中的 pd.date_range() 函数用于生成时间序列。

下面是各个参数的解释:
start: 起始时间,默认值为 None,如果不指定,则需要同时指定 end 和 periods 参数。
end: 结束时间,默认值为 None,如果不指定,则需要同时指定 start 和 periods 参数。
periods: 时间序列的长度,默认值为 None,如果不指定,则需要同时指定 start 和 end 参数。
freq: 频率,默认值为 “D”,表示按日计算时间,也可以根据业务需求设置为其他频率,比如 “M” 表示按月计算时间。
tz: 时区,默认值为 None,表示无时区。
normalize: 在默认情况下,时间范围将被规范化(normalize),将时间调整为午夜,将日期部分保持不变。当您设置为 True 时,将在返回结果中规范化所有的 datetime 对象(即将小时、分钟和秒全部设为0)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值