【量化分析】用mplfinance显示交易图时,处理 Expect data.index as DatetimeIndex?

目录


一、说明

        我打算从比特币数据中获取烛台图。这是我在加载 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 读入数据时指定索引

  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]

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年8月6日
下一篇 2023年8月8日

相关推荐