What will we cover
- The easy way visualize financial data with Python
- How to fetch data from stocks in Python
- The easy way to visualize it on a plot
- How to enrich the data with valuable analysis
Step 1: Fetch the data on your favorite stock
As with most things in Python, somebody made an easy to use library to do all the hard work for you. This is also true if you want to visualize financial data with Python.
The Pandas datareader library lets you fetch financial data from various sources and return them in a Pandas Dataframe.
If you do not know what a Dataframe from Pandas is, do not worry. We will cover the necessary here.
The full list data sources available can be found here, but include Tiingo, IEX, Alpha Vantage, Enigma, Quandl, St.Louis FED (FRED), Kenneth French’s data library, World Bank, and many more.
import pandas_datareader as pdr
import datetime
aapl = pdr.get_data_yahoo('AAPL',
start=datetime.datetime(2010, 1, 1),
end=datetime.datetime(2020, 1, 1))
print(aapl.head())
Which will result in 10 years of data from Apple. See below.
High Low ... Volume Adj Close
Date ...
2010-01-04 30.642857 30.340000 ... 123432400.0 26.466835
2010-01-05 30.798571 30.464285 ... 150476200.0 26.512596
2010-01-06 30.747143 30.107143 ... 138040000.0 26.090879
2010-01-07 30.285715 29.864286 ... 119282800.0 26.042646
2010-01-08 30.285715 29.865715 ... 111902700.0 26.215786
For each bank day you will be presented with the following data.
High 2.936800e+02
Low 2.895200e+02
Open 2.899300e+02
Close 2.936500e+02
Volume 2.520140e+07
Adj Close 2.921638e+02
Name: 2019-12-31 00:00:00, dtype: float64
- High: The highest price traded during that day.
- Low: The lowest price traded during that day.
- Open: The opening price that day.
- Close: The closing price that day, that is the price of the last trade that day.
- Volume: The number of shares that exchange hands for the stock that day.
- Adj Close: It accurately reflect the stock’s value after accounting for any corporate actions. It is considered to be the true price of that stock and is often used when examining historical returns.
As you can see, to make further infestations on the data, you should use the Adj Close.
Step 2: Visualize the data
This is where Dataframes come in handy. They integrate easy with matplotlib, which is a comprehensive library for creating static, animated, and interactive visualizations in Python.
import pandas_datareader as pdr
import datetime
import matplotlib.pyplot as plt
aapl = pdr.get_data_yahoo('AAPL',
start=datetime.datetime(2010, 1, 1),
end=datetime.datetime(2020, 1, 1))
aapl['Adj Close'].plot()
plt.show()
Will result in a graph like this.

That was easy.
You can see further ways to visualize the data in the documentation here.
Step 3: Enrich the data
That is another great advantage of Dataframes, it is easy to enrich it with valuable data.
A good example is to enrich the data with running mean values of the stock price.
import pandas_datareader as pdr
import datetime
import matplotlib.pyplot as plt
aapl = pdr.get_data_yahoo('AAPL',
start=datetime.datetime(2015, 1, 1),
end=datetime.datetime(2020, 1, 1))
aapl['Mean Short'] = aapl['Adj Close'].rolling(window=20).mean()
aapl['Mean Long'] = aapl['Adj Close'].rolling(window=100).mean()
aapl[['Adj Close', 'Mean Short', 'Mean Long']].plot()
plt.show()
Which will result in the following graph.

Now that was simple. The code simple rolls the window of 20 (or 100) days and sets the average (mean) value of that. This kind of analysis is used to see the average trend of the stock. Also, to see when the short term trend (20 days) is crossing the long term trend (100 days).
A simple trading strategy is decides on to buy and sell based on when these averages crosses. This strategy is called dual moving average crossover. You can read more about it here.
A volatility analysis is used to see how “stable” the share is. The higher the volatility value is, the riskier it is.
import pandas_datareader as pdr
import datetime
import matplotlib.pyplot as plt
import numpy as np
aapl = pdr.get_data_yahoo('AAPL',
start=datetime.datetime(2015, 1, 1),
end=datetime.datetime(2020, 1, 1))
daily_close = aapl['Close']
daily_pc = daily_close.pct_change()
# See the volatibility
vol = daily_pc.rolling(75).std()*np.sqrt(75)
vol.plot()
plt.show()
Which results in the following graph.

This is a good indication on how risky the stock is.
Conclusion
This is just a simple introduction to how to retrieve financial stock data in Python and visualize it. Also, how easy it is to enrich it with more valuable analysis.
There are so much more to explore and learn about it.
Python for Finance: Unlock Financial Freedom and Build Your Dream Life
Discover the key to financial freedom and secure your dream life with Python for Finance!
Say goodbye to financial anxiety and embrace a future filled with confidence and success. If you’re tired of struggling to pay bills and longing for a life of leisure, it’s time to take action.
Imagine breaking free from that dead-end job and opening doors to endless opportunities. With Python for Finance, you can acquire the invaluable skill of financial analysis that will revolutionize your life.
Make informed investment decisions, unlock the secrets of business financial performance, and maximize your money like never before. Gain the knowledge sought after by companies worldwide and become an indispensable asset in today’s competitive market.
Don’t let your dreams slip away. Master Python for Finance and pave your way to a profitable and fulfilling career. Start building the future you deserve today!
Python for Finance a 21 hours course that teaches investing with Python.
Learn pandas, NumPy, Matplotlib for Financial Analysis & learn how to Automate Value Investing.
“Excellent course for anyone trying to learn coding and investing.” – Lorenzo B.
