来源:雪球App,作者: 小散的逆袭,(https://xueqiu.com/1924290093/132798587)
截止目前我们已经能读取并显示一个指数或者任一一个个股的收盘价及其图形。这种图形到处可以看到,并不稀奇。我们可以利用聚宽的函数获取更多的更有价值的数据。
第二个小目标
画出任一一只个股最近10年的的市盈率(PE)走势图。
PE是衡量一只股票特别是一个指数估值非常重要的指标。在很多软件中,我们能很方便的查看其当天的PE数值,但是想看其历史数值走势图就不是那么容易的一件事了。现在我们就来自己实现这个小目标。
市盈率在聚宽中被归为财务数据类别,所以想取PE数据就得看看聚宽API文档提供了什么函数了。
有两个函数可以。本来我以为可以用第二个函数,那样可以一次性的把PE数据取完,但是看了函数定义后发现,这个函数的参数里只有结束日期和往前取的天数。那么如此,当我想取某个时间段时,还的自己计算需要取多少天数。这就不如直接能设定起止日期那样方便了。不过这个函数在某些情况下肯定也是很有用的。我们记下来留待以后再用。
我们来看一下get_fundamentals函数的定义。
get_fundamentals(query_object, date=None, statDate=None)
这个函数的参数只有3个,其实只有2个。因为第二个和第三个参数在实际使用时只能二选一。我们这次只需要用date这个参数,即指定某一天。比较麻烦的是第一个参数。
query_object: 一个sqlalchemy.orm.query.Query对象, 可以通过全局的 query 函数获取 Query 对象,Query对象的简单使用教程
从聚宽的解释看,这个参数学问很大。对于咱们初学者来说,我们不必较真,看看人家是怎么用的,先拿来用就行。我看了聚宽上的示例后,就试着写了一下。如下。
这里用了一个变量q来存储query的查询结果。对,我把这个参数理解为一个类似数据库查询语句SQL那种的查询语句。这里,valuation.pe_ratio表示是PE,代表要查询返回的数据。filter就是过滤条件,valuation.code == ‘000001.XSHE’的意思就是查询的是个股平安银行。这句话翻译一下就是:查询个股平安银行的市盈率。(注意:valuation.pe_ratio和valuation.code都是聚宽定义的财务数据参数,其他更多的财务数据请查看API文档)
最后一句代码意思就是,查询平安银行2019年9月3日的市盈率,并把结果存储在变量df中。接下来,用print(df)看看结果如何。
这个结果是DataFrame类型的。只有一行一列。注意那个0只是索引。如果想只获取9.1451这个数值,需要再处理一下。df.iloc[0,0]。这句话的意思就是取df表格中的第0行第0列值。在编程的世界里,几乎所有计数都是从0开始的,我们要习惯这个。修改后的代码如下
这里我把取的是PE数值赋给imy这个我自己定义的变量。我还特意打印了imy的类型,是浮点类型。一切OK。
好了,今天就写到这里。