之前,学了如何用Pandas做基本的数据分析。
那么,如何进行直观的数据展示呢?使用两个常用的工具:Matplotlib、Seaborn。
一、Matplotlib介绍
1.1 Matplotlib的名字起源
因为跟Matlab中的画图功能很像,所以Matplotlib这里也是Mat开头。
有那么一瞬间,感觉人类画的很多的数据分析的图,其实很像大自然中的一些自然现象
1.2 为什么用Python画图
- 因为Matlab是个内存巨大(巨无霸)的应用,图形操作界面复杂
- excel对于复杂的绘图,力不从心
1.3 Matplotlib的特点
- 类似于Flask的这样一个Python的包
1.4 小例题
1.5 架构
三层;
本课程主要介绍的是Scripting这一层,即:用户使用的一些api;
1.6 参考资料
二、Matplotlib简单绘图之plot
2.1 绘图:一维和二维的列表
1.
因为a是Python中的一个List列表,是一维的。那么,下图是怎么得到的呢?
虽然它是一维的,但是它每个数值也是有index索引的。即,这个索引就是横坐标。
2.
当有两个list列表呢?那就一个列表是x坐标,另一个是y坐标:
注意:上述的两个list列表,的长度必须一致。
3.
百分号%开头的,是一些魔法函数。
比如:用于计算执行时间
2.2 plot函数的声明及各参数
1.
2.
更改线条的样式:为虚线
更改线条的颜色:为红色
2.3 绘图演示
1.
在同一张图里,绘制两个不同风格的图:
2.
下面是更直观的例子:
- t是一个用numpy创建的数组,元素是等差数列,作为x轴
- s也是一个用numpy创建的数组,元素是正弦函数sin,作为y轴
两张图:
3.
设置x轴、y轴的名字label;
设置标题;
4.
设置图例:
三、Matplotlib简单绘图之subplot:子图
3.1 一个画布切分成多张独立子图
1.
这里面plt.subplot(2,1,1)指的是:将整个画布切分成2行1列,这里是第1张图;
这里面plt.subplot(2,1,2)指的是:将整个画布切分成2行1列,这里是第2张图;
2.
还可以切分成四张子图:
3.
位置信息的传递:
plt.subplot(2,2,1)可以写成plt.subplot(221)
3.2 subplots
1.
2.
上述的plots分为两部分:
3.
subplots感觉没啥用。
四、Matplotlib绘图之Series
4.1 用plot来绘制
1.
cumsum:累加和
2.
上述的数据量比较小,下面整个大的数据量:
其中:
图形的类型有以下这么几种:
3.grid参数:是否有方格。默认是无。
增加方格:
4.label参数:指定图例。并用指令显示。
5.title参数:图的标题
6.
style参数:指定线条的样式
4.2 一个画布一个图两条线
1.
如何在一张画布里,画出两个Series的数据(即两条线):
4.3 一个画布两个独立子图
1.
生成一个2行1列的单独子图:
- 因为s1_concum本质是一个Series,所以是可以切片的:
2.
为什么没有出现图形呢?
如下的写法,不推荐。因为有可能是过时的。
五、Matplotlib绘图之DataFrame
5.1 用plot来绘制
1.
生成一个DataFrame:
- 用Numpy库来生成一个数组:范围1-10的40个随机整数,重塑为一个矩阵
- DataFrame的行索引index默认,DataFrame的列索引人为指定
2.
各参数的含义:
3.
图形为柱状图:
4.堆叠形式的柱形图:
5.
填充的线形图:
5.2 将默认的按列画图,调整为按行画图
因为默认是按列画图。
1.按行画图
对DataFrame中的某一行画图:
对DataFrame中的所有行画图:
除了单独按某一行画图,还可以单独按某一列画图:
2.
按行画图:非得用上述的循环吗?有点麻烦。
更简便的画法:
- 先转置:
- 直接画图
我的问题:
上述是用Matplotlib来绘图的吗?我觉得不是,因为都是s1.plot() 、df1.plot()这种形式。
这里的plot()看起来就是pandas库中的两种数据结构的自己的函数呢。
六、Matplotlib中的直方图、密度图
6.1 直方图:用于体现分布
1.
hist:直方图
hist:
是histogram的缩写,直方图的意思。我以为是history。。。:)
2.
- 下图是生成的1000个采样点
- 横坐标:表示分布的区间阶段
柱子之间有空白,更直观:
3.
4.
color参数:
其他的参数,可以查看官方文档。
6.2 密度图
直接指定图形的类型即可:
Comments | NOTHING