Python的日期和时间处理
1. python的日期和时间处理模块
- datetime:以毫秒形式储存日期和时间
- datime.timedelta,表示两个datetime对象的时间差
- datetime模块中包含的数据类型
1)date :年、月、日
2)time :储存时、分、秒、毫秒
3)datetime :储存日期和时间
timedelta :表示两个datetime值之间的差(日、秒、毫秒)
datetime模块
from datetime import datetime
now= datetime.now()
print(now)
print('年:{},月:{},日:{}'.format(now.year,now.month,now.day))
diff =datetime(2019,1,22)-datetime(2012,6,25)
print(type(diff))
print(diff)
print('恋爱经历了多少{}天,{}秒。'.format(diff.days,diff.seconds))
string 和datetime转化
- datetime->str
#方法1 str()
dt_obj = datetime(2017, 3, 4)
str_obj = str(dt_obj) # 强行转换
print(type(str_obj))
print(str_obj)
方法2 datetime.strftime()
str_obj2 = dt_obj.strftime('%d-%m-%Y') #f---format 格式化过程
print(str_obj2)
str->datetime
# strptime
dt_str = '2017-02-18'
dt_obj2 = datetime.strptime(dt_str, '%Y-%m-%d') #p---parse 解析操作,需要提供模式字符串"-""
print(type(dt_obj2))
print(dt_obj2)
# dateutil.parser.parse
from dateutil.parser import parse
dt_str2 = '2017/02/18'
dt_obj3 = parse(dt_str2)
print(type(dt_obj3))
print(dt_obj3)
pandas操作
- pd.to_datetime()
# 处理缺失值
s_obj3 = pd.Series(['2017/02/18', '2017/02/19', '2017-02-25', '2017-02-26'] + [None],
name='course_time')
print(s_obj3)
s_obj4 = pd.to_datetime(s_obj3)
print(s_obj4) # NAT-> Not a Time
访问
1.索引(索引位置、索引值、被解析的日期字符串)
2.切片操作
# 按“年份”、“月份”索引
print(time_s['2017-2'])
# 切片操作
print(time_s['2017-2-26':])
过滤 truncate
提取指定结点前、后日期数据
time_s.truncate(before='2017-2-25')
time_s.truncate(after='2017-2-25')
频数与偏移量
print(pd.date_range('2017/02/18', '2017/03/18', freq='2D'))
# 偏移量通过加法连接
sum_offset = pd.tseries.offsets.Week(2) + pd.tseries.offsets.Hour(12)
print(sum_offset)
print(pd.date_range('2017/02/18', '2017/03/18', freq=sum_offset))
移动数据
ts = pd.Series(np.random.randn(5), index=pd.date_range('20170218', periods=5, freq='W-SAT'))
print(ts)
print(ts.shift(1))
print(ts.shift(-1))