网站开发 打标签最好免费高清视频在线观看

张小明 2026/1/19 20:38:33
网站开发 打标签,最好免费高清视频在线观看,wordpress浮窗,wordpress用户名在那个数据表本文介绍一个申万行业数据分析系统#xff0c;它集成了数据获取、可视化、财务评价和回测分析等功能。通过这个项目#xff0c;你将学会如何用Python构建一个专业级的金融数据分析应用。 一、分析流程 行业选择 → 确定分析范围 数据获取 → 收集行业指数、个股交易、财务数…本文介绍一个申万行业数据分析系统它集成了数据获取、可视化、财务评价和回测分析等功能。通过这个项目你将学会如何用Python构建一个专业级的金融数据分析应用。一、分析流程行业选择→ 确定分析范围数据获取→ 收集行业指数、个股交易、财务数据可视化展示→ 理解行业和个股走势财务评价→ 基于PCA的综合评分模型组合构建→ 选择得分最高的股票回测验证→ 计算历史收益率基准比较→ 评估策略超额收益二、数据准备数据来源Tushare数据fin_data.csv文件字段index_trdata.csv文件字段stk_trdata.csv文件字段复权交易数据2023、2024、2025.csv文件字段股票基本信息表.xlsx文件字段上市公司基本信息.xlsx文件字段沪深300指数交易数据.xlsx文件字段最新个股申万行业分类(完整版-截至7月末).xlsx字段三、技术栈pandas处理金融时间序列数据matplotlib可视化市场走势和个股表现sklearn应用机器学习方法进行股票评价streamlit构建分析师或投资者使用的交互工具import pandas as pd # 数据分析的核心库用于处理表格数据 import matplotlib.pyplot as plt # 绘图库用于可视化 from sklearn.preprocessing import StandardScaler # 数据标准化工具 from sklearn.decomposition import PCA # 主成分分析用于降维和综合评价 import streamlit as st # Web应用框架用于创建交互界面四、数据获取与处理函数4.1 全局设置确保图表中的中文行业名称、股票名称能正常显示负的收益率等数据能正确展示。plt.rcParams[font.sans-serif] SimHei # 解决中文显示 plt.rcParams[axes.unicode_minus] False # 解决负号显示4.2 st_data函数数据获取与整合def st_data(nm, info): 功能获取指定行业的数据并进行初步处理从多个数据源整合信息形成完整的行业分析基础 nm: 行业名称如医药生物、电子等 info: 行业分类信息表 1. 读取数据index_trdata: 了解行业整体走势stk_trdata: 分析行业内个股表现 fin_data: 基本面分析的基础co_data: 了解公司背景和属性。# 读取三个核心数据文件 data pd.read_csv(index_trdata.csv) # 行业指数日度数据 trdata pd.read_csv(stk_trdata.csv) # 个股日度交易数据 findata pd.read_csv(fin_data.csv) # 年度财务数据 co_data pd.read_excel(上市公司基本信息.xlsx) # 公司基本信息2. 筛选行业指数数据#筛选指定行业的行业指数交易数据大于600条 data_i data[data[name] nm].sort_values(trade_date) # 按时间排序形成时间序列 data_i.columns [指数代码, 行业名称, 交易日期, 开盘指数, 收盘指数, 成交量, 市盈率, 市净率] if len(data_i) 600: # 足够的数据量才能进行有效的趋势分析和统计检验避免小样本带来的统计偏差 st.warning(f【{nm}】行业指数数据不足600条当前{len(data_i)}条) return None3. 绘制行业指数走势图便于观察行业的长期趋势上升/下降/震荡 识别关键转折点 判断行业周期位置为个股分析提供行业背景。f1, ax plt.subplots(figsize(8, 4)) ax.plot(range(len(data_i)), data_i[收盘指数], color#1f77b4) ax.set_title(f申万{nm}行业指数走势图, fontsize12, pad10) # 设置x轴刻度选择7个关键时间点 ax.set_xticks([0, 100, 200, 300, 400, 500, 600]) ax.set_xticklabels(data_i[交易日期].iloc[[0, 100, 200, 300, 400, 500, 600]], rotation45) ax.grid(alpha0.3) # 添加网格线透明度0.34. 筛选行业内A股公司限定A股是为了确保数据可比性和监管一致性获取行业成分股。# 筛选条件属于指定行业且在A股上市 info_filtered info[(info[新版一级行业] nm) (info[交易所] A股)] # 提取股票代码和名称 chy_code info_filtered.iloc[:, [2, 3]] # 按位置索引获取特定列 chy_code.columns [ts_code, nm] # 统一列名5. 数据合并与整合# 合并公司基本信息与行业代码 co_data pd.merge(co_data, chy_code, howinner, onts_code) # inner join: 只保留同时存在于两个表中的数据 # 合并交易数据与行业代码 trdata_hy pd.merge(trdata, chy_code, howinner, onts_code) trdata_hy trdata_hy.sort_values([ts_code, trade_date]) # 按股票和时间排序sort_values: 确保时间序列的正确性 # 重命名列 trdata_hy.columns [股票代码, 交易日期, 收盘价, 成交量, 成交金额, 股票简称]6. 绘制个股走势图# 创建3行2列的子图 f2, axs plt.subplots(3, 2, figsize(12, 8)) axs axs.flatten() # 将多维数组展平为一维便于循环 code_list trdata_hy[股票代码].unique() # 获取唯一的股票代码列表 p 0 # 计数器控制绘制6只股票 for code in code_list: trdata_k trdata_hy[trdata_hy[股票代码] code] # 条件数据量足够且不超过6只 if len(trdata_k) 600 and p 6: axs[p].plot(range(len(trdata_k)), trdata_k[收盘价], color#ff7f0e) axs[p].set_title(trdata_k[股票简称].iloc[0], fontsize10) # 设置x轴刻度与行业指数图对齐 axs[p].set_xticks([0, 100, 200, 300, 400, 500, 600]) axs[p].set_xticklabels(trdata_k[交易日期].iloc[[0, 100, 200, 300, 400, 500, 600]], rotation45) axs[p].grid(alpha0.2) p 1 # 隐藏多余的子图 while p 6: axs[p].set_visible(False) p 1 plt.tight_layout() # 自动调整子图间距7. 财务数据整理获取行业内所有公司的财务数据 为后续的财务分析提供基础。# 提取行业内的股票代码 code_p pd.DataFrame({股票代码: code_list}) # 合并财务数据与行业股票代码 findata_m pd.merge(findata, code_p, howinner, on股票代码)五、综合评价函数Fr主要做基于财务数据的股票评分。def Fr(data, year): 功能使用主成分分析(PCA)对股票进行综合评价将多个财务指标综合成一个评分用于股票排序和选择 data: 财务数据 year: 评价年度 1. 数据准备与校验确保分析的时效性使用最新财务数据避免跨年数据混合导致的失真。# 检查数据是否为空 if data.empty: return pd.DataFrame(columns[股票代码, 股票简称, 综合得分]) # 筛选指定年度的数据 tdata data[data[年度] year] if tdata.empty: st.warning(f无{year}年度财务数据) return pd.DataFrame(columns[股票代码, 股票简称, 综合得分])2. 数据清洗· 删除负值某些指标为负可能表示公司存在问题· 删除空值确保分析的完整性和准确性· 数据质量直接影响模型效果。# 提取财务指标排除股票代码和年份 data_x tdata.iloc[:, 1:-1] # 过滤负值财务指标通常应为正值 data_x data_x[data_x 0] # 保留股票代码用于后续合并 data_x[股票代码] tdata[股票代码].values # 删除包含空值的行 data_x data_x.dropna()3. 数据标准化目的是消除量纲影响不同财务指标单位不同元、百分比、倍数等另外也要使所有指标具有可比性 标准化后所有指标均值为0标准差为1这是PCA分析的必要前提。# 分离特征财务指标和标签股票代码 X data_x.iloc[:, :-1] # 创建标准化器 scaler StandardScaler() # 标准化处理 X_scaled scaler.fit_transform(X)4. 主成分分析(PCA)采用降维的方法将多个相关财务指标转换为少数几个独立的主成分保留最重要的财务特征 消除多重共线性。# 创建PCA模型保留95%的原始信息 pca PCA(n_components0.95) # 对标准化后的数据进行PCA转换 Y pca.fit_transform(X_scaled) # 获取各主成分的方差贡献率表示每个主成分解释原始数据变异的能力 gxl pca.explained_variance_ratio_5. 计算综合得分# 计算综合得分各主成分得分加权求和 F (Y * gxl).sum(axis1)6. 整合结果try: # 读取股票基本信息获取股票简称 stk_data pd.read_excel(股票基本信息表.xlsx)[[ts_code, name]] stk_data.columns [股票代码, 股票简称] # 合并股票简称和综合得分 nm_stk_data pd.merge(stk_data, data_x[[股票代码]], on股票代码) nm_stk_data[综合得分] F # 按综合得分降序排序 nm_stk_data nm_stk_data.sort_values(综合得分, ascendingFalse).reset_index(dropTrue) except: # 异常处理如果无法获取股票简称使用空名称 nm_stk_data pd.DataFrame({ 股票代码: data_x[股票代码].values, 股票简称: , 综合得分: F }).sort_values(综合得分, ascendingFalse).reset_index(dropTrue)六、收益率计算函数Tr主要是做投资组合收益回测。def Tr(rdata, rank, date1, date2): 功能计算投资组合在指定期间的收益率主要用于验证财务评价模型的有效性计算历史表现 rdata: 股票排名数据来自Fr函数 rank: 投资组合中股票数量 date1: 开始日期 date2: 结束日期 1. 数据准备# 读取三年的复权交易数据 A1 pd.read_csv(复权交易数据2023.csv) A2 pd.read_csv(复权交易数据2024.csv) A3 pd.read_csv(复权交易数据2025.csv) # 合并数据 A pd.concat([A1, A2, A3]) # 确保日期为字符串格式便于比较 A[trade_date] A[trade_date].astype(str) # 将datetime对象转换为字符串格式 date1_str date1.strftime(%Y%m%d) date2_str date2.strftime(%Y%m%d)2. 构建投资组合选择综合得分最高的股票进行构建组合。# 获取排名前rank的股票代码 top_stk rdata.head(rank)[股票代码].tolist() # 初始化收益率列表和总收益率 stock_ret_list [] # 存储每只股票的收益率 r 0.0 # 投资组合总收益率3. 计算单只股票收益率持有期收益率 (期末价-期初价)/期初价等权重组合收益率 各股票收益率的算术平均for code in top_stk: # 筛选指定期间内该股票的数据 stk_data A[ (A[ts_code] code) (A[trade_date] date1_str) (A[trade_date] date2_str) ].sort_values(trade_date) # 按时间排序 # 检查数据是否足够至少有两个交易日 if len(stk_data) 2: p1 stk_data[close].iloc[0] # 期初价格 p2 stk_data[close].iloc[-1] # 期末价格 # 计算简单收益率 ri (p2 - p1) / p1 # 累加到总收益率等权重假设 r ri # 记录单只股票收益率 stock_ret_list.append({股票代码: code, 单只收益率: f{ri*100:.2f}%}) else: # 数据不足的情况 stock_ret_list.append({股票代码: code, 单只收益率: 数据不足})4. 计算市场基准收益率# 读取沪深300指数数据 hs300 pd.read_excel(沪深300指数交易数据.xlsx) hs300[trade_date] hs300[trade_date].astype(str) # 筛选指定期间的数据 hs300_data hs300[ (hs300[trade_date] date1_str) (hs300[trade_date] date2_str) ].sort_values(trade_date) # 计算沪深300收益率 rv 0.0 if len(hs300_data) 2: rv (hs300_data[close].iloc[-1] - hs300_data[close].iloc[0]) / hs300_data[close].iloc[0]5. 返回结果stock_ret_df:分析组合内部分化情况r:投资组合整体表现rv市场基准表现# 创建单只股票收益率的DataFrame stock_ret_df pd.DataFrame(stock_ret_list) # 返回单只收益率表、组合总收益率、基准收益率 return stock_ret_df, round(r, 4), round(rv, 4) # round(r, 4)保留4位小数七、Streamlit界面设计7.1 页面配置def st_fig(): # 设置页面配置 st.set_page_config( page_title申万行业数据分析, # 浏览器标签页标题 layoutwide, # 宽屏布局充分利用空间 initial_sidebar_stateexpanded # 侧边栏默认展开 )7.2 侧边栏with st.sidebar: st.title(申万行业分析) st.divider() # 添加分割线 # 读取行业分类表 try: info pd.read_excel(最新个股申万行业分类(完整版-截至7月末).xlsx) nm_L sorted(info[新版一级行业].unique()) # 获取唯一的行业列表并排序 except: st.error(行业分类表读取失败请检查文件路径和名称) return # 行业选择下拉框 nm st.selectbox(选择行业, nm_L, index0) st.divider() # 评价参数设置 st.subheader(评价参数) year st.selectbox(评价年度, [2022, 2023, 2024], index1) # 默认选择2023 rank st.selectbox(投资组合数量, [5, 10, 15, 20], index0) # 默认5只 st.divider() # 持有期选择 st.subheader(持有期) date1 st.date_input(开始日期, valuepd.to_datetime(2023-01-01)) date2 st.date_input(结束日期, valuepd.to_datetime(2023-12-31))7.3 主界面# 主标题 st.header(f申万{nm}行业数据分析, dividerblue) # 调用数据处理函数 result st_data(nm, info) if not result: return # 解包返回结果 f1, f2, data_i, findata_m, trdata_hy, co_data result7.4 双列布局展示图表# 创建两列布局 col1, col2 st.columns(2) with col1: st.subheader(指数走势图) st.pyplot(f1) # 展示行业指数走势图 with col2: st.subheader(前6只股票价格走势图) st.pyplot(f2) # 展示个股走势图7.5 可折叠数据表格# 添加分割线 st.divider() # 创建可展开/折叠的数据表格 with st.expander(指数交易数据, expandedFalse): st.dataframe(data_i, use_container_widthTrue, height300) with st.expander(上市公司基本信息, expandedFalse): st.dataframe(co_data, use_container_widthTrue, height300) with st.expander(股票财务数据, expandedFalse): st.dataframe(findata_m, use_container_widthTrue, height300) with st.expander(股票交易数据前2000条, expandedFalse): st.dataframe(trdata_hy.iloc[:2000], use_container_widthTrue, height300)7.6 综合评价结果展示st.divider() st.subheader(综合评价结果) # 调用综合评价函数 eval_result Fr(findata_m, year) if eval_result.empty: # 无数据时显示空表格 st.dataframe(pd.DataFrame({股票代码: [], 股票简称: [], 综合得分: []}), use_container_widthTrue) else: # 展示评价结果 st.dataframe(eval_result, use_container_widthTrue, height300) # 添加分割线 st.divider() # 绘制前rank只股票的得分折线图 st.subheader(f前{rank}只股票综合得分折线图) # 提取前rank个股票 top_rank_data eval_result.head(rank) # 创建折线图 fig, ax plt.subplots(figsize(8, 4)) ax.plot(top_rank_data[股票简称], top_rank_data[综合得分], markero, color#2ca02c, linewidth2) # 添加数据标签 for i, score in enumerate(top_rank_data[综合得分]): ax.text(i, score 0.1, f{score:.2f}, hacenter) # 设置图表样式 ax.set_title(f前{rank}只股票综合得分分布, fontsize12) ax.set_xlabel(股票简称, fontsize9, fontweightnormal) ax.set_ylabel(综合得分, fontsize9, fontweightnormal) ax.tick_params(axisx, rotation45) # 旋转x轴标签 ax.grid(alpha0.3) # 自动调整布局并显示 plt.tight_layout() st.pyplot(fig)7.7 收益率分析展示st.divider() st.subheader(收益率分析) if not eval_result.empty: # 调用收益率计算函数 stock_ret_df, r, rv Tr(eval_result, rank, date1, date2) # 展示单只股票收益率 st.write(单只股票收益率) st.dataframe(stock_ret_df, use_container_widthTrue) # 双列布局展示关键指标 col1, col2 st.columns(2) with col1: # 投资组合总收益率 st.metric(投资组合总收益率, f{r*100:.2f}%) with col2: # 沪深300同期收益率 st.metric(沪深300同期收益率, f{rv*100:.2f}%) else: st.write(暂无有效数据计算收益率)八、项目启动与执行流程if __name__ __main__: st_fig() # 启动Streamlit应用九、Streamlit简单页面展示详细页面展示十、系统可扩展性这个项目提供了一个完整的金融数据分析框架采用模块化的架构设计各功能模块之间保持松耦合关系便于后面的独立开发与扩展。想要部署Streamlit网页的可详见这篇飞桨AI Studio部署Streamlit全攻略(Python)-CSDN博客
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

中国建设教育协会报名网站做哪个网站最简单

第一章:云原生Agent服务治理的核心价值 在云原生架构快速演进的背景下,Agent作为连接应用与平台的关键组件,承担着监控、配置同步、策略执行等核心职责。服务治理不再局限于传统的微服务间调用管理,而是延伸至对Agent生命周期、行…

张小明 2025/12/31 5:26:34 网站建设

用php做的单车租赁网站谷歌google中文登录入口

第一章:PHP 8.6兼容性测试的核心挑战PHP 8.6 作为 PHP 语言演进中的重要版本,引入了多项底层优化和新特性,同时也对现有代码的兼容性提出了更高要求。在升级过程中,开发者面临的核心挑战不仅来自语法变更,更体现在运行…

张小明 2025/12/31 8:46:16 网站建设

青浦华新网站建设企业网站开发与设计

📚 深度学习中的其他重要层 除了基础的输入、隐藏、输出层,深度学习还有很多特殊功能的层,就像不同专业工具: 🛠️ 常用神经网络层(按功能分类) 1. 特征提取层 卷积层 (Convolutional Layer)…

张小明 2026/1/19 16:46:45 网站建设

网站建设 报告网站开发绩效考核

深入了解SAMBA与Linux网络监控 1. SAMBA简介 SAMBA是一款开源软件,用于提供类似Windows的网络服务,如文件和打印机共享。它能让基于UNIX的系统表现得像Windows NT服务器,在网络上提供许多NT服务器具备的服务。SAMBA本质上是通用互联网文件系统(CIFS)的UNIX版本,最初由A…

张小明 2026/1/12 21:43:41 网站建设

dw怎么建设网站免费下载ppt模板网站推荐

植物大战僵尸终极修改器:快速通关的完整指南 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 作为一名植物大战僵尸的忠实玩家,你是否曾经在无尽模式中苦苦挣扎?是…

张小明 2026/1/10 5:16:25 网站建设

顺德网站制作公司哪家好dw网页设计素材包免费下载

Logto终极实战指南:5分钟搞定现代认证系统搭建 【免费下载链接】logto logto-io/logto: 这是一个用于收集、分析和可视化日志数据的Web工具。适合用于需要收集、分析和可视化日志数据的场景。特点:易于使用,支持多种日志格式,具有…

张小明 2026/1/9 17:10:39 网站建设