- Я пытаюсь получить данные NSE, используя Yahoo Finance в Python. Я использую файл EQUITY_L.csv, который доступен на веб-сайте NSE, для получения минимальной и максимальной цены акций за определенный период, а также пытаюсь получить текущую рыночную цену и рыночную капитализацию. Мне удалось получить текущую рыночную цену, но не удалось получить рыночную капитализацию. Я думаю, что где-то проблема в файле CSV. Потому что код работает нормально, если мы используем массив жестко закодированных тикеров.
- Также компании, которые не были перечислены в списке определенный период также получает ошибки. Так как же исключить те компании, которые не были перечислены в указанный период.
KeyError Traceback (most recent call last)
Cell In[59], line 19
17 stock = yf.Ticker(ticker)
18 print(ticker)
---> 19 market_cap = stock.info["marketCap"]
20 print(market_cap)
21 result = get_data(
22 ticker, start_date= start, end_date= end, interval= "1mo"
23 )
KeyError: 'marketCap'
Любые рекомендации будут полезны. Спасибо. Ниже приведен код.
import yfinance as yf
import datetime
from yahoo_fin.stock_info import get_data
from yahoo_fin.stock_info import get_quote_table
from yahoo_fin.stock_info import get_live_price
import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)
import pandas as pd
start = "2023/01/22"
end = "2023/05/31"
equity_details = pd.read_csv('EQUITY_L.csv')
data = []
for name in equity_details.SYMBOL[:1500]:
ticker = (f'{name}.NS')
stock = yf.Ticker(ticker)
print(ticker)
market_cap = stock.info["marketCap"]
print(market_cap)
result = get_data(
ticker, start_date= start, end_date= end, interval= "1mo"
)
cmp= get_live_price(ticker)
d= {
"Ticker": ticker,
"Minimum": min(result.low),
"Maximum": max(result.high),
"CMP": cmp,
"MCap": market_cap,
}
data.append(d)
pd.DataFrame(data).to_excel("foo.xlsx", float_format="%.0f", index=False)
Подробнее здесь: https://stackoverflow.com/questions/785 ... r-tracebac