python时间序列数据分析统计服_python数据分析之:时间序列二
將Timestamp轉換為Period
通過使用to_period方法,可以將由時間戳索引的Series和DataFrame對象轉換為以時期索引
rng=pd.date_range('1/1/2000',periods=3,freq='M')
ts=Series(randn(3),index=rng)
print(ts)
pts2=ts.to_period(freq='M')
print(pts2)
結果如下:ts是每個月最后一天的日期,pts2則是體現的是以月為周期的日子
2000-01-31????0.990097
2000-02-29????0.439761
2000-03-31???-3.395317
Freq:?M,?dtype:?float64
2000-01????0.990097
2000-02????0.439761
2000-03???-3.395317
Freq:?M,?dtype:?float64
如果要轉換回時間戳,則可以使用pts2.to_timestamp(how='end')的方法
2000-01-31???-0.489228
2000-02-29???-1.583283
2000-03-31???-2.414735
Freq:?M,?dtype:?float64
重采樣及頻率轉換
將高頻率數據轉換為低頻率稱為降采樣,而將低頻率數據轉換為高頻率稱為升采樣。pandas中的resample方法就可以進行這種頻率轉換
rng=pd.date_range('1/1/2000',periods=50,freq='D')
ts=Series(randn(50),index=rng)
print(ts.resample('M').mean())
運行結果如下,在這里ts是以天級的數據,但是通過resample(‘M’)轉換為月度的數據,且對屬于同一個月的數據進行求平均的計算。得到的就是每個月的平均值
2000-01-31???-0.276265
2000-02-29???-0.052926
Freq:?M,?dtype:?float64
降采樣:
在降采樣的時候,需要考慮兩樣東西:
1?各區間哪邊是閉合的
2?如何標記各個聚合面元,用區間的開頭還是末尾
來看如下代碼:
rng=pd.date_range('1/1/2000',periods=12,freq='T')
ts=Series(np.arange(12),index=rng)
print(ts)
2000-01-01?00:00:00?????0
2000-01-01?00:01:00?????1
2000-01-01?00:02:00?????2
2000-01-01?00:03:00?????3
2000-01-01?00:04:00?????4
2000-01-01?00:05:00?????5
2000-01-01?00:06:00?????6
2000-01-01?00:07:00?????7
2000-01-01?00:08:00?????8
2000-01-01?00:09:00?????9
2000-01-01?00:10:00????10
2000-01-01?00:11:00????11
print(ts.resample('5min',?closed='left').sum())
左閉合的時候統計是以00:00:00為開始的5分鐘周期
2000-01-01?00:00:00????10
2000-01-01?00:05:00????35
2000-01-01?00:10:00????21
print(ts.resample('5min',closed='right').sum())
右閉合的時候統計是以00:00:00為結束的5分鐘周期,因為時間提前到了1999-12-31?23:55:00這個時候。
1999-12-31?23:55:00?????0
2000-01-01?00:00:00????15
2000-01-01?00:05:00????40
2000-01-01?00:10:00????11
因此左閉合還是右閉合取決與時間的開始和結束
在金融領域中有一種無所不在的時間序列聚合方式,即計算各面元的4個值,第一個值open:開盤,最后一個值close:收盤,最大值high:最高,最小值low:最低
ts.resample('5min',?closed='left').ohlc()
open??high??low??close
2000-01-01?00:00:00?????0?????4????0??????4
2000-01-01?00:05:00?????5?????9????5??????9
2000-01-01?00:10:00????10????11???10?????11
總結
以上是生活随笔為你收集整理的python时间序列数据分析统计服_python数据分析之:时间序列二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis实现轮询算法_基于zookee
- 下一篇: 什么镜头最适合拍风景_35mm F1.8