在 IPython 中使用 Pandas 绘制股票图表

Posted

技术标签:

【中文标题】在 IPython 中使用 Pandas 绘制股票图表【英文标题】:Plotting a stock chart with Pandas in IPython 【发布时间】:2012-03-06 04:35:54 【问题描述】:

我刚刚开始使用 Python/Pandas,并将以下代码放在一起绘制标准普尔 500 指数。

from pandas.io.data import DataReader
# returns a DataFrame
sp500 = DataReader("^GSPC", "yahoo", start=datetime.datetime(1990, 1, 1))
sp500.plot(figsize = (12,8))

看起来这是在一张图表上绘制最高价、最低价、开盘价、收盘价、调整收盘价和成交量。有没有一种简单的方法可以在一个图表中仅绘制 adj 收盘价以及其下方的音量 like they do on Yahoo 和大多数其他金融网站?我也对绘制 OHLC 烛台图的示例感兴趣。

【问题讨论】:

DataReader 在 pandas 中不再存在。您必须安装 pandas_datareader 包才能继续使用它。 【参考方案1】:

请参阅here 了解我对类似问题的回答,了解here 了解有关 mathplotlib 财务烛台图的更多信息。

要从您的 sp500 中获取 adj 关闭,您可以使用类似 sp500["Adj Close"] 的内容,然后将其传递给相关的 matplotlib 绘图命令 plt.plot(datelist, sp500["Adj Close"] ) 其中 datelist 是您在 x 轴上的日期列表。

我相信您可以通过引用sp500.index 获取日期列表,请参阅here 了解更多信息。

至于您将其传递给 plot 命令的问题,类似于

datelist = [date2num(x) for x in sp500.index] 其中函数 date2num 来自 matplotlib.dates 包。

设置相关子图后,然后调用适当的填充命令到fill_between_alpha 线下的区域,就像你链接到的雅虎图一样。

请参阅 Fill Between and Alpha 标题下的 here 以获取另一个显示填充折线图的 sn-p,并打印正确的日期。

初始链接有一个示例 matplotlib sn-p,它还更详细地介绍了日期格式和格式。

【讨论】:

酷,感谢您提供的信息 :-) 你知道我如何从 sp500 数据框中获取日期列表吗?我还没有弄清楚。 我看到你建议我可以参考 sp500.index 来获取日期列表。我试过 plt.plot(sp500.index, sp500["adj clos"]) 但得到错误:错误:标记输入时发生意外错误以下回溯可能已损坏或无效错误消息是:('EOF in multi -line 语句', (63, 0)) 实际上,它看起来窒息的东西是 sp500["adj clos"] 好的,想通了。大写已关闭。 sp500["Adj Close"] 有效【参考方案2】:

这将为您提供仅 Adj Close 列与 DataFrame 的索引(日期)的图。

from pandas.io.data import DataReader
sp500 = DataReader("^GSPC", "yahoo", start=datetime.datetime(1990, 1, 1)) 
close = sp500['Adj Close']
close.plot()
plt.show()

同样,您可以用同样的方式绘制体积:

vol = sp500['Volume']
vol.plot()
plt.show()

【讨论】:

以上是关于在 IPython 中使用 Pandas 绘制股票图表的主要内容,如果未能解决你的问题,请参考以下文章

iPython/Jupyter Notebook 和 Pandas,如何在 for 循环中绘制多个图?

使用 Python Pandas 在同一张图表上绘制股票和成交量图表

使用 datareader 中的股票数据时,Pandas 错误“没有要绘制的数字数据”

ipython plotly:无法将x轴绘制为日期时间

用matplotlib和pandas绘制股票MACD指标图,并验证化交易策略

机器学习Pandas库练习-获取yahoo金融苹果公司的股票数据