How do I get Yahoo Finance data from python?

What will we cover in this tutorial?

In this tutorial we will cover the following.

  • How to use Pandas Datareader to read historical stock prices from Yahoo! Finance.
  • Learn how to read weekly and monthly data.
  • Also how to read multiple tickers at once.

Step 1: What is Pandas Datareader?

Pandas-Datareader is an up to date remote data access for pandas.

This leads to the next question. What is pandas?

Pandas is a data analysis and manipulation tool containing a great data structure for the purpose.

Shortly said, pandas can be thought of as a data structure in Python, which is similar to working with data in a spreadsheet.

Pandas-datareader reads data from various sources and puts the data into a pandas data structures.

Pandas-datareader has a call to return historic stock price data from Yahoo! Finance.

To use Pandas-datareader you need to import the library.

Step 2: Example reading data from Yahoo! Finance with Pandas-Datareader

Lets break the following example down.

import pandas_datareader as pdr import datetime as dt ticker = "AAPL" start = dt.datetime(2019, 1, 1) end = dt.datetime(2020, 12, 31) data = pdr.get_data_yahoo(ticker, start, end) print(data)

Where we first import two libraries.

  • pandas_datareaderThe Pandas Datareader. If you do not have it installed already in your Jupyter Notebook you can do that by entering this in a cell!pip install pandas_datareaderand execute it.
  • datetimeThis is a default library and represents a date and time. We only use it for the date aspects.

The the following lines.

  • ticker = AAPLThe ticker we want data from. You can use any ticker you want. In this course we have used the ticker forApple(AAPL).
  • start = dt.datetime(2019, 1, 1)Is the starting day we want historic stock price data.
  • end = dt.datetime(2020, 12, 31)The end day.
  • data = pdr.get_data_yahoo(ticker, start, end)This is the magic that usesPandas Datareader(pdr) to get data from theYahoo! Finance API. It returns a DataFrame as we know it from previous lessons.

The output of the code is as follows.

High Low ... Volume Adj Close Date ... 2019-01-02 39.712502 38.557499 ... 148158800.0 38.505024 2019-01-03 36.430000 35.500000 ... 365248800.0 34.669640 2019-01-04 37.137501 35.950001 ... 234428400.0 36.149662 2019-01-07 37.207500 36.474998 ... 219111200.0 36.069202 2019-01-08 37.955002 37.130001 ... 164101200.0 36.756794 ... ... ... ... ... ... 2020-12-24 133.460007 131.100006 ... 54930100.0 131.773087 2020-12-28 137.339996 133.509995 ... 124486200.0 136.486053 2020-12-29 138.789993 134.339996 ... 121047300.0 134.668762 2020-12-30 135.990005 133.399994 ... 96452100.0 133.520477 2020-12-31 134.740005 131.720001 ... 99116600.0 132.492020 [505 rows x 6 columns]

Step 3: A few parameters to set

You can get multiple tickers at once by parsing a list of them.

import pandas_datareader as pdr import datetime as dt ticker = ["AAPL", "IBM", "TSLA"] start = dt.datetime(2019, 1, 1) end = dt.datetime(2020, 12, 31) data = pdr.get_data_yahoo(ticker, start, end) print(data)

You can get the weekly or monthly data by using the argument as follows.

import datetime as dt ticker = ["AAPL", "IBM", "TSLA"] start = dt.datetime(2019, 1, 1) end = dt.datetime(2020, 12, 31) data = pdr.get_data_yahoo(ticker, start, end, interval='w') print(data)

Set interval=m to get monthly data instead of weekly with w.

Next steps?

Want to learn more?

This is part of the FREE online course on my page. No signup required and 2 hours of free video content with code and Jupyter Notebooks available on GitHub.

Follow the link and read more.

Python for Financial Analysis with Pandas

Like this:

Like Loading...

Related