点击上方【牵引小哥讲Python】,关注回复【资源】领取学习资源!
原创作者:牵引小哥
微信公众号:牵引小哥讲Python
注:转载或复制请注明出处——牵引小哥
之前小哥已经讲解了Matplotlib
和Seaborn
两种绘图库。相较于Matplotlib
,Seaborn
已经大大提高了工作效率,简化代码。
但是,在数据挖掘的过程中,大多数情况下,数据都存储为Pandas
的数据结构。为了提高效率,Pandas
有一套基于Matplotlib
封装的绘图函数。本期小哥将介绍Pandas
中的绘图函数,可以让你在数据挖掘探索阶段更专注于数据。
小哥Tips:Pandas中的绘图函数在进行数据探索时非常好用,可将其作为分析交流的“草稿”。但个人觉得Pandas绘制的图表若要在正式场合中使用,还需自行优化。
参考链接:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.html?highlight=plot#pandas.DataFrame.plot
1. Pandas中的基本绘图函数
简单说Pandas
中提供了基本绘图函数pandas.DataFrame.plot()
和pandas.Series.plot()
两种,分别对应两种主要的数据结构使用。这里小哥将pandas.DataFrame.plot()
简化为df.plot()
进行后续讲解。
df.plot()
提供了十一种图表的绘制功能,它们是:
•‘line’ : line plot (default)•‘bar’ : vertical bar plot•‘barh’ : horizontal bar plot•‘hist’ : histogram•‘box’ : boxplot•‘kde’ : Kernel Density Estimation plot•‘density’ : same as ‘kde’•‘area’ : area plot•‘pie’ : pie plot•‘scatter’ : scatter plot•‘hexbin’ : hexbin plot.
使用时,只需使用kind
参数定义绘图类型即可。与此同时,这些图表还具有单独的绘制函数。比如绘制折现图(line
)使用df.plot.line()
即可调用。另外,绘制直方图(hist)和箱型图(box)还可分别使用df.hist()
和df.boxplot()
。
以上这些函数都包含了基本的图表定义功能,可以参考官方说明。接下来,小哥以鸢尾花数据集简单演示如何使用。
![null](https://i-blog.csdnimg.cn/blog_migrate/6685a23c3e8a4dd310b436dec7748014.png)
import pandas as pd
import seaborn as sns
# 获取鸢尾花数据集
df = sns.load_dataset("iris")
df.plot()
![null](https://i-blog.csdnimg.cn/blog_migrate/be37fbd19d70fffb0c5203f3e8317154.png)
df.plot(kind='hist')
![null](https://i-blog.csdnimg.cn/blog_migrate/964877e0cabe059ec068b5f540d80a78.png)
df.hist(bins=20)
![null](https://i-blog.csdnimg.cn/blog_migrate/6b17e97449cff7612ad6c9d9e3925351.png)
注意df.plot(kind='hist')
和df.hist()
的区别在于后者可根据数据集的列自动分组绘制子图。
df.boxplot()
![null](https://i-blog.csdnimg.cn/blog_migrate/10a90049374e81f099c512f01dde125f.png)
# 六边形蜂窝热力图
df.plot.hexbin('sepal_width', 'sepal_length', gridsize=20)
![null](https://i-blog.csdnimg.cn/blog_migrate/5e4148f89874548c8bfa011580fcdb2a.png)
# 使用Seaborn的绘图风格
sns.set()
df.plot(kind='kde')
![null](https://i-blog.csdnimg.cn/blog_migrate/c66dc8f970ad6df68cff9a3db10ebd2c.png)
# 使用groupby分组,绘制不同'species'的数据曲线,会得到三张折线图。
df.groupby('species').plot()
![null](https://i-blog.csdnimg.cn/blog_migrate/c0d69efe811edde1c9901afc0c402545.png)
![null](https://i-blog.csdnimg.cn/blog_migrate/a9737ef65bc60361645535e523ec62c9.png)
![null](https://i-blog.csdnimg.cn/blog_migrate/a1f0f111da67ce86a225c5e9f69ec219.png)
# 绘图带填充的区域图
df.plot.area(stacked=False)
![null](https://i-blog.csdnimg.cn/blog_migrate/2d1e853da624986be6ab2479cee6929e.png)
2. Pandas高阶绘图函数
除了以上基本的绘图函数,小哥再介绍三种针对多维数据可视化的绘图函数,主要用于数据的聚类分析。这三种函数通过pandas.plotting
实现。
•pandas.plotting.parallel_coordinates
:平行曲线图。平行坐标使我们可以看到数据中的集群,并可以直观地估计其他统计数据。使用平行坐标点表示为连接的线段。每条垂直线代表一个属性。一组连接的线段表示一个数据点。倾向于聚集的点会显得更靠近。
•pandas.plotting.andrews_curves
:安德鲁斯曲线图。安德鲁斯曲线将每个样本的属性值转化为傅里叶序列的系数来绘制曲线。通过对每个类使用不同的颜色表示这些曲线,就可以可视化数据聚类。属于同一类样品的曲线通常会靠得更近,形成更大的结构。•pandas.plotting.radviz
:RadViz可视化图。RadViz
是一种可视化多变量数据的方法。它是基于一个简单的弹簧张力最小化算法。基本上就是在一个平面上建立一堆点。在我们的例子中,它们在一个单位圆上等距。每个点代表一个属性。然后假设数据集中的每个样本都由一个弹簧连接到这些点上,弹簧的刚度与该属性的数值成比例(它们被归一化为单位间隔)。平面上的点,也就是样本点所在的点(作用在样本上的力处于平衡状态)就是代表样本点的点。根据样本所属的类,它的颜色会有所不同。
以上内容翻译自官方文档。
同样以鸢尾花数据集为例进行演示。
pd.plotting.parallel_coordinates(df, 'species')
![null](https://i-blog.csdnimg.cn/blog_migrate/670a84743a3b0a834a3ec27ce62250fd.png)
pd.plotting.andrews_curves(df, 'species')
![null](https://i-blog.csdnimg.cn/blog_migrate/98f79fe24d310e96c8b8f093992c6a0d.png)
# 在DataFrame中高度相关的数据列更靠近单位圆。
pd.plotting.radviz(df, 'species')
![null](https://i-blog.csdnimg.cn/blog_migrate/86fcadcc22c9d3de5fb0ef12a65e3382.png)
文末福利
各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。
这个是一份Python代码速查表
下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图
怎样获取呢?可以添加我们的AI派团队的程序媛姐姐
一定要备注【高清图】哦
????????????????????
➕我们的程序媛小姐姐微信要记得备注【高清图】哦
来都来了,喜欢的话就请分享、点赞、在看三连再走吧~~~