Python读取JSON交易数据并绘制买卖订单折线图问题求助
问题解决:提取交易订单数据并绘制买卖折线图
问题说明
我有一份交易订单JSON数据,结构如下:
{"code":"200000","data":[{"price":"1001","sequence":"1636607335665","side":"sell","size":"0.00000544","time":1657828843154264094},...]}
尝试读取price和side字段失败,现有代码仅输出最外层的code和data字段名,需求是分别提取买入(buy)、卖出(sell)订单的价格数据,并用折线图展示。
现有代码问题分析
原代码仅遍历了JSON最外层的键值对,没有深入到data数组中的每一条订单数据:
import json with open('events.json') as f: json_object = json.load(f) pairs = json_object.items() for side, price in pairs: print(side)
输出结果:
code data Process finished with exit code 0
修正后的完整代码
步骤1:提取买卖订单价格数据
遍历data数组中的每一条订单,筛选出buy和sell的价格,并转换为数值类型(原数据中price是字符串):
import json import pandas as pd import matplotlib.pyplot as plt # 读取JSON数据 with open('events.json') as f: json_data = json.load(f) # 初始化列表存储买卖数据 buy_prices = [] sell_prices = [] timestamps = [] # 遍历每一条订单数据 for order in json_data['data']: # 将价格转为浮点数 price = float(order['price']) # 记录时间戳(用于X轴排序) timestamp = order['time'] timestamps.append(timestamp) if order['side'] == 'buy': buy_prices.append(price) elif order['side'] == 'sell': sell_prices.append(price) # 整理成DataFrame,按时间排序 df = pd.DataFrame({ 'timestamp': timestamps, 'buy_price': buy_prices, 'sell_price': sell_prices }).sort_values('timestamp')
步骤2:绘制买卖价格折线图
基于整理好的DataFrame,分别绘制buy和sell的价格折线:
# 设置绘图风格 plt.style.use('seaborn') # 创建画布 plt.figure(figsize=(10, 6)) # 绘制买入价格折线 plt.plot(df['timestamp'], df['buy_price'], label='买入价格', color='green', marker='o', markersize=3) # 绘制卖出价格折线 plt.plot(df['timestamp'], df['sell_price'], label='卖出价格', color='red', marker='x', markersize=3) # 添加图表标签和图例 plt.title('买卖订单价格趋势图') plt.xlabel('时间戳') plt.ylabel('价格') plt.legend() # 旋转X轴标签,避免重叠 plt.xticks(rotation=45) # 显示图表 plt.tight_layout() plt.show()
代码说明
- 数据提取部分:遍历
json_data['data']中的每个订单对象,根据side字段区分买卖订单,同时收集时间戳保证数据按时间顺序排列。 - 绘图部分:使用
pandas整理数据并排序,matplotlib绘制双折线图,添加了图例、标签和样式优化,让图表更清晰易读。
内容的提问来源于stack exchange,提问作者JonnyDE
相关产品推荐
相关产品推荐

