目录
一、说明
二、程序代码和出错描述
三、合理化建议
3.1 读入数据时指定索引
3.2 读入数据后,使用数据前指定日期(时间戳)索引
一、说明
我打算从比特币数据中获取烛台图。这是我在加载 csv 文件后选择我想要的数据框的代码。然而,用mplfinance显示的时候,总不能通过,解决后总结出,这个问题是,如何指定pandas的dataFrame的时间戳为索引的问题。解决后记录备忘。
显示如下提示:
Expect data.index as DatetimeIndex?
二、程序代码和出错描述
读入数据代码:
df['Date'] = pd.to_datetime(df['Date'])
start_date = '2016-02-27'
end_date = '2021-02-27'
mask = (df['Date'] >= start_date) & (df['Date'] <= end_date)
df = df.loc[mask]
df
然后,我输入了制作烛台图的代码,如下所示:
import matplotlib.pyplot as plt
! pip install --upgrade mplfinance
import mplfinance as mpf
import matplotlib.dates as mpl_dates
mpf.plot(df, type = 'candle', style = 'charles',
title = 'Bitcoin Price',
ylabel = 'Price (USD$)',
volume = True,
ylabel_lower = 'Shares \nTraded',
mav = (3,6,9),
savefig = 'chart-mplfinance.png')
执行代码后,出现如下错误提示:
"TypeError: Expect data.index as DatetimeIndex".
三、合理化建议
有两种简单的方法可以确保您的数据框将 pandas.DatetimeIndex 作为数据框索引:
3.1 读入数据时指定索引
-
调用 read_csv() 时,指明要将哪一列用于索引(应该是包含日期/日期时间的列),并设置 kwarg parse_dates=True。
这将自动将日期时间列(通常是 csv 文件中的字符串)转换为 DatetimeIndex 对象,并将其设置为索引
您可以在 mplfinance 存储库的示例中看到这样做,例如,单击此处,查看基本用法下,您可以在调用 read_csv() 时看到:
index_col=0、parse_dates=True。(案例地址)
3.2 读入数据后,使用数据前指定日期(时间戳)索引
使用 pandas.DatetimeIndex() 构造函数。例如,取代上述出错代码,
df['Date'] = pd.to_datetime(df['Date'])
df.index = pd.DatetimeIndex(df['Date'])
注:一旦数据框具有 DatetimeIndex,您就不需要在下一部分代码中使用掩码,但可以简单地按如下方式切片:
start_date = '2016-02-27'
end_date = '2021-02-27'
df = df.loc[start_date:end_date]