You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Binance API获取K线数据并转换为Pandas DataFrame?

问题确认:Binance 1分钟K线数据转Pandas DataFrame代码是否正确?

以下是实现从Binance获取K线数据并转换为Pandas DataFrame的代码,注释已译为中文:

from binance.client import Client
import pandas as pd
# Binance API信息
api_key = 'hidden'
api_secret = 'hidden'
# 连接Binance客户端
client = Client(api_key, api_secret)
# 获取K线/蜡烛图数据
candles = client.get_klines(symbol='BTCUSDT', interval=Client.KLINE_INTERVAL_1MINUTE)
# 创建K线数据的DataFrame
candles_dataframe = pd.DataFrame(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'])

技术问询:请确认上述代码是否正确实现了从Binance获取BTCUSDT 1分钟K线数据并转换为Pandas DataFrame的功能?


代码问题分析与修正

你的代码前半部分逻辑是对的:成功初始化了Binance客户端,也调用get_klines接口拿到了BTCUSDT的1分钟K线数据,但最后一步创建DataFrame的环节有明显疏漏——你只定义了列名,却没有把获取到的candles数据集传入DataFrame,最终得到的会是一个完全空的DataFrame,等于白拿了K线数据。

修正后的完整可用代码

from binance.client import Client
import pandas as pd

# Binance API信息
api_key = 'hidden'
api_secret = 'hidden'

# 连接Binance客户端
client = Client(api_key, api_secret)

# 获取K线/蜡烛图数据
candles = client.get_klines(symbol='BTCUSDT', interval=Client.KLINE_INTERVAL_1MINUTE)

# 创建K线数据的DataFrame:传入candles数据并指定列名
candles_dataframe = pd.DataFrame(
    candles,
    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'
    ]
)

# 可选优化:将毫秒级时间戳转换为可读的日期时间格式
candles_dataframe['Open time'] = pd.to_datetime(candles_dataframe['Open time'], unit='ms')
candles_dataframe['Close time'] = pd.to_datetime(candles_dataframe['Close time'], unit='ms')

# 可选优化:将字符串格式的数值列转换为float类型(Binance返回的原始数据是字符串)
numeric_columns = ['Open', 'High', 'Low', 'Close', 'Volume', 'Quote asset volume', 
                   'Taker buy base asset volume', 'Taker buy quote asset volume']
candles_dataframe[numeric_columns] = candles_dataframe[numeric_columns].astype(float)

关键修正说明

  1. 核心修复:必须把candles作为第一个参数传入pd.DataFrame(),否则DataFrame无法加载获取到的K线数据
  2. 时间格式转换:Binance返回的时间戳是毫秒级整数,转成datetime格式后更便于后续时间维度的分析
  3. 数值类型转换:原始返回的价格、成交量等字段是字符串类型,转换成float才能进行计算、绘图等操作

修改后,代码就能正确完成「获取1分钟K线数据并转换为可用Pandas DataFrame」的需求了。

内容的提问来源于stack exchange,提问作者Myron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:04:36