博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python股票分析系列——基础股票数据操作(二).p4
阅读量:5021 次
发布时间:2019-06-12

本文共 3267 字,大约阅读时间需要 10 分钟。

该系列视频已经搬运至bilibili: 

 

欢迎来到Python for Finance教程系列的第4部分。在本教程中,我们将基于Adj Close列创建烛台/ OHLC图,这将允许我介绍重新采样和其他一些数据可视化概念。

名为烛台图的OHLC图表是一种将开盘价Open,最高价High,最低价Low和收盘价Close数据全部集中在一个很好的格式中的图表。另外,它使得漂亮的颜色,并记住我告诉你关于美观的图表?

在之前的教程中已经涉及到了这一点:

 

import datetime as dtimport matplotlib.pyplot as pltfrom matplotlib import styleimport pandas as pdimport pandas_datareader.data as webstyle.use('ggplot')df = pd.read_csv('tsla.csv', parse_dates=True, index_col=0)

不幸的是,即使创建OHLC数据,直接从Pandas制作烛台图也不是内置的。未来我确信这个图表类型将会被提供,但现在不是。没关系,we can make it!首先,我们需要import两个新的库:

 

from matplotlib.finance import candlestick_ohlcimport matplotlib.dates as mdates

第一个导入是来自matplotlib的OHLC图形类型,第二个导入是特殊的mdates类型,它大多只是一个屁股疼痛,但这是matplotlib图形的日期类型。pandas会自动为你处理,但就像我说的那样,我们没有烛台的奢侈品。

首先,我们需要适当的OHLC数据。我们目前的数据确实有OHLC的价值,除非我错了,特斯拉从来没有分裂过,但是你永远不会这么幸运。因此,我们将创建我们自己的OHLC数据,这也将允许我们展示另一个来自Pandas的数据转换:

 

df_ohlc = df['Adj Close'].resample('10D').ohlc()

我们在这里所做的是创建一个基于df ['Adj Close']列的新数据框,重新封装10天的窗口,并且重采样是一个ohlc(开高低关闭)。我们也可以用.mean()或.sum()做10天的平均值或10天的总和。请记住,这10天的平均值是10天的平均值,而不是平均值。由于我们的数据是每日数据,因此将其重新采样为10天的数据会显着缩小数据的大小。这是你可以如何规范化多个数据集。有时,您可能会在每个月的一个月中记录一次每月记录的数据,每个月末记录的其他数据,以及最终每周记录一些数据。您可以每个月对该数据帧重新采样到月末,并有效地将其标准化!如果你喜欢的话,这是更高级的熊猫功能,你可以从熊猫系列中了解更多。

我们想要绘制烛台数据以及体积数据。我们不必重新采样数据,但我们应该,因为它与我们的10D定价数据相比太细致。

 

df_volume = df['Volume'].resample('10D').sum()

我们在这里使用金额,因为我们确实想知道在这10天内交易的总量,但您也可以使用平均值。现在如果我们这样做:

 

print(df_ohlc.head())

我们得到:

 

open       high        low      closeDate                                                  2010-06-29  23.889999  23.889999  15.800000  17.4599992010-07-09  17.400000  20.639999  17.049999  20.6399992010-07-19  21.910000  21.910000  20.219999  20.7199992010-07-29  20.350000  21.950001  19.590000  19.5900002010-08-08  19.600000  19.600000  17.600000  19.150000

这是预期的,但是,我们现在要将这些信息移动到matplotlib中,并将日期转换为mdates版本。由于我们只是要在Matplotlib中绘制列,所以我们实际上不希望日期成为索引,所以我们可以这样做:

 

df_ohlc = df_ohlc.reset_index()

现在的日期只是一个普通的专栏。接下来,我们要转换它:

 

df_ohlc ['Date'] = df_ohlc ['Date']。map(mdates.date2num)

现在我们要设置这个数字:

 

fig = plt.figure()ax1 = plt.subplot2grid((6,1),(0,0),rowspan = 5,colspan = 1)ax2 = plt.subplot2grid((6,1),(5,0),rowspan = 1,colspan = 1,sharex = ax1)ax1.xaxis_date()

除了ax1.xaxis_date()之外,您已经看到过的所有内容。这对我们来说就是将轴从原始的生成号码转换为日期。

现在我们可以绘制烛台图:

 

candlestick_ohlc(ax1,df_ohlc.values,width = 2,colorup ='g')

然后做量:

 

ax2.fill_between(df_volume.index.map(mdates.date2num),df_volume.values,0)

fill_between函数将绘制x,y,然后填充/之间的内容。在我们的例子中,我们选择0。

 

plt.show()

 

完整代码:

 

import datetime as dtimport matplotlib.pyplot as pltfrom matplotlib import stylefrom matplotlib.finance import candlestick_ohlcimport matplotlib.dates as mdatesimport pandas as pdimport pandas_datareader.data as webstyle.use('ggplot')df = pd.read_csv('tsla.csv', parse_dates=True, index_col=0)df_ohlc = df['Adj Close'].resample('10D').ohlc()df_volume = df['Volume'].resample('10D').sum()df_ohlc.reset_index(inplace=True)df_ohlc['Date'] = df_ohlc['Date'].map(mdates.date2num)ax1 = plt.subplot2grid((6,1), (0,0), rowspan=5, colspan=1)ax2 = plt.subplot2grid((6,1), (5,0), rowspan=1, colspan=1, sharex=ax1)ax1.xaxis_date()candlestick_ohlc(ax1, df_ohlc.values, width=5, colorup='g')ax2.fill_between(df_volume.index.map(mdates.date2num), df_volume.values, 0)plt.show()

 

在接下来的几个教程中,我们将留下可视化位,稍微讨论一下获取数据和处理数据。

 

下一篇教程:

转载于:https://www.cnblogs.com/Blaxon/p/8567772.html

你可能感兴趣的文章
玩转storm
查看>>
浅谈 @RequestParam 和@PathVariable
查看>>
bzoj 4180: 字符串计数
查看>>
Java重写《C经典100题》 --27
查看>>
PHP 的 HMAC_SHA1算法 实现
查看>>
Android: NDK编程入门笔记
查看>>
深刻理解Linux进程间通信(IPC)
查看>>
windows 7中添加新硬件的两种方法(本地回环网卡)
查看>>
javascript 高级程序设计学习笔记(面向对象的程序设计) 2
查看>>
支配集,点覆盖集,点独立集之间的联系
查看>>
SetCapture ReleaseCapture
查看>>
DataGridView ——管理员对用户的那点操作
查看>>
POJ - 1185 炮兵阵地 (状态压缩)
查看>>
ios7 JavaScriptCore.framework
查看>>
算法6-5:哈希表应用之集合
查看>>
压力单位MPa、Psi和bar之间换算公式
查看>>
Moscow Pre-Finals Workshop 2016. National Taiwan U Selection
查看>>
程序员面试、算法研究、编程艺术、红黑树4大系列集锦与总结 .
查看>>
idea tomcat 配置
查看>>
冲刺第二天
查看>>