時間序列
- 擷取目前時刻的時間
-
- 傳回目前時刻的日期和時間
- 傳回目前時刻的年、月、日
- 傳回目前時刻的周數
- 指定日期和時間的格式
- 字元串和時間格式互相轉換
-
- 時間格式轉換為字元串格式
- 字元串格式轉換為時間格式
- 時間索引
- 時間運算
-
- 時間之差
- 時間偏移
擷取目前時刻的時間
傳回目前時刻的日期和時間
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')