前言
文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者:启方
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
python免费学习资料以及群交流解答点击即可加入
本文将通过Python将从2018年度到目前的股票历史数据爬取过来,大展身手进行一波数据可视化操作,结合数据和市场分析2019年A股牛市的走势和行情。
一、工具准备
本文分析侧重可视化,而且难点主要在于数据的获取。
对于股票相关数据,想必对于Python大家应该都比较熟悉了,网站爬数据神器,只要从东方财经网和网易财经爬取相关股票的历史数据即可。
数据可视化分析方面,虽然Python有numpy、pandas、matplotlib等第三方库来辅助进行数据处理和数据可视化,或者也可以借助echart等图表开源接口,但是通过各类代码进行图表属性设置等方面还是比较繁琐的,而且只能生成静态的图表,无法进行动态和深入的多维分析。所以这里用BI来做可视化分析展示。
二、数据准备
Python股票数据爬取
由于需要相关的历史数据,经过对比东方财经网和网易财经网的相关网站页面,网易财经网对于我收集相关历史数据更加方便。
这边直接贴出来网易财经网获取股票历史数据的接口:
http://quotes.money.163.com/service/chddata.html?code=[code]&start=[yyyyMMdd]&end=[yyyyMMdd]&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP
接口中有三个核心参数,code表示股票编码,start表示开始时间,end表示结束时间,用python自动填充即可,调用起来非常方便。
通过Python调用网易财经的股票数据接口,获取上海/深圳A、B股近期成交量前10的共40家股票的历史数据,包含相关股票的开收盘情况、跌涨数据、换手率、成交数据、总市值、流通市值等关键数据指标。
直接贴出代码:
import urllib.request
import re
import glob
import time
'''
python学习交流群:1136201545更多学习资料可以加群获取
'''
# 上海、深圳A/B股票,近期成交量前40支股票代码
allCodelist=[
'601099','601258','600010','600050','601668','601288','600604','600157','601519','600030',#上海A股
'900902','900941','900948','900938','900947','900932','900907','900906','900903','900919',#上海B股
'000725','300059','002131','300116','002195','002526','002477','000536','300104','000793',#深圳A股
'200725','200160','200018','200037','200488','200168','200468','200058','200012','200625' #深圳B股
]
for code in allCodelist:
print('正在获取%s股票数据...' % code)
if (code[0] == '6' or code[0]=='9'):#A股
url = 'http://quotes.money.163.com/service/chddata.html?code=0' + code + \
'&start=20180101&end=20190228&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP'
print(url)
else:#B股
url = 'http://quotes.money.163.com/service/chddata.html?code=1' + code + \
'&start=20180101&end=20190228&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP'
print(url)
urllib.request.urlretrieve(url, 'd:\\股票\\' + code + '.csv')#需要提前新建好D盘的“股票”目录,将数据写入csv文件
csvx_list = glob.glob('d:\\股票\\*.csv')
print('总共发现%s个CSV文件' % len(csvx_list))
time.sleep(2)
print('正在处理............')
for i in csvx_list:
fr = open(i, 'r').read()
with open('csv_to_csv.csv', 'a') as f:#合并csv文件
f.write(fr)
print('写入完毕!')
完美运行,爬取时间不到15秒,成功获取到上海/深圳A、B股近期成交量前10的共40家股票,2018年1月1日到2019年2月28日的所有历史交易数据。
字段都很容易理解,不需要处理,直接做可视化分析!
四、数据分析及可视化
第一步:导入数据
finebi能从很多种数据源导入数据:如Excel,CSV,XML,以及各类数据库(SQL Server,Oracle,My SQL等),两大主流开源平台(Hadoop,Spark)等等。最常用的方式是连接数据库和导入excel数据。这里直接导入excel。
数据准备—添加业务包,业务包是用来统一整理数据表的。创建好业务包之后,点击添加表,新建excel数据集。
就得到如下的数据明细。这里可以自动识别数据的字段类型,也可以修改字段类型。
第二步:可视化分析
先来观察这份数据,展示了各股每天的最高最低及收盘价,以及流通市值总市值等。那么我们可以分析一下股票走势析,个股成交量做个排名,各股市值规模排名分析,以及未来走势预测。
1、 新建仪表板,即我们说的可视化报告、dashboard,叫法很多。
2、 新建可视化组件,添加刚刚导入的数据集。(图表、查询筛选框等都叫组件,是finebi仪表板的组成元素。)
分析1:股票走势-日线分析
添加完数据集会进入到这个分析界面。拖拽要分析的字段到维度框,会自动推荐图表,也可以自己选择图表展示。可以更改配色,图表形式,过滤排序等(都是展示调整)就呈现出如下的可视化
分析2:股票走势-日线分析
同样的操作,对个股成交量和成交额做了个排名分析。
经过大概半个小时的操作,我这边将相关股票的开收盘情况、跌涨数据、换手率、成交数据、总市值、流通市值等关键数据指标制作成了一个数据可视化报告,方便从多个维度观察和分析股票的各个指标。