【问题标题】:python pandas ipython matplotlib financial timeseriepython pandas ipython matplotlib 金融时报
【发布时间】:2016-12-06 00:57:41
【问题描述】:

我有一个数据框,例如关注

                       open     high      low    close  volume
timestamp                                                      
2000-02-01 00:30:00  1401.00  1401.50  1400.50  1401.25       8
2000-02-01 01:00:00  1401.50  1401.50  1400.25  1400.25      10
2000-02-01 01:30:00  1400.25  1401.00  1399.50  1400.75      18
2000-02-01 02:00:00  1400.50  1401.00  1399.75  1400.00      15
2000-02-01 02:30:00  1399.75  1399.75  1399.25  1399.25       6
2000-02-01 03:00:00  1400.00  1400.00  1399.50  1399.50       6
2000-02-01 03:30:00  1399.25  1399.25  1398.25  1398.25      10
2000-02-01 04:00:00  1398.50  1399.00  1398.25  1398.75       7
2000-02-01 04:30:00  1399.00  1400.25  1399.00  1400.00      13
2000-02-01 05:00:00  1399.75  1400.50  1399.25  1400.25      26
2000-02-01 05:30:00  1400.00  1400.75  1399.50  1400.50      24
2000-02-01 06:00:00  1400.00  1400.00  1399.00  1399.25      23
2000-02-01 06:30:00  1399.50  1404.00  1399.50  1403.50      96
2000-02-01 07:00:00  1403.50  1405.00  1402.50  1402.50     108
2000-02-01 07:30:00  1402.50  1404.50  1400.50  1401.00     162
2000-02-01 08:00:00  1400.75  1402.50  1399.50  1401.25     166
2000-02-01 08:30:00  1401.25  1403.75  1397.25  1398.25    2009
2000-02-01 09:00:00  1398.50  1403.75  1391.25  1395.50    2497
2000-02-01 09:30:00  1395.50  1404.25  1394.75  1400.75    2071
2000-02-01 10:00:00  1400.75  1404.50  1399.75  1403.00    1528
2000-02-01 10:30:00  1403.00  1405.25  1399.25  1399.50    1253
2000-02-01 11:00:00  1399.25  1407.75  1398.25  1407.25    1226
2000-02-01 11:30:00  1407.00  1409.00  1406.00  1408.75    1079
2000-02-01 12:00:00  1408.75  1411.50  1408.00  1409.50    1091
2000-02-01 12:30:00  1409.75  1410.00  1405.00  1406.25    1129
2000-02-01 13:00:00  1406.25  1412.50  1405.50  1409.50    1361

我想用函数 matplotlib.finance 将它打印在 ipython 笔记本中。

我已经尝试了以下

import matplotlib.finance as mpf
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8,5))
mpf.candlestick_ohlc(ax, data)

data 是我的数据框。这是 python for Finance 一书中给出的示例,但是在这种情况下,数据是直接从 yahoo 网站检索的。我还没有找到重新利用该示例的方法 - 我对 python 很陌生,我真的不知道从什么开始尝试。感谢所有帮助。谢谢!

【问题讨论】:

  • 具体是什么问题?
  • 我只需要一个简单的语法示例,它可以让一个已经格式化为 ohlc 的 pandas 数据框绘制为烛台图......我很迷茫,我可以告诉它需要几个小时(如果不是几天,考虑到我在正常工作之外只有几个小时可以做这件事)通过浏览网页来弄清楚,所以如果有人已经有这方面的知识可以分享,那将对我有很大帮助。

标签: python pandas matplotlib ipython


【解决方案1】:

matplotlib.finance 已经有一个雅虎阅读器,它将以适当的格式返回数据:

%matplotlib inline
import matplotlib.pyplot as plt
from matplotlib.finance import quotes_historical_yahoo_ohlc, candlestick_ohlc

fig, ax = plt.subplots()
quotes = quotes_historical_yahoo_ohlc('GOOG', (2016, 11, 1), (2016, 11, 30))
candlestick_ohlc(ax, quotes, width=0.5)
plt.show()

您将需要实际更新轴以显示带有日期的标签。

pandas 数据帧转换。 dataframepandas.datareader 的默认值之间的唯一区别是索引的标签(timestampDate),因此只需在下面的示例中重命名即可。您将需要 reset_index 并将您的列重新排序 (reindex) 为 OCHL 格式:

import pandas_datareader.data as web

data = web.get_data_yahoo('AMZN', '11/1/2016', '12/1/2016')
quotes = data.reset_index().reindex_axis(['Date','Open','Close','High','Low'], axis=1)
quotes['Date'] = quotes['Date'].astype(int)
fig, ax = plt.subplots()
candlestick_ohlc(ax, quotes.values, width=0.5)
plt.show()

但是需要固定x轴。

【讨论】:

  • 是的,我知道那个例子。我不想从 yahoo 检索数据 - 我想绘制一个 pandas 数据框,例如我上面显示的那个(为了描述的完整性,我已将其保存为 .h5),而且我不知道如何重新利用该 sn-p您正在为我的具体情况提供服务。
猜你喜欢
  • 2018-04-19
  • 1970-01-01
  • 2019-05-30
  • 2011-01-16
  • 2010-11-19
  • 2021-11-17
  • 2019-08-30
  • 1970-01-01
  • 2014-09-06
相关资源
最近更新 更多