【问题标题】:yfinance api return multiple ticker datayfinance api 返回多个股票数据
【发布时间】:2021-03-23 16:48:36
【问题描述】:

我正在尝试从 yfinance API 中提取多个代码数据并将其保存到 csv 文件中(我总共有 1000 个代码需要获取数据,该数据是整个日期表,打开,高, low, close, volume 等),到目前为止,我可以使用以下 Python 代码成功获取 1 个股票代码的数据:

import yfinance as yf

def yfinance(ticker_symbol):
    ticker_data = yf.Ticker(ticker_symbol)
    tickerDF = ticker_data.history(period='1d', start='2020-09-30', end='2020-10-31')
    
    print(tickerDF)

yfinance('000001.SS')

但是,如果我尝试使用多个代码,这将不起作用。遵循 yfinance 文档,其中提到多个代码使用:

tickers = yf.Tickers('msft aapl goog')
# ^ returns a named tuple of Ticker objects

# access each ticker using (example)
tickers.tickers.MSFT.info
tickers.tickers.AAPL.history(period="1mo")
tickers.tickers.GOOG.actions

我在这里有几个问题,文档使用诸如“aapl”之类的字符串,我的代码都是数字格式,例如“000001.SS”,“.SS”部分在传递时被证明是一个问题进入代码:

tickers.tickers.000001.SS.history(period="1mo")
# Clearly this wont for for a start

我遇到的下一个问题是,即使我像这样将 3 个代码传递给我的函数:

yfinance('000001.SS 000050.KS 00006.KS')
# similar to yfinance docs of tickers = yf.Tickers('msft aapl goog')

我收到如下错误:

AttributeError: 'Tickers' object has no attribute '000001.SS'

(我也尝试将它们运行到一个 for 循环中并将每个传递给 Tickers 对象,但得到相同的错误。)

我现在卡住了,我不知道如何将多个代码传递给 yfinance 并取回我想要的数据,并且文档不是很有帮助。

有人能帮我解决这个问题吗?

【问题讨论】:

标签: python api yfinance


【解决方案1】:

你能不能只将它们存储在一个数组中,指定类型为 dtype 对象,然后使用它从中提取数据。

import yfinance as yf
import numpy as np

tickers = ['msft', 'aapl', 'goog']

totalPortfolio = np.empty([len(tickers)], dtype=object)

num = 0
for ticker in tickers:
    totalPortfolio[num] = yf.download(ticker, start='2020-09-30', end='2020-10-31', interval="1d")
    num = num + 1

【讨论】:

  • 嗨,Scott,感谢您的回复,我在 AWS 的 s3 存储桶上的 csv 文件中有 1000 个代码,所以目前要阅读这些代码,我正在使用 boto3 和一个 for 循环来填充空代码列表。 numpy 在这里有什么帮助?只是想知道?
  • 我使用它是为了使具有适当长度的数组为空,并且我可以将 dtype 标识为一个对象,以便可以将代码存储在其中。如果有更有效的方法可以省略 numpy,请告诉我。我是根据熟悉程度这样做的。
猜你喜欢
  • 2011-01-17
  • 2022-09-25
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 2020-06-13
  • 1970-01-01
  • 2021-04-07
  • 2020-06-18
相关资源
最近更新 更多