【问题标题】:How to properly format x-axis date from dataframe?如何正确格式化数据框中的 x 轴日期?
【发布时间】:2019-08-12 20:06:18
【问题描述】:

我正在为数据框中的时间图而苦苦挣扎。经过多次尝试和几乎每一个错误,我只是用set_xtickslabels 绘制了刻度,但日期与图表不匹配......在每个打印的刻度上显示列表中的下一个项目。而且当指向图表日期时,格式不正确。这并不奇怪,因为这是用浮点数绘制的。通过堆栈论坛上的所有这些阅读,我了解到那个日期是一个对象,并尝试以多种方式对其进行格式化,但仍然没有得到正确的解决方案。那么如何正确操作或到哪里寻找解决方案呢?

这是我的挣扎和错误的历史(肯定不是全部):

def getCandles(df, ax):
    ohlc = df[['open_time','o', 'h', 'l', 'c', 'v']].copy()
    ohlc['open_time'] = ohlc['open_time'].values.astype(float)
    ohlc['o'] = ohlc['o'].astype(float)
    ohlc['h'] = ohlc['h'].astype(float)
    ohlc['l'] = ohlc['l'].astype(float)
    ohlc['c'] = ohlc['c'].astype(float)
    ohlc['v'] = ohlc['v'].astype(float)
    candlestick_ohlc(ax, ohlc.values, width = 0.8, colorup="#77d879", colordown="#db3f3f")

    plt.xlabel('TIME')
    plt.ylabel('PRICE')
    plt.tight_layout() 
    plt.show()

编辑:我在这里找到了解决方案:https://stackoverflow.com/a/41822115/6635518

感谢大家的帮助。

【问题讨论】:

  • 你的时间变量是多少?
  • 你的代码有点乱。你能不能试着把它组织得更好,只留下对它最重要的东西?
  • 完成。我已经粘贴了所有这些##lines 来展示我的尝试,这与堆栈论坛示例有关。我只想用正确的日期格式打印该图表。我想用 ohlc['open_time'] 作为 x 打印。
  • 你能提供一个'open_time'中的数据示例吗?
  • 在任何格式之前:['open_time','o', 'h', 'l', 'c', 'v'] = [[1551387600000 '0.00002980' '0.00002990' '0.00002950' '0.00002970' '281493.43000000'] 还有:open_time int64 o object h object l object c object v object dtype: object

标签: python datetime dataframe matplotlib


【解决方案1】:

您正在将所有内容都转换为浮点数,包括open_time

由于您的日期格式是以毫秒为单位的纪元,因此下面的代码将纪元转换为日期时间字符串。

    # Datetime from epoch in milliseconds
    ohlc['open_time'] = pd.to_datetime(ohlc['open_time'], unit='ms')

示例

Check the docs 以匹配您的日期格式。

【讨论】:

  • 如果我想用单独的列进行绘图,它就可以工作。但是来自 mpl_finance 的烛台_ohlc 显示错误:“TypeError: unsupported operand type(s) for -: 'Timestamp' and 'float'”。感谢您的努力。
猜你喜欢
  • 2021-11-25
  • 1970-01-01
  • 2021-12-09
  • 2018-06-28
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 2014-06-06
  • 2012-02-15
相关资源
最近更新 更多