使用pandas和seaborn绘图
matplotlib是一个相当底层的工具。可以从其基本组件中组装一个图表:数据显示(即绘图的类型:线、条、框、散点图、轮廓等)、图例、标题、刻度标记和其他注释。在pandas中,我们可能有多个数据列,并且带有行和列的标签。pandas自身有很多内建方法可以简化从DataFrame和Series对象生成可视化的过程。另一个库是seaborn,它是由Michael Waskom创建的统计图形库。seaborn简化了很多常用可视化类型的生成。
注意: 导入seaborn会修改默认的matplotlib配色方案和绘图样式,这会提高图表的可读性和美观性。即使不使用seaborn的API,可以导入seaborn来为通用matplotlib图表提供更好的视觉美观度。
1、折线图
Series和DataFrame都有一个plot属性,用于绘制基本的图形。默认情况下,plot()绘制的是折线图。
Series对象的索引传入matplotlib作为绘图的x轴,可以通过传入use_index=False来禁用这个功能。x轴的刻度和范围可以通过xticks和xlim选项进行调整,相应地y轴使用yticks和ylim进行调整。
大部分pandas的绘图方法,接收可选的ax参数,该参数可以是一个matplotlib子图对象。这使你可以更为灵活地在网格布局中放置子图。
DataFrame的plot方法在同一个子图中将每一列绘制为不同的折线,并自动生成图例。
plot属性包含了不同绘图类型的方法族。例如,df.plot()等价于df.plot.line()。我们之后将会探索这些方法中的一部分。
下表展示了plot的其他关键字参数。
2、柱状图
plot.bar()和plot.barh()可以分别绘制垂直和水平的柱状图。在绘制柱状图时,Series或DataFrame的索引将会被用作x轴刻度(bar)或y轴刻度(barh):
选项color=’k’和alpha=0.7将柱子的颜色设置为黑色,并将图像的填充色设置为部分透明。
在DataFrame中,柱状图将每一行中的值分组到并排的柱子中的一组。
在DataFrame中,柱状图将每一行中的值分组到并排的柱子中的一组。
3、直方图和密度图
直方图是一种条形图,用于给出值频率的离散显示。数据点被分成离散的,均匀间隔的箱,并且绘制每个箱中数据点的数量。使用之前的小费数据,可以使用Series的plot.hist方法制作小费占总费用百分比的直方图。
密度图是一种与直方图相关的图表类型,它通过计算可能产生观测数据的连续概率分布估计而产生。通常的做法是将这种分布近似为“内核”的混合,也就是像正态分布那样简单的分布。因此,密度图也被称为内核密度估计图(KDE)。
4 散点图或点图
点图或散点图可以用于检验两个一维数据序列之间的关系。
然后我们可以使用seaborn的regplot方法,该方法可以绘制散点图,并拟合出一个条线性回归线。
在探索性数据分析中,能够查看一组变量中的所有散点图是有帮助的,这被称为成对图或散点图矩阵。从头开始绘制这样一个图是有点工作量的,所以seaborn有一个方便的pairplot函数,它支持在对角线上放置每个变量的直方图或密度估计值。
5 分面网格和分类数据
如果数据集有额外的分组维度怎么办?使用分面网格是利用多种分组变量对数据进行可视化的方式。seaborn拥有一个有效的内建函数factorplot,它可以简化多种分面绘图。