AttributeError: модуль yfinance не имеет атрибута download

Я пытаюсь импортировать yfinance и некоторые акции в pandas dataframe. Первоначально были серьезные проблемы с импортом финансов. Я установил с помощью pip, но мне все равно пришлось вручную вставлять файлы, чтобы фактически избавиться от ошибки отсутствия модуля.

Это мой код:

Теперь я получаю ошибку атрибута при попытке загрузить 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: модуль yahoo_finance не имеет атрибута download, но он все еще не работает

Любые решения приветствуются

3 ответа

Решение

Я установил с помощью pip, но мне все равно пришлось вручную вставлять файлы, чтобы фактически избавиться от ошибки отсутствия модуля.

Это могло быть вероятной причиной ошибки. Делать это вручную крайне не рекомендуется, и всегда рекомендуется устанавливать с помощью пакетного инструмента. Если вы используете среду anaconda, рассмотрите возможность установки черезconda и удалите файлы, размещенные вручную.

$ conda install -c ranaroussi yfinance

А также убедитесь, что вы соответствуете всем требованиям

Python >= 2.7, 3.4+, Pandas (протестировано для работы с>=0.23.1), Numpy >= 1.11.1, запросы>= 2.14.2

У меня была такая же ошибка, но следующий код работал после удаления локального файла с именем yahoofinance

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

Это сделает то, что вы хотите.

      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()

Другие вопросы по тегам