在 运行 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 字符串将数据放在括号之间{}

For more info visit: https://www.geeksforgeeks.org/python-output-formatting/#:~:text=In%20Python%2C%20there%20is%20no%20printf%20%28%29%20function,string%20modulo%20%28or%20sometimes%20even%20called%20modulus%29%20operator.

您通过将 print 函数的输出放在右括号之后来调用 formatprint 没有 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 了解更多信息。