精品教学案例利用atplotlib和eaborn对苹果股票价格进行可视化分析腾讯云开发者社区

本案例适合作为大数据专业数据可视化课程的配套教学案例。通过本案例,能够达到以下教学效果:

可视化分析在数据分析中扮演着相当重要的角色。可视化可以使数据更为清晰得传递信息,使数据分析更为生动具体。Matplotlib是一个Python库,用于2D绘图,而Seaborn是Python基于Matplotlib的数据可视化的库。Seaborn在Matplotlib的基础上进行了更高级的封装,从而使得作图更加简单方便,可以作出信息丰富且美观的图。本案例旨在帮助大家快速熟悉Matplotlib和Seaborn这两个可视化工具的操作。

本案例我们将分析一个股票数据集,此数据集包含美国500家上市公司2013-2018年的股票数据,我们选择其中苹果公司的股票作为分析对象,来进行股票涨跌的分析。S&P 500 Index数据集中每一列数据对应的含义如下表所示:

首先,我们导入数据集并采样得到苹果公司股票(AAPL)2013-2018年的数据。为了便于之后的分析,我们从date列提取年和月的信息并添加year和month两列数据。

折线图用于绘制连续型数据,展示数据变化的趋势。

我们将数据以年为单位进行分组,以每年收盘价格的平均值绘图。

分析:从图中我们可以看出,苹果公司2013-2018年的股票收盘价格变化趋势,总体趋势走高,但是我们注意到2015年,出现下降趋势,但2016股票行情回暖并大幅度走高。

此处我们用到了plot()函数,其用法很简单,x为横坐标数据,y为纵坐标数据。除此之外,Matplotlib还提供了丰富的线形及其颜色,还可以调节线的宽度(linewidth),数据点的大小(markersize)及设置坐标轴的名字等。同时,可以利用grid()函数绘制网格线;默认为False,利用legend()函数设置图例,使用其loc参数设置图例的位置等。另外,Matplotlib允许多条折线绘制在一张图中。

绘制2013-2018年,每年成交量平均值的折线图。

分析:此图反映了2013-2018年间,苹果公司股票交易量的变化趋势,我们可以看出其交易量整体呈下降趋势,但2017年开始转变。结合上一个图,我们看出,虽然股票的价格升高,但是股票的成交量降低,所以由这两个图不能很明确的体现股票真正价值的变化,其股票价格的升高,可能是由于货币价值的变化,通货膨胀等,具体原因需要结合更多的数据集进行分析。

我们将数据以年为单位进行分组,把股票最低价格的平均值和最高价格的平均值绘制于同一个画布上。

分析:这里我们注意到,最高价格与最低价格之间的差距,2015年与2017年较大,这里也显示了股票市场的不确定性。

关于plot()函数,对线形和颜色的设置及更多选择请参考Matplotlib官网或者借助help函数查询,进行多次练习。

散点图是数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,常用于回归分析中。

绘制2013-2018年随股票收盘价格的变化其成交量的散点图。

分析:此图展示了2013-2018年随着股票收盘价格的变化,股票成交量的分布和聚合情况。

我们通过每个点的颜色来展示不同月份的收盘价格与成交量的分布,使用更多的参数对此散点图进行美化。例如,我们可以设定参数alpha改变数据点的透明度,设定参数marker改变数据点的形状,设定参数c为month设置不同分类的颜色,并使用colorbar()绘制色阶栏。

柱状图是一种用矩形条表示分类数据的图表,这些矩形条的高度或长度与它们所表示的值成比例。柱状图可以垂直绘制,也可以水平绘制。

我们选择2015年的数据,进行绘制每月股票收盘价格平均值的柱状图。

分析:此柱状图表示2015年12个月收盘价格平均值的情况,从8月起,股票收盘价格开始较大幅下降。

bar()函数绘制柱状图,主要的参数x为x轴的位置序列;y为柱形图的高度。参数hatch可以设置填充图形。

此外,Matplotlib还提供了绘制横向柱状图的函数barh()。绘制2015年每月股票收盘价格和开盘价格平均值的横向柱状图。

利用legend()函数,设置其参数使图例置于表格外以免遮挡图形。

直方图又称质量分布图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。

我们使用2015年股票成交量的数据绘制直方图。

分析:此图展示了2015年股票交易量的分布直方图。直方图是用面积表示各组频数的多少,矩形的高度表示每一组的频数或频率,宽度则表示各组的组距,因此其高度与宽度均有意义。我们看到柱状图与直方图的形状很相似,但是实际上的含义及用处并不一样,直方图主要表示频率分布,其x轴为定量数据,而柱状图展示的是大小的比较,其x轴变量是分类数据。

hist()有很多参数,其中6个比较常用。x为输入数据是必填,其他可选,包括bins:表示直方图的柱数,默认为10;density:表示是否将得到的直方图向量归一化,默认为0;facecolor: 表示直方图颜色;edgecolor: 表示直方图边框颜色;alpha: 表示透明度;histtype: 表示直方图类型(bar, barstacked,step,stepfilled)。

箱线图又称为盒须图、盒式图或箱式图,是一种用于显示一组数据分散情况资料的统计图,它能显示出一组数据的最大非异常值、最小非异常值、中位数、及上下四分位数。

绘制2015年苹果股票开盘,收盘,最高及最低价格的分布。

分析:根据“箱子”的含义,我们可以轻松看到每类价格的中位数及分布情况。箱形图不受异常值的影响,常用于识别异常值。箱式图经常用于可视化分析中,包含很多信息。

以上我们介绍的方法是函数方法做图,即使用基本的Matplotlib命令,接下来我们介绍另一种方法,即面向对象API的方法,此法为创建图的最佳方式。

Matplotlib可以通过add_subplot()新增子图,指定figsize和dpi参数来指定图形大小,纵横比和DPI来创建图。

我们在同一个画布上均分成 2 * 1 的画布进行绘图。

figure():创建一个空白画布,此函数有3个常用参数,依次为num:表示此图形的id,可为整型或者字符型;figsize:表示以英寸为单位的宽高; dpi:表示图形分辨率,相同的figsize,dpi越大则图形越大;facecolor:表示背景色;edgecolor:边框颜色;frameon:默认值True为绘制边框,如果为False则不绘制边框。其中,tight_layout()函数的目的是避免图表之间的重叠。

对上图进行添加坐标轴名称等信息。

我们通过使用set_xlabel(),set_ylabel()及set_title()设置图表的信息。

add_axes()函数可以为图表新增子区域,该区域可以座落在figure内任意位置,且该区域可任意设置大小。

Axes表示一个图表,通过add_axes()函数设置子区域的相对位置。

我们可以利用面向对象API的方法,绘制双Y轴图。绘制交易量和收盘价格的线图。

此图为共享y轴的例子,共享表示的就是x轴使用同一刻度线,twinx()函数表示共享x轴,twiny()表示共享y轴。

Seaborn提供了很多高层封装的函数,帮助数据分析人员快速绘制美观的数据图形。

核密度估计(kernel density estimation,即KDE)是非参数统计检验中的重要方法之一,常用于估计未知的密度函数。在Seaborn中,可以通过kdeplot()函数绘制核密度图。

绘制2015年成交量的核密度估计。

分析:核密度图可以理解为直方图的平滑曲线,是对真实的概率分布曲线进行的模拟。用于观察数据的分布。

注意:导入Seaborn包后,绘图风格自动变为Seaborn风格。相较于Matplotlib代码简洁很多。

set()函数表示使用Seaborn的默认设置参数。shade设置为True时,kde曲线下面的区域会进行阴影处理,默认为False;color控制曲线及阴影的颜色

同时,我们还可以绘制多维数据的核密度图,例如:开盘价格,收盘价格与成交量的关系。

shade设置阴影,cbar设置色阶栏。

Seaborn可以用distplot()函数直接把直方图和核密度估计(KDE)一次性画出来,并且KDE可以通过kde参数进行设置,默认为True;通过bins参数设置分段数量。

导入Seaborn包后,绘制2015年股票成交量的直方图和核密度图。

使用面向对象API的方法,绘制两个子图,分别表示2015年开盘价格和收盘价格的直方图。

分析:此图展示了开盘与收盘价格的密度分布,总体来说,其分布基本类似。

rug设置是否生成观测数值的小细条。

Seaborn中可以使用scatterplot() 函数绘制散点图。

为了方便分析,我们新建一列tend,把2015年股票收盘价格小于2015年收盘价格平均值的日子设为0,大于及等于2015年平均值的日子设为1。

绘制2015年收盘价格与成交量的散点图。

分析:此图展示了2015年收盘价格与成交量之间的关系,由颜色我们可以看出,前半年的收盘股票价格普遍较高,此结果与我们之前的分析一致。

参数hue用于指定额外的分组特征,其值为分组数据

使用lmplot()函数可以得到两个特征之间的线性回归直线。

Seaborn可以可视化两个变量的双变量分布,joinplot()函数可以显示两个变量之间的双变量关系以及每个变量的单变量分布。

绘制2015年收盘价格与开盘价格的联合分布图。

分析:此图展示了2015年收盘价格与开盘价格之间的关系,我们可以知道呈明显的正相关关系。jointplot()函数将直方图和散点图同时绘制出来。

我们通过参数kind设置图形的类型:scatter,reg,resid,kde,hex。

为图像添加回归拟合直线。

绘制2015年收盘价格和开盘价格联合核密度图。

绘制2015年收盘价格和开盘价格散点图,然后添加联合密度分布图。

plot_joint函数可以将很多绘图形式放在同一张图表中。

pairplot()可以完成点对图的绘制,多用于展示变量之间的相关性;对角线上的直方图允许我们看到单个变量的分布,而上下三角形上的散点图显示了两个变量之间的关系。

绘制open,close,high,low与volume的点对图。

分析:由图可知,open,close,high和low之间均呈正相关关系,与volume相关性较不明显。

参数kind设置为reg时,每个散点图将绘制线性回归拟合模型图像。

由此可见,Seaborn提供的操作更为简洁,提供的图像更加多样及美观。

小提琴图是箱线图和核密度图的结合,在Seaborn中,使用violinplot()函数绘制。

绘制小提琴图如下:

分析:此图含有的信息量也有很多,图一展示了2015年中12月,每个月的收盘价格的分布情况;图二展示了,当有特征变量加入之后,收盘价格的分布情况,图三为图二的升级版,将特征变量分布在小提琴图的两侧;图四显示了2013-2015年收盘价格的分布情况。

参数hue用于指定额外的分组特征,其值为分组数据;如若想要将图的分组分别绘制在箱式图的两边, 使用split参数设置。

在Seaborn同样可以设置颜色等成分,具体可以参考Seaborn官网更多颜色等参数设置的介绍。Matplotlib和Seaborn的设置有很多,可以得到不同的效果,大家需要多加练习,从而掌握美观的绘图方法。

THE END
0.箱线图怎么看简单明了教您怎么看懂K线图,炒股变得超级简单而股票时时刻刻与钱打交道,可见这股票K线图上的方圆之道尤为重要。 (一)十字:十字有见顶的十字和中继的十字,要注意区分 心理意义:十字的出现表明原有趋势已经进入一种不确定的状态,其后趋势需要后续K线来确认。 (二)看涨吞没形态: 形态特征:两个颜色相反的K线,后K线包住前K线: jvzquC41dnuh0lxfp0tfv8|gkzooa<>:827788ftvkimg8igvcomu86337=:9>8
1.通达信箱体理论——(自用主图)指标公式通达信公式当他满怀期望用此种方法选中并买进了一支钢铁股后,却招致惨败。稍后其带着赌博和绝望的心态追涨买进一支热门股票,在好运的帮助下,让他把上次的亏损捞回大半,但也被吓得半死。达瓦斯也由此获得灵感,通过追涨热门股发展出了“箱型理论”,并在其后的一系列买入卖出中,逐步完善成为“基本和技术分析并用法”。jvzquC41yy}/i|z0eun0ls1jvsm1}tpifgykwlqpiyik8lu43;15B3jvor
2.经常有人问我最喜欢的图形漂亮的股票是什么形态。其实以前的文章专下图就是一只形态完美的极品股,高度完整的中期调整形态,图白色圆圈所示的周线低位平台整理,从上市开板后的最高点之后的最大回撤幅度没有超过30%,2017年7月17日创业板指数新低之际,这个股票没有新低。这是前期次新十倍观察股名单中,形态最为完美的一只,没有之一,是最为完美的一只尤物! jvzquC41zwkrk~3eqo5:3;9:33=498654:612:;
3.箱线图怎么看本博客分享K线图分析方法与选股技巧,重点讲解股市K线图放量缩量的判断方法。介绍了放量、缩量在K线图和分时图上的表现,分析了放量上涨、下跌的可能情况,强调分析“量”要结合股价高低位,且需综合多指标判断主力意图。 本号致力于每天分享最新K线图分析方法,传授K线图选股技巧;通过系统学习整套K线图入门知识理论,熟悉K线jvzquC41dnuh0lxfp0tfv8|gkzooa<>838>678ftvkimg8igvcomu86337=:9<=