《10.综合实战一:股价数据挖掘、可视化及相关性分析》_第1页
《10.综合实战一:股价数据挖掘、可视化及相关性分析》_第2页
《10.综合实战一:股价数据挖掘、可视化及相关性分析》_第3页
《10.综合实战一:股价数据挖掘、可视化及相关性分析》_第4页
《10.综合实战一:股价数据挖掘、可视化及相关性分析》_第5页
已阅读5页,还剩52页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python金融大数据挖掘与分析常凯第10讲综合实战一:舆情评分与股价数据相关性分析10.1Tushare获取股价数据10.2数据可视化10.3舆情评分与股价相关性分析10.1Tushare获取股价数据我们只一讲需要通过Python调用其股价数据来和评分数据一一匹配,从而进行之后的相关性分析。我们会使用:Tushare库,应为它是一个免费的财经数据接口包,通过它我们能够免费地调用历史行情数据来进行分析。其官方地址为:/如果是想查看股价行情数据,网址为:http:///trading.html

10.1Tushare获取股价数据10.1.1Tushare库的基本介绍Python安装Tushare库:我们可以使用PIP安装法来安装通过win+R组合键调出运行框,输入cmd后回车,然后在弹出框中输入pipinstalltushare的方法来进行安装。10.1Tushare获取股价数据10.1.1Tushare库的基本介绍获得日线行情数据我们使用tushare试着调用万科的历史数据:万科的股票代码为000002,start的意思是开始日期,end是最终日期,具体代码如下:注意:如不写start和end,Python会默认调取从当天往前3年的数据10.1Tushare获取股价数据10.1.1Tushare库的基本介绍获得日线行情数据弹出的结果回事个二维表格结构,所以可以用df.head()打出的结果:10.1Tushare获取股价数据10.1.1Tushare库的基本介绍获得日线行情数据Open:为开盘价High:为最高价Close:为收盘价Low:为最低价Volume:为成交量price_change:为价格变化(今日收盘价-昨日收盘价)p_change:为价格涨跌幅(price_change/昨日收盘价)Ma5:为5日均线价格v_ma5:为5日均线成交量10.1Tushare获取股价数据10.1.1Tushare库的基本介绍(1)想调取超过3年的日线级别数据因为ts.get_hist_data()函数不仅获得了股票的基本价格信息,还获取了价格变化、均线价格等衍生变量,所以它最多也只能调取当天往前3年的数据。如果想调取超过3年的日线级别数据,得用ts.get_k_data()函数,它只获取股价的基本数据,df.head()弹出的结果:10.1Tushare获取股价数据10.1.1Tushare库的基本介绍(1)想调取超过3年的日线级别数据10.1Tushare获取股价数据10.1.1Tushare库的基本介绍(1)想调取超过3年的日线级别数据通过get_k_data()函数获取的数据不会将日期默认设为行索引如果想把这里的date列转为行索引,可以使用设置索引的set_index()函数。代码如下:如果不想重新赋值,可以在set_index()函数中设置inplace参数为True,代码如下:10.1Tushare获取股价数据10.1.1Tushare库的基本介绍(2)获得分钟级别的数据我们可以使用ktype=‘分钟’函数,如果把分钟改成5,可以调用5分钟级别的数据。还能设置为每15,30或60分钟级别数据。一旦要求获取分钟级别的数据的话,再写起始日期和结束日期就没有效果了,使用ktype=‘5’弹出来的结果如下:10.1Tushare获取股价数据10.1.1Tushare库的基本介绍(3)获得分钟级别的数据如果想获取当时的股价信息需要使用ts.get_realtime_quote()函数如果觉得列数过多,可以通过DataFrame选取列的方法选取相应的列代码如下:打印结果如下:10.1Tushare获取股价数据10.1.1Tushare库的基本介绍(3)获得分钟级别的数据我们可以用ts.get_realtime_quote()函数如果想同时获得多个股票代码的实时数据,只需要在括号里添加股票的编号,例如下:10.1Tushare获取股价数据10.1.1Tushare库的基本介绍(4)获得分笔数据通过如下代码可以获得历史分笔数据,分笔数据也即每笔成交的信息:运行结果如下图所示:如果想获取当日分笔信息,可以用如下代码:10.1Tushare获取股价数据10.1.1Tushare库的基本介绍(5)获得指数信息通过如下代码可以获得上证指数等指数信息:运行结果如下图所示:10.1Tushare获取股价数据10.1.2股价与舆情评分相匹配我们接下来把7.1.1(1)的获取的万科的历史数据导入名为share的excel文件,代码如下:10.1Tushare获取股价数据10.1.2股价与舆情评分相匹配下面就获得的舆情评分表格与这个股价信息表格相合并了。利用merge()合并函数,具体代码如下:10.1Tushare获取股价数据10.1.2股价与舆情评分相匹配股票数据并不是每天都有,比如周末和节假日就没有数据,但是6.3的舆情评分每天多有。我们也可以看到7.1.1(1)的数据是从11月30号到9月1号,而舆情评分是从9月1号到11月30号。这两个问题我们可以使用merge()的设置来解决。设置on参数为"date"使得两张表按其对齐设置how参数为"inner"选择取交集的连接方式,只留下了公有的部分,share表中没有的日期被剔除了,这样就一次性的完成了数据的剔除和合并。10.1Tushare获取股价数据10.1.2股价与舆情评分相匹配因为我们选的是从舆情评分合并的:日期会是从9月1号到11月30号。查看我们的data2.xlsx:datescoreprice2018-09-037023.552018-09-047524.432018-09-056523.31.........10.2数据可视化接下来我们会使Python自带的可视化库叫作matplotlib。我们先试着通过数据可视化的方式将舆情评分和股价画到一张图上,看看两者是否有某种程度的相关性。本小节主要就来讲解下matplotlib的基本用法并将舆情评分和股价数据可视化到一张图上。Matplotlib有三大画图形为:plt.plot()折线图plt.bar()柱状图plt.pie()饼状图10.2数据可视化10.2.1数据可视化基础试用之前matplotlib需要把他引进Python,引进库的方法是以下的第一行:折线图plt.plot()折线图是有方法如下:10.2数据可视化10.2.1数据可视化基础折线图plt.plot()展示的图形:10.2数据可视化10.2.1数据可视化基础折线图plt.plot()如果想让x和y之间有些数学关系,列表是不太容易进行数学运算的,例如6.1小节所讲的时候a=list(),b=numpy()所以必须使用Numpy库引入一维数组进行数学运算。10.2数据可视化10.2.1数据可视化基础折线图plt.plot(),一个图画两条线:10.2数据可视化10.2.1数据可视化基础折线图plt.plot(),plt.show()运行结果:10.2数据可视化10.2.1数据可视化基础(2)柱状图plt.bar():代码如下:10.2数据可视化10.2.1数据可视化基础(3)添加文字说明如下的代码我们可以添加标题和x,y轴:10.2数据可视化10.2.1数据可视化基础(3)添加文字说明运行结果如下图所示:10.2数据可视化10.2.1数据可视化基础(4)添加图例可以通过plt.legend()来加添加图例:如果想把图例锁定在左上角,只需要在括号里写:loc=‘upperleft’我们想改图例的位置之需要改单引号里面的字:锁定在右上角为‘upperright’锁定在左下角为‘lowerleft’锁定在右下角为‘lowerright’10.2数据可视化10.2.1数据可视化基础(4)添加图例可以通过plt.legend()来加添加图例,低下做个示范:打印结果:10.2数据可视化10.2.1数据可视化基础(5)设置双坐标轴接下来介绍何来画出两条y坐标轴,

要两条线之间的代码加上一行:plt.twinx()10.2数据可视化10.2.1数据可视化基础(5)设置双坐标轴弹出的图面:10.2数据可视化10.2.1数据可视化基础(6)设置图片大小如果对默认图片大小不满意,可以通过如下代码可以设置图片大小:10.2数据可视化10.2.1数据可视化基础(7)中文显示问题在使用matplotlib画图时,默认情况下是不支持中文显示的,通过如下代码可解决该问题。其中由于更改了字体导致显示不出负号,得将配署文件中axes.unicodeminus设为False:10.2数据可视化10.2.1数据可视化基础(7)中文显示问题上一章把字体改成了:SimHei是黑体的英文翻译,如果想采用其他字体,可参考下面的字体英文对照表:黑体SimHei微软雅黑Microsoft

YaHei新宋体NSimSun新细明体PMingLiU细明体MingLiU仿宋FangSong楷体KaiTi10.2数据可视化10.2.2舆情评分与股价数据可视化实战首先我们要讲讲使用日期的两个问题:(1)日期是字符串因为data[‘date’]是string类型的,如果直接用来画图的话,X轴坐标会出现很密集的现象,比较影响美观。所以这里通过datetime.datetime.strptime()方法将其转化为timestamp时间戳格式,此时matplotlib会自动间隔显示,然后我们可以使用foriinlen(data)来改变所有的日期。10.2数据可视化10.2.2舆情评分与股价数据可视化实战(2)日期字串比较长:我们有两个反法来解决这个问题:1.我们旋转X轴,如果要旋转45度,代码如下:2.使用python自动旋转,代码如下:10.2数据可视化10.2.2舆情评分与股价数据可视化实战解决了日期的问题以后我们可以使用7.1获取的Excel(‘data.xlsx’)来做实战了,代码如下:10.2数据可视化10.2.2舆情评分与股价数据可视化实战10.2数据可视化10.2.2舆情评分与股价数据可视化实战10.2数据可视化10.2.2舆情评分与股价数据可视化实战plt.show():10.股票数据挖掘与可视化10.3股票数据挖掘与可视化需要安装绘制K形图的mpl_finance库pipinstallmpl_finance#调入相关库importtushareastsimportmatplotlib.pyplotaspltimportmpl_financeasmpfimportseabornassnssns.set()10.3股票数据挖掘与可视化#获取万科股价数据importtushareastsdf=ts.get_k_data("000002",start="2020-01-03",end="2022-11-30")df.head()print(df)#保存到万科股价数据.xlsxdf.to_excel("万科股价数据.xlsx",index=False)#将日期设置为行索引df.set_index("date",inplace=True)10.3股票数据挖掘与可视化#以收盘价绘制图形df["close"].plot()#添加标题importmatplotlib.pyplotaspltplt.rcParams["figure.figsize"]=(12,10)plt.rcParams["font.sans-serif"]=["SimHei"]df["close"].plot(title="万科股价走势图")10.3股票数据挖掘与可视化#股价数据挖掘与K图绘制#获取万科股价数据df=ts.get_k_data("000002","2020-01-03","2022-11-30")print(df)#日期格式调整及表格转换#导入调整日期格式涉及两个子库frommatplotlib.pylabimportdate2numimportdatetime10.3股票数据挖掘与可视化#将tushare库获取到日期数据转换成canlestick_ochl()函数可读取的格式defdate_to_num(dates):num_time=[]fordateindates:date_time=datetime.datetime.strptime(date,"%Y-%m-%d")num_date=date2num(date_time)num_time.append(num_date)returnnum_time#将DataFrame转换为二维数据,利用date_to_num()函数转换日期格式df_arr=df.values#DataFrame格式数据转换为二维数组df_arr[:,0]=date_to_num(df_arr[:,0])print(df_arr[:,5])10.3股票数据挖掘与可视化#绘制K形图fig,ax=plt.subplots(figsize=(15,6))#创建画布和子图#K形图绘制mpf.candlestick_ochl(ax,df_arr,width=0.6,colorup="r",colordown="g",alpha=1.0)#绘制网格线plt.grid(True)#设置X轴的刻度格式为常规日期格式ax.xaxis_date()#添加均线图#构造5日均线和10日均线数据df["MA5"]=df["close"].rolling(5).mean()df["MA10"]=df["close"].rolling(10).mean()10.3股票数据挖掘与可视化#绘制成图形#设置正常中文显示plt.rcParams["font.sans-serif"]=["SimHei"]fig,ax=plt.subplots(figsize=(15,6))mpf.candlestick_ochl(ax,df_arr,width=0.6,colorup="r",colordown="g",alpha=1.0)#绘制5日均线图plt.plot(df_arr[:,0],df["MA5"])plt.plot(df_arr[:,0],df["MA10"])10.3股票数据挖掘与可视化#绘制成图形#绘制网格线plt.grid(True)#设置标题plt.title("万科A股K形图")#设置X轴plt.xlabel("日期")#设置y轴plt.ylabel("价格")#设置横轴刻度格式为常规日期格式ax.xaxis_date()10.4舆情评分与股价相关性分析10.4.1皮尔逊相关系数皮尔逊相关系数,‘r’(Pearsoncorrelationcoefficient)也称皮尔逊积矩相关系数(Pearsonproduct-momentcorrelationcoefficient),是一种线性相关系数。皮尔逊相关系数的公式如下:D(X)和D(Y)为变量X和Y的方差COV(X,Y)为变量X和Y的协方差10.4舆情评分与股价相关性分析10.4.1皮尔逊相关系数皮尔逊相关系数实在Python自带的scipy库里,只需要用如下代码把它引出来:只需给它两个数组x和y,它就能返回两个数值:相关系数r值和显著水平

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论