股票行业数据
# -*- coding: utf-8 -*- import tushare as ts import time import pandas as pd import csv # Tushare token TUSHARE_TOKEN ee5c0e991e17949cdafbcf8ec42321ef4bac94e9ca3474e4d62313a3 ts.set_token(TUSHARE_TOKEN) pro ts.pro_api() # 获取申万三级行业列表 df_industry pro.index_classify(levelL3, srcSW2021) industry_list df_industry[[index_code, industry_name]].values.tolist() def get_latest_revenue_growth(ts_code: str): 获取个股最新营收同比、净利润同比 df pro.fina_indicator(ts_codets_code) time.sleep(0.35) if df.empty: return None, None, None # 按报告期倒序排列最新财报第一行 df df.sort_values(end_date, ascendingFalse).reset_index(dropTrue) latest df.iloc[0] report_date latest[end_date] tr_yoy latest[tr_yoy] # 营收同比 netprofit_yoy latest[netprofit_yoy] # 净利润同比 return report_date, tr_yoy, netprofit_yoy def get_stock_name(ts_code: str): 根据股票代码获取股票名称 df pro.stock_basic(ts_codets_code, fieldsts_code,name) time.sleep(0.2) if df.empty: return 未知股票 return df.iloc[0][name] def get_current_pe_ttm(ts_code: str): 获取PE-TTM空值返回None不会强制转float df pro.daily_basic( ts_codets_code, start_date20260722, fieldstrade_date,pe_ttm ) time.sleep(0.35) if df.empty: return None df df.sort_values(trade_date, ascendingFalse) latest df.iloc[0] pe latest[pe_ttm] # 是空/NaN 统一返回None if pd.isna(pe) or pe is None: return None return float(pe) # 全局变量表头只写一次 csv_path hangye.csv # 检测文件是否存在不存在则写入表头 try: with open(csv_path, r, encodingutf-8-sig) as f_check: pass except FileNotFoundError: # 文件不存在新建并写入表头 with open(csv_path, w, encodingutf-8-sig, newline) as f_head: writer_head csv.writer(f_head) writer_head.writerow([ ts_code, 股票名称, 营业收入同比增长率(%), 利润同比增长率(%), 市盈率PE-TTM, 所属行业 ]) index 0 # 遍历所有行业 for idx_code, idx_name in industry_list: index 1 print(f\n 正在处理行业{idx_name} 序号{index} ) # 获取行业内全部股票 stock_df pro.index_member_all(l3_codeidx_code) ts_codes stock_df[ts_code].unique().tolist() # 统计变量初始化每个行业独立清零 growth_count 0.0 profit_growth_count 0.0 count 0 # 营收有效样本数 count_profit 0 # 利润有效样本数 # 追加写入CSV with open(csv_path, a, encodingutf-8-sig, newline) as f: writer csv.writer(f) for ts_code in ts_codes: try: period, growth, profit_growth get_latest_revenue_growth(ts_code) name get_stock_name(ts_code) # 跳过未知股票 if 未知股票 in name: continue peTTM get_current_pe_ttm(ts_code) # 核心校验任意一项为空/NaN 直接跳过这支股票杜绝None参与运算 if (period is None or growth is None or pd.isna(growth) or profit_growth is None or pd.isna(profit_growth)): continue # 转为浮点保证数值类型统一 growth float(growth) profit_growth float(profit_growth) # 控制台打印信息 print(f{ts_code} {name:20} | 营收同比:{growth:6.2f}% | 净利同比:{profit_growth:6.2f}%) # 组装写入CSV的数据 pe_show round(peTTM, 2) if peTTM is not None else writer.writerow([ ts_code, name, round(growth, 2), round(profit_growth, 2), pe_show, idx_name ]) # 绝对值小于200才纳入平均值统计 if abs(growth) 200: growth_count growth count 1 if abs(profit_growth) 200: profit_growth_count profit_growth count_profit 1 except Exception as e: print(f{ts_code} 获取失败: {str(e)}) continue # 计算行业平均增长率 avg_growth growth_count / count if count 0 else 0.0 avg_profit_growth profit_growth_count / count_profit if count_profit 0 else 0.0 # 写入行业汇总行 writer.writerow([ 【行业均值汇总】, idx_name, round(avg_growth, 2), round(avg_profit_growth, 2), , f有效个股数量{count} ]) # 控制台打印行业汇总结果 print(f\n【{idx_name}汇总】) print(f行业平均营收同比{avg_growth:.2f} %) print(f行业平均净利同比{avg_profit_growth:.2f} %) print(f有效统计公司数{count}\n) time.sleep(1) # 每个行业结束停顿1秒防止接口请求过快被限制

相关新闻

Betaflight配置器:让无人机飞控调参变得像玩游戏一样简单

Betaflight配置器:让无人机飞控调参变得像玩游戏一样简单

Betaflight配置器:让无人机飞控调参变得像玩游戏一样简单 【免费下载链接】betaflight-configurator Cross platform configuration and management application for the Betaflight firmware 项目地址: https://gitcode.com/gh_mirrors/be/betaflight-configurat…

2026/7/24 21:54:51阅读更多 →
地域环境对家电设备的损耗分析:贵阳本地维保方案实测与经验总结

地域环境对家电设备的损耗分析:贵阳本地维保方案实测与经验总结

作为长期扎根贵阳的居家技术爱好者,我一直习惯从设备工况、环境适配、损耗逻辑、运维成本的角度,复盘家用及小型商用电器的使用问题。在日常交流中发现,很多用户存在一个普遍性认知误区:家电故障、耗电激增、寿命缩短,…

2026/7/24 21:54:51阅读更多 →
爱立信RRU光接口功能解析与故障应急处理案例

爱立信RRU光接口功能解析与故障应急处理案例

一、RRU光接口功能概述 RRU(射频拉远单元)通过CPRI(通用公共射频接口)光纤连接到基带单元(BBU),这是RRU与基站之间通信的核心接口。 爱立信厂家RRU或者AAU的光接口称为DATA口,有两个物理端口,分别是DATA1口和DATA2口。具体功能如下: 1. DATA1口:主用光口(上行光口…

2026/7/24 21:54:51阅读更多 →
AI辅助学术写作:从文献精华提取到摘要生成

AI辅助学术写作:从文献精华提取到摘要生成

1. 项目概述:AI如何重塑学术写作体验去年帮导师审阅研究生论文时,我发现一个有趣现象:超过70%的学术新手在摘要写作环节平均耗时3小时以上,且普遍存在"重要数据遗漏"或"关键结论模糊"的问题。这正是"好写…

2026/7/25 3:37:50阅读更多 →
YOLO算法在智慧工地车辆清洗监测中的应用实践

YOLO算法在智慧工地车辆清洗监测中的应用实践

1. 项目背景与核心价值在现代化建筑施工领域,工程车辆进出工地时的清洁管理一直是环保监管的重点难点。传统人工检查方式存在效率低下、标准不统一、记录难追溯等问题。这个基于YOLO算法的智慧工地车辆清洗监测系统,正是为了解决这些痛点而生。我参与过多…

2026/7/25 3:37:50阅读更多 →
Linux用户权限管理与安全实践详解

Linux用户权限管理与安全实践详解

1. Linux用户与权限系统概述在Linux系统中,用户和权限管理是系统安全的核心机制。这套体系源自Unix的多用户设计哲学,通过严格的权限控制实现不同用户对系统资源的隔离访问。我管理过的生产服务器上,曾因为一个配置不当的sudo权限导致整个数据…

2026/7/25 3:37:50阅读更多 →
Unity UGUI拖拽功能实现:从事件处理到边界限制的完整指南

Unity UGUI拖拽功能实现:从事件处理到边界限制的完整指南

1. 项目概述与核心价值最近在社区里看到不少朋友在讨论Unity的UI交互,尤其是拖拽功能的应用。很多新手在尝试制作背包、仓库、技能栏这类系统时,第一个拦路虎往往就是“怎么让图标跟着鼠标走,还能限制它不乱跑”。这确实是个挺典型的痛点&…

2026/7/25 3:37:50阅读更多 →
Agent产品在医疗行业的落地探索:合规、数据安全与场景适配的三重挑战

Agent产品在医疗行业的落地探索:合规、数据安全与场景适配的三重挑战

Agent产品在医疗行业的落地探索:合规、数据安全与场景适配的三重挑战 一、为什么医疗行业的AI落地总是"雷声大雨点小"? 过去两年,几乎每一家大模型厂商都发布了"AI医疗"的解决方案。但走进医院信息科实地调研时会发现&am…

2026/7/25 3:37:50阅读更多 →
多模态大模型技术突破与应用实践

多模态大模型技术突破与应用实践

1. 多模态大模型的技术突破最近在AI领域出现了一个引起广泛关注的技术进展——新一代多模态大模型在多个基准测试中取得了突破性表现。这种模型架构能够同时处理文本、图像、音频等多种数据形式,在理解、推理和生成能力上都展现出显著优势。作为一名长期跟踪AI技术发…

2026/7/25 3:35:49阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 1:01:14阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 1:01:14阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/25 1:01:14阅读更多 →
突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:01:16阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:01:16阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

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

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

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

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

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

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

2026/7/24 19:00:40阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

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

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

2026/7/24 19:00:40阅读更多 →