Python datetime日期处理与绘图
1. date、time、datetime简要介绍
date、time、datetime是python中几个时间处理模块,其中date主要描述日期这一级别(年月日),time描述天内的时间(时分秒),datetime是前两者的组合包含了年月日时分秒,并且它们之间也可以相互转换。
日期的几种表示方法:
(1)格式化字符串
这种方式非常易读,通常表示为年-月-日 时:分:秒,例如:2024-08-06 10:29:06
(2) 时间戳
一般以秒为单位,表示从某个时间起点的连续计数,是个长的整数类型,比如1722911347
相关的时间转换网站:https://tool.lu/timestamp/,可以比较方便的实现时间戳和格式化字符串的转换,但要注意时区。
python中日期转换
使用datetime包可以实现简单的日期转换
import datetime
# date表示年月日
d=datetime.date(2024,8,3)
# time表示时分秒
t=datetime.time(10,12,38)
# date和time可以组合成datetime类型
dt = datetime.datetime.combine(d, t)
#从格式化字符串中恢复成datetime
dtFromStr=datetime.datetime.strptime("2024-8-3 10:12:38","%Y-%m-%d %H:%M:%S")
# 从时间戳中恢复成datetime
dtFromTimeStamp=datetime.datetime.fromtimestamp(1722651158,datetime.timezone.utc)
# datetime转换为字符串、时间戳、date、time
dt2Str=dt.strftime("%Y-%m-%d %H:%M:%S")
dt2Timestamp=dt.timestamp()
dt2date=dt.date()
dt2time=dt.time()
# 打印数据各种类型
print("date:",d,"type:",type(d))
print("time:",t,"type:",type(t))
print("datetime:",dt,"type:",type(dt))
print("datetime To Str:",dt2Str)
print("datetime To Timestamp",dt.timestamp())
输出结果如下:
2. 日期绘图,X轴显示格式化字符串
输入的数据:格式化字符串,卫星数。如果是时间戳类型,也可以使用上面的方法进行转换。
使用matplotlib.pyplot和matplotlib.dates 进行时间绘图配置
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter
import pandas as pd
import datetime
def pltXDateTime(inp):
df=pd.read_csv(inp)
# csv首先读入的是字符串,这里要先转换成datetime
df['timestamp'].astype(datetime)
plt.figure()
ax = plt.gca()
formatter = DateFormatter('%Y-%m-%d %H:%M:%S') # %Y-%m-%d %H:%M:%S
ax.xaxis.set_major_formatter(formatter) # 设置时间显示格式,也可以只显 示%H:%M:%S
# 绘图只要X轴的数据类型是datetime即可
plt.plot(df['timestamp'], df['ns'])
plt.show()
结果如下,同时图片也可以放大,相应的日期也会变化。