python_股票增加控制人与流通股东等筛选条件

目录

写字前面:

结果展示

获取数据

行业数据

控制人数据

 十大流通股东数据

 开始合并

1 从行业数据中提取证券股的行业数据

2 合并控制人数据 

3 合并十大流通股东 

4 把三个结果按列合并


写字前面:

在分析数据的时候,常常需要的字段分散在多个文档里,这时候就需要把这些字段合并到一起方便查看和分析。本文以证券板块的股票为例,整合行业、控制人、十大流通股东这三项数据。

结果展示

 

获取数据

行业数据

数据来源优矿【具体优矿的使用过程看“python_寻找底部股票”博文】

下载的文件存储为industry_list.csv

控制人数据

 巨潮-》数据-》专题统计-》股本股东-》实际控制人持股变动

可以直接下载

注意:好像非交易日没法打开,那我这就不截网站的图了。

下图是下载后的数据:

 十大流通股东数据

通过akshare获取

akshare文档中  Welcome to AKShare’s Online Documentation! — AKShare 1.10.57 文档

有股票基本面数据的接口

路径:数据字典-》股票数据-》基本面数据-》流通股东

 注意:最好使用python3.8或python3.8以上版本安装akshare包执行接口代码

    import akshare as akpre_dir = r'D:/temp001/'code_list = ['000166','000686','000712','000728','000750','000776','000783','002500','002670','002673','002736','002797','002926','002939','002945','300059','600030','600061','600095','600109','600155','600369','600621','600837','600864','600906','600909','600918','600858','600999','601059','601066','601099','601108','601136','601162','601198','601211','601236','601375','601377','601456','601555','601688','601696','601788','601878','601881','601901','601990','601995']for code in code_list:# 流通股东try:df = ak.stock_circulate_stock_holder(symbol=code)df.to_excel(f'{pre_dir}流通股东_{code}.xlsx', engine='openpyxl')except Exception as e:print(str(e))print(f'{code} 失败')passtime.sleep(5)

 开始合并

已知:证券股代码列表

1 从行业数据中提取证券股的行业数据

def method_001():res_dir = r'D:/temp000/'def pd_000(x):sec_str = x['secID']res_str = sec_str.split('.')[0]return res_strindustry_path = r'D:/temp000/industry_list.csv'code_list = ['000166','000686','000712','000728','000750','000776','000783','002500','002670','002673','002736','002797','002926','002939','002945','300059','600030','600061','600095','600109','600155','600369','600621','600837','600864','600906','600909','600918','600858','600999','601059','601066','601099','601108','601136','601162','601198','601211','601236','601375','601377','601456','601555','601688','601696','601788','601878','601881','601901','601990','601995']df = pd.read_csv(industry_path,encoding='utf-8')df = df.loc[df['isNew']==1].copy()df['ticker00'] = df.apply(pd_000,axis=1)df00 = df.loc[df['ticker00'].isin(code_list)].copy()df00 = df00.loc[:,['ticker00','secShortName','industryName1','industryName2','industryName3']]df00.to_excel(res_dir+'industry_000.xlsx',engine='openpyxl')pass

执行后结果

2 合并控制人数据 

def method_002():res_dir = r'D:/temp003/'code_list = ['000166', '000686', '000712', '000728', '000750', '000776', '000783', '002500', '002670', '002673','002736', '002797', '002926', '002939', '002945', '300059', '600030', '600061', '600095', '600109','600155', '600369', '600621', '600837', '600864', '600906', '600909', '600918', '600858', '600999','601059', '601066', '601099', '601108', '601136', '601162', '601198', '601211', '601236', '601375','601377', '601456', '601555', '601688', '601696', '601788', '601878', '601881', '601901', '601990','601995']control_path = r'D:/temp000/专题统计_实际控制人持股变动.xlsx'df = pd.read_excel(control_path,engine='openpyxl')df = df.loc[:,['证券代码','实际控制人名称','控股数量(万股)','控股比例(%)','直接控制人名称','控制类型']].copy()df = df.loc[df['证券代码'].isin(code_list)].copy()df.to_excel(res_dir+'control_000.xlsx',engine='openpyxl')pass

执行后结果

3 合并十大流通股东 

先看下每个股票十大流通股东的数据结构

它是每季度十行数据,只取最新一季度的十大流通股东,把十行的股东名称转成一个字符串,彼此之间用分号隔开

def method_003():code_list = ['000166', '000686', '000712', '000728', '000750', '000776', '000783', '002500', '002670', '002673','002736', '002797', '002926', '002939', '002945', '300059', '600030', '600061', '600095', '600109','600155', '600369', '600621', '600837', '600864', '600906', '600909', '600918', '600858', '600999','601059', '601066', '601099', '601108', '601136', '601162', '601198', '601211', '601236', '601375','601377', '601456', '601555', '601688', '601696', '601788', '601878', '601881', '601901', '601990','601995']# pre_dir 十大流通股东文件存储的文件夹pre_dir = r'D:/temp000/000/'results_list = []for code in code_list:print(code)file_name = f"流通股东_{code}.xlsx"file_path = pre_dir + file_namedf = pd.read_excel(file_path,engine='openpyxl')# 取最新的一次十大流通股东df = df.iloc[0:10].copy()holders = df['股东名称'].values.tolist()holders_str = ';'.join(holders)date = df.iloc[0]['截止日期']results_list.append({'ticker':code,'date':date,'circulation_holders':holders_str})passres_df = pd.DataFrame(results_list)res_df.to_excel('D:/temp003/holders_000.xlsx',engine='openpyxl')pass

 执行结果

4 把三个结果按列合并

def method_004():one_path = r'D:/temp003/industry_000.xlsx'two_path = r'D:/temp003/control_000.xlsx'three_path = r'D:/temp003/holders_000.xlsx'df_one = pd.read_excel(one_path,engine='openpyxl',converters={'ticker00':str})df_two = pd.read_excel(two_path,engine='openpyxl',converters={'证券代码':str})df_three = pd.read_excel(three_path,engine='openpyxl',converters={'ticker':str})df00 = pd.merge(df_one,df_two,how='inner',left_on='ticker00',right_on='证券代码')df01 = pd.merge(df00,df_three,how='inner',left_on='ticker00',right_on='ticker')df01.to_excel(r'D:/temp003/res_000.xlsx',engine='openpyxl')pass

 最终结果

把数据都合并到一个表后,就可以进行下一步的分析了。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何实现CAN-SOME/IP通信路由测试

区别于基于UDP的车内通信路由,基于SOME/IP协议的路由增加了服务发现(Service Discovery)和服务发布(Service Publish),那对于测试工程师来说,怎么实现CAN-SOME/IP路由的测试呢? 01 …

【K8S系列】深入解析K8S调度

序言 做一件事并不难,难的是在于坚持。坚持一下也不难,难的是坚持到底。 文章标记颜色说明: 黄色:重要标题红色:用来标记结论绿色:用来标记论点蓝色:用来标记论点 Kubernetes (k8s) 是一个容器编…

基于springboot的智慧养老系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

数学建模学习之简单设备分配问题

简单的设备分配问题 某公司新购置了某种设备 6台,欲分配给下属的4 个企业,已知各企业获得这种设备后年创利润如表 1.1 所示,单位为千万元。问应如何分配这些设备能使年创总利润最大,最大利润是多少? 表1.1的数据为: 对…

Go 微服务开发框架 DMicro 的设计思路

Go 微服务开发框架 DMicro 的设计思路 DMicro 源码地址: Gitee:dmicro: dmicro是一个高效、可扩展且简单易用的微服务框架。包含drpc,dserver等 背景 DMicro 诞生的背景,是因为我写了 10 来年的 PHP,想在公司内部推广 Go, 公司内部的组件及 rpc 协议…

LeetCode 142.环形链表II

142. 环形链表 II - 力扣(LeetCode) /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode *detectCycle(ListNode …

4.日志分布式-ELK

文章目录 日志分布式-ELK概念可以添加的其它组件filebeat 结合 logstash 带来好处为什么要使用 ELK缓存和Fluentd完整日志系统基本特征ELK 的工作原理 部署Elasticsearchjdk环境和防火墙配置安装Elasticsearch修改配置文件优化内存参数启动程序并测试效果安装 Elasticsearch-he…

leetcode-344. 反转字符串

leetcode-344. 反转字符串 文章目录 leetcode-344. 反转字符串一.题目描述二.第1次提交(std::reverse)三.第2次提交(左右指针)四.第3次提交(左右指针,swap函数)五.第4次提交(左右指针) 一.题目描述 二.第1次提交(std::reverse) class Solution {public:void revers…

Springboot启用HTTP响应压缩

官方文档:https://docs.spring.io/spring-boot/docs/2.3.12.RELEASE/reference/htmlsingle/#how-to-enable-http-response-compression

mmc记录

1、获取csd,也就是DSR寄存器 说是应该可以获取块长度、卡存储容量等,但是在8953上,没看到这个日志 参考: 一、有6个主要的和寄存器 1、OCR寄存器 描述了存储卡的Vdd电压描述 ,总共32Bit Bit31 --- 卡上电状态位&…

赋能智能智造-RK3568智能主板助力机器人产业高速发展

机器人作为现代制造业的重要一环,正在以惊人的速度推动着生产效率和智能化水平的提升,它们在生产线上的准确操作和高效工作,为企业带来了巨大的竞争优势。关于工业机器人的编程和控制技术,在过去几年中已经有了很多发展和新的应用…

计算机网络——物理层

物理层 物理层是计算机网络体系结构中的底层层级,负责处理计算机与物理传输媒介之间的接口和通信细节。它主要关注如何在物理媒介上传输原始比特流,并确保数据能够可靠地从发送方传输到接收方。 物理层的主要任务包括: 传输介质&#xff1a…

谷歌Bard入门指南

文章目录 谷歌Bard入门指南一、简介二、使用指南三、中文化3.1 中文提问3.2 中文回答 四、Hello Game五、亮点 谷歌Bard入门指南 一、简介 Bard 是一个大型语言模型,也称为对话式 AI 或聊天机器人,经过训练,内容丰富且全面。Bard 接受过大量…

无线基站与无线频谱资源

文章目录 基站的主要组成天线馈线(电缆线)RRU(射频拉远单元,Remote Radio Unit)BBU(室内基带处理单元,Building Base band Unit)AAU(有源天线单元,Active Ant…

计算机网络 day3 广播风暴 - VLAN - Trunk

目录 广播风暴: 1.什么是广播风暴? 2.危害: 3.防范 STP生成树协议:(72条消息) 生成树协议 — STP_生成树协议步骤_一下子就醒了的博客-CSDN博客 VLAN: VLAN是什么? VLAN起到的作用: 广…

Python Flask构建微信小程序订餐系统 (六)

🔥 账号管理 🔥 展示账户列表 默认情况下的账户列表布局 查询用户信息 查询 所有用户信息 按照 倒序 的方式查询出来 User.query.order_by( User.uid.desc() ).all() ......@route_account.route("/index") def index():#模版文件夹取名叫 "account/login…

【Python爬虫与数据分析】Jupyter的安装与快捷键

目录 一、jupyter notebook安装与配置 二、命令模式快捷键 三、编辑模式快捷键 四、文件操作 一、jupyter notebook安装与配置 安装:Jupyter Notebook是以网页的形式打开的一个程序,集成在Anaconda包里面,也可以直接安装python3解释器&a…

C#基础学习_泛型集合List<T>

C#基础学习_泛型集合List 为什么要使用集合? 数组元素个数是固定的,数组一旦定义,就无法改变元素总数。如果需求变化,则必须修改源码。 如果初始化元素总数非常大,则会造成浪费。 集合的特点: 根据需要动态增加元素个数,没有限制 List泛型集合的存储结构,与数组类似,…

数据库基本操作-----数据库用户管理和授权

目录 一、数据库用户管理 1.新建用户 2.查看用户信息 3.重命名用户 4.删除用户 ​编辑5.修改当前登录用户密码 6.修改其他用户密码 7.忘记 root 密码的解决办法 (1)修…

window环境下安装Node并修改保存缓存的位置

0, 卸载Node 打开cmd命令行窗口 输入: npm cache clean --force然后在控制面版中卸载node 1,官网下载Node.js 点击官网下载 如一台电脑需要多个node环境 可使用nvm命令进行操作安装并且可以切换 2, 配置环境变量 安装成功之后&#x…