如何使用Python中的yahoo_fin计算移动平均值?

如何使用Python中的yahoo_fin计算移动平均值?,python,yahoo-finance,stock,moving-average,Python,Yahoo Finance,Stock,Moving Average,我正在尝试制作一个程序,当股票价格超过移动平均线时发送电子邮件提醒,我正在使用库yahoo_fin(以下是示例) 我试图从雅虎财务.股票信息.获取统计数据('a')获取移动平均数据,但我得到以下错误: get_stats中第241行的文件“lib\site packages\yahoo_fin\stock_info.py” table.columns=[“属性”,“值”] 文件“lib\site packages\pandas\core\generic.py”,第5287行,在__ 返回对象。\

我正在尝试制作一个程序,当股票价格超过移动平均线时发送电子邮件提醒,我正在使用库
yahoo_fin
(以下是示例)

我试图从
雅虎财务.股票信息.获取统计数据('a')
获取移动平均数据,但我得到以下错误:

get_stats中第241行的文件“lib\site packages\yahoo_fin\stock_info.py” table.columns=[“属性”,“值”] 文件“lib\site packages\pandas\core\generic.py”,第5287行,在__ 返回对象。\uuuu setattr\uuuuu(self、name、value) pandas.\u libs.properties.AxisProperty.\uuu set\uu中第67行的文件“pandas\\u libs\properties.pyx” 文件“lib\site packages\pandas\core\generic.py”,第661行,在轴上 自身数据。设置轴(轴、标签) 文件“lib\site packages\pandas\core\internals\managers.py”,第178行,位于集合轴 f“长度不匹配:预期轴有{old_len}个元素,新” ValueError:长度不匹配:预期轴有9个元素,新值有2个元素 任何关于修复此问题的帮助都将是巨大的


如果您不知道如何让这个特定的函数工作,我尝试过的另一种方法似乎是使用方法
yahoo\u fin.stock\u info.get\u data('a')
,但是我需要帮助才能知道如何根据这些数据计算移动平均线。

您可以使用以下代码从
get\u data
计算50天移动平均线:

导入雅虎财务
从雅虎财务导入股票信息
yahoo_fin.stock_info.get_data('a',interval='1d')['close'][-50:].mean()
如果要计算某一特定时间段内的值:

df = yahoo_fin.stock_info.get_data('a', interval='1d')
moving_average = [df['close'][i-50:i].mean() for i in range(50, df.shape[0]+1)]

我为此推了一个补丁-如果你升级你的yahoo_fin版本到0.8.5,现在应该可以修复了

from yahoo_fin import stock info as si
si.get_stats("a")

由此,你可以得到50天和200天的移动平均线。然而,正如@user7440787的回复中所提到的,您可以使用get_data方法来提取价格历史记录,然后计算您需要的任何窗口大小的移动平均值(10天、100天、150天等)

您使用的是哪一版本的python和yahoo_fin?它适用于
python3.6
yahoo\u fin 0.8.4
。另外,你能给我一点代码上下文吗?您正在导入哪些模块?我正在使用python 3.7.7和yahoo_fin 0.8.4!我只是想让get_stats('a')工作,但它给出了一个错误。一旦我得到get_stats('a')来显示一些数据,那么我想从这些数据中得到移动平均值。只要输入yahoo_fin.stock_info.get_stats('a')就可以得到上面的错误。我也在使用import yahoo_fin&从yahoo_fin import stock_info抱歉,我无法复制这个问题。它工作正常
python-c“导入雅虎财务;从雅虎财务导入股票信息;打印(雅虎财务。股票信息。获取数据('a')”
)。尝试不同版本的熊猫?你用的是哪个版本的熊猫?我用的是熊猫1.0.3!我试图使用get_stats('a'),而不是get_数据('a')。我可以尝试获取_数据(“a”),但如何从该数据中获取50天移动平均线?另外,您如何使它不在表中拾取不必要的数据?
get_stats
也可以使用
python-c“导入雅虎财务;从雅虎财务导入股票信息;打印(yahoo_fin.stock_info.get_stats('a')”
,我使用的是相同版本的
pandas
。对不起,谢谢!我得到了
stock\u info.get\u stats(“a”).Value[5]
只用于获取50毫安的值!