如何将 Expect data.index 作为 DatetimeIndex 处理?

2023-11-25

我计划从比特币数据中获取烛台图。 这是我的代码,用于在加载 csv 文件后选择我想要的数据框。

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:期望 data.index 作为 DatetimeIndex”。 所以我在谷歌上查找了解决方案,并尝试了这个:

df = dict()
df['Date'] = []
df['High'] = []
df['Low'] = []
df['Open'] = []
df['Close'] = []
df['Volume'] = []
for dict in df:
    df['Date'].append(datetime.datetime.fromtimestamp(t).strftime('%Y-%m-%d %H:%M:%S')
    df['High'].append(dict['High'])
    df['Low'].append(dict['Low'])
    df['Open'].append(dict['Open'])
    df['Close'].append(dict['Close'])
    df['Volume'].append(dict['Vol'])
print("df:", df)
pdata = pd.DataFrame.from_dict(df) 
pdata.set_index('Date', inplace=True)
mpf.plot(pdata)

这次,它说“语法无效” 我不知道我哪里出错了,有什么我错过的吗?


有两种简单的方法可以确保您的数据框具有pandas.DatetimeIndex作为数据帧索引:

  1. 打电话时read_csv()指示您想要将哪一列用于索引(应该be包含日期/日期时间的列),并设置 kwargparse_dates=True.
     
    这将自动将日期时间列(通常是 csv 文件中的字符串)转换为DatetimeIndex目的,并将其设置为索引
     
    您可以在 mplfinance 存储库的示例中看到这一点,例如,点击这里,查看基本用法你可以在哪里看到index_col=0, parse_dates=True在通话中read_csv().
     
     

  2. Use the pandas.DatetimeIndex()构造函数。
     
    例如,代替你写的,
    df['Date'] = pd.to_datetime(df['Date']), 你会写:

    df.index = pd.DatetimeIndex(df['Date'])

作为旁注,一旦数据帧具有 DatetimeIndex,您就不需要mask在下一段代码中,但可以简单地slice如下:

start_date = '2016-02-27'
end_date   = '2021-02-27'
df = df.loc[start_date:end_date]

hth.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Expect data.index 作为 DatetimeIndex 处理? 的相关文章

随机推荐