Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

getting Market cap data using Yfinance

I was trying to get market cap data of stocks using yfinance. Here is my code:

import yfinance as yf
import numpy as np
from pandas_datareader import data
import pandas as pd
import pandas_datareader as web

tickers=pd.read_excel('C:/Users/Administrator/Desktop/bse.xlsx')
UndervaluedCompanies=[]

market_cap_data = web.get_quote_yahoo(tickers)['marketCap']

# Get the P/E ratio directly
pe_data = web.get_quote_yahoo(tickers)['trailingPE']

# print stock and p/e ratio
for stock, pe in zip(tickers, pe_data):
print(stock, pe)

By using this code I get the following error:

*** IndexError: list index out of range

I attach screenshots of the error and also of the DataFrame

Error

Tickers DataFrame

I referred to the url as specified below as to circumvent this issue.

Yfinance IndexError: list index out of range

The modified code made using the fix given in the above url is:

import yfinance as yf
import pandas as pd
import pandas_datareader as web
import pandas_datareader as pdr

from pandas_datareader import data

data =pd.read_excel('C:/Users/Administrator/Desktop/bse.xlsx')
ticker = data['Ticker']
rows = []

for ticker in ticker:

  try:
    market_data =  data.get_quote_yahoo(ticker)['marketCap']
  except IndexError as e:
    print(f'{ticker}: {e}')  # print the ticker and the error
    print('\n')

By using the above code I am getting an error as described in the screenshot:

By using the code I am getting the following error:

KeyError: 'regularMarketPrice

The screenshot of the same is as shown:

Error

On clicking on the file which is mentioned in error we can see that the error is caused by the function def_read_lines. The screenshot is attached below:

Functions where error occours

I did try using the yahooquery library but in the values dataframe all the values are populated as error values and not the actual market cap values as shown:

values dataframe

I am not understanding where am I going wrong. Any help will be appreciated

like image 616
Huzefa Sadikot Avatar asked Sep 06 '25 02:09

Huzefa Sadikot


1 Answers

It could be that some of the ticker in your excel file aren't listed or there is some kind of naming issue. So i solved using try to download the stocks one by one with data.get_quote_yahoo('ticker') and then with pd.concat() I obtained my dataframe.

import yfinance as yf
from pandas_datareader import data
        
tickers=pd.read_excel('C:/Users/Administrator/Desktop/bse.xlsx')
    
market_data=[]
  for ticker in tickers:
      print(ticker)
           try: 
               market_data.append(data.get_quote_yahoo(ticker)['marketCap'])
           except:
               print('Error with: ', ticker)
df=pd.concat(market_data, axis=0)
display(df)
like image 159
ILTRENTA Avatar answered Sep 08 '25 01:09

ILTRENTA