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、市值等)?的主要内容,如果未能解决你的问题,请参考以下文章

用 Python 通过雅虎财经获取股票数据

YFinance -tickerData.info 不适用于某些股票

python的yfinance股票历史记录不起作用

用Pandas Dataframe支撑起多只金融产品股票的数据内部形态

yf.Tickers 从 yfinance 下载多个代码的信息并动态访问每个代码

在数据框中迭代并保存每个股票历史数据,而无需在 CSV 中下载