使用 Yfinance 获取市值数据
getting Market cap data using Yfinance
我试图使用 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 来规避这个问题。
使用上述 url 中给出的修复程序修改后的代码是:
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 库,但在值数据框中,所有值都填充为错误值,而不是实际市值值,如图所示:
我不明白我哪里出错了。任何帮助将不胜感激
这是可能会解决您的问题的示例代码
import yfinance as yf
import numpy as np
from pandas_datareader import data
Tickers=["AAPL","GOOG","RY","HPQ"]
for str in Tickers:
tickers = [(str)]
print(tickers)
market_cap=int(data.get_quote_yahoo(str)['marketCap'])
print(market_cap)
如果我误解了您的问题或您可能需要的任何改进,请告诉我
可能是您的 excel 文件中的某些代码未列出,或者存在某种命名问题。
所以我解决了尝试使用 data.get_qoute_yahoo('ticker')
一个一个地下载股票然后 with pd.concat()
我获得了我的数据框。
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(web.get_quote_yahoo(ticker)['marketCap'])
except:
print('Error with: ', ticker)
df=pd.concat(market_data, axis=0)
display(df)
我试图使用 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 来规避这个问题。
使用上述 url 中给出的修复程序修改后的代码是:
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 库,但在值数据框中,所有值都填充为错误值,而不是实际市值值,如图所示:
我不明白我哪里出错了。任何帮助将不胜感激
这是可能会解决您的问题的示例代码
import yfinance as yf
import numpy as np
from pandas_datareader import data
Tickers=["AAPL","GOOG","RY","HPQ"]
for str in Tickers:
tickers = [(str)]
print(tickers)
market_cap=int(data.get_quote_yahoo(str)['marketCap'])
print(market_cap)
如果我误解了您的问题或您可能需要的任何改进,请告诉我
可能是您的 excel 文件中的某些代码未列出,或者存在某种命名问题。
所以我解决了尝试使用 data.get_qoute_yahoo('ticker')
一个一个地下载股票然后 with pd.concat()
我获得了我的数据框。
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(web.get_quote_yahoo(ticker)['marketCap'])
except:
print('Error with: ', ticker)
df=pd.concat(market_data, axis=0)
display(df)