数据分析工作中,Python和SQL是常用的两大工具。常见的数据类型有数值型,字符串型,日期型等,对日期型格式进行处理也是比较常见的情形,文章SQL中日期格式处理记录了SQL针对日期型字段的处理过程,本文记录Python对日期型数据的处理。
获取当前日期和时间
import datetime
print(datetime.datetime.now()) #年月日时分秒
print(datetime.datetime.now().date()) #年月日
print(datetime.datetime.now().time()) #时间
print(datetime.datetime.now().year) #年
日期时间格式化
import datetime
from datetime import datetime
#人工输入格式化日期
date1 = datetime.date(year=2023, month=6, day=17)
date2 = datetime.datetime(year = 2023, month = 6, day = 1, hour = 14, minute = 4)
#字符串转换为格式化日期
## 在知道字符串日期格式时可以使用strptime函数(%Y四位数年,%y两位数年,%m数字月,%B英文月(全拼),%b英文月(简写),%d数字天),%H 24制小时,%I 12制小时,%M分钟,%S秒
date3 = '6/17/2023'
print(datetime.strptime(date3,'%m/%d/%Y'))
## 不知道字符串日期对应格式时
from dateutil.parser import parser
date4 = parse(date3)
print(date4)
#日期转换为字符串-strpftime函数(%A星期几,%e每月第几天,%j每年第几天,%u每周第几天周一为1,%V每年第几周)
print(datetime.datetime.now().strftime('%b %d %y')) #标准python日期格式转换为制定格式字符串
#返回周几
dayofweek = datetime.datetime.now().strftime("%A")
print(dayofweek)
print(datetime.datetime.today().weekday()) #周一到周日 0-6
print( datetime.datetime.today().isoweekday()) #周一到周日 1-7
日期时间差
import datetime
from datetime import datetime
#计算两个日期之间的日期差
date1 = "2020-01-01"
date1 = datetime.datetime.strptime(date1,"%Y-%m-%d")
date2=datetime.datetime.now()
day_diff = date2 - date1
print(day_diff.days)
#日期差的日期
today = datetime.datetime.now()
yesterday= today - datetime.timedelta(days=1)
时间戳索引
#方法1:
import pandas as pd
import datetime
from datetime import datetime
date= [datetime(2020,5,1),'2020-6-1',datetime(2020,7,1)]
t = pd.to_datetime(date)
#方法2:
t = pd.DatetimeIndex(['5/1/2020','6/1/2020','7/1/2020'])
#方法3:
t = pd.date_range('1/1/2020','6/17/2023',freq='B') #工作日,默认是freq='D'返回每天日期索引
t = pd.date_range('2023-6-17',periods=10) #指定开始日期返回之后阶段索引
t = pd.bdate_range('2023-6-17',periods=10) #工作日索引