![](/img/trans.png)
[英]getting financial data from yahoo finance with yfinance python
[英]Scrap yahoo finance "Similar to" data in Python with yfinance
我正在使用yfinance package 进行一个 Python 项目,我遇到了需要“类似于”数据的问题(下面的 ss)
我搜索了文档并评估了从 yf.Ticker(X) 和 yf.download(X) 收到的数据,其中 X 是股票代码,例如“MAIN”,但我一无所获。
返回数据:
ticker = yf.Ticker('MAIN')
similars = ticker.get_similar()
print(similars)
['PFLT','GAIN','ARCC','HRZN','HTGC']
知道如何实现这一目标吗? 如果这个 package 甚至有可能。我应该自己开始 web scarping 这个吗?
数据是必不可少的,但我没有义务使用雅虎财经。 如果您知道从另一个网站抓取此信息的 package,我将不胜感激。
好的,所以我做了一个解决方法。
我从以下网址下载股票数据: https://www.nasdaq.com/market-activity/stocks/screener
负责人csv:
Symbol, Name, Last Sale, Net Change, % Change, Market Cap, Country, IPO Year, Volume, Sector, Industry
或者,我可以使用 yfinance 获取此信息,但我仍然需要每只 NASADQ、纽约证券交易所(可能还有其他)上市股票的列表。
import pandas as pd
def similar_stocks(ticker):
# Static data
nasdaq_data = pd.read_csv("nasdaq_screener.csv")
ticker_row = nasdaq_data.loc[nasdaq_data['Symbol'] == ticker] # ticker_row: {DataFrame } Symbol, Name ... Industry
# Filter by sector
ticker_sector = ticker_row['Sector'].values[0] # Finance
filter_condition = nasdaq_data['Sector'] == ticker_sector
filtered_data = nasdaq_data[filter_condition] # By Finance
market_cap = ticker_row['Market Cap'].values[0]
treshold = 0.15 * market_cap # 15% of the company value
min_limit = str(market_cap - treshold)
max_limit = str(market_cap + treshold)
# Filter by market cap
filtered_data = filtered_data[filtered_data['Symbol'] != ticker]
filtered_data = filtered_data.query(min_limit + ' < `Market Cap` < ' + max_limit)
return filtered_data.Symbol.tolist() # ['ABCB', 'APAM', ... 'UTF', 'WSFS']
我按行业和可比市值过滤了原始数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.