天天看点

Python数据分析--时间序列获取当前时刻的时间指定日期和时间的格式字符串和时间格式互相转换时间索引时间运算

时间序列

  • 获取当前时刻的时间
    • 返回当前时刻的日期和时间
    • 返回当前时刻的年、月、日
    • 返回当前时刻的周数
  • 指定日期和时间的格式
  • 字符串和时间格式互相转换
    • 时间格式转换为字符串格式
    • 字符串格式转换为时间格式
  • 时间索引
  • 时间运算
    • 时间之差
    • 时间偏移

获取当前时刻的时间

返回当前时刻的日期和时间

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')