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 …

爬虫基本原理

一、爬虫的原理 爬虫是什么?把互联网上的数据,抓取下来,存到自己的本地。 以百度为例,爬取一个个的网页,存到自己库中,当我们搜索的时候,去百度的数据库中搜索,显示在前端&#xf…

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

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

基于springboot的智慧养老系统

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

面部识别技术VS其他生物识别技术:哪种更安全、更准确、更可靠?

面部识别技术是一种生物识别技术,通过分析人脸特征,识别和验证个体身份。与其他生物识别技术相比,面部识别技术具有一些独特的优点和局限性。下面将从技术原理、应用场景、准确性、安全性、可用性等方面,对面部识别技术与其他生物…

【云原生】Init 容器

Init 容器 v ljx97609760 一起沟通学习 Init 容器是一种特殊容器,在 Pod 内的应用容器启动之前运行。Init 容器可以包括一些应用镜像中不存在的实用工具和安装脚本 理解 Init 容器 每个 Pod 中可以包含多个容器, 应用运行在这些容器里面,…

centos磁盘挂载

通常情况下,云平台开出来的服务器只有默认的系统盘,而数据盘需要运维人员自己挂载在数据目录,此篇记录centos磁盘挂载的过程,以便今后遇到类似情况便于查看。 系统版本:centos7.9 1、查看磁盘情况: [root…

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

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

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

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

Webpack5开发模式选择

Webpack 5 是一款强大的模块打包工具,可用于将许多分散的模块按照依赖关系打包成一个(或多个)bundle。在Webpack 5中,主要有两种开发模式,分别是开发模式(development)和生产模式(pr…

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…

常用数字电路模块:计数器与分频器(一)

本文介绍常见的电路——计数器,方便后续讲解分频电路。 一、计数器 (1)计数器代码   计数器,顾名思义就是在时钟的节拍下进行计数,一个简单的N位计数器的代码如下所示,这个计数器从0计数到2N -1&#x…

python爬虫

一.爬虫介绍 1.什么是爬虫 爬虫(Spider),也被称为网络爬虫或网络蜘蛛,是一种自动化程序,用于在互联网上浏览和提取信息。爬虫通过模拟人类用户访问网页的行为,从网页中提取数据并将其存储或进行进一步处理…

ubuntu freeradius 3.0 + mariadb

安装数据库及Radius sudo apt update sudo apt install -y freeradius freeradius-mysql freeradius-utils mariadb-server mariadb-client# sudo mysql_secure_installationNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDBSERVERS IN PRODUCTION USE…

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…