【发布时间】:2021-09-26 12:39:13
【问题描述】:
我正在尝试将订单簿数据输入到我从交换 API 检索的绘图热图中。我检索的数据以这种格式存储在 pandas 数据框中:
id timestamp asks bids
0 4 2021-07-13 18:50:02 [[31416.0, 12.6396], [31417.0, 0.3847], [31418... [[31415.0, 0.6475], [31413.0, 0.1592], [31412....
1 10 2021-07-13 18:51:02 [[31416.0, 12.6396], [31417.0, 0.3847], [31418... [[31415.0, 0.6475], [31413.0, 0.1592], [31412....
2 15 2021-07-13 18:52:02 [[31416.0, 12.6396], [31417.0, 0.3847], [31418... [[31415.0, 0.6475], [31413.0, 0.1592], [31412....
3 20 2021-07-13 18:53:03 [[31416.0, 12.6396], [31417.0, 0.3847], [31418... [[31415.0, 0.6475], [31413.0, 0.1592], [31412....
4 25 2021-07-13 18:54:02 [[31416.0, 12.6396], [31417.0, 0.3847], [31418... [[31415.0, 0.6475], [31413.0, 0.1592], [31412....
... ... ... ... ...
4863 25288 2021-07-18 15:10:01 [[31416.0, 12.6396], [31417.0, 0.3847], [31418... [[31415.0, 0.6475], [31413.0, 0.1592], [31412....
4864 25294 2021-07-18 15:11:01 [[31416.0, 12.6396], [31417.0, 0.3847], [31418... [[31415.0, 0.6475], [31413.0, 0.1592], [31412....
4865 25299 2021-07-18 15:12:02 [[31416.0, 12.6396], [31417.0, 0.3847], [31418... [[31415.0, 0.6475], [31413.0, 0.1592], [31412....
4866 25304 2021-07-18 15:13:03 [[31416.0, 12.6396], [31417.0, 0.3847], [31418... [[31415.0, 0.6475], [31413.0, 0.1592], [31412....
4867 25309 2021-07-18 15:14:02 [[31416.0, 12.6396], [31417.0, 0.3847], [31418... [[31415.0, 0.6475], [31413.0, 0.1592], [31412....
[4868 rows x 4 columns]
如您所见,bids 和 asks 列的内容格式如下:[[price, size of order], [price, size of order], ...]
根据https://plotly.com/python/heatmaps/,热图可以按照这种格式填写数据:
import plotly.graph_objects as go
fig = go.Figure(data=go.Heatmap(
z=[[1, None, 30, 50, 1], [20, 1, 60, 80, 30], [30, 60, 1, -10, 20]],
x=['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
y=['Morning', 'Afternoon', 'Evening'],
hoverongaps = False))
fig.show()
--> x 轴是时间戳
--> y轴是价格
--> z 轴/颜色是给定价格下的订单大小
通过 plotly 给出的示例,我很难正确设置 y 和 z 值。我的印象是,我需要汇总所有订单(对于所有时间戳),然后按价格对它们进行排序,然后将价格放入箱中,然后填补空白(无),然后将它们放入正确的数组结构中......这个似乎真的很复杂,我不知道该怎么做。是否有更简单的方法来实现这一目标?或者一些神奇的python函数可以做需要的事情?
fig = go.Figure(data=go.Heatmap(
x=df['timestamp'],
y=???,
z=???
))
如果有任何帮助,我将不胜感激!谢谢!
编辑:数据框中的示例数据:https://file.io/p2hktQxKljkI
您可以使用df_order_book = pandas.read_csv("test.csv") 加载它。
【问题讨论】:
-
您能否提供从 API 获取的代码。看起来像是众多 kraken API 之一……
-
嗨!好问题...我正在使用 ccxt python 库来检索数据并将其存储在我从中检索它的数据库中...太复杂了,无法完成此处的步骤。但是,我将 pandas 数据框导出到一个 csv 文件中,可以使用 df_order_book = pandas.read_csv("test.csv") 读取该文件。我添加了指向问题的文件的链接。谢谢! :)
标签: python pandas plotly heatmap