Forum >> Principianti >> Errore bloccante

Pagina: 1

Buongiorno, premetto che sono un neofita.Sto cercando di scaricare dei dati da yahoo finance, seguendo alcuni tutorial da youtube. Dopo aver installato le librerie pandas_datareader, numpy,datetime ( vi indico il codice utilizzato) ho scritto questa istruzione che mi genera questo errore che non riesco a risolvere. Aggiungo che sto utilizzando Jupyter Notebook. Qualcuno può aiutarmi pls? Grazie .Gpy






from pandas_datareader import data as web

import pandas as pd

import numpy as np

from datetime import datetime

import matplotlib.pyplot as plt

plt.style.use('fivethirtyeight')




assets = ['APPL','BA','NTFLX','TSLA']




stockStartdate = '2020-01-01'




today =datetime.today().strftime('%Y-%m-%d')

today




df = pd.DataFrame()




for stock in assets:

df stock = web.DataReader(stock, data_source='yahoo',start=stockStartdate,end=today)




ERRORE:

TypeError Traceback (most recent call last)
Cell In30, line 2
1 for stock in assets:
----> 2 df stock = web.DataReader(stock, data_source='yahoo',start=stockStartdate,end=today)

File ~\anaconda3\lib\site-packages\pandas\util\_decorators.py:211, in deprecate_kwarg.<locals>._deprecate_kwarg.<locals>.wrapper(*args, **kwargs)
209 else:
210 kwargsnew arg name = new_arg_value
--> 211 return func(*args, **kwargs)

File ~\anaconda3\lib\site-packages\pandas_datareader\data.py:379, in DataReader(name, data_source, start, end, retry_count, pause, session, api_key)
367 raise NotImplementedError(msg)
369 if data_source == "yahoo":
370 return YahooDailyReader(
371 symbols=name,
372 start=start,
373 end=end,
374 adjust_price=False,
375 chunksize=25,
376 retry_count=retry_count,
377 pause=pause,
378 session=session,
--> 379 ).read()
381 elif data_source == "iex":
382 return IEXDailyReader(
383 symbols=name,
384 start=start,
(...)
390 session=session,
391 ).read()

File ~\anaconda3\lib\site-packages\pandas_datareader\base.py:253, in _DailyBaseReader.read(self)
251 # If a single symbol, (e.g., 'GOOG')
252 if isinstance(self.symbols, (string_types, int)):
--> 253 df = self._read_one_data(self.url, params=self._get_params(self.symbols))
254 # Or multiple symbols, (e.g., ['GOOG', 'AAPL', 'MSFT'])
255 elif isinstance(self.symbols, DataFrame):

File ~\anaconda3\lib\site-packages\pandas_datareader\yahoo\daily.py:153, in YahooDailyReader._read_one_data(self, url, params)
151 try:
152 j = json.loads(re.search(ptrn, resp.text, re.DOTALL).group(1))
--> 153 data = j["context"]["dispatcher"]["stores"]["HistoricalPriceStore"]
154 except KeyError:
155 msg = "No data fetched for symbol {} using {}"

TypeError: string indices must be integers




--- Ultima modifica di gpy in data 2023-05-24 22:29:59 ---
Ciao e benvenuto.

Non è il mio settore di competenza e non ho mai provato il codice che fornisci, ma vedo che non sei l'unico ad avere questo problema, deve essere una cosa nota.

Vedo che come risoluzione suggeriscono di puntare direttamente a yfinance:
!pip install yfinance
import yfinance as yf

df = yf.download("TSLA", start="2023-01-01", end="2023-05-25")
print(df)

...e compaiono i dati richiesti.

Dicono i più che siano esattamente gli stessi, ma non so assolutamente dirti se questa cosa è vera, come ti premettevo non sono assolutamente ferrato su questo argomento.

Fai sapere se risolvi.

Cya

Grazie. Questa istruzione funziona.


Pagina: 1



Esegui il login per scrivere una risposta.