Python中有两个常用的包,一个是Numpy,重点在于进行矩阵运算,另一个是Pandas, 我们都知道数据分析都要用到大量的图形图标,而Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具,这里我们主要来运用pandas来进行相关的数据分析。
首先,我们需要导入数据分析需要的数据包
![9cd4d472bd8669b4307e5805e67d4b5d.png](https://i-blog.csdnimg.cn/blog_migrate/d579fcd3602aa78d75330ddc75bf9f36.png)
导入matplotlib中的pyplot模块后,我们可以用plot方法绘制我们想要的图形
我们先来绘制一个简单的折线图
![5b2a8c77c99a04d5d591d08affc9db1a.png](https://i-blog.csdnimg.cn/blog_migrate/d6095e9e1a6420d58b17ae639bc330fd.png)
![1e6753b85a222affd1ec3cd719c628e0.png](https://i-blog.csdnimg.cn/blog_migrate/44c0485b5c75e54f9b6c76981f79f910.png)
绘制好图片后,我们如果要在后续工作中用到图片的话,可以对图片进行保存,以下保存的图片相较于上面的图片来说,视觉上更加好看了一些,而且更加清晰了
![3f859e12c2d3d3ffbc533c83abc942f8.png](https://i-blog.csdnimg.cn/blog_migrate/b72363eaef114dfdf7a2b2321d7a1dd3.png)
![b02db4f4efeeed3e71cea706bd6587ae.png](https://i-blog.csdnimg.cn/blog_migrate/2429122def3b8dd18786e4bda645bb00.png)
对这张图片我们还可以做其他的操作,比如说可以设置线条的属性,我可以通过以下方法对图片进行调整:
color:线条颜色,值r表示红色red
marker:点的形状,值o表示点为圆圈标记(circle marker)
linestyle:线条的形状,值dashed表示用虚线连接各点
我们还可以设置axis:坐标轴的范围
语法为:axis([xmin,xmax,ymin,ymax]),也就是axis([x轴最小值,x轴最大值,y轴最小值,y轴最大值])
![29fe5107aed45f4e7a3c6f715675ee50.png](https://i-blog.csdnimg.cn/blog_migrate/fe7481d35e87a62974e352b9659a9c3a.png)
在Python中,pandas一般是基于pandas来实现绘图功能的,下面来介绍以下结合pandas和numpy来进行绘图
先导入numpy数据包
![6695f24e75a409c5f7037f850bc6edf6.png](https://i-blog.csdnimg.cn/blog_migrate/08c35b3bcaf58f36bae038a24aeb5302.png)
再随机生成一个数组
![e739184cd6882c888662835d3f56d200.png](https://i-blog.csdnimg.cn/blog_migrate/86e0cb3ebacf68d415e585b05ee2b477.png)
在同一张图里绘制多个线条
![433178a92381681a1fff1f40fa21bbd1.png](https://i-blog.csdnimg.cn/blog_migrate/854b596503e731eaf7ef05c2d0ec4c08.png)
![b48110b73e51337dada50e971a3aa9c6.png](https://i-blog.csdnimg.cn/blog_migrate/5cf4608578119b4ace905b16157d3ede.png)
通过以上两个图形的绘制,我们大致掌握了绘图的基本步骤,但是如果要将图片真正给别人看的话,我想是没有人能够看懂的,因为这里缺少了很多图片的必要要素,比如说坐标轴代表的意思,标题是什么,线条具体代表的是什么,统统都不知道,所以为了让我们的图片能够让别人看懂,我们可以通过以下代码来解决以上的问题。
![c7b4e8636f315a0ecd6861bf1f71cafb.png](https://i-blog.csdnimg.cn/blog_migrate/b78644077fa20be93559776b740bf6df.jpeg)
![f53932e0b69eaa65edaab8616437ef7d.png](https://i-blog.csdnimg.cn/blog_migrate/1c9de573c9f5e7ed31157bf1dbfc377f.png)
上图可以看到,图片中的文本内容是乱码,之所以会产生乱码,是因为配置文件中没有加载中文字体。解决的办法是给配置文件指定一个可用的中文字体,设置好后再显示图片进行查看,具体设置方法可以参考以下步骤:
![40b3c36001396eb668a92d8a36082d1a.png](https://i-blog.csdnimg.cn/blog_migrate/7854339e78e9cc3ab10c3b8e8081e952.jpeg)
![977587a847c99bf8b287ed8b5f8154c7.png](https://i-blog.csdnimg.cn/blog_migrate/fb187d8ab5c9bf8a4489e0376eb9e559.jpeg)
![f3eacf7b417400ba91b4d4c0a539828c.png](https://i-blog.csdnimg.cn/blog_migrate/4ab8bbd53ab336da9107dd132b0293f8.jpeg)
![0585742fd3991ee3d3db8c312303adf8.png](https://i-blog.csdnimg.cn/blog_migrate/e2fd69c2daefcee221c7e88422aa1090.jpeg)
![5b6489955e86dc74757f39d1a2d20f3c.png](https://i-blog.csdnimg.cn/blog_migrate/eff1bbc5ebecc61e6a779e5b372f098b.png)
设置好之后,需要重启notebook,再运行程序,即可查看带中文的图片了
![b05314b9eaee03595bd523187d79d6aa.png](https://i-blog.csdnimg.cn/blog_migrate/95c05c605c59d63d48bb3b0734e8f3c7.png)
好的数据分析应该是有对比的,我们通常是将多个需要对比的数据信息放在同一张图片中,这样我们才能更好的分析我们想要的信息。下面我将练习如何将在一个画板中绘制多张图片
![b0b061d005cdb7a1433b540da28a1565.png](https://i-blog.csdnimg.cn/blog_migrate/f00691801af2768637b877aadff0ff4f.png)
![534456102cbe935350668df895ba5920.png](https://i-blog.csdnimg.cn/blog_migrate/f4ee935000925293a59aa565cdc4c667.png)
通过以上的练习,我们知道了如何利用pandas进行绘图,下面我们将运用真实的数据来绘制和制作数据分析报告
首先导入数据分析包,通过导入的data模块,我们可以获取互联网的数据
![163896adc6a8d76275f6d7b315a8d4ba.png](https://i-blog.csdnimg.cn/blog_migrate/71bbf981121518a8e412b9e0a54d6074.png)
编辑我们需要的6家公司的字典信息,以便于后续操作
![e804081eba0e28268282412507b81fdd.png](https://i-blog.csdnimg.cn/blog_migrate/b556fd452ea2c88487b64a57e5254f0b.jpeg)
然后从网上获取6家公司的股票信息
![221980c7f74798635ac368d0352d943e.png](https://i-blog.csdnimg.cn/blog_migrate/34ce2c6d504e284f09302296800a52b6.jpeg)
但是,由于我们获取的是国外网站的数据,相对于国内网的数据来说比较慢,为了不在这里耽误更多不必要的时间和精力,我们可以将事先准备好的6家公司股票数据通过文件导入的方式导入到我们的notebook当中
![8002c5b1adcbd65c3183b05cc0fc5719.png](https://i-blog.csdnimg.cn/blog_migrate/8e395a7e42834002b29617d055cfea9f.png)
这里我们将阿里巴巴的数据已经成功导入,下面我们可以看下前5行,初步了解一下数据长什么样
![14b6c83550d23f89b85cc8adf444e39a.png](https://i-blog.csdnimg.cn/blog_migrate/745a9c62c47673c58625d0daa9c4bdff.jpeg)
查看一下每个字段的信息如何
![e8d63d22ff45ef079b53b297a727e890.png](https://i-blog.csdnimg.cn/blog_migrate/255445395e899a1048576979f402b594.jpeg)
字段信息解读:
Index:251,有251条行索引,说明有251条数据
Data columns (total 7 columns)):总共有7列数据,说明有7个字段
所有字段均无Nul值,除了成交量Volume为int64(整数型数据)和Date为日期型数据之外,其他均为浮点型数据
dtypes: datetime64[ns](1), float64(5), int64(1) :所有字段类型是浮点型5个,整数型1个,日期型一个
了解了整个数据的结构和类型之后,我们来利用之前学到的来对阿里巴巴的数据绘制图形
![05f0fbcf31c3e7217720f0916aa18333.png](https://i-blog.csdnimg.cn/blog_migrate/393085b7adaeffaaac545897a65edd44.jpeg)
![99bc92411382c194c0e3f8298e8a5e02.png](https://i-blog.csdnimg.cn/blog_migrate/7ae8703c2bdf99c7c1e7b33e44710297.png)
另外,这里我们可以通过对plot方法中的参数kind进行赋值,可以实现绘制其他类型的图片,下面简单展示一下:
![f6cebb152d24b4f874d8c20733a2a30b.png](https://i-blog.csdnimg.cn/blog_migrate/d996a1f2ea15cbbbc17df9b86656a37a.jpeg)
对于kind值,有以下值对应了不同的图片类型
kind无取值:折线图 kind='scatter':散点图
kind='bar':柱状图 kind='box':箱线图
kind='hist':直方图(histogram) kind='pie':饼图
kind='area':面积图
在数据分析中,相关系数矩阵可以帮我们查看各个字段之间的相关关系如何,下面绘制以下阿里巴巴股价的相关系数矩阵
![550d34e34ed38548b3cc989182cf7b06.png](https://i-blog.csdnimg.cn/blog_migrate/c36db2c375f99ddb0353d700085f416f.jpeg)
从相关系数矩阵可以看到,最高价、最低价、开盘价和收盘价和Adj Close都存在着非常高的相关性,而这5个变量与成交量的相关性相对来说就小很多
描述性统计是一般的数据分析必不可少的,下面来看一下阿里巴巴股票数据集的描述性统计如何
![f20e7d31e1fbb2423707293005302a8f.png](https://i-blog.csdnimg.cn/blog_migrate/b2708f595d8f32b5288bfea34a0c59bb.jpeg)
从以上这个表格我们可以看到各个字段的描述性统计信息,包括共有多少条数据,均值,标准差,最小值,25分位数,50分位数,75分位数,最大值
对于股票来说,涨跌是各大股东和广大股民非常关注的指标,所以我们来计算一下阿里巴巴股票的涨跌幅
计算股票涨跌幅,可以用自定义函数进行实现:
函数功能:计算股票涨跌幅=(现在股价-买入价格)/买入价格
输入参数:column是收盘价这一列的数据
返回数据:涨跌幅
![622fd1252edbfed82859c8c1d3b3a337.png](https://i-blog.csdnimg.cn/blog_migrate/ee82826003fbe2e7335ec5db77fa2c69.jpeg)
![ed9c193d49fa4d62ba32021f3e3fc34a.png](https://i-blog.csdnimg.cn/blog_migrate/d121406c6dd0887a8939c2ae5faca445.png)
从这里我们可以看出,阿里巴巴在2017年整年股价是上涨的,涨幅是94.62%。
数据可视化
下面我们联合5家公司的数据做一个整体的数据分析
谷歌
![180576fd696411d7ad457077e5b7b0cb.png](https://i-blog.csdnimg.cn/blog_migrate/e86b934d9dd6abc41993359acd6d6815.jpeg)
查看数据
![c602dc0a5230b89348efbe96e402e4cc.png](https://i-blog.csdnimg.cn/blog_migrate/4525aa706c99f3b1bc55dadce7ed2ada.jpeg)
查看字段信息
![f340f4562e73a406a70f79ad488dc837.png](https://i-blog.csdnimg.cn/blog_migrate/bcb6c79db4fb4eb13b0c5e3a8d733e56.jpeg)
计算涨跌幅
![b0dd379e712db2a80ab2c02d2b845a77.png](https://i-blog.csdnimg.cn/blog_migrate/1fc9ff9978742b3ac28451de201e0edf.png)
亚马逊
![31e3924c7999b73805095285ca1d5198.png](https://i-blog.csdnimg.cn/blog_migrate/3f2e88f8e118119927d5b4cd940f599e.jpeg)
查看数据
![65abac9849e007721d7bd0111142d0bf.png](https://i-blog.csdnimg.cn/blog_migrate/ca37603fa12080459c8ea60b32cce90f.jpeg)
计算涨跌幅
![997e0105a11497e088d1b50ac46a9ed7.png](https://i-blog.csdnimg.cn/blog_migrate/71a7e486929e032cf168ee55c9eec8ed.png)
![11f5f3c9e2b5a4b50d78693581685a68.png](https://i-blog.csdnimg.cn/blog_migrate/241fe210a5498f1642e2bb1e6f42ecbf.png)
查看数据
![0a1cedc41528d5be443372a1c13616e2.png](https://i-blog.csdnimg.cn/blog_migrate/22796b8840ba5738586802e1fc8b4a13.jpeg)
计算涨跌幅
![a8e8acebbcde4cd5d114f86f24250a08.png](https://i-blog.csdnimg.cn/blog_migrate/6cedd4a81e764061052498d0acfabcab.png)
苹果
![2865549197efd3d8a84e21bd0df4dd48.png](https://i-blog.csdnimg.cn/blog_migrate/ddcd3228c14e4a67dcba453b6ddac37d.png)
查看数据
![fa2019288612bcaee9db53f99485f73b.png](https://i-blog.csdnimg.cn/blog_migrate/398e298db55cbaabd6a784f8be7f99b6.jpeg)
计算涨跌幅
![f1b582511a1b334631eb4d8fe4ae3763.png](https://i-blog.csdnimg.cn/blog_migrate/f423fa083c05b0eaaf48293888f05c82.png)
腾讯
![b13bbb1c39abad7c42a25e8853cddb8b.png](https://i-blog.csdnimg.cn/blog_migrate/b9f19655d922a9833582f107a15fc15d.png)
查看数据
![b00a40be6c7e4c27174e59e774382550.png](https://i-blog.csdnimg.cn/blog_migrate/2e964436e2d032f34b5e5992e92509b7.jpeg)
注意:腾讯是港股,所以这里的收盘价是港币,为了分析的统一性,故现在将按汇率将股价转换成美元计算
![f52c159d04660872e9d6bd5e727af071.png](https://i-blog.csdnimg.cn/blog_migrate/fdeba7742438fac541031b6042042848.jpeg)
计算涨跌幅
![fcdd058241220546c3a3bba44c95fa09.png](https://i-blog.csdnimg.cn/blog_migrate/5f89a3ffb84aadec06c155c0546307d5.png)
现在,我们有了6家公司的全部数据,下面我们将这些数据进行可视化分析
![03f3d2f12e272610c467040fa45c083a.png](https://i-blog.csdnimg.cn/blog_migrate/338738167b46daf492e6eecbf10338f5.jpeg)
![6062f90fd64a8071d5ac849b2414a691.png](https://i-blog.csdnimg.cn/blog_migrate/121d7f881e8c69856256b9ed19f06238.jpeg)
从上图可以看出,有两个公司的股价和其他公司股价差别悬殊,如果都放在一张画纸上的话,对于美观和分析来说并不合适,故下面将其分别放在不同的画纸上,并用label自定义图例,这样我们就知道哪个颜色的线条是代表哪个公司了
![861a7eaaec5872029779fd199c1197b1.png](https://i-blog.csdnimg.cn/blog_migrate/b455dcfed7e57f04f35eea505ed343d6.jpeg)
![a7f5b1ca20d948cb7d3d892ee85a56e2.png](https://i-blog.csdnimg.cn/blog_migrate/5a248fb1530592f99108fba8938c1e16.jpeg)
从上图可以看出,亚马逊公司的股价略高于谷歌公司,而且他们的股价都随着时间而逐渐上涨,其中在11月份的时候,亚马逊公司的股价陡然上升,拉开了了两家公司的股价差距
下面绘制另外四家公司的股价走势图
![d258517598fde31583f8ab10e1952595.png](https://i-blog.csdnimg.cn/blog_migrate/d8bab65f8796d61692ef4c9a6212c97b.jpeg)
![d51982e7d123ae98ac203ce1a687fdee.png](https://i-blog.csdnimg.cn/blog_migrate/0d5a9ec8114c094fccff1adf749d4e68.jpeg)
从上图能够看出,四家公司的股价都呈上升趋势。腾讯相较于其他三家公司来说,股价相对较低,但其一直保持着平稳的增长趋势,实力不可小觑。另外三家公司中,阿里巴巴一直保持着持续稳定的增长,并在股价上反超另外两家公司,发展潜力较大。Facebook和苹果公司在上半年股价不想上下,下半年Facebook比苹果公司的股价稍高。
绘制柱状图
![40637c357bd1be061efd030d09661662.png](https://i-blog.csdnimg.cn/blog_migrate/81a2e42b78c0ec3f45c3a53745386e7f.jpeg)
![4b78b6569e4bba13a4a01d7c2c4a7182.png](https://i-blog.csdnimg.cn/blog_migrate/55a996275614a0e4494f1d471fc5d901.jpeg)
![2a18a6de554ac9d389f278343fb5fde8.png](https://i-blog.csdnimg.cn/blog_migrate/39698e399d1fc7de4a1d3b4f6db1ff84.png)
绘制箱线图
![98b93baa6c4c1050d3ed7da2ebf06a19.png](https://i-blog.csdnimg.cn/blog_migrate/8b14370baabf0deb053abb70c75de42e.jpeg)
![b8969aa147b25c4a5f56b9e2352ffbe5.png](https://i-blog.csdnimg.cn/blog_migrate/162f735bb80aa51e2272a19a0c370323.jpeg)