【发布时间】:2021-03-05 23:22:05
【问题描述】:
我试图使用 yfinance 获取股票的市值数据。这是我的代码:
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)
通过使用此代码,我收到以下错误:
*** IndexError: 列表索引超出范围
我附上错误的屏幕截图以及 DataFrame 的屏幕截图
为了规避这个问题,我参考了下面指定的 url。
Yfinance IndexError: list index out of range
使用上述网址中给出的修复修改的代码是:
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')
通过使用上面的代码,我收到了屏幕截图中描述的错误:
通过使用代码,我收到以下错误:
KeyError: 'regularMarketPrice
同样的截图如下:
点击错误提到的文件,我们可以看到错误是由函数 def_read_lines 引起的。下面附上截图:
我确实尝试使用 yahooquery 库,但在 values 数据框中,所有值都填充为错误值,而不是实际市值值,如图所示:
我不明白我哪里出错了。任何帮助将不胜感激
【问题讨论】:
-
你在哪里使用
yfinance库? -
首先我导入它:import yfinance as yf 然后我在这行中使用它来计算市值:market_data = data.get_quote_yahoo(ticker)['marketCap']
-
BHARTIARTL.NS nan;ASHOKLEY.NS nan;AUROPHARMA.NS 15.902734;我们能够获得三个问题的 market_cap_data,但结果是 NaN,因为 pe_data 是两个问题的 NaN。这三只股票是 ['BHARTIARTL.NS'、'ASHOKLEY.NS' 和 'AUROPHARMA.NS']。
-
它适用于某些股票,但如果您选择多只股票,则会出错。我的意思是非常大的值。在这种情况下,我正在尝试计算在 BSE 中注册的所有股票的市值
-
如果有一些问题而不是全部问题,那么所有问题在哪里?它们是否以文本形式提供?