书接上回,上节我们定义了一个获取某个指数某日的PE数值的函数。下面要做的就是得到这个函数的时间序列,然后计算出这个时间序列中每天的PE数值,最后就可以用图形进行展示了。

这个方法和前文中的方法一样,我们照猫画虎就可以了。

df = get_price('000016.XSHG', start_date='2014-01-01', end_date='2019-09-01', fields=['close'], fq='pre')#给df添加一列,列名PE,先赋值0.00df.loc[:,"PE"]=0.00ltIndex = df.indexi = 0;for irow in ltIndex: strdate = irow.strftime('%Y-%m-%d') fPE = get_index_value_date('000016.XSHG' , strdate) df.iloc[i,1] = fPE i = i + 1print(df)

000016.XSHG就是上证50指数的代码,我们这次计算的就是上证50指数2014年1月1日到2019年9月1日的每天的PE数值。

我们定义的函数get_index_value_date用在了for循环中,注意,for循环中有个日期格式的转换问题。因为我们定义的函数中的日期其类型是string类型,而在ltIndex中的日期不是string类型,而是日期类型的,所以不能直接作为参数用在我们的函数中。strdate = irow.strftime('%Y-%m-%d')的意思就是把irow这个日期类型的日期转换成字符串类型的日期。这种不用变量之间类型的转换是编程中进场需要用到的,比如int类型转字符串类型,字符串类型转float等等。这种小技巧的学习,不用刻意,用到了就去百度学习。比如你在百度中输入“python 日期类型转换”,你就能看到N多这方面的帖子,看看人家是怎么写的,直接copy过来用就行了。

下面再加入图形显示代码即可

#设置画布大小plt.figure(figsize=(10,5))#设置图标标题plt.title('上证50PE', fontsize=14)plt.plot(df['PE'])plt.legend()plt.show()

整个程序的完整代码如下

import datetimeimport matplotlib.pyplot as pltdef get_index_value_date(index_code , date): stocks = get_index_stocks(index_code , date) q = query( valuation.pe_ratio , valuation.market_cap ).filter( valuation.code.in_(stocks) ) df = get_fundamentals(q, date) sum_p = sum(df.market_cap) sum_e = sum(df.market_cap / df.pe_ratio) pe = sum_p / sum_e return pedf = get_price('000016.XSHG', start_date='2014-01-01', end_date='2019-09-01', fields=['close'], fq='pre')#给df添加一列,列名PE,先赋值0.00df.loc[:,"PE"]=0.00ltIndex = df.index#print(df)now_time = datetime.datetime.now()print(now_time)i = 0;for irow in ltIndex: strdate = irow.strftime('%Y-%m-%d') fPE = get_index_value_date('000016.XSHG' , strdate) df.iloc[i,1] = fPE i = i + 1now_time = datetime.datetime.now()print(now_time)print(df)#设置画布大小plt.figure(figsize=(10,5))#设置图标标题plt.title('上证50PE', fontsize=14)plt.plot(df['PE'])plt.legend()plt.show()

代码中for循环前后我加入了这段代码

now_time = datetime.datetime.now()print(now_time)

他的用处是打印显示这个for循环开始和结束的时间。因为我们这次需要调取5年多每天的数据,聚宽的函数调用需要时间,我需要看看程序运行了多久。

最终结果如下

从时间打印结果看,这个程序运行费时44秒。为了验证我们计算的指数PE和其他网站提供的PE图形是否一致,我比对了2014年9月22日-2019年9月20日,我计算的图形和雪球网提供的上证50PE图形。

非常perfect!现在,我们只需要改变一下程序中的指数代码和时间段,就可以得到任一指数任何时间段(前提是聚宽的数据库要支持啊)的PE走势图了。比如沪深300、中证500、中证消费等等。从此,看指数估值再也不用求人了。

pe估值 python_Python编程学习笔记(8)相关推荐

  1. pe估值 python_Python编程学习笔记(7)

    欢迎关注我的公众号[小散逆袭大本营] 学到目前这个程度,我们已经可以画出个股的PE和PB曲线图了.但是我们知道,对于个股来说,PE或者PB的参考价值很有限,不同类型企业,其PE的市场认可程度是不同.我 ...

  2. 多线程编程学习笔记——async和await(三)

    接上文 多线程编程学习笔记--async和await(一) 接上文 多线程编程学习笔记--async和await(二) 五.   处理异步操作中的异常 本示例学习如何在异步函数中处理异常,学习如何对多 ...

  3. 多线程编程学习笔记——任务并行库(二)

    接上文 多线程编程学习笔记--任务并行库(一) 三.   组合任务 本示例是学习如何设置相互依赖的任务.我们学习如何创建一个任务的子任务,这个子任务必须在父任务执行结束之后,再执行. 1,示例代码如下 ...

  4. 多线程编程学习笔记——任务并行库(三)

    接上文 多线程编程学习笔记--任务并行库(一) 接上文 多线程编程学习笔记--任务并行库(二) 六.   实现取消选项 本示例学习如何实现基于Task的异步操作进行取消流程,以及在任务真正运行前如何知 ...

  5. Linux与C++11多线程编程(学习笔记)

    多线程编程与资源同步 在Windows下,主线程退出后,子线程也会被关闭; 在Linux下,主线程退出后,系统不会关闭子线程,这样就产生了僵尸进程 3.2.1创建线程 Linux 线程的创建 #inc ...

  6. Cocoa编程学习笔记一

    Cocoa编程学习笔记一 一.Cocoa的起源 Mac OS X的窗口服务器与UNIX中的X窗口服务器具有相同的功能:从用户那里接受事件,并将时间转发给应用程序,将应用程序发过来的数据显示在屏幕上.N ...

  7. 多线程编程学习笔记——使用并发集合(三)

    接上文 多线程编程学习笔记--使用并发集合(一) 接上文 多线程编程学习笔记--使用并发集合(二) 四.   使用ConcurrentBag创建一个可扩展的爬虫 本示例在多个独立的即可生产任务又可消费 ...

  8. Java 8 函数式编程学习笔记

    Java 8 函数式编程学习笔记 @(JAVASE)[java8, 函数式编程, lambda] Java 8 函数式编程学习笔记 参考内容 Java 8中重要的函数接口 扩展函数接口 常用的流操作 ...

  9. java 网络编程学习笔记

    java 网络编程学习笔记 C/S模式:客户端和服务器 客户端创建流程 1 1.建立Socket端点 2 3 Socket s = new Socket(绑定地址, 绑定端口); 2.确认源数据方式和 ...

最新文章

  1. 《评人工智能如何走向新阶段》后记(再续15)
  2. cocoaChina中整理的知识点-对文件重新命名-利于查阅
  3. Python案例:四种方法判断回文字符串
  4. php html小项目,使用PHP把HTML生成PDF文件的几个开源项目介绍
  5. Windows下MYSQL数据库BOOT密码的修改方法
  6. Javascript:利用闭包实现高级排他
  7. 什么是信息安全管理体系
  8. Linux系统安装详解
  9. kudu之tablet设计原理
  10. 125KHz读取ID卡卡号
  11. 第一周学习报告(关于string)
  12. 利用ECharts实现数据的左右移动
  13. 面试经历---网易(2016年01月19日下午面试)
  14. webuploader上传文件夹总结
  15. Element UI 组件库分析和二次开发(一)
  16. 基金A类和C类的科普贴
  17. Java 文件压缩及下载
  18. 02 MSC类设备-基础篇(二)
  19. Matlab画星座图
  20. ThinkPHP验证码错误解决过程

热门文章

  1. 两种CSS3圆环进度条详解
  2. HDU 1088 Write a simple HTML Browser
  3. C++ 性能剖析 (四):Inheritance 对性能的影响
  4. c语言常用的字符串处理函数
  5. 如果当初你爱的再狠一点
  6. 重识微信:花 8 小时列举微信功能
  7. 【干货】从零开始做运营(超详细脑图)
  8. 【活动】PMcaff免费培训之终结版扩招名额----20名额等你来抢
  9. Web API 之SelfHost与OwinSelfHots加载外部程序
  10. instancetype和id的区别