python pandas ipython matplotlib金融时计

时间:2016-12-06 00:57:41

标签: python pandas matplotlib ipython

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

                       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中给出的示例,但在这种情况下,数据直接从雅虎网站中检索。我还没有找到一种方法来重新利用这个例子 - 我对python很新,我真的不知道该怎么开始尝试。所有帮助表示赞赏。 THX!

1 个答案:

答案 0 :(得分:0)

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中的默认值之间的唯一区别是索引的标签(timestamp vs Date),因此请在下面的示例中重命名。您需要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轴。