添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Python数据分析——利用Tushare数据进行股票涨幅动态可视化展示

Python数据分析——利用Tushare数据进行股票涨幅动态可视化展示

年初的时候写了一篇用动态可视化图表展现2018年A股市场行情的文章,2018年股市行情惨淡,没有一支非新股超过有超过2倍的涨幅,2019年上半年,随着贸易战的缓和,A股走牛,通信、猪肉、券商轮番上攻,投资者都在憧憬新一轮的牛市的开启。但是,5月特朗普一条推特,中美贸易谈判又濒临破裂边缘,A股重挫,华为、大疆、海康威视等公司面临美国制裁,市场行情愈发不确定,在云波诡谲的国际局势下,A股股票的价格趋势如何?

最近认真看完了《利用Python进行数据分析》,感慨pandas的强大,功能齐全用法灵活,遂重新写一篇讲一讲如何清洗数据并进行分析。本文使用Tushare数据,Tushare是一个开源的金融数据库,涵盖股票、指数、期货、基金等金融数据。同时也记录了许多特色数据,比如电影票房、新闻资讯数据等。之前我常用Csmar和Choice数据,它们的优点是数据非常全面,缺点是都要收费。作为一个开源数据库,Tushare满足了大部分的金融数据分析需求,而且导出的DataFrame格式非常适合于利用pandas进行清洗分析。

引入需要的库

下载数据

Tushare使用前需要设置token,可以到 Tushare 官网官网注册账号并获取token:

首先获取交易日历,时间范围为年初至今:

然后下载日线数据和复权因子。由于我只调取半年的数据,用pro.daily对每一个交易日进行调取。

每个交易日的数据都是一个DataFrame,这里我们构建了一个for循环,把每个DataFrame添加到一个空列表中。为了防止获取失败,使用try-where检查错误并保持继续下载。

最后,合并数据,并进行一些格式调整。

导入数据库

这里我使用to_sql导入MySQL,便于之后分析,由于数据量比较小,保存为CSV格式也可以。

处理数据

最终效果通过 动态排名数据可视化 展现,这是一个B站up设计的模板,非常美观酷炫,只要按照如下数据格式整理好数据即可使用。

我的定义是,name是股票名称,type是所在地区+所在行业,value是股票涨幅,date为每个交易日,具体的股票增幅定义:

股票涨幅 = \frac{日后复权收盘价}{1月1日后最近1天的后复权开盘价} ,用此定义当前股价是相对于年初的多少倍。

复权价 = 不复权价\times当日复权因子

因此,将开盘价和收盘价复权:

因为新股当天涨幅限制较低(全天连续竞价的最高价不超过发行价的144%),且由于发行价相对较低,可以保持上市后连续多天涨停,因此排除所有一年内上市的新股(否则结果基本都是新股)。更进一步的探讨可以是,新股数据从开板后开始统计,这里暂且排除所有新股。

然后我们筛选出基期股票价格,这里有几点有注意的是:不能直接使用第一个交易日(2019.1.2)的价格,有可能遗漏1月2日处于停牌状态的股票,因此我选用1月1日后第一次有开盘价时的开盘价。

这里使用group-apply方法筛选,这是非常好用的pandas方法,由于数据已经按时间排序,所以不需要再排序。

然后建立行索引为日期、列索引为股票代码、值为收盘价的透视表:

对NaN值使用向下填充,使公司在停牌期间显示停牌前1日复权价。

接下来就是计算涨幅:

然后对涨幅排序,可视化模板也可以排序,但是仅限于排序对象较少的情况,因此我们需要预先进行排序,这里选取涨幅前15的股票:

最后,模板中还需要type,因此我们获取股票信息:

将排序后的数据与股票信息数据合并:

最后进行一些简单的数据处理就可以得到最终结果啦!

好了,大功告成,用模板打开数据,就可以看到炫酷的动态可视化啦!!

股票涨幅动态可视化 https://www.zhihu.com/video/1116069184722841600

对模板进行了一些修改,具体可以在config.js中查看。

其他

我们可以筛选出现在每日前15最多的股票,挖掘股票上涨背后对原因,这里我查找了一些公司可能的热点,由于我对其中一些股票不熟,可能有错。

还可以将股票价格变动中位数与沪深300指数对比:


谢谢阅读!!

求赞一波,点赞私信获取jupyter代码!!

编辑于 2019-05-28 19:30