時序資料的建立

2021-10-07 14:58:18 字數 4732 閱讀 9525

元素型別 建立⽅式

名稱 :① date times(時間點/時刻) 描述:描述特定⽇期或時間點 元素型別:timestamp 建立方式:to_datetime或date_range

② 名稱:time spans(時間段/時期) 描述:由時間點定義的⼀段時期 元素型別:period 建立方式:period或period_range

③名稱: date offsets(相對時間差) 描述:⼀段時間的相對⼤小(與夏/冬令時⽆關) 元素型別: dateoffset 建立方式:dateoffset

④名稱: time deltas(絕對時間) 描述:⼀段時間的絕對⼤小(與夏/冬令時有關) 元素型別:timedelta 建立方式:to_timedelta或timedelta_range

1.2.1、to_datetime方法

pandas在時間點建⽴的輸入格式規定上給了很⼤的⾃由度,下⾯的語句都能正確建⽴同⼀時間點

in [1]

:import pandas as pd

import numpy as np

in [2]

: pd.to_datetime(

'2020.1.1'

) pd.to_datetime(

'2020 1.1'

) pd.to_datetime(

'2020 1 1'

) pd.to_datetime(

'2020 1-1'

) pd.to_datetime(

'2020-1 1'

) pd.to_datetime(

'2020-1-1'

) pd.to_datetime(

'2020/1/1'

) pd.to_datetime(

'1.1.2020'

) pd.to_datetime(

'1.1 2020'

) pd.to_datetime(

'1 1 2020'

) pd.to_datetime(

'1 1-2020'

) pd.to_datetime(

'1-1 2020'

) pd.to_datetime(

'1-1-2020'

) pd.to_datetime(

'1/1/2020'

) pd.to_datetime(

'20200101'

) pd.to_datetime(

'2020.0101'

) out[2]

: timestamp(

'2020-01-01 00:00:00'

)

當以下語句出現報錯時,可利⽤format引數強制匹配

#pd.to_datetime(『2020\1\1』)

#pd.to_datetime(『202011』)

#pd.to_datetime(『2020.1 1』)

#pd.to_datetime(『1 1.2020』)

in [4]

: pd.to_datetime(

'2020\\1\\1'

,format

='%y\\%m\\%d'

) pd.to_datetime(

'2020`1`1'

,format

='%y`%m`%d'

) pd.to_datetime(

'2020.1 1'

,format

='%y.%m %d'

) pd.to_datetime(

'1 1.2020'

,format

='%d %m.%y'

)out[4]

: timestamp(

'2020-01-01 00:00:00'

)#同時,使⽤列表可將其轉為時間點索引

in [5]

: pd.series(

range(2

),index=pd.to_datetime(

['2020/1/1'

,'2020/1/2'])

) out[5]

:2020-01

-0102020-01

-021 dtype: int64

#如果列已經照時間順序排好了,則利⽤to_datetime可⾃動轉換

in [7]

: df = pd.dataframe(

) pd.to_datetime(df)

out[7]

:02020-01

-0112020-01

-02dtype: datetime64[ns]

四級標題1、dataoffset與timedelta的區別

timedelta絕對時間差的特點⽆論是冬令時還是夏令時,增減1day都只計24小時,dataoffset相對時間⽆論⼀天是23\24\25小時,增減1day都與當天相同的時間保持一致。

例國當地時間 2023年03⽉29⽇、01:00:00 時鐘向調整 1 小時 變為 2023年03⽉29⽇02:00:00開時夏令時。

in [19]

: ts = pd.timestamp(

'2020-3-29 01:00:00'

, tz=

'europe/helsinki'

) ts + pd.timedelta(days=1)

out[19]

: timestamp(

'2020-03-30 02:00:00+0300'

, tz=

'europe/helsinki'

)in [20]

: ts + pd.dateoffset(days=1)

out[20]

: timestamp(

'2020-03-30 01:00:00+0300'

, tz=

'europe/helsinki'

)in [21]

: ts = pd.timestamp(

'2020-3-29 01:00:00'

) ts + pd.timedelta(days=1)

out[21]

: timestamp(

'2020-03-30 01:00:00'

)in [22]

: ts + pd.dateoffset(days=1)

out[22]

: timestamp(

'2020-03-30 01:00:00'

)

2、增減⼀段時間

dateoffset的可選引數包括years/months/weeks/days/hours/minutes/seconds

in [23]

: pd.timestamp(

'2020-01-01'

)+ pd.dateoffset(minutes=20)

- pd.dateoffset(weeks=2)

out[23]

: timestamp(

'2019-12-18 00:20:00'

)

3、各類常用offset物件
in [24]

: pd.timestamp(

'2020-01-01'

)+ pd.offsets.week(2)

out[24]

: timestamp(

'2020-01-15 00:00:00'

)in [25]

: pd.timestamp(

'2020-01-01'

)+ pd.offsets.bquarterbegin(1)

out[25]

: timestamp(

'2020-03-02 00:00:00'

)

4、序列的offset操作

in [26]

: pd.series(pd.offsets.byearbegin(3)

.(i)

for i in pd.date_range(

'20200101'

,periods=

3,freq =

'y')

)out[26]

:02023-01

-0212024-01

-0122025-01

-01

dtype: datetime64[ns]

#定製offset可指定weekmask和holidays引數

in [28]

: pd.series(pd.offsets.cday(

3,weekmask=

'wed fri'

,holidays=

'2020010').

(i)for i in pd.date_range(

'20200105'

,periods=

3,freq=

'd')

) out[28]

:02020-01

-1512020-01

-1522020-01

-15

dtype: datetime64[ns]

時序資料簡介

生活中,我們經常會接觸到需要對某些指標或者狀態按時間序列進行統計和分析的場景,典型的如 走勢 氣象變化 記憶體監控等。這些依賴於時間而變化,可以用數值來反映其變化程度的資料就叫時序資料。時序資料具有兩個關鍵的指標 監測時間和監測數值。時序資料按照其資料組織形式可以分為單值模型和多值模型兩種。單值模型...

時序資料庫

看到這類資料處理基本是要對乙個時間範圍的資料,根據時間段,維度進行歸類,做一些聚合運算。時序資料庫要解決的問題就是如何能在海量資料中,快速響應使用者的此類查詢。序資料庫的一些基本概念 不同的時序資料庫稱呼略有不同 metric 度量,相當於關係型資料庫中的table。data point 資料點,相...

arima處理時序資料

一 arima原理 1.1自回歸模型ar 自回歸模型描述當前值與歷史值之間的關係,用變數自身的歷史事件資料對自身進行 自回歸模型必須滿足平穩性的要求。1 自回歸模型首先需要確定乙個階數p,表示用幾期歷史值來 當前值。p階自回歸模型的公式定義為 a 用自身資料進行 b 時序資料必須具有平穩性,均值為0...