【问题标题】:Getting marketcap from yahoo finance从雅虎金融获取市值
【发布时间】:2021-06-09 11:17:26
【问题描述】:

我有一个很长的股票清单,我想知道它们的市值

假设我将以下股票存储为列表


test = ['A', 'AA', 'AA-W', 'AAAB', 'AAAG', 'AAAGY', 'AAAIF', 'AAALF', 'AAALY', 'AAAP', 'AAARF', 'AABA', 'AABB', 'AABC',
        'AABNF', 'AABVF', 'AAC', 'AAC', 'AAC-U', 'AAC-WS', 'AAC1', 'AACAF', 'AACAY', 'AACB', 'AACC', 'AACE', 'AACEU',
        'AACEY', 'AACH', 'AACIQ', 'AACMF', 'AACMZ', 'AACOU', 'AACPF', 'AACPU', 'AACQ', 'AACQU', 'AACQW']

如何通过雅虎财经熊猫获得市值?

我现在使用的代码如下,但它会为每只股票打印“错误:...”:

import pandas as pd
from pandas_datareader import data as pdr
import yfinance as yf

test = ['A', 'AA', 'AA-W', 'AAAB', 'AAAG', 'AAAGY', 'AAAIF', 'AAALF', 'AAALY', 'AAAP', 'AAARF', 'AABA', 'AABB', 'AABC',
        'AABNF', 'AABVF', 'AAC', 'AAC', 'AAC-U', 'AAC-WS', 'AAC1', 'AACAF', 'AACAY', 'AACB', 'AACC', 'AACE', 'AACEU',
        'AACEY', 'AACH', 'AACIQ', 'AACMF', 'AACMZ', 'AACOU', 'AACPF', 'AACPU', 'AACQ', 'AACQU', 'AACQW']
    
for ticker in test:
    try:
        marketCap = pdr.get_quote_yahoo(ticker)['marketCap']
        print(marketCap)
    except:
        print('Error with: ', ticker)
  

我为单个股票尝试了 pdr.get_quote_yahoo 包装器,它运行良好,但不适用于我正在使用的列表。我的代码出了什么问题?

以下作品:

marketCap = pdr.get_quote_yahoo('A')['marketCap'])
print(marketCap)

【问题讨论】:

  • 你的“works”示例中有一个额外的“)”会导致它失败,这让我认为这段代码不是你实际运行的精确复制/粘贴。您发布的代码看起来没有任何问题(循环遍历字符串列表与将单个字符串传递给 get_quote_yahoo 方法应该具有相同的行为)。

标签: python pandas yahoo-finance algorithmic-trading quantitative-finance


【解决方案1】:

实际上,您的代码可以正常工作,尽管有错误。原因很简单 - 许多代码与任何已知股票都不对应。我的代码结果如下:

    A    44845838336
    Name: marketCap, dtype: int64
    AA    6901355520
    Name: marketCap, dtype: int64
    Error with:  AA-W
    Error with:  AAAB
    Error with:  AAAG
    Error with:  AAAGY
    Error with:  AAAIF
    AAALF    1551833984
    Name: marketCap, dtype: int64
    AAALY    1662833024
    Name: marketCap, dtype: int64
    Error with:  AAAP
    Error with:  AAARF
    Error with:  AABA
    AABB    46516112
    Name: marketCap, dtype: int64
    Error with:  AABC
    Error with:  AABNF
    AABVF    31826214
    Name: marketCap, dtype: int64
    AAC    1218749952
    Name: marketCap, dtype: int64
    AAC    1218749952
    Name: marketCap, dtype: int64
    Error with:  AAC-U
    Error with:  AAC-WS
    Error with:  AAC1
    AACAF    9106046976
    Name: marketCap, dtype: int64
    AACAY    9020131328
    Name: marketCap, dtype: int64
    Error with:  AACB
    Error with:  AACC
    Error with:  AACE
    Error with:  AACEU
    Error with:  AACEY
    Error with:  AACH
    Error with:  AACIQ
    Error with:  AACMF
    Error with:  AACMZ
    Error with:  AACOU
    Error with:  AACPF
    Error with:  AACPU
    AACQ    904719296
    Name: marketCap, dtype: int64
    Error with:  AACQU
    Error with:  AACQW

如您所见,对某些人来说,您有价值观,而对大多数人来说,您有错误。当我在finance.yahoo.com 中检查几个代码时,例如 AA-W、AAAB,我没有看到任何与该代码对应的股票。例如,AACQW 不对应任何已知股票,而 AACQ(股票 NCM)和 AACQU(股票 NMS)是。事实上,AACQ 和 AACQU 都适用于 Origin Materials Inc

有些股票的 yahoo API 不获取结果,但 finance.yahoo.com 的 Web 应用程序获取结果。例如,AACQ 的市值为 904.719M,您的网页结果如下:

对于此类股票,您可能想使用一些网页屏幕抓取应用程序来获取结果,但它们可能并不准确(他们可能会报告结果,例如 1.29T)。这是一个这样的应用程序的link

【讨论】:

    猜你喜欢
    • 2018-09-24
    • 2010-11-21
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多