探索性数据分析(EDA)是数据科学生命周期中的关键步骤。在这一阶段,能够从数据中获得初步的观察和洞察。此外,还会进行假设检验、异常值分析和必要的数据清洗。在所有这些过程中,数据可视化扮演着至关重要的角色。通常,会使用图表和图形来进行单变量和双变量分析,例如计数图、箱线图、直方图、散点图等。
虽然可以为数据集中的每个特征绘制这些图表,但如果时间有限,这样做可能会非常耗时。当然,可以定义一个函数来减少代码行数,但当需要快速从数据中提取洞察时,需要一种能够在单个命令中完成任务的方法。幸运的是,有一些方法可以做到这一点。
探索性数据分析有助于识别数据中不易观察到的潜在模式和趋势。例如,为数据集中的数值特征(如年龄)绘制分布图,可以显示连续区间内人们的年龄分布。两个变量的散点图有助于确定变量之间的关系,以及一个变量的增加或减少如何影响另一个变量。
为了完成这项任务,基本库Matplotlib和Seaborn拥有所有所需的方法。只需要将正在处理的数据集作为参数传递,指定想要探索的列,几秒钟内就可以得到图表。将使用的方法将在Seaborn的FacetGrid上绘制。FacetGrid是一个多轴网格,包含子图,用于可视化数据集中变量的分布和多个变量之间的关系。
Seaborn的catplot()
方法在FacetGrid上绘制数值变量与一个或多个分类变量之间的关系。Seaborn库是建立在Matplotlib之上的,因此它具有包括Matplotlib的缺陷在内的所有功能。为了正确使用catplot,需要传递3个主要参数,即数据、在x轴上绘制的变量和在y轴上绘制的变量。为了提高可用性,通常会传递'col'和'hue'参数,这些参数也从数据集中获取特征,最好是分类的,因为这就是意图。
import seaborn as snsdf = sns.load_dataset('mpg')
这里决定根据车辆的排量绘制气缸数量。
sns.catplot(data=df, x="cylinders", y="displacement");
为了充分利用catplot,将定义额外的参数,这将帮助更广泛地探索数据并提取洞察。
import seaborn as snsdf = sns.load_dataset('penguins')
sns.pairplot(df, dropna = True);