用于数据可视化的最佳Python包

307 阅读9分钟

数据可视化在数据科学中极为重要。

虽然你经常听到数据操作的重要性(即,"80%的数据科学是数据操作"),但数据可视化也同样重要。

总结一下,数据可视化。

  • 几乎是数据科学工作流程的每一步都需要。
  • 在每一个数据科学工作层面上都至关重要,但在初级和中级层面上尤其如此

无论你是做数据探索、数据分析、寻找洞察力、用数据讲故事,还是建立机器学习模型,你都可能需要使用数据可视化。

所以,你需要把学习数据可视化作为优先事项。

Python中的数据可视化问题

如果你是一个Python用户,但当你尝试时,你会遇到一点问题。

坦率地说,Python中的数据可视化是一个痛苦的过程。

Matplotlib很难使用

当我说Python中的数据可视化很困难时,我主要是在说Matplotlib。

Matplotlib是Python中数据可视化的事实上的标准。 它是我见过的90%的书籍、视频和课程中使用的软件包。它是无处不在的。

但事实是,Matplotlib在大多数情况下很难使用。

像简单的柱状图和散点图在某种程度上很容易创建,但这是简单的结束。

做其他相对简单的事情,比如给折线图添加多条线,或者创建一个 "躲避 "条形图(用不同的条形表示不同的类别),往往是令人困惑的。

而稍微复杂一点的图表,如小型的多重图表,则需要很多混乱的语法。

此外,matplotlib似乎不能很好地与Python数据框一起工作,而数据框现在是Python中数据科学的一个标准。

这与R的ggplot2形成了鲜明的对比。ggplot2虽然对初学者来说有点混乱,但一旦你理解了它的工作原理,就会发现它非常强大,而且易于使用。

另一方面,Matplotlib几乎总是复杂和混乱的。 当你使用它时,事情看起来就是比它们应该的要难。

其他选项也很有挑战性

为了找到更好的东西,我个人已经看了其他选项。

Bokeh不利于数据科学和分析

我最初对Bokeh感兴趣,它非常强大。

但Bokeh对于统计可视化来说并不是真的很好。

Bokeh在互动可视化方面表现出色。 它真的是为产生生活在互联网上的可视化而设计的,不一定是用于数据探索和分析的静态可视化。

它与Pandas数据框架的原生工作也不太一样。

因此,Bokeh有一些用途,但我不鼓励它用于在IDE中进行的数据科学和数据分析。

Plotly还不错,但也有问题

我也用Plotly做过一些工作。

Plotly确实有一些优点。 首先,Plotly能够轻松地创建简单的可视化。 例如,用Plotly很容易创建散点图箱形图直方图线形图。 使用Plotly,简单的小型多图也比较容易。

它也有一个有点简单的语法来格式化你的图表。 用Plotly格式化比用Matplotlib格式化要容易。

但是,每当我试图用多层次和/或多面来制作更复杂的图表时,事情又开始变得困难了。

在R的ggplot2中很容易的事情(比如有多个图层的详细图表),在Plotly中仍然很难。 我发现自己花了太多的时间去考虑语法,而不是去完成工作。

所以在我看来,Plotly比Matplotlib好,但仍然需要努力。

我们需要一个更好的Python数据可视化选项

我们真正需要的是一个可视化工具包,它易于理解,易于使用,能够很好地与数据框架配合,并且能够产生广泛的统计可视化,我们可以用来进行数据探索和分析。

经过一些研究和实验,我发现存在这样一个软件包。

它就是Seaborn。

学习用于数据可视化的Seaborn

在对各种Python数据可视化包进行了相当多的实验后,我发现Seaborn是目前Python中统计数据可视化的最佳选择。

这其中有几个主要原因。

Seaborn很容易使用

我喜欢Seaborn的最大原因是它很容易使用。

在Seaborn中,大多数常见的统计可视化可以通过简单的一行或几行代码来创建。

例如,如果你想在Seaborn中创建一个散点图,一旦你有了你的数据,这个图本身就很容易创建。

sns.scatterplot(data = norm_data
                ,x = 'x_var'
                ,y = 'y_var'
                )

我把这段代码写在3行上,使其更容易阅读,但它本来可以是1行代码的。

请注意,参数也是有意义的。

有一个data 参数来设置数据框架。

还有xy 参数,分别设置X轴和Y轴上的变量。

Seaborn中的函数设计得相当好,易于理解,也易于使用。

Seaborn使你能够创建各种各样的统计可视化工具

Seaborn还能让你创建各种各样的统计数据可视化。

例如,条形图是非常直接的创建方式。

线形图也是如此。

An image of a laptop with Seaborn code in an IDE, and a corresponding line chart.

但Seaborn还能让你创建更奇特的可视化效果。

例如,你可以用Seaborn来创建小提琴图。

A laptop showing Seaborn creating a violin chart.

两个变量密度图。

A laptop showing code that creates a 2-dimensional "jointplot" with Seaborn.

小型多重图表。

A laptop showing Seaborn creating a Small Multiple chart.

以及 "对子图"、热图,等等。

Seaborn是一个创建数据可视化的完整工具包,将帮助你分析数据并找到有价值的洞察力。

就像我之前提到的,所有这些可视化的东西都比较容易创建。 Seaborn有简单的功能来创建所有这些。

Seaborn与DataFrames一起自然工作

Pandas数据框架已经成为数据科学项目中存储和操作数据的标准。

正因为如此,我认为一个优秀的数据可视化包应该与Pandas数据框架无缝地工作。

这就是我非常喜欢Seaborn的原因之一。

Seaborn可以和数据框架一起工作。

当你研究语法时,你会发现大多数Seaborn函数都有一个data 参数。 许多函数还有一个xy 参数。

A laptop explaining the syntax to create a Seaborn scatterplot.

在这些Seaborn函数中,data 参数使你可以指定一个Pandas数据框架作为输入。 它们可以与数据框架无缝地工作。

此外,xy 参数使你能够直接指定数据框架的变量(即列)作为xy 等参数的输入。 这也适用于其他参数,如hue 参数,它使你能够根据第三个变量来修改绘图颜色。

当你开始使用Seaborn时,你会发现它在Pandas数据框架中 "只是工作"。

Seaborn创造了美丽的多变量视觉效果

最后,你可以使用Seaborn来创建漂亮的多元可视化,只需几行代码。

An image of a laptop, playing a video that explains how to create a scatterplot in Seaborn

这些可视化的 "美 "是很重要的,因为它使你的观众参与其中。

但这里更重要的是,我们可以使用Seaborn的工具来轻松地操作绘图美学,如大小、不透明度、颜色和位置,以创建自然产生洞察力的可视化。 我们可以使用Seaborn的功能来创建可视化,使我们能够看到我们数据的重要特征。 我们还可以使用这些复杂的可视化来与我们的合作伙伴交流见解。

我要再次强调的是,Seaborn让这一切变得相对容易。 由于语法简单,一旦你知道它是如何工作的,创建漂亮的、有洞察力的可视化就变得相对容易。

更新:Seaborn正在实施 "图形的语法"

还有一个快速说明。

根据Seaborn的创建者Michael Waskom的说法,Seaborn团队正在开发一个 "用Seaborn制作绘图的新界面",这个界面是基于 "图形语法"的。

这可能会巩固Seaborn作为Python最佳数据可视化包的地位。

为什么呢?

我如此喜爱ggplot2的原因是,它实现了一个名为 "图形语法"的数据可视化概念框架。

图形语法是一个关于如何进行数据可视化的概念性框架

毋庸赘言,Grammar of Graphics描述了一个通用的语法--一个理论框架--关于如何以一种系统的、精简的方式建立数据可视化。 使用这个概念框架,你可以在理论上创建几乎任何数据可视化。

但是,仅仅是图形语法还只是一个理论。 因此,开发人员需要为不同的系统创建工具包,以实现图形语法。

ggplot2实现了R的图形语法。

Tableau将图形语法作为拖放式桌面软件来实现。

但是一段时间以来,Python一直缺乏对图形语法的良好实现。

看起来Seaborn将改变这种状况。

Seaborn将很快实现图形语法

目前还不清楚这将在什么时候完成,但Waskom已经明确表示,他和他的团队正在创建一个特殊的新的Seaborn语法,以实现图形语法。

具体来说,展示了你如何使用这种语法来创建一个面状散点图

import seaborn as sns
sns.set_theme()
tips = sns.load_dataset("tips")

import seaborn.objects as so
(
    so.Plot(
        tips, "total_bill", "tip",
        color="smoker", marker="smoker", pointsize="size",
    )
    .facet("time")
    .add(so.Scatter())
    .configure(figsize=(7, 4))
)

这就形成了下面的图表。

An image of a faceted scatterplot, made with the Seaborn Grammar of Graphics syntax.

用于Python的图形语法将成为游戏的改变者

对Python图形语法的实现将改变游戏。

正如我在这篇文章中所说,过去在Python中进行数据可视化是非常困难的。 许多像Matplotlib这样的工具包都很难使用。

对Python图形语法的实现将简化Python中的数据可视化。

反过来,这将使 "在数据中寻找洞察力"变得更加容易。

最终,它将促进Python中更好、更快的数据分析。(记住:数据分析=数据可视化+数据操作。)

因此,如果你认真对待Python中的数据科学,我强烈建议你学习Seaborn。 它已经非常强大,而且非常有用。

而Seaborn即将变得更好。

学习Seaborn,在Python中进行数据可视化

Seaborn是我现在最喜欢的Python数据可视化包。

它是我用于统计数据可视化的主要工具。

它也是我教给初级学生的唯一的Python数据可视化包(尽管在高级阶段,学生们可能想为特定的用例探索其他工具)。

如果你正在寻找一个Python数据可视化包,它易于使用,易于理解,功能强大,并能与Pandas数据框架很好地配合,我认为Seaborn绝对是最佳选择。