python時間序列按頻率生成日期

2021-09-23 07:51:53 字數 3375 閱讀 7236

有時候我們的資料是按某個頻率收集的,比如每日、每月、每15分鐘,那麼我們怎麼產生對應頻率的索引呢?pandas中的date_range可用於生成指定長度的datetimeindex。

我們先看一下怎麼生成日期範圍:pd.date_range(startdate,enddate)

1.生成指定開始日期和結束日期的時間範圍:

in:import pandas as pd

index = pd.date_range(『4/1/2019』,『5/1/2019』)

print(index)

out:

datetimeindex([『2019-04-01』, 『2019-04-02』, 『2019-04-03』, 『2019-04-04』,

『2019-04-05』, 『2019-04-06』, 『2019-04-07』, 『2019-04-08』,

『2019-04-09』, 『2019-04-10』, 『2019-04-11』, 『2019-04-12』,

『2019-04-13』, 『2019-04-14』, 『2019-04-15』, 『2019-04-16』,

『2019-04-17』, 『2019-04-18』, 『2019-04-19』, 『2019-04-20』,

『2019-04-21』, 『2019-04-22』, 『2019-04-23』, 『2019-04-24』,

『2019-04-25』, 『2019-04-26』, 『2019-04-27』, 『2019-04-28』,

『2019-04-29』, 『2019-04-30』, 『2019-05-01』],

dtype=『datetime64[ns]』, freq=『d』)12

3456

78910

1112

13也可以只指定開始日期或結束日期,但這時必須要輸入乙個時間長度,並且指定輸入的是開始時間還是結束時間,如果不指定預設是開始時間。

date_range(startdate/enddate,periods)

in:print(pd.date_range(start = 『5/1/2019』,periods = 10,freq = 『1h30min』))

out:datetimeindex([『2019-05-01 00:00:00』, 『2019-05-01 01:30:00』,

『2019-05-01 03:00:00』, 『2019-05-01 04:30:00』,

『2019-05-01 06:00:00』, 『2019-05-01 07:30:00』,

『2019-05-01 09:00:00』, 『2019-05-01 10:30:00』,

『2019-05-01 12:00:00』, 『2019-05-01 13:30:00』],

dtype=『datetime64[ns]』, freq=『90t』)12

3456

7python還可以生成其他不規則頻率的時間,比如每月的第乙個工作日,每月的第乙個日曆日等

生成每月的第乙個工作日:

in:print(pd.date_range(start = 『1/1/2019』,periods = 12,freq = 『bms』))

out:datetimeindex([『2019-01-01』, 『2019-02-01』, 『2019-03-01』, 『2019-04-01』,

『2019-05-01』, 『2019-06-03』, 『2019-07-01』, 『2019-08-01』,

『2019-09-02』, 『2019-10-01』, 『2019-11-01』, 『2019-12-02』],

dtype=『datetime64[ns]』, freq=『bms』)12

345生成每月的第乙個日曆日:

in:print(pd.date_range(start = 『1/1/2019』,periods = 12,freq = 『ms』))

out:datetimeindex([『2019-01-01』, 『2019-02-01』, 『2019-03-01』, 『2019-04-01』,

『2019-05-01』, 『2019-06-01』, 『2019-07-01』, 『2019-08-01』,

『2019-09-01』, 『2019-10-01』, 『2019-11-01』, 『2019-12-01』],

dtype=『datetime64[ns]』, freq=『ms』)12

345有一種很實用的頻率類,為「wom」,即每月的幾個星期幾。比如每月的第三個星期五。如果我們每月的第三個星期五發工資,這樣就可以很方便的知道今年每個月的工資日了。

in:print(pd.date_range(start = 『1/1/2019』,periods = 12,freq = 『wom-3fri』))

out:datetimeindex([『2019-01-18』, 『2019-02-15』, 『2019-03-15』, 『2019-04-19』,

『2019-05-17』, 『2019-06-21』, 『2019-07-19』, 『2019-08-16』,

『2019-09-20』, 『2019-10-18』, 『2019-11-15』, 『2019-12-20』],

dtype=『datetime64[ns]』, freq=『wom-3fri』)12

345下面是python可使用的時間序列的基礎頻率表:

別名 偏移量型別 說明

d day 每日曆日

b businessday 每工作日

h hour 每小時

t或min minute 每分鐘

s second 每秒

l或ms milli 每毫秒

u micro 每微秒

m monthend 每月最後乙個日曆日

bm businessmonthend 每月最後乙個工作日

ms monthbegin 每月第乙個日曆日

bms businessmonthbegin 每月第乙個工作日

w-mon、w-tue week 每週的星期幾

wom-1mon、wom-2mon weekofmonth 每月第幾周的星期幾

q-jan、q-feb quarterend 每個季度對應的該月份的最後乙個日曆日

bq-jan、bq-feb businessquarterend 每個季度對應的該月份的最後乙個工作日

qs-jan、qs-feb quarterbegin 每個季度對應的該月份的第乙個日曆日

bqs-jan、bqs-feb quarterbegin 每個季度對應的該月份的第乙個工作日

a-jan、b-feb yearend 每年指定月份的最後乙個日曆日

ba-jan、ba-feb businessyearend 每年指定月份的最後乙個工作日

as-jan、as-feb yearbegin 每年指定月份的第乙個日曆日

時間序列的基礎頻率

別名偏移量型別說明d day每日曆日 bbusinessday 每工作日 hhour 每小時t min minute每分s second 每秒l ms million 每毫秒u micro 每微妙m monthend 每月最後乙個日曆日 bmbusinessmonthend 每月最後乙個工作日 ms...

按秒生成隨機時間

或者用如下函式 if exists select from dbo.sysobjects where id object id n dbo f randtime and xtype in n fn n if n tf drop function dbo f randtime go if exists...

時間序列python

平穩性檢測 平穩性的定義 圍繞乙個常數上下波動且波動範圍有限,即有常數均值和常數方差。如果有明顯的趨勢或者週期性,那它通常不是平穩序列。檢測方法有三種 1 時序圖檢測 2 自相關係數和偏相關係數 通過spss 截尾 就是在某階之後,係數都為0 拖尾 就是有乙個緩慢衰減的趨勢,但是不都為0 2.不平穩...