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等工具创建交互式分析面板让用户能够自主选择分析品种和时间范围。通过以上方法我们不仅实现了数据的可视化呈现更挖掘出了数据背后的市场结构和交易机会。这种分析框架可以轻松扩展到其他期货交易所的数据分析中。

相关新闻

Matlab实现啤酒瓶口划痕裂纹检测:带预处理+Otsu分割+6组实测效果

Matlab实现啤酒瓶口划痕裂纹检测:带预处理+Otsu分割+6组实测效果

本文还有配套的精品资源,点击获取 简介:一套即装即用的Matlab瓶口缺陷识别方案,专注检测啤酒瓶口区域的划痕、裂纹和形变问题。主程序main.m调用多个模块化函数:peizhun.m做图像配准对齐瓶口位置,quwu.m进行去雾增强…

2026/7/9 21:14:33阅读更多 →
Unity Shader Graph实战:复刻《原神》角色特效的能量流动与边缘光晕

Unity Shader Graph实战:复刻《原神》角色特效的能量流动与边缘光晕

1. 项目概述与核心思路 最近在Unity社区里,看到不少朋友对《原神》里那些华丽又独特的角色特效很感兴趣,想自己动手复刻一下。确实,从刻晴的雷楔到胡桃的蝶引来生,这些特效不仅视觉冲击力强,其背后的Shader逻辑也很有意…

2026/7/9 21:14:33阅读更多 →
Swoole AOT编译PHP为Windows原生EXE实战指南

Swoole AOT编译PHP为Windows原生EXE实战指南

1. 项目概述:这不是“把PHP打包成exe”,而是让PHP真正长出原生肌肉“告别解释执行!用 Swoole AOT 编译你的第一个 PHP Windows 原生应用”——这个标题里藏着三个被长期误解的关键词:“告别解释执行”、“Swoole AOT”、“Windows…

2026/7/9 21:14:33阅读更多 →
2026权威榜!好用的降AI率网站全测评,效率直接拉满!

2026权威榜!好用的降AI率网站全测评,效率直接拉满!

2026 年 AI 论文写作工具的综合王者是 千笔AI,国内毕业全流程首选千笔AI;千笔以中文润色 降重双能与全流程闭环见长,深度适配高校规范与查重系统,AI 率控制行业领先。按需求选对工具,论文效率可提升70%-90%&#xff0…

2026/7/10 0:35:04阅读更多 →
FBI 预警下 Kali365 平台劫持 Outlook/OneDrive OAuth 钓鱼攻击与防御研究

FBI 预警下 Kali365 平台劫持 Outlook/OneDrive OAuth 钓鱼攻击与防御研究

摘要 2026 年 5 月,美国 FBI 互联网犯罪投诉中心发布 PSA260521 安全预警,披露名为 Kali365 的新型钓鱼即服务(PhaaS)平台大规模针对 Microsoft 365 用户实施设备码钓鱼攻击,攻击覆盖 Outlook 邮件、Teams 协作、OneDr…

2026/7/10 0:35:04阅读更多 →
【JAVA毕设源码分享】基于SpringBoot的“鲜蔬坊”蔬菜销售平台(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的“鲜蔬坊”蔬菜销售平台(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/10 0:35:04阅读更多 →
TMC7300与STM32L4S5ZI实现高效有刷直流电机控制

TMC7300与STM32L4S5ZI实现高效有刷直流电机控制

1. TMC7300与STM32L4S5ZI的黄金组合:有刷直流电机控制新思路有刷直流电机作为工业自动化领域的主力军,其控制方案的选择直接关系到系统性能和稳定性。最近我在一个AGV小车项目中,就遇到了传统驱动方案带来的电机抖动、发热严重等问题。经过多…

2026/7/10 0:35:04阅读更多 →
大型 React 项目的文件结构治理:按功能分层还是按类型分

大型 React 项目的文件结构治理:按功能分层还是按类型分

大型 React 项目的文件结构治理:按功能分层还是按类型分 一、React 项目文件组织的两类主流方案 大型 React 项目在迭代过程中,文件结构混乱是常见痛点。团队成员各自添加文件,缺乏统一规范,最终导致查找代码困难、模块依赖混乱…

2026/7/10 0:35:04阅读更多 →
EM3080-W与PIC18F86J16嵌入式条码识别系统设计实战

EM3080-W与PIC18F86J16嵌入式条码识别系统设计实战

1. EM3080-W与PIC18F86J16硬件系统架构解析在嵌入式条码识别系统中,EM3080-W解码芯片与PIC18F86J16微控制器的组合堪称黄金搭档。EM3080-W作为新大陆自动识别技术有限公司的拳头产品,其双核DSP架构设计令人印象深刻。主处理核心运行在120MHz高频下&#…

2026/7/10 0:30:04阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/9 5:56:19阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/9 9:45:20阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/9 2:47:07阅读更多 →
浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比当你在浏览器地址栏敲入一个网址时,背后可能隐藏着一场关于"要不要重新下载资源"的精密博弈。这场博弈的裁判是HTTP缓存机制,而304状态码则是这场博弈…

2026/7/10 0:00:01阅读更多 →
RoboWits:面向创造性问题求解的双臂机器人认知推理基准

RoboWits:面向创造性问题求解的双臂机器人认知推理基准

1. 项目概述:这不是又一个机器人抓取数据集,而是一次对“思考力”的压力测试 RoboWits——这个名字里藏着两个关键信号:“Robo”直指物理世界中的具身智能体,“Wits”则毫不掩饰地指向人类最核心的认知能力:机敏、判断…

2026/7/10 0:00:01阅读更多 →
5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Windows…

2026/7/10 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/9 9:45:20阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/9 15:50:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/9 14:14:17阅读更多 →