{"id":199012,"date":"2023-11-16T10:20:30","date_gmt":"2023-11-16T15:20:30","guid":{"rendered":"https:\/\/ibkrcampus.com\/?p=199012"},"modified":"2023-11-17T15:52:14","modified_gmt":"2023-11-17T20:52:14","slug":"stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii","status":"publish","type":"post","link":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\/","title":{"rendered":"Stock Market Data: Obtaining Data, Visualization &amp; Analysis in Python &#8211; Part II"},"content":{"rendered":"\n<p><em>Learn how to get historical data for stocks with <a href=\"\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python\/\">Part <\/a>I in this tutorial.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"sp-500-stock-tickers\">S&amp;P 500 Stock Tickers<\/h2>\n\n\n\n<p>If you want to analyse the stock market data for all the stocks which make up S&amp;P 500 then below code will help you. It gets the list of stocks from the Wikipedia page and then fetches the stock market data from yahoo finance.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Import packages\nimport yfinance as yf\nimport pandas as pd\n\n# Read and print the stock tickers that make up S&amp;P500\ntickers = pd.read_html(\n    'https:\/\/en.wikipedia.org\/wiki\/List_of_S%26P_500_companies')[0]\nprint(tickers.head())\n\n# Get the data for this tickers from yahoo finance\ndata = yf.download(tickers.Symbol.to_list(),'2021-1-1','2021-7-12', auto_adjust=True)['Close']\nprint(data.head())<\/pre>\n\n\n\n<p><a href=\"https:\/\/gist.github.com\/quantra-go-algo\/ac5180bf164a7894f70969fa563627b2#file-sp500_tickers_data-py\">SP500_tickers_data.py&nbsp;<\/a>hosted with \u2764 by&nbsp;<a href=\"https:\/\/github.com\/\">GitHub<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"796\" height=\"301\" data-src=\"\/campus\/wp-content\/uploads\/sites\/2\/2023\/11\/data-for-tickers-quantinsti.png\" alt=\"\" class=\"wp-image-199013 lazyload\" data-srcset=\"https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/11\/data-for-tickers-quantinsti.png 796w, https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/11\/data-for-tickers-quantinsti-700x265.png 700w, https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/11\/data-for-tickers-quantinsti-300x113.png 300w, https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/11\/data-for-tickers-quantinsti-768x290.png 768w\" data-sizes=\"(max-width: 796px) 100vw, 796px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 796px; aspect-ratio: 796\/301;\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"481\" height=\"182\" data-src=\"\/campus\/wp-content\/uploads\/sites\/2\/2023\/11\/stock-market-data-for-all-the-stocks-which-make-up-S-P-500-quantinsti.png\" alt=\"\" class=\"wp-image-199014 lazyload\" data-srcset=\"https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/11\/stock-market-data-for-all-the-stocks-which-make-up-S-P-500-quantinsti.png 481w, https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/11\/stock-market-data-for-all-the-stocks-which-make-up-S-P-500-quantinsti-300x114.png 300w\" data-sizes=\"(max-width: 481px) 100vw, 481px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 481px; aspect-ratio: 481\/182;\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"intraday-or-minute-frequency-stock-data\"><strong>Intraday or Minute Frequency Stock Data<\/strong><\/h2>\n\n\n\n<p>yfinance module can be used to fetch the minute level stock market data. It returns the stock market data for the last 7 days.<\/p>\n\n\n\n<p>If yfinance is not installed on your computer, then run the below line of code from your Jupyter Notebook to install yfinance.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">!pip install yfinance<\/pre>\n\n\n\n<p><a href=\"https:\/\/gist.github.com\/quantra-go-algo\/c568a4e09187a9e62f054747165be54f#file-install-yfinance-py\">install yfinance.py&nbsp;<\/a>hosted with \u2764 by&nbsp;<a href=\"https:\/\/github.com\/\">GitHub<\/a><\/p>\n\n\n\n<p>The yfinance module has the download method which can be used to download the stock market data.<\/p>\n\n\n\n<p>It takes the following parameters:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>ticker<\/code>: The name of the tickers you want the stock market data for. If you want stock market data for multiple tickers then separate them by space<\/li>\n\n\n\n<li><code>period<\/code>: The number of days\/month of stock market data required. The valid frequencies are 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max<\/li>\n\n\n\n<li><code>interval<\/code>: The frequency of the stock market data. The valid intervals are 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo<\/li>\n<\/ol>\n\n\n\n<p>The below code fetches the stock market data for MSFT for the past 5 days of 1-minute frequency.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import yfinance as yf\nintraday_data = yf.download(tickers=\"MSFT\",\n                            period=\"5d\",\n                            interval=\"1m\",\n                            auto_adjust=True)\nintraday_data.head()<\/pre>\n\n\n\n<p><a href=\"https:\/\/gist.github.com\/quantra-go-algo\/3a6ac3715ded5c087471288329b17474#file-minute_data-py\">minute_data.py&nbsp;<\/a>hosted with \u2764 by&nbsp;<a href=\"https:\/\/github.com\/\">GitHub<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"684\" height=\"297\" data-src=\"\/campus\/wp-content\/uploads\/sites\/2\/2023\/11\/stock-market-data-for-msft-for-the-past-5-days-of-1-minute-frequency-1-quantinsti.png\" alt=\"\" class=\"wp-image-199017 lazyload\" data-srcset=\"https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/11\/stock-market-data-for-msft-for-the-past-5-days-of-1-minute-frequency-1-quantinsti.png 684w, https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/11\/stock-market-data-for-msft-for-the-past-5-days-of-1-minute-frequency-1-quantinsti-300x130.png 300w\" data-sizes=\"(max-width: 684px) 100vw, 684px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 684px; aspect-ratio: 684\/297;\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"resample-stock-data\">Resample Stock Data<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"convert-1-minute-data-to-1-hour-data-or-resample-stock-data\">Convert 1-minute data to 1-hour data or Resample Stock Data<\/h3>\n\n\n\n<p>During strategy modelling, you might be required to work with a custom frequency of stock market data such as 15 minutes or 1 hour or even 1 month.<\/p>\n\n\n\n<p>If you have minute level data, then you can easily construct the 15 minutes, 1 hour or daily candles by resampling them. Thus, you don&#8217;t have to buy them separately.<br><br>In this case, you can use the pandas&nbsp;<a href=\"https:\/\/pandas.pydata.org\/pandas-docs\/version\/0.23.3\/generated\/pandas.DataFrame.resample.html\">resample<\/a>&nbsp;method to convert the stock market data to the frequency of your choice. The implementation of these is shown below where a 1-minute frequency data is converted to 10-minute frequency data.<\/p>\n\n\n\n<p>The first step is to define the dictionary with the conversion logic. For example, to get the open value the first value will be used, to get the high value the maximum value will be used and so on.<\/p>\n\n\n\n<p>The name Open, High, Low, Close and Volume should match the column names in your dataframe.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ohlcv_dict = {\n 'Open': 'first',\n 'High': 'max',\n 'Low': 'min',\n 'Close': 'last',\n 'Volume': 'sum'\n}<\/pre>\n\n\n\n<p><a href=\"https:\/\/gist.github.com\/quantra-go-algo\/3d862c72cebcc623c86d95c7c4113f68#file-ohlcv_dict-py\">ohlcv_dict.py&nbsp;<\/a>hosted with \u2764 by&nbsp;<a href=\"https:\/\/github.com\/\">GitHub<\/a><\/p>\n\n\n\n<p>Convert the index to datetime timestamp as by default string is returned. Then call the resample method with the frequency such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>10T for 10 minutes,<\/li>\n\n\n\n<li>D for 1 day and<\/li>\n\n\n\n<li>M for 1 month<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Import package &amp; get the data\nimport yfinance as yf\nintraday_data = yf.download(tickers=\"MSFT\",\n                            period=\"5d\",\n                            interval=\"1m\",\n                            auto_adjust=True)\n\n# Define the resampling logic\nohlcv_dict = {\n     'Open': 'first',\n     'High': 'max',\n     'Low': 'min',\n     'Close': 'last',\n     'Volume': 'sum'\n}\n\n# Resample the data\nintraday_data_10 = intraday_data.resample('10T').agg(ohlcv_dict)\nintraday_data_10.head()<\/pre>\n\n\n\n<p><a href=\"https:\/\/gist.github.com\/quantra-go-algo\/c8786ae3955235e421f96e56ef48ed76#file-resample_data_10-py\">resample_data_10.py&nbsp;<\/a>hosted with \u2764 by&nbsp;<a href=\"https:\/\/github.com\/\">GitHub<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"678\" height=\"294\" data-src=\"\/campus\/wp-content\/uploads\/sites\/2\/2023\/11\/resample-data-stock-market-python-quantinsti.png\" alt=\"\" class=\"wp-image-199021 lazyload\" data-srcset=\"https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/11\/resample-data-stock-market-python-quantinsti.png 678w, https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/11\/resample-data-stock-market-python-quantinsti-300x130.png 300w\" data-sizes=\"(max-width: 678px) 100vw, 678px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 678px; aspect-ratio: 678\/294;\" \/><\/figure>\n\n\n\n<p>Yahoo finance has limited set of minute level data. if you need the stock market data for higher range then you can get the data from data vendors such as Quandl, AlgoSeek or your broker.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"using-quandl-to-get-stock-market-data-optional-\">Using Quandl to get Stock Market Data (Optional)<\/h3>\n\n\n\n<p>Quandl has many data sources to get different types of stock market data. However, some are free and some are paid.&nbsp;<strong>Wiki<\/strong>&nbsp;is the free data source of Quandl to get the data of the end of the day prices of&nbsp;<strong>3000+ US equities<\/strong>. It is curated by Quandl community and also provides information about the dividends and split.<\/p>\n\n\n\n<p>Quandl also provides paid data source of minute and lower frequencies.<br><br>To get the stock market data, you need to first install the quandl module if it is not already installed using the&nbsp;<strong>pip command<\/strong>&nbsp;as shown below.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">!pip install quandl<\/pre>\n\n\n\n<p><a href=\"https:\/\/gist.github.com\/quantra-go-algo\/80cb89e673a5e181499807cd72fdb0b4#file-install-quandl-py\">Install quandl.py&nbsp;<\/a>hosted with \u2764 by&nbsp;<a href=\"https:\/\/github.com\/\">GitHub<\/a><\/p>\n\n\n\n<p>You need to get your own API Key from quandl to get the stock market data using the below code. If you are facing issue in getting the API key then you can refer to&nbsp;<a href=\"https:\/\/help.quandl.com\/article\/320-where-can-i-find-my-api-key\">this<\/a>&nbsp;link.<\/p>\n\n\n\n<p>After you get your key, assign the variable QUANDL_API_KEY with that key. Then set the start date, end date and the ticker of the asset whose stock&nbsp;<a href=\"https:\/\/quantra.quantinsti.com\/course\/introduction-to-data-science\">market data<\/a>&nbsp;you want to fetch.<br><br>The quandl&nbsp;<code>get<\/code>&nbsp;method takes this stock market data as input and returns the open, high, low, close, volume, adjusted values and other information.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Import quandl package\nimport quandl\n\n# To get your API key, sign up for a free Quandl account.\n# Then, you can find your API key on Quandl account settings page.\nQUANDL_API_KEY = 'REPLACE-THIS-TEXT-WITH-A-REAL-API-KEY'\n\n# This is to prompt you to change the Quandl Key\nif QUANDL_API_KEY == 'REPLACE-THIS-TEXT-WITH-A-REAL-API-KEY':\n    raise Exception(\"Please provide a valid Quandl API key!\")\n \n# Set the start and end date\nstart_date = '1990-01-01'\nend_date = '2018-03-01'\n\n# Set the ticker name\nticker = 'AMZN'\n\n# Feth the data\ndata = quandl.get('WIKI\/'+ticker, \n                  start_date=start_date, \n                  end_date=end_date, \n                  api_key=QUANDL_API_KEY)\n\n# Print the first 5 rows of the dataframe\ndata.head()<\/pre>\n\n\n\n<p><a href=\"https:\/\/gist.github.com\/quantra-go-algo\/f9a8b3854cfe303e3a78e0c3e8c4c0e8#file-get_data_quandl-py\">get_data_quandl.py&nbsp;<\/a>hosted with \u2764 by&nbsp;<a href=\"https:\/\/github.com\/\">GitHub<\/a><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Date<\/th><th>Open<\/th><th>High<\/th><th>Low<\/th><th>Close<\/th><th>Volume<\/th><th>Ex-Dividend<\/th><th>Split Ratio<\/th><th>Adj. Open<\/th><th>Adj. High<\/th><th>Adj. Low<\/th><th>Adj. Close<\/th><th>Adj. Volume<\/th><\/tr><\/thead><tbody><tr><th>1997-05-16<\/th><td>22.38<\/td><td>23.75<\/td><td>20.50<\/td><td>20.75<\/td><td>1225000.0<\/td><td>0.0<\/td><td>1.0<\/td><td>1.865000<\/td><td>1.979167<\/td><td>1.708333<\/td><td>1.729167<\/td><td>14700000.0<\/td><\/tr><tr><th>1997-05-19<\/th><td>20.50<\/td><td>21.25<\/td><td>19.50<\/td><td>20.50<\/td><td>508900.0<\/td><td>0.0<\/td><td>1.0<\/td><td>1.708333<\/td><td>1.770833<\/td><td>1.625000<\/td><td>1.708333<\/td><td>6106800.0<\/td><\/tr><tr><th>1997-05-20<\/th><td>20.75<\/td><td>21.00<\/td><td>19.63<\/td><td>19.63<\/td><td>455600.0<\/td><td>0.0<\/td><td>1.0<\/td><td>1.729167<\/td><td>1.750000<\/td><td>1.635833<\/td><td>1.635833<\/td><td>5467200.0<\/td><\/tr><tr><th>1997-05-21<\/th><td>19.25<\/td><td>19.75<\/td><td>16.50<\/td><td>17.13<\/td><td>1571100.0<\/td><td>0.0<\/td><td>1.0<\/td><td>1.604167<\/td><td>1.645833<\/td><td>1.375000<\/td><td>1.427500<\/td><td>18853200.0<\/td><\/tr><tr><th>1997-05-22<\/th><td>17.25<\/td><td>17.38<\/td><td>15.75<\/td><td>16.75<\/td><td>981400.0<\/td><td>0.0<\/td><td>1.0<\/td><td>1.437500<\/td><td>1.448333<\/td><td>1.312500<\/td><td>1.395833<\/td><td>11776800.0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><em>Stay tuned for the next installment for insights on getting Fundamental&nbsp;Data.<\/em><\/p>\n\n\n\n<p><em>Originally posted on&nbsp;<a href=\"https:\/\/blog.quantinsti.com\/stock-market-data-analysis-python\/\">QuantInsti<\/a>&nbsp;blog.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you want to analyse the stock market data for all the stocks which make up S&amp;P 500 then below code will help you<\/p>\n","protected":false},"author":517,"featured_media":193877,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[339,343,349,338,341],"tags":[851,7560,865,4659,1224,595,10353,16185,6674],"contributors-categories":[13654],"class_list":{"0":"post-199012","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-data-science","8":"category-programing-languages","9":"category-python-development","10":"category-ibkr-quant-news","11":"category-quant-development","12":"tag-algo-trading","13":"tag-data-visualization","14":"tag-github","15":"tag-matplotlib","16":"tag-pandas","17":"tag-python","18":"tag-quandle","19":"tag-stock-market-data","20":"tag-yfinance","21":"contributors-categories-quantinsti"},"pp_statuses_selecting_workflow":false,"pp_workflow_action":"current","pp_status_selection":"publish","acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v27.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Stock Market Data: Obtaining Data, Visualization &amp; Analysis in Python &#8211; Part II<\/title>\n<meta name=\"description\" content=\"If you want to analyse the stock market data for all the stocks which make up S&amp;P 500 then below code will help you\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.interactivebrokers.com\/campus\/wp-json\/wp\/v2\/posts\/199012\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Stock Market Data: Obtaining Data, Visualization &amp; Analysis in Python - Part II | IBKR Campus US\" \/>\n<meta property=\"og:description\" content=\"If you want to analyse the stock market data for all the stocks which make up S&amp;P 500 then below code will help you\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\/\" \/>\n<meta property=\"og:site_name\" content=\"IBKR Campus US\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-16T15:20:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-17T20:52:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/07\/python-blue-keyboard.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"563\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ishan Shah\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ishan Shah\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\n\t    \"@context\": \"https:\\\/\\\/schema.org\",\n\t    \"@graph\": [\n\t        {\n\t            \"@type\": \"NewsArticle\",\n\t            \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\\\/#article\",\n\t            \"isPartOf\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\\\/\"\n\t            },\n\t            \"author\": {\n\t                \"name\": \"Ishan Shah\",\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/person\\\/0fd7dbae1e070042c10b53e8bdc551c5\"\n\t            },\n\t            \"headline\": \"Stock Market Data: Obtaining Data, Visualization &amp; Analysis in Python &#8211; Part II\",\n\t            \"datePublished\": \"2023-11-16T15:20:30+00:00\",\n\t            \"dateModified\": \"2023-11-17T20:52:14+00:00\",\n\t            \"mainEntityOfPage\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\\\/\"\n\t            },\n\t            \"wordCount\": 797,\n\t            \"commentCount\": 0,\n\t            \"publisher\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#organization\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\\\/#primaryimage\"\n\t            },\n\t            \"thumbnailUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/07\\\/python-blue-keyboard.jpg\",\n\t            \"keywords\": [\n\t                \"Algo Trading\",\n\t                \"Data Visualization\",\n\t                \"GitHub\",\n\t                \"Matplotlib\",\n\t                \"Pandas\",\n\t                \"Python\",\n\t                \"Quandle\",\n\t                \"Stock Market Data\",\n\t                \"yfinance\"\n\t            ],\n\t            \"articleSection\": [\n\t                \"Data Science\",\n\t                \"Programming Languages\",\n\t                \"Python Development\",\n\t                \"Quant\",\n\t                \"Quant Development\"\n\t            ],\n\t            \"inLanguage\": \"en-US\",\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"CommentAction\",\n\t                    \"name\": \"Comment\",\n\t                    \"target\": [\n\t                        \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\\\/#respond\"\n\t                    ]\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"WebPage\",\n\t            \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\\\/\",\n\t            \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\\\/\",\n\t            \"name\": \"Stock Market Data: Obtaining Data, Visualization &amp; Analysis in Python - Part II | IBKR Campus US\",\n\t            \"isPartOf\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#website\"\n\t            },\n\t            \"primaryImageOfPage\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\\\/#primaryimage\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\\\/#primaryimage\"\n\t            },\n\t            \"thumbnailUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/07\\\/python-blue-keyboard.jpg\",\n\t            \"datePublished\": \"2023-11-16T15:20:30+00:00\",\n\t            \"dateModified\": \"2023-11-17T20:52:14+00:00\",\n\t            \"description\": \"If you want to analyse the stock market data for all the stocks which make up S&P 500 then below code will help you\",\n\t            \"inLanguage\": \"en-US\",\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"ReadAction\",\n\t                    \"target\": [\n\t                        \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\\\/\"\n\t                    ]\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"ImageObject\",\n\t            \"inLanguage\": \"en-US\",\n\t            \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\\\/#primaryimage\",\n\t            \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/07\\\/python-blue-keyboard.jpg\",\n\t            \"contentUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/07\\\/python-blue-keyboard.jpg\",\n\t            \"width\": 1000,\n\t            \"height\": 563,\n\t            \"caption\": \"Python\"\n\t        },\n\t        {\n\t            \"@type\": \"WebSite\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#website\",\n\t            \"url\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/\",\n\t            \"name\": \"IBKR Campus US\",\n\t            \"description\": \"Financial Education from Interactive Brokers\",\n\t            \"publisher\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#organization\"\n\t            },\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"SearchAction\",\n\t                    \"target\": {\n\t                        \"@type\": \"EntryPoint\",\n\t                        \"urlTemplate\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/?s={search_term_string}\"\n\t                    },\n\t                    \"query-input\": {\n\t                        \"@type\": \"PropertyValueSpecification\",\n\t                        \"valueRequired\": true,\n\t                        \"valueName\": \"search_term_string\"\n\t                    }\n\t                }\n\t            ],\n\t            \"inLanguage\": \"en-US\"\n\t        },\n\t        {\n\t            \"@type\": \"Organization\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#organization\",\n\t            \"name\": \"Interactive Brokers\",\n\t            \"alternateName\": \"IBKR\",\n\t            \"url\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/\",\n\t            \"logo\": {\n\t                \"@type\": \"ImageObject\",\n\t                \"inLanguage\": \"en-US\",\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/logo\\\/image\\\/\",\n\t                \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2024\\\/05\\\/ibkr-campus-logo.jpg\",\n\t                \"contentUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2024\\\/05\\\/ibkr-campus-logo.jpg\",\n\t                \"width\": 669,\n\t                \"height\": 669,\n\t                \"caption\": \"Interactive Brokers\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/logo\\\/image\\\/\"\n\t            },\n\t            \"publishingPrinciples\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/about-ibkr-campus\\\/\",\n\t            \"ethicsPolicy\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/cyber-security-notice\\\/\"\n\t        },\n\t        {\n\t            \"@type\": \"Person\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/person\\\/0fd7dbae1e070042c10b53e8bdc551c5\",\n\t            \"name\": \"Ishan Shah\",\n\t            \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/author\\\/ishanshah\\\/\"\n\t        }\n\t    ]\n\t}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Stock Market Data: Obtaining Data, Visualization &amp; Analysis in Python &#8211; Part II","description":"If you want to analyse the stock market data for all the stocks which make up S&P 500 then below code will help you","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.interactivebrokers.com\/campus\/wp-json\/wp\/v2\/posts\/199012\/","og_locale":"en_US","og_type":"article","og_title":"Stock Market Data: Obtaining Data, Visualization &amp; Analysis in Python - Part II | IBKR Campus US","og_description":"If you want to analyse the stock market data for all the stocks which make up S&P 500 then below code will help you","og_url":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\/","og_site_name":"IBKR Campus US","article_published_time":"2023-11-16T15:20:30+00:00","article_modified_time":"2023-11-17T20:52:14+00:00","og_image":[{"width":1000,"height":563,"url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/07\/python-blue-keyboard.jpg","type":"image\/jpeg"}],"author":"Ishan Shah","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ishan Shah","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\/#article","isPartOf":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\/"},"author":{"name":"Ishan Shah","@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/person\/0fd7dbae1e070042c10b53e8bdc551c5"},"headline":"Stock Market Data: Obtaining Data, Visualization &amp; Analysis in Python &#8211; Part II","datePublished":"2023-11-16T15:20:30+00:00","dateModified":"2023-11-17T20:52:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\/"},"wordCount":797,"commentCount":0,"publisher":{"@id":"https:\/\/ibkrcampus.com\/campus\/#organization"},"image":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\/#primaryimage"},"thumbnailUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/07\/python-blue-keyboard.jpg","keywords":["Algo Trading","Data Visualization","GitHub","Matplotlib","Pandas","Python","Quandle","Stock Market Data","yfinance"],"articleSection":["Data Science","Programming Languages","Python Development","Quant","Quant Development"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\/","url":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\/","name":"Stock Market Data: Obtaining Data, Visualization &amp; Analysis in Python - Part II | IBKR Campus US","isPartOf":{"@id":"https:\/\/ibkrcampus.com\/campus\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\/#primaryimage"},"image":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\/#primaryimage"},"thumbnailUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/07\/python-blue-keyboard.jpg","datePublished":"2023-11-16T15:20:30+00:00","dateModified":"2023-11-17T20:52:14+00:00","description":"If you want to analyse the stock market data for all the stocks which make up S&P 500 then below code will help you","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/stock-market-data-obtaining-data-visualization-analysis-in-python-part-ii\/#primaryimage","url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/07\/python-blue-keyboard.jpg","contentUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/07\/python-blue-keyboard.jpg","width":1000,"height":563,"caption":"Python"},{"@type":"WebSite","@id":"https:\/\/ibkrcampus.com\/campus\/#website","url":"https:\/\/ibkrcampus.com\/campus\/","name":"IBKR Campus US","description":"Financial Education from Interactive Brokers","publisher":{"@id":"https:\/\/ibkrcampus.com\/campus\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ibkrcampus.com\/campus\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ibkrcampus.com\/campus\/#organization","name":"Interactive Brokers","alternateName":"IBKR","url":"https:\/\/ibkrcampus.com\/campus\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/logo\/image\/","url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2024\/05\/ibkr-campus-logo.jpg","contentUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2024\/05\/ibkr-campus-logo.jpg","width":669,"height":669,"caption":"Interactive Brokers"},"image":{"@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/logo\/image\/"},"publishingPrinciples":"https:\/\/www.interactivebrokers.com\/campus\/about-ibkr-campus\/","ethicsPolicy":"https:\/\/www.interactivebrokers.com\/campus\/cyber-security-notice\/"},{"@type":"Person","@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/person\/0fd7dbae1e070042c10b53e8bdc551c5","name":"Ishan Shah","url":"https:\/\/www.interactivebrokers.com\/campus\/author\/ishanshah\/"}]}},"jetpack_featured_media_url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/07\/python-blue-keyboard.jpg","_links":{"self":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/posts\/199012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/users\/517"}],"replies":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/comments?post=199012"}],"version-history":[{"count":0,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/posts\/199012\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/media\/193877"}],"wp:attachment":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/media?parent=199012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/categories?post=199012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/tags?post=199012"},{"taxonomy":"contributors-categories","embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/contributors-categories?post=199012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}