说明:本文python股票市场分析实战主要包括两个方面,一是历史趋势分析,二是风险分析。听着挺厉害,其实......咳,咳

实验数据:来源于Yahoo Finance,网址:https://finance.yahoo.com
,该网站提供了很多API接口,读取数据很方便,本文用的工具是pandas-datareader


实验平台:Anaconda3(包含很多做数据分析的包,如numpy,pandas,matplotlib,seaborn等等,但是不包括pandas-datareader,所以自己安装一下,pip
install...)

下面就正式开始吧!

1、获取数据
#导入工具包 import pandas_datareader as pdr #获取阿里巴巴股票数据 alibaba =
pdr.get_data_yahoo("BABA") #显示数据前5行 alibaba.head()


太简单了,是不是有点猝不及防。不过实践过程中也可能会遇到各种错误的,对应着自己百度错误信息吧(捂脸)。数据中adj close为已调整收盘价,volume
是交易量,估计都是股票中的术语吧,我也没弄懂,其他的就好理解了,比如最高价,最低价。

接下来可以看看数据量,比如
alibaba.shape
看看数据基本信息,比如
alibaba.info()
看看数据描述统计信息,比如
alibaba.describe()
注:获取的数据比较正规干净,基本不需要进行数据清洗,后面在各种计算中可能会遇到空值,到时候再删除或者做其他处理,这里就不多赘述了。

2、历史趋势分析


股票数据的历史趋势分析包括,绘制近几年的股票数据变化趋势图,对比不同公司的股票价格变化,绘制每日股票波动情况等。此时需要的包,就不仅仅是读取数据的pandas_datareader啦。
#基本信息 import numpy as np import pandas as pd from pandas import
Series,DataFrame #股票数据读取 import pandas_datareader as pdr #可视化 import
matplotlib.pyplot as plt import seaborn as sns %matplotlib inline #时间 from
datetime import datetime
其中,numpy,pandas,matplotlib等为python数据分析中基础包,基本涉及数据的都需要这些包。%matplotlib
inline,在数据可视化中使用,引入了这个魔法命令,就不用每次展示图都写一个plt.show()啦。datetime为了设置时间。
start = datetime(2015,8,24) alibaba = pdr.get_data_yahoo("BABA",start = start)
amazon = pdr.get_data_yahoo("AMZN",start = start) alibaba.head()


同样,可以执行amazon.head()查看亚马逊股票数据。本次对比的就是阿里巴巴和亚马逊的股票数据,今天是8月24号,所以准备对比近3年的股票数据。

画个图吧,对adj close 画一个折线图,看看阿里巴巴股票近三年收盘价变化情况。
alibaba["Adj Close"].plot(kind="line",legend=True)
画图就要用的plot()方法,它有很多参数,大家可以在jupyter
notebook中同时按住Shift+Tab键,查看一下,本文中kind="line"表示画折线图,legend=True表示要带图例。其他属性大家自行查阅。




由近三年股票趋势图可以看出,阿里巴巴股票涨的还真不少,尤其是2017年增幅很快,同时也可以看出2018年状况就没有那么理想了,就最近8月看价格趋势是在下滑。图像很真实也很形象,但我分析的并不专业,估计专业炒股的应该能看出更多信息。同理,大家可以看看其他数据列的变化趋势,比如看看交易量近三年的变化情况,在此就不一一画图了。

下面将阿里巴巴数据和亚马逊数据画在同一张图里,我们对比看看。
#重命名一下,方便设置图例 alibaba["Ali_Adu Close"]=alibaba["Adj Close"] amazon["Ama_Adj
Close"] = amazon["Adj Close"] #对比展示 alibaba["Ali_Adu Close"].plot(legend =
True) amazon["Ama_Adj Close"].plot(legend = True)


其中无论是阿里巴巴还是亚马逊数据列名字均为Adj
Close,则图中就不好区别哪条线是谁的。更改一个名字就方便看了,由图可知橘色为亚马逊收盘价变化趋势线,蓝色为阿里巴巴变化趋势线。整体来看近三年两者股票价格均升高,不过起始价格不一样,增幅也不同。如果再进一步细分时间段,我们就能发现更多的变化情况。小伙伴们可以试试对比近一年的,一个季度的数据变化等。也可以画一些差值变化线,比如计算每日最高价和最低价差值,存储为新的一列数据,绘制该列数据近3年的变化情况。

3、风险分析


此处主要用到的就是对比分析,通过观察多个企业股票近几年对比变化情况,看哪个企业股票波动小,稳步增长,不同企业股票之间是否有升降相关关系,如果你也有投资资金,可以分析过后考虑买点这个股票,股市有风险,入市需谨慎哦。哈哈哈,进入正题了。

首先都是导入包,跟前面一样,就不再上图了。然后是导入公司股票数据,选择苹果、谷歌
、微软、亚马逊、Facebook这五家公司,所以数据都导入那数据量就有点大了,此处我们只分析Adj Close数据。
company = ['AAPL','GOOG','MSFT','AMZN','FB'] top_tech_df =
pdr.get_data_yahoo(company)['Adj Close'] top_tech_df.head()



除了列举数据,在算一下数据变化情况吧,调用pct_change(),这个函数用来计算同colnums下两个相邻的数字之间的变化率,以AAPL来说,就是计算后一天减去前一天的差值。



再来画个Adj Close数据折线图吧,如下图所示:
top_tech_df.plot()


图中数据就不做具体分析了,大家可以看看数据趋势变化,紫色折线谷歌数据与绿色折线亚马逊数据变化趋势比较相近。

如要比较数据之间是否具有相关性,可以绘制一下差值数据散点图,下面以谷歌和亚马逊为例,绘制这连个公司的收盘价差值散点图,看一下关联关系。
sns.jointplot('AMZN','GOOG', top_tech_dr, kind='scatter')



图中箭头为后加上去的,旨在方便大家观察数据分布情况。首先紫色箭头方向为直线x=y,横坐标为亚马逊差值,纵坐标为谷歌差值,可见大多数的点都符合如下情况:即谷歌差值为正时(股票升了)亚马逊差值也为正(也升了);谷歌差值为负时,亚马逊也在跌。散点图多分布在x=y这条过原点的直线上。同时绿色箭头方向,是散点图分布的宽度,宽度越窄,相关性越好。

下面,做一个所有公司的股票相关性比较:
sns.pairplot(top_tech_dr.dropna())



一张图太大了,放不下,小伙伴们将就看吧。五家公司任意两家之间的对比数据,由散点图可以看出,还是谷歌和亚马逊之间的相关关系最好,数据趋势更符合x=y,同时宽度也不夸张。其他图中相关性就要弱一些。

总之,股票的涨跌受诸多因素的影响,可能有政策原因,大环境原因,企业内部原因,不同企业之间的相关性等等,真的不是一些数据就能准确预测的。

结束语:本文实战案例参考了优达学城的数据分析课程而制作,优达学城的课程还是不错的,大家可以找资源学习学习,网址:http://cn.udacity.com/
<http://cn.udacity.com/>,哈哈哈我是不是在打广告了(捂脸)。溜了溜了

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信