时间序列
- 获取当前时刻的时间
-
- 返回当前时刻的日期和时间
- 返回当前时刻的年、月、日
- 返回当前时刻的周数
- 指定日期和时间的格式
- 字符串和时间格式互相转换
-
- 时间格式转换为字符串格式
- 字符串格式转换为时间格式
- 时间索引
- 时间运算
-
- 时间之差
- 时间偏移
获取当前时刻的时间
返回当前时刻的日期和时间
from datetime import datetime
datetime.now()
返回当前时刻的年、月、日
datetime.now().year
>>>
2019
In [3]:
datetime.now().month
>>>
7
datetime.now().day
>>>
23
返回当前时刻的周数
# 返回当前周几
datetime.now().weekday()+1
>>>
2
datetime.now().isocalendar()
>>>
(2019, 30, 2)
# 返回周数
datetime.now().isocalendar()[1]
>>>
30
指定日期和时间的格式
# date()将日期和时间设置成只展示日期
datetime.now().date()
>>>
datetime.date(2019, 7, 23)
# time()将日期和时间设置成只展示时间
datetime.now().time()
>>>
datetime.time(23, 3, 26, 974822)
# strftime()自定义时间和日期格式
datetime.now().strftime('%Y-%m-%d')
>>>
'2019-07-23'
strftime()自定义格式有:
代码 | 说明 |
---|---|
%H | 24小时制 |
%I | 12小时制 |
%M | 两位数的分【00,59】 |
%S | 秒 |
%w | 用整数表示周几,从0开始 |
%U | 每年的第几周,周日是每周第一天 |
%W | 每年的第几周,周一是每周第一天 |
%F | %Y-%m-% |
%D | %m/%d/%Y |
字符串和时间格式互相转换
时间格式转换为字符串格式
now
>>>
datetime.datetime(2019, 7, 23, 23, 12, 4, 870619)
type(now)
>>>
datetime.datetime
type(str(now))
>>>
str
字符串格式转换为时间格式
str_time = '2019-7-23'
type(str_time)
>>>
str
from dateutil.parser import parse
type(parse(str_time))
>>>
datetime.datetime
时间索引
- 当索引是时间的情况
data
>>>
num
2018-01-02 1
2018-01-03 2
2018-01-05 3
2018-02-04 4
2018-02-06 5
2019-01-02 6
2019-05-02 7
2019-05-03 8
# 获取2018年数据
data['2018']
>>>
num
2018-01-02 1
2018-01-03 2
2018-01-05 3
2018-02-04 4
2018-02-06 5
# 获取2018年1月数据
data['2018-01']
>>>
num
2018-01-02 1
2018-01-03 2
2018-01-05 3
# 获取2018年2月到2019年1月的数据
data['2018-02':'2019-01']
>>>
num
2018-02-04 4
2018-02-06 5
2019-01-02 6
# 获取2018年2月4号的数据
data['2018-02-04':'2018-02-04']
Out[34]:
>>>
2018-02-04 4
- 当时间是普通列的情况
df
>>>
编号 年龄 性别 注册时间
0 A1 54 男 2018-08-08
1 A2 16 女 2018-08-09
2 A3 47 女 2018-08-10
3 A4 41 男 2018-08-11
# 选取时间为2018年8月8日的数据
df[df['注册时间'] == datetime(2018,8,8)]
>>>
编号 年龄 性别 注册时间
0 A1 54 男 2018-08-08
# 选取2018年8月9日之后的数据
df[df['注册时间'] > datetime(2018,8,9)]
>>>
编号 年龄 性别 注册时间
2 A3 47 女 2018-08-10
3 A4 41 男 2018-08-11
# 选取2018年8月9日之前的数据
df[df['注册时间'] < datetime(2018,8,9)]
>>>
编号 年龄 性别 注册时间
0 A1 54 男 2018-08-08
# 选取20181年8月8日到2018年8月10日之间的数据
df[(df['注册时间'] > datetime(2018,8,8)) & (df['注册时间'] < datetime(2018,8,10))]
>>>
编号 年龄 性别 注册时间
1 A2 16 女 2018-08-09
时间运算
时间之差
python时间做差会返回一个timedelta,该对象中包含天数、秒、微秒三个等级
cha = datetime(2018,5,21,19,50) - datetime(2018,5,18,20,32)
cha
>>>
datetime.timedelta(days=2, seconds=83880)
# 换算成小时的时间差
cha.seconds/3600
>>>
23.3
时间偏移
- timedelta只支持天、秒、微秒的时间运算
from datetime import timedelta
date = datetime(2018,5,18,20,32)
# 往后推一天
date + timedelta(days = 1)
>>>
datetime.datetime(2018, 5, 19, 20, 32)
# 往后推60秒
date + timedelta(seconds = 60)
>>>
datetime.datetime(2018, 5, 18, 20, 33)
# 往前推一天
date - timedelta(days =1)
>>>
datetime.datetime(2018, 5, 17, 20, 32)
- date offset直接实现天、小时、分钟的时间偏移
rom pandas.tseries.offsets import Day,Hour,Minute
date = datetime(2018,5,18,20,32)
# 往后推1天
date + Day(1)
>>>
Timestamp('2018-05-19 20:32:00')
# 往后推1小时
date + Hour(1)
>>>
Timestamp('2018-05-18 21:32:00')
# 往后推10分钟
date + Minute(10)
>>>
Timestamp('2018-05-18 20:42:00')
# 往前推30分钟
date - Minute(30)
>>>
Timestamp('2018-05-18 20:02:00')