Python数据分析基础-3Python的日期和时间及其处理的常用方法

案头见蠹鱼,犹胜凡俦侣。这篇文章主要讲述Python数据分析基础-3Python的日期和时间及其处理的常用方法相关的知识,希望能为你提供帮助。
0. 引入
上篇文章介绍了python的标量类型,这篇文章,我将介绍一下Python的日期和时间及其处理的常用方法!
1. Python时间类型简介
Python中常用的时间表示方法有以下几种:

  • 时间戳
  • 格式化的时间字符串
  • time模块的time.struct_time类
  • datetime模块的datetime类
其中时间戳(imestamp) 又称为Unix时间、POSIX时间。它表示从格林尼治时间1970年1月1日0时0分0秒开始到现在所经过的毫秒数,其值为float类型。 但Python返回的是秒数,需要说明的是时间戳是个差值,其值与时区无关。格式化的时间字符串是形如2022-01-01 13:14:52的字符串time模块和datetime模块我将在下面进行介绍。
2.time模块和datetime模块
Python提供了time模块和datetime模块,我将分别进行简单介绍。
2.1 time模块time模块我主要介绍两个函数:time.time()和time.localtime()函数
1) time.time()函数
time.time()函数会返回时间戳,即自1970-1-1 0:00:00 至今所经历的秒数
import time
time.time()


# 返回结果
1641043618.381585


2) time.localtime([secs])函数
time.localtime([secs])函数会返回以指定时间戳对应的本地时间的 struct_time对象,参数为时间戳,需要人为传入,如果不传入参数,则函数会默认返回函数执行时的本地时间。
import time
time.localtime(1641043618.381585)# 传入参数

time.struct_time(tm_year=2022, tm_mon=1, tm_mday=1, tm_hour=21, tm_min=26, tm_sec=58, tm_wday=5, tm_yday=1, tm_isdst=0)
# 结果为struct_time对象,表示1641043618.381585时间戳对应的时间是2022年1月1号,21点26分58秒,1月1号是该星期的第6天,是该年即2022年的第1天,tm_isdst表示是否是夏令时.

import time
time.localtime()# 不传入参数

# 结果返回的是现在的本地时间
time.struct_time(tm_year=2022, tm_mon=1, tm_mday=1, tm_hour=21, tm_min=38, tm_sec=34, tm_wday=5, tm_yday=1, tm_isdst=0)

读者可能会对struct_time对象中的属性有疑惑,所以下面会简单介绍一下各个属性的含义:

2.2 datetime模块Python中内建的datetime模块提供了datetime、date、time、timedelta类型,其中datetime类型是包含日期和时间信息的,尤其需要注意的是,这些类的对象都是不可变的。建立datetime类型需要自己传入参数:
1) datetime
from datetime import datetime, date, time
dt = datetime(2022, 1, 1, 21, 30, 28) # 传入参数分别为年月日时分秒
dt


# 结果为
datetime.datetime(2022, 1, 1, 21, 30, 28)


对于上面得到的datetime实例,可以使用它的对象方法来获取它的date、time、year、month等对象:
dt.time()
# 结果为 datetime.time(21, 30, 28)


dt.date()
# 结果为 datetime.date(2022, 1, 1)


print(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second)
# 结果为 2022 1 1 21 30 28


【Python数据分析基础-3Python的日期和时间及其处理的常用方法】2) strftime、strptime函数
strftime方法将datetime转换为字符串,该方法需要你传入你想要的字符串格式:
dt.strftime(%m/%d/%Y %H:%M)
# 结果为
01/01/2022 21:30


dt.strftime(%Y-%m-%d %H:%M:%S)
# 结果为
2022-01-01 21:30:28


strftime方法将字符串转换为datetime,需要传入字符串及其对应的格式:
datetime.strptime(20220101213028, %Y%m%d%H%M%S)
# 结果为
datetime.datetime(2022, 1, 1, 21, 30, 28)


datetime.strptime(2022-01-01 21:30:28, %Y-%m-%d %H:%M:%S)
# 结果为
datetime.datetime(2022, 1, 1, 21, 30, 28)


下面表格是完整的格式化详细说明:

3) datetime.replace
在聚合或分组时间序列数据时,常常会将datatime时间序列中的一些值进行替换,如将分钟、秒替换为0,此时就需要用到datetime.replace()函数了:
# 具体参数如下
replace(
year=self.year,
month=self.month,
day=self.day,
hour=self.hour,
minute=self.minute,
second=self.second,
microsecond=self.microsecond,
tzinfo=self.tzinfo,
* fold=0)


例子:
from datetime import datetime, date, time
dt = datetime(2022, 1, 1, 21, 30, 28).replace(minute=0,second=0)


# 结果为
datetime.datetime(2022, 1, 1, 21, 0)


4) datetime.timedelta
两个不同的datetime对象会产生一个datetime.timedelta类型的对象,表示两个时间之间的差值:
from datetime import datetime, date, time
dt1 = datetime(2022, 1, 1, 21, 30, 28) # 传入参数分别为年月日时分秒
dt2 = datetime(2021, 12, 31, 20, 10, 1)
delta = dt1 - dt2
delta


# 结果为
datetime.timedelta(1, 4827)
# 表示时间间隔为1天又4827秒


当然也可以给一个datetime.datetime对象加上 datetime.timedelta,生成新的datetime.datetime对象:
dt2 + delta


# 结果为
datetime.datetime(2022, 1, 1, 21, 30, 28)


日期和时间就介绍到这里,下篇文章我将介绍Python数据结构中的元组!Datetime格式化详细说明





    推荐阅读