NO.160
2020.07.15
![ee1aaa37f1206c1dbde84df9d3087980.png](https://i-blog.csdnimg.cn/blog_migrate/c168bc0a1ca9746709ea530d9bc68b95.jpeg)
工欲善其事,必先利其器
//
- 前言 -
◆ ◆ ◆ ◆
今天,小咖来讲讲如何利用Python提取最近交易日、前一周交易日、前一月交易日、前一季度交易日等,并提取各个交易日的PE截面数据然后合并成单一表格,最终将导出以下结果。
![fda9948771cb36d6d2d1bb085f71e8ca.png](https://i-blog.csdnimg.cn/blog_migrate/6645abacecc8e77738a7086fd7b4b92d.jpeg)
资料来源:西瓜财经资讯
- 利用python进行金融处理 -
◆ ◆ ◆ ◆
为了实现以上功能需要进行以下完整步骤:
第一步:安装各种包
![03bce97a4e90f810ba485614d5b979ac.png](https://i-blog.csdnimg.cn/blog_migrate/279b99638e1c713193d1b6b65859c6dd.jpeg)
资料来源:西瓜财经资讯
第二步:提取交易日数据
![56b36b34eb1a161c907434d2155e0269.png](https://i-blog.csdnimg.cn/blog_migrate/c5c18839009ff2c83131c681cb1735e1.jpeg)
资料来源:西瓜财经资讯
(1)首次使用Python的wind接口时,需要进行如下操作:wind客户端——量化——修复插件——修复Python接口。
(2)在导入“包”时已经导入了Windpy,并设置为w,之后的语句直接使用w即可。
(3)语句需要以w.start() 开始,否则所有与wind相关的程序都无法运行,但只要运行一次后不用重复运行。
(4)通常我们需要根据当天日期来查找最近交易日,为了实现python运行的自动化,先确定当天日期,主要使用today1=datetime.today() ,并利用datetime.strftime将其转为str。
(5)以当天日期为要素,然后根据wind的wsd函数得到沪深300最近365个交易日收盘价,这里为了便利不再将其转化为dateframe。注意得到的frame1为升序排列,因此最近交易日在最后一行,且一共有两列,第一列为日期。(为了下图的可视化小咖还是进行了dateframe转换的操作,但是如果单纯根据本文语句则无法显示如下dateframe)
![befb1a851503155d5f8095de3f4fe378.png](https://i-blog.csdnimg.cn/blog_migrate/2ff2b24eb6c2bd637e5096c869cf6222.jpeg)
资料来源:西瓜财经资讯
(6)设置timedelta这一空list,然后利用循环从表格中提取日期要素。frame1.Data[i][t]可以直接提取数据,i从0开始代表列数,t从0开始代表行数。由于frame1为升序排列,所以frame1.Data[0][-1]即代表第一列+倒数第二行,即前一交易日的日期数据。然后根据append将提取出的各个交易日合并至timedelta中。
![67daecd520338a45593445af74d4193f.png](https://i-blog.csdnimg.cn/blog_migrate/2d1abb654eaf458bd6a19d645b4d5c8c.jpeg)
资料来源:西瓜财经资讯
第三步:提取科创板成分上述交易日的PE数据
![793b2cd63be47d8839e90df470088c54.png](https://i-blog.csdnimg.cn/blog_migrate/87bdca484ff2939c3f8e5253bcbeab5a.jpeg)
资料来源:西瓜财经资讯
(1)根据wset函数获取科创板成分,不用生成dateframe可以直接提取科创板代码,原理同上面的frame1。code的结果如下:
![35b8745a7a4593667539eee0a3bc704d.png](https://i-blog.csdnimg.cn/blog_migrate/f213904151d557aec5d3c18d6b7c387c.jpeg)
资料来源:西瓜财经资讯
(2)先用timedelta[0]即最近交易日得到一个有证券名称和和最近交易日PE的基础表。之前我们往往通过以下语句得到dateframe:
date1=w.wss(code,"sec_name,pe_ttm","tradeDate="+timedelta[0])
data1frame=pd.DataFrame(data=np.mat(date1.Data).T,index=date1.Codes)
但是经过对wind的探索,发现通过增加"error,"和“usedf=True”可以直接生成dateframe,语句如下:
error,data1=w.wss(code,"sec_name,pe_ttm","tradeDate="+timedelta[0],usedf=True)
![96b7cc929d881d9fbc49192007851de2.png](https://i-blog.csdnimg.cn/blog_migrate/b82fd86b58d877886fd9928da3f08084.jpeg)
资料来源:西瓜财经资讯
(3)根据剩下交易日生成各个日期的PE截面数据并直接在循环中合并。
![b8d3c678eb6a6610217127c5a7983673.png](https://i-blog.csdnimg.cn/blog_migrate/36bc20af3e56c3adb743770e5d7321b5.jpeg)
资料来源:西瓜财经资讯
第四步:导出自动命名的表格
(1)excel表格名称设置为——科创板动态市盈率'+today+',即可以得到动态命名的表格。
![9acf8be31dc5db2c32d212460985f47e.png](https://i-blog.csdnimg.cn/blog_migrate/326ca20bd7a2ff734a927d75c2632d08.jpeg)
资料来源:西瓜财经资讯
![5be06f2de41f446d54bfca7f0478f0bf.png](https://i-blog.csdnimg.cn/blog_migrate/cc571f5dbc275988b31ddbce9ef02578.jpeg)
资料来源:西瓜财经资讯
![fda9948771cb36d6d2d1bb085f71e8ca.png](https://i-blog.csdnimg.cn/blog_migrate/6645abacecc8e77738a7086fd7b4b92d.jpeg)
资料来源:西瓜财经资讯
- 后言 -
◆ ◆ ◆ ◆
想要获取源代码的小伙伴关注公众号,后台回复“Python金融应用之提取交易日+合并截面数据”即可。注意,源代码可以直接粘贴使用,而且是带文字说明的哦。
end
公众号:西瓜财经资讯
撰稿人:安静的金融美女子