Prateek
Prateek

Reputation: 1

Error while reading data from csv file using pandas

import yfinance as yahooFinance
import time
import datetime
import pandas as pd

ticker = 'TSLA'

period1 = int(time.mktime(datetime.datetime(2022, 12, 1, 23, 59).timetuple()))  # year,month,date
period2 = int(time.mktime(datetime.datetime(2022, 12, 31, 23, 59).timetuple()))  # year,month,date
interval = '1wk'  # time interval
query_string = f'https://query1.finance.yahoo.com/v7/finance/download/{ticker}?period1={period1}&period2={period2}&interval={interval}&events=history&includeAdjustedClose=true'
df = pd.read_csv(f'https://query1.finance.yahoo.com/v7/finance/download/{ticker}?period1={period1}&period2={period2}&interval={interval}&events=history&includeAdjustedClose=true')
print(df)

The above is my code when I run it , the following error comes

 File "<stdin>", line 1, in <module>
  File "C:\Users\BRBCO\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\util\_decorators.py", line 311, in wrapper      
    return func(*args, **kwargs)
  File "C:\Users\BRBCO\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\io\parsers\readers.py", line 680, in read_csv   
    return _read(filepath_or_buffer, kwds)
  File "C:\Users\BRBCO\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\io\parsers\readers.py", line 575, in _read      
    parser = TextFileReader(filepath_or_buffer, **kwds)
  File "C:\Users\BRBCO\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\io\parsers\readers.py", line 933, in __init__   
    self._engine = self._make_engine(f, self.engine)
  File "C:\Users\BRBCO\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\io\parsers\readers.py", line 1217, in _make_engine
    self.handles = get_handle(  # type: ignore[call-overload]
  File "C:\Users\BRBCO\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\io\common.py", line 670, in get_handle
    ioargs = _get_filepath_or_buffer(
  File "C:\Users\BRBCO\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\io\common.py", line 339, in _get_filepath_or_buffer
    with urlopen(req_info) as req:
  File "C:\Users\BRBCO\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\io\common.py", line 239, in urlopen
    return urllib.request.urlopen(*args, **kwargs)
  File "C:\Users\BRBCO\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 214, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Users\BRBCO\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 523, in open
    response = meth(req, response)
  File "C:\Users\BRBCO\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 632, in http_response
    response = self.parent.error(
  File "C:\Users\BRBCO\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 561, in error
    return self._call_chain(*args)
  File "C:\Users\BRBCO\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 494, in _call_chain
    result = func(*args)
  File "C:\Users\BRBCO\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 641, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request

What am I doing wrong?

Upvotes: 0

Views: 1236

Answers (1)

KarelZe
KarelZe

Reputation: 1731

Both period1 and period2 are invalid, as they lie in the future. Adjust them e. g. with datetime.date(2021,4,5) or datetime.date.today() to get the current date, which is the latest possible date.

import time
import datetime
import pandas as pd

ticker = 'TSLA'

period1 = int(time.mktime(datetime.date(2021,4,5).timetuple()))
period2 = int(time.mktime(datetime.date.today().timetuple())) 
interval = '1wk'

query_string = f'https://query1.finance.yahoo.com/v7/finance/download/{ticker}?period1={period1}&period2={period2}&interval={interval}&events=history&includeAdjustedClose=true'

df = pd.read_csv(query_string)

Upvotes: 2

Related Questions