任务描述
根据相关知识完成下列任务:
- 求上个季度(仅含工作日)的平均值;
- 求每个月末(仅含工作日)的收盘价;
- 迁移数据365天;
- 求一年期移动标准差。
相关知识
学习本关卡知识之前,建议先了解matplotlib模块基础知识。
Pandas
时间序列工具的基础是时间频率或偏移量代码。就像之前见过的D(day)
和H(hour)
代码,我们可以用这些代码设置任意需要的时间间隔。
Pandas
频率代码表如下:
代码 描述 D 天(calendar day,按日历算,含双休日) W 周(weekly) M 月末(month end) Q 季末(quarter end) A 年末(year end) H 小时(hours) T 分钟(minutes) S 秒(seconds) L 毫秒(milliseonds) U 微秒(microseconds) N 纳秒(nanoseconds) B 天(business day,仅含工作日) BM 月末(business month end,仅含工作日) BQ 季末(business quarter end,仅含工作日) BA 年末(business year end,仅含工作日) BH 小时(business hours,工作时间) MS 月初(month start) BMS 月初(business month start,仅含工作日) QS 季初(quarter start) BQS 季初(business quarter start,仅含工作日) AS 年初(year start) BAS 年初(business year start,仅含工作日) 时间频率与偏移量
我们可以在频率代码后面加三位月份缩写字母来改变季、年频率的开始时间,也可以再后面加三位星期缩写字母来改变一周的开始时间:
Q-JAN
、BQ-FEB
、QS-MAR
、BQS-APR
等;W-SUN
、W-MON
、W-TUE
、W-WED
等。
时间频率组合使用:In[0]:pd.timedelta_range(0,periods=9,freq="2H30T") Out[0]:TimedeltaIndex(['00:00:00', '02:30:00', '05:00:00', '07:30:00', '10:00:00', '12:30:00', '15:00:00', '17:30:00', '20:00:00'], dtype='timedelta64[ns]', freq='150T')
所有这些频率代码都对应
Pandas
时间序列的偏移量,具体内容可以在pd.tseries.offsets
模块中找到,比如直接创建一个工作日偏移序列:In[1]:from pandas.tseries.offsets import BDay pd.date_range('2015-07-01', periods=5, freq=BDay()) Out[1]:DatetimeIndex(['2015-07-01', '2015-07-02', '2015-07-03', '2015-07-06', '2015-07-07'], dtype='datetime64[ns]', freq='B')
重新取样、迁移和窗口
重新取样
处理时间序列数据时,经常需要按照新的频率(更高频率、更低频率)对数据进行重新取样。举个例子,首先通过
pandas—datareader
程序包(需要手动安装)导入In[2]: from pandas_datareader import data goog = data.DataReader('GOOG',start="2014",end="2016",data_source="google")['Close'] # Close表示收盘价的列 In[3]:
EduCoder Pandas高效化运算与时间序列处理 第3关:Pandas时间序列的高级应用
最新推荐文章于 2024-06-14 20:29:58 发布