前言
股票分析中选股是很重要的一个环节,对于大多数股民来说,除了根据股价走势来选股之外,也会加入一些基本面选股的条件,比如换手率、量比、市盈率、市净率、市销率、股息率、总股本、流通股本、*流通股本、总市值、流通市值等等。
虽然通过数据库方式也是可以根据条件来选股的,不过掌握数据库的使用需要一定的基础和学习过程,如果还不会数据库的话,我们就来教大家构建一个GUI版基本面选股工具。
实现过程概述
首先是获取数据,我们要得到A股市场的全部股票的基本面指标清单,这里我们用了tushare的两个接口组合而成,一个是pro.stock_basic(),另一个是pro.daily_basic()。我们分别看下这两个接口的到的数据内容:
说明下,换手率中股本的统计口径表示的是*流通股,实战中只有*流通股统计出来的换手率才是真实的交易换手率。即使是已流通股的股东,他们要在二级市场上卖出股票也是要申报减持计划的。
一份是A股市场所有股票的名称、代码、上市日期、所属行业清单,一份是当天A股市场所有股票的市盈率、市净率、股本大小等基本面的数据,我们打算把它们以股票名称为轴合并为一份。
我们发现这么几个问题:
- 2份股票数据的数量是不对应的(3851 VS 3827)
- 第2份股票数据在中间位置缺了若干只股票,缺失位置是散乱的
- 第1份股票也缺了2只股票(后面处理完我才发现的,一只300104 乐视退,一只是600614 *ST鹏起)
代码里面我们用pd.merge方法,以股票代码为轴,将2份表格对应的合并在一,形成第三幅图。
关于选股的实现,我们采用的Pandas的矢量化特性,利用条件表达式对DataFrame格式的数据进行筛选,只不过这里我们把表达式外显为GUI上的控件而已。
接下来我们展示下效果和操作的方法。
- 运行程序后,表格显示了A股市场全部股票的市盈率、股本大小等基本面数据。多说一句,中间挺多数据为NaN的,大家还是要注意一下。
- 用条件表达式选股,选取换手率大于5%的股票,点击按钮【开始选股】
- 用条件表达式选股,叠加选取量比大于5的股票,也就是说股票的换手率大于5%的同时量比也要大于5。点击按钮【开始选股】
- 选出的股票我们要保存起来,点击按钮【开始保存】,这样就以csv格式保存到本地了。
如果选到一半想换选股条件重新选股,这时可以点击按钮【开始复位】,这样就恢复到初始的状态了
作者简介:
1-畅销书《Python股票量化交易从入门到实践》作者
2-日常运营公众号《元宵大师带你用Python量化交易》
3-CSDN视频课程《Python金融数据分析入门到实战》讲师