属性错误:模块“yfinance”没有“download”属性。

3

我正在尝试将yfinance和一些股票导入pandas数据框。最初导入yfinance时遇到了很大的问题。虽然使用pip进行了安装,但仍需手动输入文件才能真正消除“no module”错误。

以下是我的代码:

现在,在尝试下载yfinance时出现属性错误。

import pandas as pd
import datetime as dt
import yfinance as yf
# import fix_yahoo_finance as yf

stocks = ["AMZN", "MSFT", "INTC", "GOOG", "INFY.NS", "3988.HK"]
start = dt.datetime.today()- dt.timedelta(30)
end = dt.datetime.today()
cl_price = pd.DataFrame()

for ticker in stocks:
    cl_price[ticker] = yf.download(ticker,start,end)["Adj Close"]

以下是错误信息:

AttributeError                            Traceback (most recent call last)
<ipython-input-51-3347ed0c7f2b> in <module>
     10 
     11 for ticker in stocks:
---> 12     cl_price[ticker] = yf.download(ticker,start,end)["Adj Close"]

AttributeError: module 'yfinance' has no attribute 'download'

我尝试了来自AttributeError: module 'yahoo_finance' has no attribute 'download'的建议,但仍然无法工作。

欢迎提供任何解决方案。


4
您本地的Python文件中是否有以yfinance.py.pyc命名的文件?如果有,那么导入模块时会优先找到该文件,而不是真正的雅虎财经模块。 - John Gordon
不,我没有任何名为yfinance.py的文件。 - HJ10
试一下并展示输出结果:import yfinance; print(yfinance.__file__) - John Gordon
/opt/anaconda3/lib/python3.7/site-packages/yfinance/init.py - HJ10
3个回答

1

我刚遇到了同样的错误,但在删除名为yahoofinance的本地文件后,以下代码可以正常工作

!pip install yfinance
import yfinance as yf
import pandas as pd
import datetime as dt

1
本地文件位于哪里? - David

0

这将会做你想要的事情。

import pandas as pd  
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import scipy.optimize as sco
import datetime as dt
import math
from datetime import datetime, timedelta
from pandas_datareader import data as wb
from sklearn.cluster import KMeans
np.random.seed(777)


start = '2022-09-22'
end = '2022-11-23'


tickers = ['AXP','AMGN','AAPL','BA','CAT','CSCO','CVX','GS','HD','HON','IBM','INTC','JNJ','KO','JPM','MCD','MMM','MRK','MSFT','NKE','PG','TRV','UNH','CRM','VZ','V','WBA','WMT','DIS']

thelen = len(tickers)


price_data = []
for ticker in tickers:
    try:
        prices = wb.DataReader(ticker, start = start, end = end, data_source='yahoo')[['Adj Close']]
        price_data.append(prices.assign(ticker=ticker)[['ticker', 'Adj Close']])
    except:
        print(ticker)        
df = pd.concat(price_data)
df.dtypes
df.tail()
df.shape

pd.set_option('display.max_columns', 500)
pd.set_option('display.max_rows', None)

df = df.reset_index()
df = df.set_index('Date')
table = df.pivot(columns='ticker')

# By specifying col[1] in below list comprehension
# You can select the stock names under multi-level column
table.columns = [col[1] for col in table.columns]
table.head()

enter image description here


0
我使用pip安装了,但仍然必须手动放置文件才能真正消除无模块错误。
这可能是错误的主要原因。强烈不建议手动操作,通常建议使用软件包工具进行安装。如果您正在使用anaconda环境,请考虑通过conda安装并删除手动放置的文件。
$ conda install -c ranaroussi yfinance

同时确保满足所有要求

Python >= 2.7, 3.4+, Pandas (已测试可与 >=0.23.1 兼容), Numpy >= 1.11.1, requests >= 2.14.2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接