Pandas日期功能

日期功能擴展了時間序列,在財務數據分析中起主要作用。在處理日期數據的同時,我們經常會遇到以下情況 -

  • 生成日期序列
  • 將日期序列轉換爲不同的頻率

創建一個日期範圍

通過指定週期和頻率,使用date.range()函數就可以創建日期序列。 默認情況下,範圍的頻率是天。參考以下示例代碼 -

import pandas as pd
datelist = pd.date_range('2020/11/21', periods=5)
print(datelist)

執行上面示例代碼,得到以下結果 -

DatetimeIndex(['2020-11-21', '2020-11-22', '2020-11-23', '2020-11-24',
               '2020-11-25'],
              dtype='datetime64[ns]', freq='D')

更改日期頻率

import pandas as pd
datelist = pd.date_range('2020/11/21', periods=5,freq='M')
print(datelist)

執行上面示例代碼,得到以下結果 -

DatetimeIndex(['2020-11-30', '2020-12-31', '2021-01-31', '2021-02-28',
               '2021-03-31'],
              dtype='datetime64[ns]', freq='M')

bdate_range()函數

bdate_range()用來表示商業日期範圍,不同於date_range(),它不包括星期六和星期天。

import pandas as pd
datelist = pd.date_range('2011/11/03', periods=5)
print(datelist)

執行上面示例代碼,得到以下結果 -

DatetimeIndex(['2017-11-03', '2017-11-06', '2017-11-07', '2017-11-08',
               '2017-11-09'],
              dtype='datetime64[ns]', freq='B')

觀察到11月3日以後,日期跳至11月6日,不包括4日和5日(因爲它們是週六和週日)。

date_rangebdate_range這樣的便利函數利用了各種頻率別名。date_range的默認頻率是日曆中的自然日,而bdate_range的默認頻率是工作日。參考以下示例代碼 -

import pandas as pd
start = pd.datetime(2017, 11, 1)
end = pd.datetime(2017, 11, 5)
dates = pd.date_range(start, end)
print(dates)

執行上面示例代碼,得到以下結果 -

DatetimeIndex(['2017-11-01', '2017-11-02', '2017-11-03', '2017-11-04',
               '2017-11-05'],
              dtype='datetime64[ns]', freq='D')

偏移別名

大量的字符串別名被賦予常用的時間序列頻率。我們把這些別名稱爲偏移別名。

別名

描述說明

B

工作日頻率

BQS

商務季度開始頻率

D

日曆/自然日頻率

A

年度(年)結束頻率

W

每週頻率

BA

商務年底結束

M

月結束頻率

BAS

商務年度開始頻率

SM

半月結束頻率

BH

商務時間頻率

SM

半月結束頻率

BH

商務時間頻率

BM

商務月結束頻率

H

小時頻率

MS

月起始頻率

T, min

分鐘的頻率

SMS

SMS半開始頻率

S

秒頻率

BMS

商務月開始頻率

L, ms

毫秒

Q

季度結束頻率

U, us

微秒

BQ

商務季度結束頻率

N

納秒

BQ

商務季度結束頻率

QS

季度開始頻率