第十章 時(shí)間序列
日期和時(shí)間數(shù)據(jù)類型及工具
- datetime 以毫秒形式存儲(chǔ)日期和時(shí)間
字符串和datetime的互相轉(zhuǎn)換
- str:將datetime對象和pandas的Timestamp對象轉(zhuǎn)換為字符串
- strptime:將字符串轉(zhuǎn)化為日期
日期的范圍近尚、頻率以及移動(dòng)
生成日期范圍
- date_range
index = pd.date_range('4/1/2012','6/1/2012')
# 默認(rèn)按天計(jì)算
pd.date_range(start='4/1/2012', periods=20)
pd.date_range(end='6/1/2012', periods=20)
#傳入頻率袒哥,得到符合要求的日期
pd.date_range('1/1/2000', '12/1/2000', freq='BM') #'BM'表示bussiness end of month螟左,即每月最后一個(gè)工作日
頻率和日期偏移量
pandas中頻率由一個(gè)基礎(chǔ)頻率和一個(gè)乘數(shù)組成嗽交。
hour = pd.Hour()
four_hour = Hour(4)
minutes_150 = Hour(2) + Minute(30)
#也可傳入頻率字符串
pd.date_range('1/1/2000', periods=10, freq='1h30min')
- WOM是一個(gè)非常實(shí)用的頻率類
# 獲得“每月第三個(gè)星期五”
pd.date_range('1/1/2000', periods=10, freq='WOM-3FRI')
移動(dòng)(超前和滯后)數(shù)據(jù)
移動(dòng):沿著時(shí)間軸將數(shù)據(jù)前移或者后移
- shift
通常計(jì)算一個(gè)時(shí)間序列或多個(gè)時(shí)間序列中的百分比變化
由于單純的移位操作不會(huì)修改索引茄茁,因此部分?jǐn)?shù)據(jù)會(huì)被丟棄蚊荣。如果頻率一致炼邀,則可以將其傳給shift以便實(shí)現(xiàn)對時(shí)間戳進(jìn)行移位而不是對數(shù)據(jù)進(jìn)行簡單移位。
重采樣及頻率轉(zhuǎn)換
- resampling
將時(shí)間序列從一個(gè)頻率轉(zhuǎn)換到另一個(gè)頻率的過程
rng = pd.date_range('1/1/2000', periods=100, freq='D')
ts = pd.Series(np.random.randn(len(rng)), index=rng)
ts.resample('M').mean()
# OHLC重采樣
ts.resample('M').ohlc()