Yfinance:同时下载多只股票的多个参数(beta、市值等)?
Posted
技术标签:
【中文标题】Yfinance:同时下载多只股票的多个参数(beta、市值等)?【英文标题】:Yfinance: downloading multiple parameters (beta, mkt cap, etc.) for multiple stocks at the same time? 【发布时间】:2021-06-05 03:38:47 【问题描述】:我正在尝试使用 Yfinance 将一些标准普尔股票(行)的行业、beta 和市值(列)等信息下载到单个熊猫数据框中>)。在下面的简化示例中,它是 3 只股票的行业和 beta。
-
如何使代码自动化,这样我就不必每次都使用 info.get() 了?除了行业和测试版之外,我计划下载大约 10 个不同的参数...
将当前输出(列表)转换为我上面概述的 pandas 数据框的最佳方法是什么?谢谢!
import yfinance as yf
stocks = ['JNJ', 'MSFT','GS']
df=[]
for stock in stocks:
info = yf.Ticker(stock).info
industry = info.get('industry')
beta = info.get('beta')
df.extend((stock,industry,beta))
print(df)
===== 输出 ====
['JNJ', 'Drug Manufacturers—General', 0.711267, 'MSFT', 'Software—Infrastructure', 0.812567, 'GS', 'Capital Markets', 1.484832]
【问题讨论】:
【参考方案1】:'.info'的返回值是dict格式,拿到后就可以解压了。将其放入数据框中并列出。
import yfinance as yf
import pandas as pd
stocks = ['JNJ', 'MSFT','GS']
df = pd.DataFrame()
for stock in stocks:
info = yf.Ticker(stock).info
industry = info['industry']
beta = info['beta']
marketcap = info['marketCap']
df = df.append('Stock':stock,'Industry':industry,'Beta':beta,'marketcap':marketcap, ignore_index=True)
print(df)
Beta Industry Stock marketcap
0 0.711267 Drug Manufacturers—General JNJ 4.103370e+11
1 0.812567 Software—Infrastructure MSFT 1.746778e+12
2 1.484832 Capital Markets GS 1.132026e+11
指定第一列
df = pd.DataFrame(columns=['Stock','Industry','Beta','Marketcap'])
最后,更改列顺序。
df.columns = ['Stock','Industry','Beta','Marketcap']
【讨论】:
如果我的回答对你有帮助,请考虑接受它作为正确答案并给它1+,谢谢! 谢谢! 2个问题:如何确保 df 的列按我想要的顺序排列?我想在第一列中有股票代码。***其次,我怎样才能自动化 info['xyz'] 函数,这样我就不必一遍又一遍地为行业、市值、beta 编写它等等?我试过并得到错误“unhashable type:'list'” 由于它是添加到一个空数据框中的,因此列顺序是按字母顺序排列的,因此您可以在第一个数据框中指定列,也可以在最后将列顺序更改为所需的列。您可以在第一个数据框中指定列,也可以在最后将顺序更改为所需的列。以上是关于Yfinance:同时下载多只股票的多个参数(beta、市值等)?的主要内容,如果未能解决你的问题,请参考以下文章
YFinance -tickerData.info 不适用于某些股票
用Pandas Dataframe支撑起多只金融产品股票的数据内部形态