在 运行 python 代码 GOOGLE COLAB 中,它向我显示错误。谁能告诉我我做错了什么并分享更正的代码?
On running this python code in GOOGLE COLAB, it showing me error. Can anyone please tell what am i doing wrong and share a corrected code?
import pandas_datareader.data as web
import numpy as np
import pandas as pd
stock = ['AAPL']
data = web.DataReader(stock,data_source="yahoo",start='01/01/2010')['Adj Close']
data.sort_index(inplace=True)
returns = data.pct_change()
mean_return = returns.mean()
return_stdev = returns.std()
annualised_return = round(mean_return * 252,2)
annualised_stdev = round(return_stdev * np.sqrt(252),2)
print ('The annualised mean return of stock {} is {}, '
'and the annualised volatility is {}').format(stock[0],annualised_return,annualised_stdev)
这是更正后的代码:
import pandas_datareader.data as web
import numpy as np
import pandas as pd
stock = ['AAPL']
data = web.DataReader(stock,data_source="yahoo",start='01/01/2010')['Adj Close']
data.sort_index(inplace=True)
returns = data.pct_change()
mean_return = returns.mean()
return_stdev = returns.std()
annualised_return = round(mean_return * 252,2)
annualised_stdev = round(return_stdev * np.sqrt(252),2)
print(f"The annualised mean return of stock {stock[0]} is {annualised_return}, and the annualised volatility is {annualised_stdev}")
所以错误来了,因为你没有使用 f 字符串。 f 字符串将数据放在括号之间{}
您通过将 print
函数的输出放在右括号之后来调用 format
。 print
没有 return 任何东西,所以你实际上是在调用 None.format(...)
(它不存在)。您应该直接在字符串上调用格式:
print('The annualised mean return of stock {} is {}, and the annualised volatility is {}'.format(stock[0],annualised_return,annualised_stdev))
pandas_datareader 0.10.0 的发行说明确实提到 Yahoo API 的 需要 headers 存在问题,并已在此版本中修复(0.10.0).
Fixed Yahoo readers which now require headers
因此,如果您的 google-colab
使用任何早于 0.10.0 的版本,使用 Yahoo API 的 将有问题。
以下是有关如何调试 google-colab
- jupyter notebook
中的问题的一些步骤。
第 1 步:确定模块 pandas_datareader
.
的安装版本
!pip show pandas_datareader
第二步:如果版本低于0.10.0则升级版本
!pip install --upgrade pandas_datareader
第 3 步:不要忘记重新启动运行加载新库的时间。
Press Runtime->Restart runtime
第 4 步:现在再次尝试 运行 执行第 1 步以确定是否安装了最新版本。
!pip show pandas_datareader
我希望能安装最新版本,并且您可以 运行 您上面的代码,并根据 @Aaron 在他的回答中提到的更正。
注意:在 shell 命令之前需要 !
。尝试通过 the official docs of IPython 了解更多信息。
import pandas_datareader.data as web
import numpy as np
import pandas as pd
stock = ['AAPL']
data = web.DataReader(stock,data_source="yahoo",start='01/01/2010')['Adj Close']
data.sort_index(inplace=True)
returns = data.pct_change()
mean_return = returns.mean()
return_stdev = returns.std()
annualised_return = round(mean_return * 252,2)
annualised_stdev = round(return_stdev * np.sqrt(252),2)
print ('The annualised mean return of stock {} is {}, '
'and the annualised volatility is {}').format(stock[0],annualised_return,annualised_stdev)
这是更正后的代码:
import pandas_datareader.data as web
import numpy as np
import pandas as pd
stock = ['AAPL']
data = web.DataReader(stock,data_source="yahoo",start='01/01/2010')['Adj Close']
data.sort_index(inplace=True)
returns = data.pct_change()
mean_return = returns.mean()
return_stdev = returns.std()
annualised_return = round(mean_return * 252,2)
annualised_stdev = round(return_stdev * np.sqrt(252),2)
print(f"The annualised mean return of stock {stock[0]} is {annualised_return}, and the annualised volatility is {annualised_stdev}")
所以错误来了,因为你没有使用 f 字符串。 f 字符串将数据放在括号之间{}
您通过将 print
函数的输出放在右括号之后来调用 format
。 print
没有 return 任何东西,所以你实际上是在调用 None.format(...)
(它不存在)。您应该直接在字符串上调用格式:
print('The annualised mean return of stock {} is {}, and the annualised volatility is {}'.format(stock[0],annualised_return,annualised_stdev))
pandas_datareader 0.10.0 的发行说明确实提到 Yahoo API 的 需要 headers 存在问题,并已在此版本中修复(0.10.0).
Fixed Yahoo readers which now require headers
因此,如果您的 google-colab
使用任何早于 0.10.0 的版本,使用 Yahoo API 的 将有问题。
以下是有关如何调试 google-colab
- jupyter notebook
中的问题的一些步骤。
第 1 步:确定模块 pandas_datareader
.
!pip show pandas_datareader
第二步:如果版本低于0.10.0则升级版本
!pip install --upgrade pandas_datareader
第 3 步:不要忘记重新启动运行加载新库的时间。
Press Runtime->Restart runtime
第 4 步:现在再次尝试 运行 执行第 1 步以确定是否安装了最新版本。
!pip show pandas_datareader
我希望能安装最新版本,并且您可以 运行 您上面的代码,并根据 @Aaron 在他的回答中提到的更正。
注意:在 shell 命令之前需要 !
。尝试通过 the official docs of IPython 了解更多信息。