数据可视化是数据科学家工作的重要组成部分。在项目的早期阶段,你通常会进行探索性数据分析(EDA)以获取对数据的一些洞察。创建可视化确实有助于使事情更清晰易懂,特别是对于大型高维数据集。在你的项目结束时,能够以清晰、简洁和引人注目的方式展示你的最终结果非常重要,因为你的受众往往是非技术性客户,他们可以理解。
Matplotlib是一个流行的Python库,可以用来很容易地创建数据可视化。但是,每次执行新项目时,设置数据、参数、图形和绘图都会变得非常繁琐。在这篇博客文章中,我们将着眼于5个数据可视化,并使用Python的Matplotlib为他们编写一些快速简单的功能。与此同时,这里有一个很棒的图表,用于为工作选择正确的可视化图表!
用于为给定情况选择适当的数据可视化技术的图表
散点图
散点图非常适合显示两个变量之间的关系,因为你可以直接看到数据的原始分布。你还可以通过对组进行颜色编码来简单地查看不同组数据的关系,如下图所示。想要可视化三个变量之间的关系?没问题!只需使用另一个参数(如点大小)就可以对第三个变量进行编码,如下面的第二个图所示。
散点图与颜色分组
现在我们看一下代码。我们首先用别名“plt”导入Matplotlib的pyplot。要创建一个新的情节图,我们称之为plt.subplots()。将x轴和y轴数据传递给函数,然后将这些数据传递给ax.scatter()以绘制散点图。我们还可以设置点的大小,点颜色和alpha透明度。你甚至可以设置Y轴为对数刻度。标题和轴标签然后专门为该图设置。这是一个易于使用的函数,可以首尾相连创建散点图!
线条图
如果能清楚地看到一个变量与另一个变量差异很大,即它们具有高协方差,则***使用线图。让我们看看下图来说明。我们可以清楚地看到,所有专业的百分比随时间变化很大。用散点图绘制这些图将会非常混乱,这使得很难真正理解并看到发生了什么。线图非常适合这种情况,因为它们基本上给了我们两个变量(百分比和时间)的协方差的快速总结。同样,我们也可以使用颜色编码进行分组。
示例线图
这是线图的代码。这与上面的分散很相似。只有一些变量的微小变化。
直方图
直方图对查看(或真正发现)数据点的分布很有用。查看下面我们绘制频率与IQ直方图的直方图。我们可以清楚地看到中心的集中度和中位数,也可以看到它遵循高斯分布。例如,使用条(而不是散点)可以清楚地显示出每个箱的频率之间的相对差异。使用分箱(离散化)确实有助于我们看到“更大的图像”,就像我们使用所有没有离散分箱的数据点一样,可能会在可视化中产生大量噪音,使得很难看到到底发生了什么。
下面显示了Matplotlib中直方图的代码。有两个参数需要注意。首先,n_bins参数控想象一下,我们想要比较数据中两个变量的分布。有人可能会认为你必须制作两个独立的直方图并将它们并排放在一起进行比较。但是,实际上有更好的方法:我们可以用不同的透明度覆盖直方图。看看下面的图。统一分布被设置为具有0.5的透明度,以便我们可以看到它的后面是什么。这允许用户直接查看同一图上的两个分布。
在叠加直方图的代码中需要设置几件事情。首先,我们设置水平范围以适应两种可变分布。根据这个范围和期望数量的箱子,我们实际上可以计算每个箱子的宽度。***,我们在同一个图上绘制两个直方图,其中一个直观图更透明。
当你尝试对几乎没有(可能<10个)类别的分类数据进行可视化时,条形图最为有效。如果我们有太多的类别,那么图中的酒吧会非常混乱,很难理解。它们对分类数据很好,因为你可以根据条的大小(即大小)轻松查看类别之间的差异,类别也很容易分割和颜色编码。有三种不同类型的柱状图我们将要看:定期、分组和堆叠。看看下面的代码。
条形图
常规的条状图在下面的***张图中。在barplot()函数中,x_data表示x轴上的代号,y_data代表y轴上的条高。错误栏是在每个可以绘制的条上居中显示标准偏差的额外行。
分组条形图允许我们比较多个分类变量。看看下面的第二个条形图。我们比较的***个变量是分数如何随组(组G1,G2,...等)而变化。我们还将性别本身与颜色代码进行比较。看看代码,y_data_list变量现在实际上是一个列表列表,其中每个子列表代表一个不同的组。然后,我们循环遍历每个组,并为每个组绘制x轴上每个刻度的条形;每个组都是彩色编码的。
堆叠的条形图非常适合可视化不同变量的分类构成。在下面的堆积条形图中,我们比较了日常的服务器负载。使用彩色编码堆栈,我们可以轻松查看并了解哪台服务器每天的工作效率***,以及每天的负载如何,并与其他服务器进行比较。此代码遵循与分组条形图相同的样式。我们循环遍历每一个组,除了这次我们在旧的栏上画新的,而不是在他们旁边绘制。
箱型图
我们之前查看了直方图,这些直方图非常适合可视化变量的分布。但是如果我们需要更多的信息呢?也许我们想要更清楚地看待标准偏差?也许中位数与平均值有很大差异,因此我们有很多异常值怎么办?如果存在如此歪斜,并且许多值都集中在一方怎么办?
这就是箱形图出现的地方。箱形图给我们提供了上述所有信息。实线框的底部和顶部总是***和第三四分位数(即数据的25%和75%),并且框内的带总是第二四分位数(中值)。箱须图(即末端具有条纹的虚线)从框中延伸以显示数据的范围。
由于箱形图是为每个组、变量都绘制了,因此很容易设置。 x_data是组/变量的列表。 Matplotlib函数boxplot()为y_data的每列或每个向量的序列y_data生成一个箱形图;因此x_data中的每个值都对应于y_data中的列/向量。所有我们所要设定的是情节的美学。
结论
使用Matplotlib有5个快速简单的数据可视化。将事物抽象成函数总是会让你的代码更易于阅读和使用!希望这篇文章能够帮助到你!