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

标签 python python-3.x mplfinance

我打算从比特币数据中获取烛台图。
这是我在加载 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: Expect data.index as 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作为数据帧索引:

  • 打电话时read_csv()指示要用于索引的列(应该是包含日期/日期时间的列),并设置 kwarg parse_dates=True .这将自动将日期时间列(通常是 csv 文件中的字符串)转换为 DatetimeIndex对象,并将其设置为索引您可以在 mplfinance 存储库的示例中看到此操作,for example, click here, and look under basic usage在哪里可以看到 index_col=0, parse_dates=True 在调用 read_csv() .
  • 使用 pandas.DatetimeIndex()构造函数。例如,而不是 你写的,df['Date'] = pd.to_datetime(df['Date']) , 你会写:

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

    附带说明一下,一旦数据帧具有 DatetimeIndex,您就不需要 mask在下一段代码中,但可以简单地切片 如下:
    start_date = '2016-02-27'
    end_date   = '2021-02-27'
    df = df.loc[start_date:end_date]
    
    嗯。

    关于python - 我如何将 Expect data.index 作为 DatetimeIndex 处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67225879/

    相关文章:

    Python 两个数组,获取半径内的所有点

    python - 在 Python 中将长方法链分成多行

    python - 我怎样才能改变我的代码来反转某些子字符串?

    python - 是否可以将两个图表连接起来,一个用 matplotlib.pyplot 绘制,另一个用 mplfinance 绘制成同一个图形。例如;相同的图像

    python - 如何在不重复的情况下从笛卡尔积中采样

    python - 使用 feedparser 检查 RSS 提要是否有新内容

    python - 如何将 int 的值与元组列表中的同一组组合?

    python - 如何使用 mplfinance 在绘图中的其他线条上方显示蜡烛?

    python - 从 mplfinance 重新绘制 Candlestick_ohlc 的最有效方法

    python - Gensim on windows : C extension not loaded, 训练会很慢