dah*_*o37 2 python finance data-science yfinance
我使用 python yfinance yahoo API 进行股票数据检索。现在我得到的是挂钩比率,这是公司价格与其增长和收益相关的指标。我从这里下载了一个 csv: https: //www.nasdaq.com/market-activity/stocks/screener。它正好有 8000 只股票。
我所做的是获取符号列表,并迭代它以访问雅虎股票。然后我使用ticker.info 方法返回一个字典。我通过 8000 个符号重复这个过程。它以每分钟 6 个符号的速度运行,这是不可行的。是否有使用其他 API 或其他结构的更快方法?我不关心 API,只要我能获得增长、收益、每股收益等基本信息即可。
这是代码:
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
Run Code Online (Sandbox Code Playgroud)
小智 5
似乎当需要来自 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}')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7145 次 |
| 最近记录: |