如何显示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 次打印)。我怎样才能将这个时间包含在索引中,同时仍然保持类型为数据时间?不明白为什么索引栏里没有时间
除了好奇之外,我尝试这样做的第二个原因是我想看看数据的下载时间。
首先更正几处:
- 虽然您可能正在使用 mplfinance 可视化您的财务数据,但您正在使用 Pandas DataReader 下载它。
- 您的问题实际上是关于 Pandas DatetimeIndex class 的问题(mplfinance 需要它作为您要绘制的数据框的索引)。
- 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
我的代码如下:
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 次打印)。我怎样才能将这个时间包含在索引中,同时仍然保持类型为数据时间?不明白为什么索引栏里没有时间
除了好奇之外,我尝试这样做的第二个原因是我想看看数据的下载时间。
首先更正几处:
- 虽然您可能正在使用 mplfinance 可视化您的财务数据,但您正在使用 Pandas DataReader 下载它。
- 您的问题实际上是关于 Pandas DatetimeIndex class 的问题(mplfinance 需要它作为您要绘制的数据框的索引)。
- 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