7、时间序列绘图
pandas时间序列的绘图功能在日期格式化方面比matplotlib原生的要好。
#-*- coding:utf-8 -*- import numpy as np import pandas as pd import matplotlib.pyplot as plt import datetime as dt from pandas import Series,DataFrame from datetime import datetime from dateutil.parser import parse import time from pandas.tseries.offsets import Hour,Minute,Day,MonthEnd import pytz #下面两个参数,一个是解析日期形式,一个是将第一列作为行名 close_px_all = pd.read_csv(‘E:\\stock_px.csv‘,parse_dates = True,index_col = 0) print close_px_all.head(),‘\n‘ close_px = close_px_all[[‘AAPL‘,‘MSFT‘,‘XOM‘]] close_px = close_px.resample(‘B‘,fill_method = ‘ffill‘) print close_px.head() #注意下面的索引方式即可 close_px[‘AAPL‘].plot() close_px.ix[‘2009‘].plot() close_px[‘AAPL‘].ix[‘01-2011‘:‘03-2011‘].plot() #季度型频率的数据会用季度标记进行格式化,这种事情手工的话会很费力……(真是有道理……) appl_q = close_px[‘AAPL‘].resample(‘Q-DEC‘,fill_method = ‘ffill‘) appl_q.ix[‘2009‘:].plot() #作者说交互方式右键按住日期会动态展开或收缩,实际自己做,没效果…… plt.show() >>> AA AAPL GE IBM JNJ MSFT PEP SPX XOM 1990-02-01 4.98 7.86 2.87 16.79 4.27 0.51 6.04 328.79 6.12 1990-02-02 5.04 8.00 2.87 16.89 4.37 0.51 6.09 330.92 6.24 1990-02-05 5.07 8.18 2.87 17.32 4.34 0.51 6.05 331.85 6.25 1990-02-06 5.01 8.12 2.88 17.56 4.32 0.51 6.15 329.66 6.23 1990-02-07 5.04 7.77 2.91 17.93 4.38 0.51 6.17 333.75 6.33 AAPL MSFT XOM 1990-02-01 7.86 0.51 6.12 1990-02-02 8.00 0.51 6.24 1990-02-05 8.18 0.51 6.25 1990-02-06 8.12 0.51 6.23 1990-02-07 7.77 0.51 6.33 [Finished in 37.5s]
下面是作出的几张图:
8、移动窗口函数
在移动窗口(可以带有指数衰减权数)上计算的各种统计函数也是一类常见于时间序列的数组变换。作者将其称为移动窗口函数(moving window function),其中还包括那些窗口不定长的函数(如指数加权移动平均)。跟其他统计函数一样,移动窗口函数也会自动排除缺失值。
时间: 2024-10-11 05:05:58