无法在图上注释 - KeyError
Not able to annotate on plot - KeyError
我有以下代码:
import pandas as pd
import datetime as date
from pandas_datareader import data as web
import calendar
from dateutil.relativedelta import *
from pandas.tseries.offsets import *
start = date.datetime(2014,1,1)
end = date.datetime.today()
stock = '^NSEI'
data = web.DataReader(stock, 'yahoo', start, end)
fig , ax = plt.subplots(figsize=(12, 4), dpi =500)
data.plot(y='Close', ax = ax)
这里我省略了一段代码但是结果是:
exceptthursday
Out[4]:
Day
Date
2011-01-26 Wednesday
2011-03-02 Wednesday
2011-04-12 Tuesday
2011-04-22 Friday
2011-08-15 Monday
...
2020-05-25 Monday
2020-10-02 Friday
2020-11-16 Monday
2020-11-30 Monday
2020-12-25 Friday
[114 rows x 1 columns]
那么我们有如下代码:
for anotate in (exceptthursday.index + BDay()):
ax.annotate('holliday', xy=(anotate, data['Close'].loc[anotate]), xycoords='data',
xytext=(-30, 40), textcoords='offset points',
size=13, ha='center', va="baseline",
bbox=dict(boxstyle="round", alpha=0.1),
arrowprops=dict(arrowstyle="wedge,tail_width=0.5", alpha=0.1));
当我 运行 此代码时,出现以下错误:
KeyError: Timestamp('2011-01-27 00:00:00')
我不确定为什么会收到此错误,因为 start
是在 2014 年,为什么错误是在 2011 年?
您正在传递 exceptthursday'
s 索引进行迭代。其中包含时间戳开始
来自 2011-01-26。
错误必须进来
data['Close'].loc[anotate]
。
如果我没记错的话。因为数据的开始是 date.datetime(2014,1,1)
没有 2011 的时间戳
很高兴help.Happy编码!:)
我有以下代码:
import pandas as pd
import datetime as date
from pandas_datareader import data as web
import calendar
from dateutil.relativedelta import *
from pandas.tseries.offsets import *
start = date.datetime(2014,1,1)
end = date.datetime.today()
stock = '^NSEI'
data = web.DataReader(stock, 'yahoo', start, end)
fig , ax = plt.subplots(figsize=(12, 4), dpi =500)
data.plot(y='Close', ax = ax)
这里我省略了一段代码但是结果是:
exceptthursday
Out[4]:
Day
Date
2011-01-26 Wednesday
2011-03-02 Wednesday
2011-04-12 Tuesday
2011-04-22 Friday
2011-08-15 Monday
...
2020-05-25 Monday
2020-10-02 Friday
2020-11-16 Monday
2020-11-30 Monday
2020-12-25 Friday
[114 rows x 1 columns]
那么我们有如下代码:
for anotate in (exceptthursday.index + BDay()):
ax.annotate('holliday', xy=(anotate, data['Close'].loc[anotate]), xycoords='data',
xytext=(-30, 40), textcoords='offset points',
size=13, ha='center', va="baseline",
bbox=dict(boxstyle="round", alpha=0.1),
arrowprops=dict(arrowstyle="wedge,tail_width=0.5", alpha=0.1));
当我 运行 此代码时,出现以下错误:
KeyError: Timestamp('2011-01-27 00:00:00')
我不确定为什么会收到此错误,因为 start
是在 2014 年,为什么错误是在 2011 年?
您正在传递 exceptthursday'
s 索引进行迭代。其中包含时间戳开始
来自 2011-01-26。
错误必须进来
data['Close'].loc[anotate]
。
如果我没记错的话。因为数据的开始是 date.datetime(2014,1,1)
没有 2011 的时间戳
很高兴help.Happy编码!:)