Python时间序列图的绘制方法及过程是什么
Admin 2022-09-30 群英技术资讯 336 次浏览
Quandl简介
Quandl是一个为金融、经济和另类数据服务的平台,这些数据由各种数据发布商提供,包括联合国、世界银行、中央银行、贸易交易所和投资研究公司。
使用Python的Quandl模块,你可以轻松地将金融数据导入Python中。Quandl提供免费的数据集,其中包括一些数据样本,但如果你需要访问一些优质的数据产品,就必须要先付费。
将数据从Quandl导入到Python中的过程非常简单,假如我们对泛欧交易所的荷兰银行集团感兴趣,只需要在Jupyter Notebook单元格中输入以下代码(这个数据集在Quandl上的代码为EURONEXT/ABN):
In[]: import quandl #Replace with your own Quandl API key QUANDL_API_KEY="BCzkk3NDWt7H9yjzx-DY' quandl.ApiConfig.api_key=QUANDL_API_KEY df =quandl.get('EURONEXT/ABN')
将Quandl的API密钥存储在常量变量中是一个很好的习惯,如果API密钥发生改变,只需要在这一个地方修改它!
导入quandl包后,我们将Quandl的 API密钥存储在常量变量QUANDL_API_KEY中。这个常量值用于设置Quandl模块的API密钥,并且只需要对quandl包的每个导入执行一次。最后一行调用quandl.get()指令,将ABN数据集从Quandl直接下载到df变量中。(注意:EURONEXT是数据提供者Euronext Stock Exchange的缩写。)
默认情况下,Quandl会将数据集导入到pandas模块的DataFrame中。我们可以用如下代码来检查DataFrame的头和尾:
In[]:
df:head()
out[]:
OPen High Low Last Volume Turnower
Date
2015-11-20 18.18 18.43 18.000 18.35 38392898.0 7.003281e+08
2015-11-23 18.45 18.70 18.215 18.61 3352514.0 6.186446e+07
2015-11-24 18.70 18.80 18.370 18.80 4871901.0 8.994087e+07
2015-11-25 18.85 19.50 18.770 19.45 4802607.0 9.153862e+07
2015-11-26 19.48 19.67 19.410 19.43 1648481.0 3.220713e+07
In[]:
df:tail()
Out []:
OPen High Low Last Volume Turnower
Date
2018-08-06 23.50 23.53 23.23 23.34 1126371.0 2.634333e+07
2018-08-07 23.59 23.60 23.31 23.33 1785613.0 4.177652e+07
2018-08-08 24.00 24.39 23.83 24.14 4165320.0 1.007085e+08
2018-08-09 24.40 24.46 24.15 24.37 2422470.0 5.895752e107
2018-08-10 23.70 23.94 23.28 23.51 3951850.0 9.336493e+07
默认情况下,head()和tail()命令分别显示的是DataFrame的前5行和最后5行,你可以把它传递的参数设置成一个具体的数字来定义要显示的行数。例如,head(100)将显示DataFrame中的前100行。
如果你没有为get()命令设置任何附加参数,那么它将会检索整个时间序列数据集,即从你进行操作时的前一个工作日一直到2015年11月。
要可视化这个DataFrame,我们可以通过plot()命令绘制一个图
In[]: %matplotlib inline import matplotlib.pyplot as plt df.plot();
运行结果如下图所示。
pandas的plot()命令将返回一个Axis对象,此对象的字符串表示将与plot()命令一起显示在界面上。为了消除这个信息,我们在最后一条语句的末尾添加一个分号“;”。或者,我们也可以在单元格底部添加一条pass语句。除此之外,我们还可以将绘图函数分配给一个变量,这样也能消除这个输出。
默认情况下,pandas的plot()命令用matplotlib库来显示图像,如果系统报错的话,请检查你是否安装了这个库,并且%matplotlib inline命令至少被调用过一次。你可以自定义图表的外观,有关DataFrame中plot命令的更多信息,可在以下网页上找到:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.html
当没有参数提供给plot()命令时,它会用DataFrame的所有列在同一图表上绘制折线图,我们无法从这个杂乱无章的图像中得到什么有用的信息。为了有效地从这些数据中提取信息,我们可以绘制一只股票的收盘价与成交量的关系图。
在单元格中输入以下命令:
In[]: princes=df[‘Last'] volumes=df[‘Volume']
上述命令会将我们感兴趣的数据分别存储到closing_prices和volumes这两个变量中,我们可以继续使用head()和tail()命令查看由此产生的pandas数据类型的头部和底部:
In[]: Prices .head() out[]: Date ... 2015-11-20 18.35 2015-11-23 18.61 2015-11-24 18.80 2015-11-25 19.45 2015-11-26 19.43 Name: Last,dtype:float64 In[]: volumes.tail() out[]: Date 2018-08-031252024.0 2018-08-061126371.0 2018-08-071785613.0 2018-08-084165320.0 2018-08-09。2422470.0 Name:Volume,dtype:float64
如果你想知道某个特定变量的类型,可以使用type()命令。比如,type(volumes)命令的运行结果是 pandas.core.series.Series,这样我们就知道volumes是属于pandas序列数据类型的。
从2018年一直追溯到2015年都有数据可查,这样就可以绘制收盘价与成交量的关系图:
In[]: #The top Plot consisting of daily closing Prices top=plt.subplot2grid((4,4),(0,0),rowspan=3,colspan=4) top .plot(Prices.index,Prices,1abel='Last') Plt.title('ABN Last Price from 2015 - 2018') plt.legend(loc=2) #The bottom Plot consisting of daily trading volume bottom=plt.subplot2grid((4,4),(3,0),rowspan=1,colspan=4) bottom.bar(volumes.index,volumes) plt.title('ABN Daily Trading Volume') Plt.gcf () .set_size_inches(12,8) plt.subplots_adjust(hspace=0.75)
运行结果如下图所示。
在第一行中,subplot2grid命令的第一个参数(4,4)将整个图划分为一个4x4的网格,第二个参数(0,0)表明绘图将锚定在图形的左上角。rowspan=3指示绘图将占据网格上4个可用行中的3行,即实际高度为图形的75%;colspan=4指示绘图将占用网格的所有4列,即使用其所有可用宽度。这个命令会返回一个matplotlib axis对象,我们将使用该对象绘制图形的上部。
在第二行中,使用plot()命令绘制上图表,x轴为日期值,y轴上的数值为收盘价格。在接下来的两行中,我们指定了当前图像的标题以及放置在左上角的时间序列数据的图例。
接下来,我们重复上述操作,在下部呈现每日交易量,这个图表锚定在下方1行4列的网格空间中。
为了让图像更清楚,我们调用set_size_inches()命令将图形设置为9英寸宽6英寸高,从而形成了一个矩形图形(前面的gcf()命令表示获取当前的尺寸)。最后,我们调用带有hspace参数的subplots_adjust()命令,在上部和下部的两个子图之间添加少量的空缺。
subplots_adjust()命令用来对各个子图的布局进行优化,它可以接受的参数有:left、right、bottom、top、wspace、hspace。
烛台图是另一种流行的财务图表,它显示的信息比单一的价格图更多。烛台是每一个特定时间点的波动,其中包含四种重要的信息:开盘价、最高价、最低价和收盘价。
我们现在不再推荐使用以前的matplotlib.finance模块,用另一个由提取的代码组成的mpl_finance包来取代它,你可以在命令行窗口输入以下代码来获取这个包:
$pip install mpl-finance
为了更加方便地可视化烛台图,我们将使用ABN数据集的一个子集。在下面的例子中,我们在Quandl上检索2018年7月份的每日价格作为数据集,并绘制如下的烛台图:
In[]: %matplotlib inline import quandl from mpl_finance import candlestick_ohlc import matplotlib.dates as mdates import matplotlib.pyplot as plt quandl.ApiConfig.api kcy-QUANDL API KEY df_subset-quandl.get('EURONEXT/ABN', start_date='2018-07-01", ena_date='2018-07-31') df_subset['Date'"]=df_subset.indqex.map(mdates.dqate2num) df_ohlc=df_subset[['Date','Open','High','Low','Last']] figure,ax=plt.sSubPlots(figsize= =(8,4)) formatter=mdates.DateFormatter('%Y-%m-%d') ax.xaxis.set_major_formatter(formatter) candlestick_ohlc(ax df_ohlc.values, width=0.8, colorup='green', colordown='red') plt.show()
烛台图如下图所示。
你可以在quandl.get()命令中定义start_date和end_date的值,从而指定数据集的时间范围。
从Quandl检索的价格会放在一个名为df_dataset的变量中,由于matplotlib的绘图函数需要自己的格式,我们用mdates.date2num命令转换包含日期和时间在内的索引值,并将它们放在名为Date的新列中。
烛台的日期、开盘价、最高价、最低价和收盘价等数据将被提取为一个DataFrame列存储在df_ohlc变量中。plt.subplots()函数会创建一个8英寸宽和4英寸高的图形,其中沿着x轴的标签将被转换为我们可读的格式。
调用candlestick_ohlc()命令来进行烛台图的绘制(烛台宽度为0.8或全天宽度的80%),收盘价高于开盘价的上涨用浅灰色表示,而收盘价低于开盘价的下跌则用深灰色表示。最后,用plt.show()命令来显示烛台图。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
还记得小编上学的时候,为了可以在上课的时候可以玩手机,躲避老师的视线,会在上课之前用书本在后排占位。在这时,书本什么都不干,只是占个座,当我到教室时,我就可以替换上去了。这个作用和python中的pass很像。当你不知道此处写什么代码,可以把pass码上,这时pass不会影响这串代码,只是占个位置。当想到合适的代码,替换过来就可以了。本文小编就带大家认识一下这个”无私奉献“的pass语句。
这篇文章主要介绍了pygame实现井字棋之第一步绘制九宫格,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
这篇文章我们来了解一下Python numpy中setdiff1d函数的相关内容,下文介绍了setdiff1d函数的功能、语法、以及使用示例。有需要的朋友可以参考了解看看,接下来就跟随小编一起学习一下吧!
这篇文章主要介绍了Python利用matplotlib画出漂亮的分析图表,文章首先引入数据集展开详情,需要的朋友可以参考一下
有时通过selenium打开网站时,发现有些网站需要扫码登录,就很头疼,导致爬虫进展不下去,下面这篇文章主要给大家介绍了关于使用Selenium控制当前已经打开的chrome浏览器窗口的相关资料,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008