尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
SHFE 行情数据解析:从 Pandas DataFrame 到 3 种可视化图表实战
SHFE行情数据深度分析3种高阶可视化技巧与Pandas实战当面对上海期货交易所(SHFE)的海量行情数据时如何快速提取关键信息并呈现给决策者本文将带你超越基础的数据获取深入探索如何用Python进行专业级的数据清洗、特征工程和可视化呈现。1. 数据获取与初步观察获取SHFE数据只是第一步。让我们先看看原始数据的结构import akshare as ak from datetime import datetime import pandas as pd # 设置Pandas显示选项 pd.set_option(display.max_columns, None) pd.set_option(display.max_rows, 10) pd.set_option(display.width, 1000) # 获取当日SHFE数据 shfe_data ak.get_shfe_daily(datetime.now().strftime(%Y%m%d)) print(shfe_data.head())典型的数据结构包含以下关键字段字段名描述示例值symbol合约代码CU2404date交易日期20240320open开盘价72310high最高价72620low最低价72220close收盘价72540volume成交量8010open_interest持仓量111811注意不同品种的单位可能不同铜、铝等金属以吨为单位黄金以克为单位白银以千克为单位原油以桶为单位。2. 数据清洗与特征工程原始数据往往存在缺失值、异常值等问题需要进行专业处理。2.1 处理缺失值与异常值# 处理零值问题 shfe_data.replace(0, pd.NA, inplaceTrue) # 过滤无效数据 valid_data shfe_data.dropna(subset[open, high, low, close]) # 计算涨跌幅 valid_data[pct_change] (valid_data[close] - valid_data[pre_settle]) / valid_data[pre_settle] * 1002.2 品种分类与主力合约识别# 按品种分组 grouped valid_data.groupby(variety) # 找出各品种主力合约成交量最大的合约 main_contracts grouped.apply(lambda x: x.nlargest(1, volume)).reset_index(dropTrue) # 添加是否为主力合约标志 valid_data[is_main] valid_data[symbol].isin(main_contracts[symbol])3. 三种高阶可视化方法3.1 多合约价格走势对比图import matplotlib.pyplot as plt import seaborn as sns # 设置样式 plt.style.use(seaborn) sns.set_palette(husl) # 选取铜合约数据 cu_data valid_data[valid_data[variety] CU].sort_values(symbol) # 绘制价格走势 plt.figure(figsize(14, 7)) for contract in cu_data[symbol].unique()[:5]: # 只展示前5个合约 contract_data cu_data[cu_data[symbol] contract] plt.plot(contract_data[symbol], contract_data[close], markero, labelcontract) plt.title(铜合约价格走势对比, fontsize15) plt.xlabel(合约代码, fontsize12) plt.ylabel(价格(元/吨), fontsize12) plt.legend() plt.grid(True, alpha0.3) plt.tight_layout() plt.show()3.2 品种成交量热力图# 准备热力图数据 heatmap_data valid_data.pivot_table(indexvariety, columnssymbol, valuesvolume, aggfuncsum) plt.figure(figsize(16, 10)) sns.heatmap(heatmap_data.fillna(0), cmapYlOrRd, annotTrue, fmt.0f, linewidths.5) plt.title(各品种合约成交量热力图, fontsize15) plt.xlabel(合约代码, fontsize12) plt.ylabel(品种, fontsize12) plt.tight_layout() plt.show()3.3 主力合约价差分析# 计算相邻合约价差 main_contracts[price_diff] main_contracts.groupby(variety)[close].diff() # 筛选有价差数据的品种 diff_data main_contracts.dropna(subset[price_diff]) # 绘制价差分布 plt.figure(figsize(14, 8)) sns.boxplot(xvariety, yprice_diff, datadiff_data) plt.title(主力合约价差分布, fontsize15) plt.xlabel(品种, fontsize12) plt.ylabel(价差(元), fontsize12) plt.xticks(rotation45) plt.grid(True, alpha0.3) plt.tight_layout() plt.show()4. 进阶分析技巧4.1 持仓量-价格关系分析持仓量变化往往预示着市场趋势的转变。我们可以分析持仓量与价格的关系# 计算持仓量变化率 valid_data[oi_change] valid_data.groupby(symbol)[open_interest].pct_change() # 选取主力合约 main_data valid_data[valid_data[is_main]] plt.figure(figsize(14, 7)) sns.scatterplot(xoi_change, ypct_change, huevariety, datamain_data, s100, alpha0.7) plt.axhline(0, colorgray, linestyle--) plt.axvline(0, colorgray, linestyle--) plt.title(主力合约持仓量变化与价格涨跌幅关系, fontsize15) plt.xlabel(持仓量变化率, fontsize12) plt.ylabel(价格涨跌幅(%), fontsize12) plt.grid(True, alpha0.3) plt.tight_layout() plt.show()4.2 品种相关性分析了解不同品种间的价格相关性对投资组合构建很有帮助# 获取各品种主力合约收盘价 pivot_data valid_data[valid_data[is_main]].pivot(indexdate, columnsvariety, valuesclose) # 计算相关系数 corr_matrix pivot_data.corr() # 绘制相关系数热力图 plt.figure(figsize(12, 10)) sns.heatmap(corr_matrix, annotTrue, cmapcoolwarm, center0, fmt.2f, linewidths.5) plt.title(各品种主力合约价格相关系数矩阵, fontsize15) plt.tight_layout() plt.show()5. 自动化报告生成将上述分析整合成自动化报告from matplotlib.backends.backend_pdf import PdfPages def generate_report(data, filenameshfe_report.pdf): with PdfPages(filename) as pdf: # 封面 plt.figure(figsize(8, 11)) plt.text(0.5, 0.7, SHFE行情分析报告, hacenter, vacenter, fontsize20) plt.text(0.5, 0.6, datetime.now().strftime(%Y-%m-%d), hacenter, vacenter, fontsize12) plt.axis(off) pdf.savefig() plt.close() # 添加各分析图表 # ... (这里添加前面各节的可视化代码) print(f报告已生成: {filename}) # 生成报告 generate_report(valid_data)提示实际应用中可以结合Jupyter Notebook或Dash等工具创建交互式分析面板让用户能够自主选择分析品种和时间范围。通过以上方法我们不仅实现了数据的可视化呈现更挖掘出了数据背后的市场结构和交易机会。这种分析框架可以轻松扩展到其他期货交易所的数据分析中。
RELATED

相关推荐

Unity UI拖拽交互全解析:从OnDrag/OnDrop原理到背包系统实战

Unity UI拖拽交互全解析:从OnDrag/OnDrop原理到背包系统实战

1. 项目概述:从“拖不动”到“丝滑交互”的必经之路 在Unity UI开发里,拖拽功能几乎是每个项目都绕不开的坎。无论是背包系统里的物品整理,卡牌游戏里的出牌操作,还是编辑器工具里的模块搭建,一个流畅、稳定、符合直觉…

📅 2026/10/15 13:13:47
昇腾 910B 双机分布式推理保姆级教程(纯实操命令,全文约 4000 字)

昇腾 910B 双机分布式推理保姆级教程(纯实操命令,全文约 4000 字)

本文面向 Atlas 800I A2(单台 8 卡昇腾 910B 64G)双机集群,采用vLLM-Ascend推理引擎部署 GLM-5.2 基座 / 对话版,全程以可复制 Shell 命令、实操流程、报错排错为主,无冗余理论。硬件架构:双机共 16 张 910…

📅 2026/10/15 12:42:38
UE4新手入门:从Epic客户端安装到第一个交互蓝图实战

UE4新手入门:从Epic客户端安装到第一个交互蓝图实战

1. 项目概述:为什么选择UE4作为起点? 如果你对游戏开发、影视动画或者任何需要实时3D交互的领域感兴趣,那么“虚幻引擎”这个名字你肯定不陌生。尤其是UE4,作为一款功能强大且对开发者相对友好的商业引擎,它至今仍然是…

📅 2026/10/16 12:47:41
MORE NEWS

更多资讯

📰

数字孪生技术在航天增材制造中的应用与突破

1. 项目概述:数字孪生如何革新航天部件制造在航天工业中,一个微小部件的失效可能导致灾难性后果。NASA最新启动的数字孪生项目,正通过虚拟仿真技术彻底改变增材制造航天部件的质量验证方式。这项技术突破的核心在于:在物理部件生产…

📰

SpringBoot+Vue物联网仓储管理系统开发实践

1. 项目概述这个物联网仓储管理系统是一个典型的现代化企业级应用,采用前后端分离架构设计。后端基于SpringBoot框架构建,前端使用Vue.js实现,通过RESTful API进行数据交互。系统主要面向中小型仓储企业,解决传统仓储管理中效率低…

📰

语音交互核心技术解析与应用实践

1. 语音交互技术概述语音交互(Voice-Based Communication)正在彻底改变人机交互的方式。从智能音箱到车载系统,从客服机器人到无障碍设备,这项技术已经渗透到我们生活的方方面面。作为一名在语音技术领域深耕多年的工程师,我见证了语音交互从…

📰

语音交互技术:从原理到工程实践

1. 语音交互技术概述语音交互(Voice-Based Communication)正在重塑人机交互的范式。从智能音箱到车载系统,从客服机器人到无障碍设备,这项技术已经渗透到我们生活的方方面面。作为从业者,我见证了语音交互从简单的命令识别发展到如今能够理解…

📰

洛谷P1011入门算法题解析与实现指南

1. 洛谷P1011题目解析洛谷P1011是一道经典的算法练习题,主要考察编程基础知识和逻辑思维能力。这道题目在洛谷平台上被归类为入门级题目,适合刚接触编程的新手练习。1.1 题目内容概述题目描述通常涉及一个具体的计算或逻辑问题,要求编写程序解…

📰

PSO优化BP神经网络:原理、实现与性能提升

1. 项目概述:当粒子群遇上神经网络在机器学习领域,BP神经网络因其强大的非线性拟合能力被称为"万能逼近器",但传统反向传播算法存在容易陷入局部最优、收敛速度慢等痛点。而粒子群优化算法(PSO)作为一种仿生…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬