如何显示mplfinance下载数据的时间(索引类型datetime)

How to show time of data downloaded by mplfinance (index type datetime)

我的代码如下:

import pandas_datareader as web
import datetime as dt

data = web.DataReader('AMZN', 'yahoo', dt.datetime(2021, 5, 3), dt.datetime(2021, 5, 5))
# read stock price of AMZN from Yahoo finance from 5/3/2021 to 5/5/2021

print(data)
print(data.index)
print(data.index[0])

输出:

有趣的是索引列没有显示时间(它的类型是datetime),看第一个打印。但是,如果我尝试查看单独的行,它会包含时间(00:00:00,请参阅第 3 次打印)。我怎样才能将这个时间包含在索引中,同时仍然保持类型为数据时间?不明白为什么索引栏里没有时间

除了好奇之外,我尝试这样做的第二个原因是我想看看数据的下载时间。

首先更正几处:

  1. 虽然您可能正在使用 mplfinance 可视化您的财务数据,但您正在使用 Pandas DataReader 下载它。
  2. 您的问题实际上是关于 Pandas DatetimeIndex class 的问题(mplfinance 需要它作为您要绘制的数据框的索引)。
  3. DatetimeIndex 中的类型不是 datetime.datetime,而是 numpy.datetime64。也就是说,如果您尝试将其提取为 data.index[0],那么 pandas 将 return 键入 pandas.Timestamp。 (See also here).

回答您的问题:您看到的是 Pandas DatetimeIndex 的一个特性:如果它检测到 DatetimeIndex 中所有时间戳的时间部分都是 00:00:00,然后为了保存 space 和避免混淆,它会自动 而不是 打印时间部分。 (另请参阅 有人询问如何 删除 时间部分。)

关于 Pandas DataReader,下载时间不会包含在数据框中,并且由于您请求的是每日数据(不是日内数据)每一行对应特定日期,指的是该日期的整个交易日(开盘价、最高价、最低价、收盘价),而不是指特定时间,因此数据不会包含时间(或将包含00:00:00 ) 各种日期。

HTH.

P.S。我不确定您是否可以使用 pandas 数据读取器从 'yahoo' 获取日内数据。可能是;我不知道。但我相信您 可以 通过在调用中指定 "av-intraday" 使用 Alpha Vantage 获取日内数据。

P.P.S。我不明白你为什么想知道你实际下载数据的时间。也就是说,您可以在下载时获取当前时间,并将其存储在某个地方,例如:

import pandas_datareader as web
import datetime as dt
data = web.DataReader(...)
download_time = dt.datetime.now().strftime("%D %H:%M:%S")
print(download_time)

05/23/21 11:05:02