【发布时间】:2021-08-15 04:07:38
【问题描述】:
过去几天我一直遇到同样的问题,在这个论坛上搜索所有内容并寻找答案,但我尝试的任何方法似乎都不起作用。我一直在关注其他人发布的教程,他们能够非常简单地做到这一点,但是当我从多个角度尝试时遇到了多个问题。我的头被我尝试过的所有事情缠住了,我什至不确定发生了什么或我做了什么。这不是所有代码,但这应该是唯一相关的代码,因为其他部分执行其他功能,但如果我遗漏了什么,我深表歉意。
基本上,我从网站上获取历史金融烛台数据,尝试将其放入 Pandas 数据框中,然后使用该数据框通过 Plotly 制作图表。我将数据作为“结果”获取,PyCharm 将数据很好地输出到“运行”框中,但现在我需要保存该数据,所以我让 Pandas 将“结果”作为“价格数据”转换为数据框,并将其转换为到“pricedata.csv”。当我打开该 CSV 文件时,我得到的只是一个从 0 到 1439 的列表(我一次导入 1440 个 1 分钟烛台),每个烛台只显示对象引用(
我可以通过深入获取特定值,并调用它来保存 result[0].high 或 result[0].low 等。但是我必须遍历 1440 个烛台数据并分别编写/保存它们,然后将它们中的每一个的高/低/打开/关闭/时间/等组合在一起以便能够绘制,这比我看过的教程要复杂得多。他们可以直接使用数据框毫无问题地进行绘图,他们不会遇到属性错误,就像它只是为他们正确识别列一样。但是当我查看“结果”的列时,有 1440 列(每个烛台也有一个),但我认为每个烛台由 12 个不同的数据位组成应该是 12 列。我试过转置列和行,但这也不起作用。
即使我尝试仅获取一个对象的整个烛台数据,通过指定“结果 [0]”而不指定 .high/.low/etc,我也会遇到相同的属性错误。建议使用一些东西来指定列是什么,这就是散列出来的“priceData.columns”的用途,我在其中确定每列是什么。但后来我得到“长度不匹配:预期轴有 1440 个元素,新值有 12 个元素”。
在这一点上,我真的很困惑自己并在转圈,任何人都可以帮助我指出正确的方向并告诉我我在搞砸什么吗?提前感谢任何花时间阅读本文或有任何指导意见的人。
from binance_f import RequestClient
from binance_f.model import *
from binance_f.constant.test import *
from binance_f.base.printobject import *
import pandas as pd
import numpy as np
import json
import plotly.io as pio
pd.options.plotting.backend = 'plotly'
pio.renderers.default = "browser"
request_client = RequestClient(api_key=g_api_key, secret_key=g_secret_key, url="https://fapi.binance.com")
result = request_client.get_candlestick_data(symbol="BTCUSDT", interval=CandlestickInterval.MIN1,
startTime=1609473600000, endTime=None, limit=1440)
priceData = pd.DataFrame([result])
priceData.to_csv('priceData.csv')
print(pd.read_csv("E:\Creative\GitHub Projects\Binance_Futures_python\example\market\priceData.csv"))
#priceData.columns = ['opentime', 'open', 'high', 'low', 'close', 'vol', 'closetime', 'quoteassetvol', #'numberoftrades','takerbuybase', 'takerbuyquote', 'ignore']
def chart():
pricedata = pd.read_csv('E:\Creative\GitHub
Projects\Binance_Futures_python\example\market\priceData.csv')
highprice = pricedata.high
lowprice = pricedata.low
openprice = pricedata.open
closeprice = pricedata.close
fig = dict({
"data": [{"type": "candlestick",
"open": [openprice],
"close": [closeprice],
"low": [lowprice],
"high": [highprice]}],
"layout": {"title": {"text": "Candlestick Charts"}}
})
pio.show(fig)
chart()
【问题讨论】:
标签: python pandas dataframe plotly attributeerror