微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Binance API:将 kline/烛台数据存储到 .csv 文件

如何解决Binance API:将 kline/烛台数据存储到 .csv 文件

我正在尝试将一些 .json 数据从 API 写入 CSV 文件

我的代码

from binance.client import Client
import config
import pandas as pd
import pandas_datareader as web
from pandas_datareader import data as dreader


client = Client(config.apiKey,config.apiSec)
print("Logged in")

symbol = 'BTCUSDT'

klines = client.get_historical_klines(symbol,Client.KLINE_INTERVAL_1WEEK,"1 Jan,2017")


print(klines)

df = pd.read_json(klines)
df.to_csv(r'path')

错误

回溯(最近一次调用最后一次): 文件“\OneDrive\KNowledge\Python\Binance API new\BTC-price-get.py”,第 19 行,在 df = pd.read_json(klines) 文件“\AppData\Local\Programs\Python\python39\lib\site-packages\pandas\util_decorators.py”,第 199 行,在包装器中 返回 func(*args,**kwargs) 文件“\AppData\Local\Programs\Python\python39\lib\site-packages\pandas\util_decorators.py”,第 296 行,在包装器中 返回 func(*args,**kwargs) 文件“\AppData\Local\Programs\Python\python39\lib\site-packages\pandas\io\json_json.py”,第 593 行,在 read_json 中 filepath_or_buffer,_,压缩,should_close = get_filepath_or_buffer( 文件“\AppData\Local\Programs\Python\python39\lib\site-packages\pandas\io\common.py”,第 243 行,在 get_filepath_or_buffer 中 引发 ValueError(msg) 值错误:无效的文件路径或缓冲区对象类型: PS \Python>

解决方法

get_historical_klines() 返回嵌套的 list ohlcv 值,而不是 json 字符串或 dict (source)。因此,您不需要pandas。改用内置的 csv 模块。

import csv
from binance.client import Client

API_KEY = 'XXX'
API_SECRET = 'XXX'
SYMBOL = 'BTCUSDT'

client = Client(API_KEY,API_SECRET)

columns = [
    'open_time','open','high','low','close','volume','close_time','quote_asset_volume','number_of_trades','taker_buy_base_asset_volume','taker_buy_quote_asset_volume','ignore'
]

klines = client.get_historical_klines(SYMBOL,Client.KLINE_INTERVAL_1WEEK,"1 Jan,2017")

with open('output.csv','w') as f:
    write = csv.writer(f)
    write.writerow(columns)
    write.writerows(klines)

output.csv(摘录):

open_time,open,high,low,close,volume,close_time,quote_asset_volume,number_of_trades,taker_buy_base_asset_volume,taker_buy_quote_asset_volume,ignore
1502668800000,4261.48000000,4485.39000000,3850.00000000,4086.29000000,2843.43142600,1503273599999,12021576.48265154,13134,2240.24924000,9482742.92094674,10125.41408414
1503273600000,4069.13000000,4453.91000000,3400.00000000,4310.01000000,4599.39662900,1503878399999,18978983.50987317,37826,1755.53026500,7173180.19744751,11456.95307303
1503878400000,4939.19000000,4124.54000000,4509.08000000,4753.84337600,1504483199999,21581679.92866748,35717,1371.03442800,6237542.20612072,12653.02927308
1504483200000,4505.00000000,4788.59000000,3603.00000000,4130.37000000,6382.78774500,1505087999999,27307824.36893929,42372,2821.42273900,12120979.77068529,10431.32749057
1505088000000,4153.62000000,4394.59000000,2817.00000000,3699.99000000,8106.70512700,1505692799999,30026796.42861788,50423,3763.12845200,13956149.18844029,8391.64647834
1505692800000,3690.00000000,4123.20000000,3505.55000000,3660.02000000,5908.32335000,1506297599999,22501242.65454204,56785,2821.43888700,10711864.12380805,7915.33467487
1506297600000,4406.52000000,3653.69000000,4378.48000000,5782.30542400,1506902399999,23750419.76839855,71484,2482.36136700,10200163.49185349,12307.06710083
1506902400000,4400.00000000,4658.00000000,4110.00000000,4640.00000000,4708.27295600,1507507199999,20366578.25125568,59658,2077.80349000,9008752.49455302,12341.69993665
1507507200000,5922.30000000,4550.00000000,5709.99000000,7913.92583700,1508111999999,42038755.95644524,61638,4280.12726900,22483871.99105491,12726.86837082
1508112000000,5710.00000000,6171.00000000,5037.95000000,5950.02000000,12157.76944700,1508716799999,69446644.86619962,75969,5501.91240000,31411073.98003196,14069.26805535
1508716800000,5975.00000000,6189.88000000,5286.98000000,6169.98000000,13133.99457000,1509321599999,75229774.73890872,74778,5845.14325200,33499318.44481458,15033.66434266
1509321600000,6133.01000000,7590.25000000,6030.00000000,7345.01000000,11663.20964800,1509926399999,79517426.53915779,98387,5037.95081100,34445720.64501364,19065.20952449

Documentation Binance candlestick

Using csv module

,

通过以下命令将对象转换为json:

jsonStr = json.dumps(myobject.dict)

并将json保存在一个文件中。 然后,您将使用以下代码:

import pandas as pd
df = pd.read_json(r'Path where the JSON file is saved\File Name.json')
df.to_csv(r'Path where the new CSV file will be stored\New File Name.csv',index=None)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?