当我从 api (yfinance) 获取数据时,Numpy Array 缺少日期

Posted

技术标签:

【中文标题】当我从 api (yfinance) 获取数据时,Numpy Array 缺少日期【英文标题】:Numpy Array missing dates when I get data from an api (yfinance) 【发布时间】:2020-09-13 20:40:22 【问题描述】:

我正在尝试在 Numpy 数组上收集股票数据,其中股票价格的日期位于第一列。当我将数据直接转换为数组时,我会得到[ 30.99 32.08 32.12 ... 318.66 315.77 323.5 ] 这是我的代码。

import numpy as np
import yfinance as yf

def price(ticker):
    company = yf.Ticker(ticker)
    price = company.history(period="10y")
    array = np.array(price)
    return array
aapl = price("AAPL")
Aaple = aapl[:, 0]

如果我使用数据框,我会得到这个

def price(ticker):
    company = yf.Ticker(ticker)
    price = company.history(period="10y")
    df = pd.DataFrame(price)
    df.drop(df.columns[i], axis=1)
    return df
aapl = price("AAPL")
print(aapl)


                  Open    High     Low   Close     Volume  Dividends  Stock Splits
Date                                                                          
2010-05-27   30.99   31.40   30.81   31.33  166570600       0.00           0.0
2010-05-28   32.08   32.08   31.33   31.77  203903700       0.00           0.0
...            ...     ...     ...     ...        ...        ...           ...

2020-05-22  315.77  319.23  315.35  318.89   20450800       0.00           0.0
2020-05-26  323.50  324.20  316.50  316.73   30880340       0.00           0.0

我可以重置数据帧索引df.reset_index() 并能够访问日期。为什么我无法访问数组中的日期,解决方法是什么?我不想使用数据帧,因为数组要快得多。

【问题讨论】:

确实是个好问题 【参考方案1】:

我遇到了同样的问题,这些是周末和节假日,市场在这些日期休市。转换为 numpy 数组是有问题的,因为日期是 datetimestring,而其余数据是 float。要保留第一列,您需要将其转换为 floatint,例如使用儒略日函数 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Timestamp.to_julian_date.html

【讨论】:

是的,但 yfinance 只会显示开市日 当您尝试将数据转换为 numpy 数组时,日期将被丢弃,因为它们与其余数据 float 具有不同的数据类型(datetimestring)。如果您真的想保留第一列,则需要将其转换为 floatint(例如参见 Julian day pandas.pydata.org/pandas-docs/stable/reference/api/…)

以上是关于当我从 api (yfinance) 获取数据时,Numpy Array 缺少日期的主要内容,如果未能解决你的问题,请参考以下文章

从 yfinance 操纵日期

yfinance API 历史数据不正确

当我从数据库 Web Api .Net 中获取数据时的空列表

当我从 Flutter 中的 API 获取数据时出现问题。请帮我获取数据并显示它。我这样的数据[关闭]

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

使用 Yfinance 获取市值数据