yfinance作为pandas_finance的替代方案



在雅虎于2021年年中做出改变后,希望使用yfinance作为pandas_finance的替代品来获取股票信息(行业、行业、个人资料(。我有一个大约50-100个股票代码的列表(未勾选的股票代码(,我希望通过这些列表来了解行业、行业和个人资料。这是我当前的代码,它对pandas_finance来说相对快速,但对yfinance来说需要几个小时:

sector = []
for i in range(len(unchecked_tickers)):
try: 
sec_data = yf.Ticker(unchecked_tickers[i]).info['sector']
sector.append(sec_data)
except:
sector.append('0')
unchecked_earnings_df["Sector"] = sector
industry = []
for i in range(len(unchecked_tickers)):
try: 
ind_data = yf.Ticker(unchecked_tickers[i]).info['industry']
industry.append(ind_data)
except:
industry.append('0')
unchecked_earnings_df["Industry"] = industry
desc = []
for i in range(len(unchecked_tickers)):
try: 
desc_data = yf.Ticker(unchecked_tickers[i]).info['longBusinessSummary']
desc.append(desc_data)
except:
desc.append('0')
unchecked_earnings_df["Desc"] = desc
unchecked_earnings_df.head()

每个yf。Ticker("Stock Ticker"(函数调用向存储股票数据的服务器发送请求。如果您多次执行此请求,可能需要一段时间。在某个时候,获得响应所需的时间会变得更长,这可能是服务器造成的,因为服务器不希望你在这么短的时间内发送很多请求,但我不确定这是否是真正的原因。当你测量每个yf前后的时间时,你甚至可以证明这一点。Ticker((函数调用并打印差异。为了解决响应时间长的问题,你不能做太多的事情。但你的代码中有很多可以改进的地方。主要的问题是,您有3个不同的for循环,它们都执行相同的迭代,并且都进行相同的yf。Ticker("stockticker"(函数在开始时调用,这是花费最多时间的函数。为了提高性能,您可以在一个for循环中完成三个for循环所做的所有事情,并调用yf。Ticker((函数,每次迭代一次。喜欢这个:

for i in range(len(unchecked_tickers)):
try: 
ticker = yf.Ticker(unchecked_tickers[i])
sector.append(ticker.info['sector'])
industry.append(ticker.info['industry'])
#.....
except:
sector.append('0')
industry.append('0')
#.....

这样你就得打电话给yf了。Ticker((函数对每个Ticker只执行一次,而不是三次,这会使程序速度快三倍。

相关内容

  • 没有找到相关文章

最新更新