pandas中的幾個時間序列生成函式

2021-10-09 22:49:07 字數 3660 閱讀 8830

最近在處理跟時間相關的資料,用到了pandas中的datetime的幾個函式,本篇來說一下pandas中幾個常見的時間序列生成函式。

pd.date_range(start=none, end=none, periods=none, freq=none, tz=none, normalize=false, name=none, closed=none)

先來講一下各引數的含義:

freq別稱

說明/以下述為頻率

b工作日

c自定義工作日

d日曆的日期w周

m月末q季度末y年末

h小時t分鐘

s秒ms月初

qs季度初

ys年初

sms前半月(1號和15號)

接著可以看乙個示例:

date = pd.date_range(start=

"2019-9-15"

, periods=

7, freq=

"2sms"

, tz=

"asia/shanghai"

)date

'''返回:

datetimeindex(['2019-09-15 00:00:00+08:00', '2019-10-15 00:00:00+08:00',

'2019-11-15 00:00:00+08:00', '2019-12-15 00:00:00+08:00',

'2020-01-15 00:00:00+08:00', '2020-02-15 00:00:00+08:00',

'2020-03-15 00:00:00+08:00'],

dtype='datetime64[ns, asia/shanghai]', freq='2sms-15')

'''

可以看到,加上時區之後多加了8個小時;同時freq裡並不是單純的示例格式,反而多了乙個2,可以這樣計算:原sms代表半月即15天,加上2之後代表乘以2,即變為了30天。

- pd.period_range(start=none, end=none, periods=none, freq=none, name=none)

引數意思都是一樣的,因此就不解釋了。直接上厘子例子。

# 頻率預設以「天」算

period = pd.period_range(start=

"2019-2-2"

, periods=2)

period

'''返回:

periodindex(['2019-02-02', '2019-02-03'], dtype='period[d]', freq='d')

'''

單這樣看肯定會覺得和date_range函式沒有多大區別,最多只是資料型別不一樣。不過無需著急,接下來我再放幾個該函式的例子,一對比,就能很快發現區別。

# 頻率以「季度」算

period = pd.period_range(start=

"2019-2-2"

, periods=

2, freq=

"q")

period

'''返回:

periodindex(['2019q1', '2019q2'], dtype='period[q-dec]', freq='q-dec')

'''# 頻率以「月」算

period = pd.period_range(start=

"2019-2-2"

, periods=

2, freq=

"m")

period

'''返回:

periodindex(['2019-02', '2019-03'], dtype='period[m]', freq='m')

'''# 頻率以「年」算

period = pd.period_range(start=

"2019-2-2"

, periods=

2, freq=

"y")

period

'''返回:

periodindex(['2019', '2020'], dtype='period[a-dec]', freq='a-dec')

'''

很明顯,date_range是沒有這個的,從始至終它都返回日期(有設定時間也會把時間返回)。

pd.timedelta_range(start=none, end=none, periods=none, freq=none, name=none, closed=none)

個人感覺這個函式相對用得少,還沒在實際中真正用到過這個函式。它返回的是天數,以小於等於天的單位做頻率,小時、秒都行。**示例中用的是小時。(h前的數字代表倍數,5個小時)

delta = pd.timedelta_range(start=

"1 day"

, periods=

3, freq=

"5h"

)delta

'''返回:

timedeltaindex(['1 days 00:00:00', '1 days 05:00:00', '1 days 10:00:00'], dtype='timedelta64[ns]', freq='5h')

'''

pd.interval_range(start=none, end=none, periods=none, freq=none, name=none, closed='right')

這個函式可以返回時間區間,也可以返回數值區間。

唯一需要注意的是:若要返回時間區間,start和end的引數不能直接寫時間字串(「2020-9-1」),應該用上pd.timestamp(時間)

# 返回時間區間

interval = pd.interval_range(start=pd.timestamp(

"2020-1-15"

), end=pd.timestamp(

"2020-3-15"

), freq=

"2sms"

)interval

'''返回:

intervalindex([(2020-01-15, 2020-02-15], (2020-02-15, 2020-03-15]],

closed='right',

dtype='interval[datetime64[ns]]')

'''# 返回數值區間

interval = pd.interval_range(start=

0, end=10)

interval

'''返回:

intervalindex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5], (5, 6], (6, 7], (7, 8], (8, 9], (9, 10]],

closed='right',

dtype='interval[int64]')

'''

pandas時間序列

import pandas as pd import numpy as np import datetimedf pd.dataframe df 將時間序列轉化為標準的年月日的形式 df date pd.to datetime df date df 生成定頻日期與時間段序列 dt pd.date r...

Pandas時間序列分析中的resample函式

pandas 中的resample函式用於各種頻率的轉換工作。resample的引數如下 引數描述freq轉換頻率axis 0重取樣的軸closed none在降取樣中,設定各時間段哪段是閉合的label none在降取樣中,如何設定聚合值的標籤 下面著重介紹 closed和label引數 labe...

pandas 時間序列基礎

時間序列 time series 資料是一種重要的結構化資料形式。資料點是根據某種規律定期出現的 比如每15秒 每5分鐘 每月出現一次 時間序列也可以是不定期的,沒有固定的時間單位或單位之間的偏移量。時間序列資料的意義取決於具體的應用場景。python標準庫包含用於日期 date 和時間 time ...