我有一个数据框,例如关注
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!
答案 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
数据框转换。 dataframe
与pandas.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轴。