网站开发人员就业前景/真正的免费建站在这里
代码:
Github:Python实现股票数据可视化代码https://github.com/magolan2000/Data-visualization/tree/master
软件环境:PyCharm 2022.3.1
数据来源:akshare
最近DeepSeek可谓是热度不断,因此想评判一下DeepSeek的编程能力到底如何。虽然最近DeepSeek的服务器并不是很稳定,大概每问2至3次就会显示服务器繁忙,不过显示内容的数量和质量还是非常不错的。
与GPT4进行比较的话,同样的问题GPT4可能会出现偷懒的情况,例如生成的代码大概率只生成一个代码的大致框架,如果不详细提问就不会生成完整的代码。即使最近几天ChatGPT也同样加入了类似于DeepSeek的深度思考(R1)与联网搜索功能,但是其效果还是欠佳,而且ChatGPT的推理过程即使你用中文提问但推理过程还是显示用英文在思考。
ChatGPT暂时的优势就是有大量的插件和优秀简约的界面,例如生成长代码时会自动进入画布模式,可以在画布模式中修改运行代码,是一个小型简约的编辑器,方便将完全优化好后的代码导入至其他编辑器运行,避免利用AI修改优化代码时需要反复在浏览器和编辑器之间跳转。
DeepSeek就不过多介绍了,它的蓝紫色小鲸鱼图标与Docker图标还蛮像的,下面展示一下生成的股票数据可视化后的代码与结果。
一、股票数据可视化
1.1代码
Python实现股票数据可视化代码——数据.pyhttps://download.csdn.net/download/m0_53095310/90339747 下面给出股票数据可视化的部分代码:
# -*- coding: utf-8 -*-
import os
import pandas as pd
import akshare as ak
from datetime import datetime
import logging
from concurrent.futures import ThreadPoolExecutor, as_completed
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm# ==================== 用户配置部分 ====================
# A股股票代码列表(示例:贵州茅台、宁德时代)
a_stock_symbols = ["600519", "300750","601899"] # 支持数字或带后缀的代码(如600519.SH)# 时间范围
start_date = "2020-01-01"
end_date = datetime.now().strftime("%Y-%m-%d")# 数据保存路径
save_dir = "./stock_data" # 数据存储主目录
a_stock_dir = os.path.join(save_dir, "A股数据") # A股数据子目录
plot_dir = os.path.join(save_dir, "可视化图表") # 可视化图表目录# 创建目录(如果不存在)
os.makedirs(a_stock_dir, exist_ok=True)
os.makedirs(plot_dir, exist_ok=True)# 配置日志
logging.basicConfig(level=logging.INFO,format="%(asctime)s - %(levelname)s - %(message)s",handlers=[logging.FileHandler(os.path.join(save_dir, "stock_data.log")), # 日志文件logging.StreamHandler() # 控制台输出]
)# 设置中文字体
try:# Windows 系统使用黑体plt.rcParams["font.sans-serif"] = ["SimHei"]# macOS 或 Linux 系统使用 Arial Unicode MS 或文泉驿字体# plt.rcParams["font.sans-serif"] = ["Arial Unicode MS"] # macOS# plt.rcParams["font.sans-serif"] = ["WenQuanYi Zen Hei"] # Linuxplt.rcParams["axes.unicode_minus"] = False # 解决负号显示问题
except Exception as e:logging.error(f"字体设置失败: {e}")# ======================================================def fetch_a_stock_data(symbol, retries=3):"""通过AKShare获取单只A股数据(后复权)"""for attempt in range(retries):try:# 去掉股票代码的后缀(如 .SH 或 .SZ)symbol_clean = symbol.split(".")[0]# 获取数据df = ak.stock_zh_a_hist(symbol=symbol_clean, period="daily", adjust="hfq")if df.empty:logging.warning(f"[A股] 数据为空({symbol_clean})")return None# 重命名列df.rename(columns={"日期": "Date","开盘": "Open","收盘": "Close","最高": "High","最低": "Low","成交量": "Volume"}, inplace=True)# 转换日期格式并设置为索引df["Date"] = pd.to_datetime(df["Date"])df.set_index("Date", inplace=True)logging.info(f"[A股] 数据获取成功({symbol_clean})")return dfexcept Exception as e:if attempt < retries - 1:logging.warning(f"[A股] 数据获取失败({symbol_clean}),第 {attempt + 1} 次重试...")else:logging.error(f"[A股] 数据获取失败({symbol_clean}): {e}")return Nonedef clean_data(df):"""数据清洗:处理缺失值和异常值"""if df is None or df.empty:return None# 1. 删除完全缺失的行df_clean = df.dropna(how="all")# 2. 处理零成交量(视为停牌/无效数据)df_clean = df_clean[df_clean["Volume"] > 0]# 3. 处理价格异常值(如价格<=0或单日涨跌幅超过50%)price_columns = ["Open", "High", "Low", "Close"]for col in price_columns:df_clean = df_clean[df_clean[col] > 0] # 删除价格为负或零的异常记录# 检查清洗后的数据是否为空if df_clean.empty:logging.warning("数据清洗后为空,可能全部为异常值")return Nonereturn df_cleandef save_to_csv(df, symbol):"""保存清洗后的数据到CSV文件"""if df is None or df.empty:logging.warning(f"无有效数据可保存({symbol})")return# 保存路径save_path = os.path.join(a_stock_dir, f"{symbol}.csv")df.to_csv(save_path, encoding="utf-8-sig") # 兼容中文路径logging.info(f"数据已保存至:{save_path}")
1.2数据可视化
1.3分析
该代码的主要功能是通过akshare库获取A股股票的历史数据,进行数据清洗、保存和可视化。
函数 | 解释 |
fetch_a_stock_data | 获取单只股票的历史数据 |
clean_data | 清洗数据,处理缺失值和异常值 |
save_to_csv | 将清洗后的数据保存为CSV文件 |
plot_stock_data | 绘制股票价格走势图并保存为PNG文件 |
process_single_stock | 处理单只股票的完整流程(获取、清洗、保存、可视化) |
batch_process_a_stocks | 批量处理所有股票代码(使用多线程) |
二、功能丰富的静态行情图
2.1代码
除了收盘价以外,行情图添加了5日均线、10日均线和20日均线,包括不同时间段的成交量数据,下面给出股票行情数据可视化的部分代码:
# ======================================================
def fetch_a_stock_data(symbol, retries=3):"""通过AKShare获取单只A股数据(后复权)"""for attempt in range(retries):try:# 去掉股票代码的后缀(如 .SH 或 .SZ)symbol_clean = symbol.split(".")[0]# 获取数据df = ak.stock_zh_a_hist(symbol=symbol_clean, period="daily", adjust="hfq")if df.empty:logging.warning(f"[A股] 数据为空({symbol_clean})")return None# 重命名列df.rename(columns={"日期": "Date","开盘": "Open","收盘": "Close","最高": "High","最低": "Low","成交量": "Volume"}, inplace=True)# 转换日期格式并设置为索引df["Date"] = pd.to_datetime(df["Date"])df.set_index("Date", inplace=True)logging.info(f"[A股] 数据获取成功({symbol_clean})")return dfexcept Exception as e:if attempt < retries - 1:logging.warning(f"[A股] 数据获取失败({symbol_clean}),第 {attempt + 1} 次重试...")else:logging.error(f"[A股] 数据获取失败({symbol_clean}): {e}")return Nonedef clean_data(df):"""数据清洗:处理缺失值和异常值"""if df is None or df.empty:return None# 1. 删除完全缺失的行df_clean = df.dropna(how="all")# 2. 处理零成交量(视为停牌/无效数据)df_clean = df_clean[df_clean["Volume"] > 0]# 3. 处理价格异常值(如价格<=0或单日涨跌幅超过50%)price_columns = ["Open", "High", "Low", "Close"]for col in price_columns:df_clean = df_clean[df_clean[col] > 0] # 删除价格为负或零的异常记录# 检查清洗后的数据是否为空if df_clean.empty:logging.warning("数据清洗后为空,可能全部为异常值")return Nonereturn df_cleandef save_to_csv(df, symbol):"""保存清洗后的数据到CSV文件"""if df is None or df.empty:logging.warning(f"无有效数据可保存({symbol})")return# 保存路径save_path = os.path.join(a_stock_dir, f"{symbol}.csv")df.to_csv(save_path, encoding="utf-8-sig") # 兼容中文路径logging.info(f"数据已保存至:{save_path}")def plot_stock_data(df, symbol):"""专业级股票行情走势图"""if df is None or df.empty:logging.warning(f"无有效数据可绘制({symbol})")return
2.2数据可视化
2.3分析
调用batch_process_a_stocks()
函数,批量处理用户配置的A股股票数据。处理完成后,记录日志信息。
三、具有可交互界面的行情图
3.1代码
# ==================== 布局设计 ====================
app.layout = html.Div([html.Div([html.H1("专业级股票分析系统", style={'color': 'white'}),html.Div([dcc.Input(id='stock-input',type='text',value='600519',placeholder='输入股票代码',style={'width': '150px', 'margin-right': '10px'}),dcc.DatePickerRange(id='date-picker',min_date_allowed=datetime(2010, 1, 1),max_date_allowed=datetime.today(),start_date=datetime.today() - timedelta(days=365),end_date=datetime.today(),display_format='YYYY-MM-DD'),dcc.Dropdown(id='indicator-selector',options=[{'label': 'MACD', 'value': 'MACD'},{'label': 'RSI', 'value': 'RSI'},{'label': '布林线', 'value': 'BOLL'},],value=['MACD'],multi=True,style={'width': '300px', 'margin-left': '10px'})], style={'padding': '20px', 'backgroundColor': '#1a1a1a'})]),dcc.Loading(id="loading",type="circle",children=[dcc.Graph(id='main-chart', style={'height': '600px'}),dcc.Interval(id='interval-component', interval=60 * 1000, n_intervals=0)])
], style={'backgroundColor': '#1a1a1a', 'height': '100vh'})
3.2数据可视化
可交互界面设计的不错,颜色搭配效果很好,不仅添加了时间区间设置功能,还可以任意选择股票代码查看股票行情的历史数据,鼠标移动至折线图上会有详细的数据展示。
相关文章:

【DeepSeek开发】Python实现股票数据可视化
代码: Github:Python实现股票数据可视化代码https://github.com/magolan2000/Data-visualization/tree/master 软件环境:PyCharm 2022.3.1 数据来源:akshare 最近DeepSeek可谓是热度不断,因此想评判一下DeepSeek的编程…...

华为小米vivo向上,苹果荣耀OPPO向下
日前,Counterpoint发布的手机销量月度报告显示,中国智能手机销量在2024年第四季度同比下降3.2%,成为2024年唯一出现同比下滑的季度。而对于各大智能手机品牌来说,他们的市场份额和格局也在悄然发生变化。 华为逆势向上 在2024年第…...

毕业设计:基于深度学习的高压线周边障碍物自动识别与监测系统
目录 前言 课题背景和意义 实现技术思路 一、算法理论基础 1.1 卷积神经网络 1.2 目标检测算法 1.3 注意力机制 二、 数据集 2.1 数据采集 2.2 数据标注 三、实验及结果分析 3.1 实验环境搭建 3.2 模型训练 3.2 结果分析 最后 前言 📅大四是整个大学…...

el-table表格点击单元格实现编辑
使用 el-table 和 el-table-column 创建表格。在单元格的默认插槽中,使用 div 显示文本内容,单击时触发编辑功能。使用 el-input 组件在单元格中显示编辑框。data() 方法中定义了 tableData,tabClickIndex: null,tabClickLabel: ,用于判断是否…...

数据结构:时间复杂度
文章目录 为什么需要时间复杂度分析?一、大O表示法:复杂度的语言1.1 什么是大O?1.2 常见复杂度速查表 二、实战分析:解剖C语言代码2.1 循环结构的三重境界单层循环:线性时间双重循环:平方时间动态边界循环&…...

SPI(Serial Peripheral Interface)串行外围设备接口
SPI概述: SPI协议最初由Motorola公司(现为NXP Semiconductors的一部分)在20世纪80年代中期开发。最初是为了在其68000系列微控制器中实现高速、高效的串行通信。该协议旨在简化微控制器与外围设备之间的数据传输。 1980年代:SPI协…...

Java 8 Stream API
通过 Stream.of 方法直接传入多个元素构成一个流 String[] arr {“a”, “b”, “c”}; Stream.of(arr).forEach(System.out::println); Stream.of(“a”, “b”, “c”).forEach(System.out::println); Stream.of(1, 2, “a”).map(item -> item.getClass().getName()…...

亚博microros小车-原生ubuntu支持系列:21 颜色追踪
背景知识 这个测试例子用到了很多opencv的函数,举个例子。 #cv2.findContours函数来找到二值图像中的轮廓。#参数:#参数1:输 入的二值图像。通常是经过阈值处理后的图像,例如在颜色过滤之后生成的掩码。#参数2(cv2.RETR_EXTERNA…...

GESP6级语法知识(六):(动态规划算法(六)多重背包)
多重背包(二维数组) #include <iostream> using namespace std; #define N 1005 int Asd[N][N]; //Asd[i][j]表示前 i 个物品,背包容量是 j 的情况下的最大价值。 int Value[N], Vol[N], S[N];int main() {int n, Volume;cin &g…...

MySQL 事务实现原理( 详解 )
MySQL 主要是通过: 锁、Redo Log、Undo Log、MVCC来实现事务 事务的隔离性利用锁机制实现 原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证。 Redo Log(重做日志):记录事务对数据库的所有修改,在崩溃时恢复未提交的更改,保证事务…...

AI协助探索AI新构型自动化创新的技术实现
一、AI自进化架构的核心范式 1. 元代码生成与模块化重构 - 代码级自编程:基于神经架构搜索的强化学习框架,AI可通过生成元代码模板(框架的抽象层定义)自动组合功能模块。例如,使用注意力机制作为原子单元ÿ…...

九. Redis 持久化-RDB(详细讲解说明,一个配置一个说明分析,步步讲解到位)
九. Redis 持久化-RDB(详细讲解说明,一个配置一个说明分析,步步讲解到位) 文章目录 九. Redis 持久化-RDB(详细讲解说明,一个配置一个说明分析,步步讲解到位)1. RDB 概述2. RDB 持久化执行流程3. RDB 的详细配置4. RDB 备份&恢…...

mac连接linux服务器
1、mac连接linux服务器 # ssh -p 22 root192.168.1.152、mac指定密码连接linux服务器 (1) 先安装sshpass,下载后解压执行 ./configure && make && makeinstall https://sourceforge.net/projects/sshpass/ (2) 连接linux # sshpass -p \/\\\[\!\\wen12\$ s…...

oracle: 表分区>>范围分区,列表分区,散列分区/哈希分区,间隔分区,参考分区,组合分区,子分区/复合分区/组合分区
分区表 是将一个逻辑上的大表按照特定的规则划分为多个物理上的子表,这些子表称为分区。 分区可以基于不同的维度,如时间、数值范围、字符串值等,将数据分散存储在不同的分区 中,以提高数据管理的效率和查询性能,同时…...

使用Pygame制作“走迷宫”游戏
1. 前言 迷宫游戏是最经典的 2D 游戏类型之一:在一个由墙壁和通道构成的地图里,玩家需要绕过障碍、寻找通路,最终抵达出口。它不但简单易实现,又兼具可玩性,还能在此基础上添加怪物、道具、机关等元素。本篇文章将展示…...

AJAX案例——图片上传个人信息操作
黑马程序员视频地址: AJAX-Day02-11.图片上传https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p26 图片上传 <!-- 文件选择元素 --><input type"file"…...

Day35-【13003】短文,什么是双端队列?栈和队列的互相模拟,以及解决队列模拟栈时出栈时间开销大的方法
文章目录 第三节进一步讨论栈和队列双端队列栈和队列的相互模拟使用栈来模拟队列类型定义入队出队判空,判满 使用队列来模拟栈类型定义初始化清空操作判空,判满栈长度输出入栈出栈避免出栈时间开销大的方法 第三节进一步讨论栈和队列 双端队列 假设你芷…...

力扣 55. 跳跃游戏
🔗 https://leetcode.cn/problems/jump-game 题目 给一个数组 nums,最开始在 index 0,每次可以跳跃的区间是 0-nums[i]判断是否可以跳到数组末尾 思路 题解是用贪心,实际上模拟也可以过遍历可以到达的下标,判断其可…...

深入剖析 HTML5 新特性:语义化标签和表单控件完全指南
系列文章目录 01-从零开始学 HTML:构建网页的基本框架与技巧 02-HTML常见文本标签解析:从基础到进阶的全面指南 03-HTML从入门到精通:链接与图像标签全解析 04-HTML 列表标签全解析:无序与有序列表的深度应用 05-HTML表格标签全面…...

本地快速部署DeepSeek-R1模型——2025新年贺岁
一晃年初六了,春节长假余额马上归零了。今天下午在我的电脑上成功部署了DeepSeek-R1模型,抽个时间和大家简单分享一下过程: 概述 DeepSeek模型 是一家由中国知名量化私募巨头幻方量化创立的人工智能公司,致力于开发高效、高性能…...

MVC 文件夹:架构之美与实际应用
MVC 文件夹:架构之美与实际应用 引言 MVC(Model-View-Controller)是一种设计模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种架构模式不仅提高了代码的可维护性和可扩展性,而且使得开发流程更加清晰。本文将深入探讨MVC文…...

Redis --- 秒杀优化方案(阻塞队列+基于Stream流的消息队列)
下面是我们的秒杀流程: 对于正常的秒杀处理,我们需要多次查询数据库,会给数据库造成相当大的压力,这个时候我们需要加入缓存,进而缓解数据库压力。 在上面的图示中,我们可以将一条流水线的任务拆成两条流水…...

如何确认设备文件 /dev/fb0 对应的帧缓冲设备是开发板上的LCD屏?如何查看LCD屏的属性信息?
要判断 /dev/fb0 是否对应的是 LCD 屏幕,可以通过以下几种方法: 方法 1:使用 fbset 命令查看帧缓冲设备的属性信息 Linux 的 帧缓冲设备(Framebuffer) 通常在 /dev/fbX 下,/dev/fb0 一般是主屏幕ÿ…...

C++多线程编程——基于策略模式、单例模式和简单工厂模式的可扩展智能析构线程
1. thread对象的析构问题 在 C 多线程标准库中,创建 thread 对象后,必须在对象析构前决定是 detach 还是 join。若在 thread 对象销毁时仍未做出决策,程序将会终止。 然而,在创建 thread 对象后、调用 join 前的代码中ÿ…...

AI与SEO关键词的完美结合如何提升网站流量与排名策略
内容概要 在当今数字营销环境中,内容的成功不仅依赖于高质量的创作,还包括高效的关键词策略。AI与SEO关键词的结合,正是这一趋势的重要体现。 AI技术在SEO中的重要性 在数字营销领域,AI技术的引入为SEO策略带来了前所未有的变革。…...

保姆级教程Docker部署Kafka官方镜像
目录 一、安装Docker及可视化工具 二、单节点部署 1、创建挂载目录 2、运行Kafka容器 3、Compose运行Kafka容器 4、查看Kafka运行状态 三、集群部署 在Kafka2.8版本之前,Kafka是强依赖于Zookeeper中间件的,这本身就很不合理,中间件依赖…...

解析PHP文件路径相关常量
PHP文件路径相关常量包括以下几个常量: __FILE__:表示当前文件的绝对路径,包括文件名。 __DIR__:表示当前文件所在的目录的绝对路径,不包括文件名。 dirname(__FILE__):等同于__DIR__,表示当前…...

WPS计算机二级•幻灯片的配色、美化与动画
听说这是目录哦 配色基础颜色语言❤️使用配色方案🩷更改PPT的颜色🧡PPT动画添加的原则💛PPT绘图工具💚自定义设置动画💙使用动画刷复制动画效果🩵制作文字打字机效果💜能量站😚 配色…...

C#,shell32 + 调用控制面板项(.Cpl)实现“新建快捷方式对话框”(全网首发)
Made By 于子轩,2025.2.2 不管是使用System.IO命名空间下的File类来创建快捷方式文件,或是使用Windows Script Host对象创建快捷方式,亦或是使用Shell32对象创建快捷方式,都对用户很不友好,今天小编为大家带来一种全新…...

单纯信息展示的站点是否可以用UML建模
凌钦亮 More options Aug 7 2010, 10:36 am 现在社会上大量的网站需求都还只是用于单纯的企业信息展示,那此种网站是否有必要用UML 建模呢?业务用例图的一个个用例是用来卖的,但是他只有信息展示这个需 求,我是否在划分业务用例…...