gpt4 book ai didi

python - 迭代 yfinance 股票代码列表的最快方法是什么?

转载 作者:行者123 更新时间:2023-12-02 18:36:16 28 4
gpt4 key购买 nike

我使用 python yfinance yahoo API 进行股票数据检索。现在我得到的是 Hook 比率,这是公司价格与其增长和 yield 相关的指标。我从这里下载了一个 csv:https://www.nasdaq.com/market-activity/stocks/screener 。它正好有 8000 只股票。

我所做的是获取符号列表,并迭代它以访问雅虎股票。然后我使用ticker.info 方法返回一个字典。我通过 8000 个符号重复这个过程。它以每分钟 6 个符号的速度运行,这是不可行的。是否有使用其他 API 或其他结构的更快方法?我不关心 API,只要我能获得增长、 yield 、每股 yield 等基本信息即可。

这是代码:

import pandas as pd
import yfinance as yf


data = pd.read_csv("data/stock_list.csv")
symbols = data['Symbol']
for symbol in symbols:
stock = yf.Ticker(symbol)
try:
if stock.info['pegRatio']:
print(stock.info['shortName'] + " : " + str(stock.info['pegRatio']))
except KeyError:
pass

最佳答案

似乎当需要从 Ticker.info 属性获取某些数据时,就会发出 HTTP 请求来获取它们。多线程将有助于改善问题。试试这个:-

import pandas as pd
import yfinance as yf
import concurrent.futures

data = pd.read_csv('data/stock_list.csv')

def getPR(symbol):
sn = None
pr = None
try:
stock = yf.Ticker(symbol)
pr = stock.info['pegRatio']
sn = stock.info['shortName']
except Exception:
pass
return (sn, pr)


with concurrent.futures.ThreadPoolExecutor() as executor:
futures = {executor.submit(getPR, sym): sym for sym in data['Symbol']}
for future in concurrent.futures.as_completed(futures):
sn, pr = future.result()
if sn:
print(f'{sn} : {pr}')

关于python - 迭代 yfinance 股票代码列表的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68725484/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com