数据可视化在数据科学中极为重要。
虽然你经常听到数据操作的重要性(即,"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 参数来设置数据框架。
还有x 和y 参数,分别设置X轴和Y轴上的变量。
Seaborn中的函数设计得相当好,易于理解,也易于使用。
Seaborn使你能够创建各种各样的统计可视化工具
Seaborn还能让你创建各种各样的统计数据可视化。
例如,条形图是非常直接的创建方式。

线形图也是如此。

但Seaborn还能让你创建更奇特的可视化效果。
例如,你可以用Seaborn来创建小提琴图。

两个变量密度图。

小型多重图表。

以及 "对子图"、热图,等等。
Seaborn是一个创建数据可视化的完整工具包,将帮助你分析数据并找到有价值的洞察力。
就像我之前提到的,所有这些可视化的东西都比较容易创建。 Seaborn有简单的功能来创建所有这些。
Seaborn与DataFrames一起自然工作
Pandas数据框架已经成为数据科学项目中存储和操作数据的标准。
正因为如此,我认为一个优秀的数据可视化包应该与Pandas数据框架无缝地工作。
这就是我非常喜欢Seaborn的原因之一。
Seaborn可以和数据框架一起工作。
当你研究语法时,你会发现大多数Seaborn函数都有一个data 参数。 许多函数还有一个x 和y 参数。

在这些Seaborn函数中,data 参数使你可以指定一个Pandas数据框架作为输入。 它们可以与数据框架无缝地工作。
此外,x 和y 参数使你能够直接指定数据框架的变量(即列)作为x 和y 等参数的输入。 这也适用于其他参数,如hue 参数,它使你能够根据第三个变量来修改绘图颜色。
当你开始使用Seaborn时,你会发现它在Pandas数据框架中 "只是工作"。
Seaborn创造了美丽的多变量视觉效果
最后,你可以使用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))
)
这就形成了下面的图表。

用于Python的图形语法将成为游戏的改变者
对Python图形语法的实现将改变游戏。
正如我在这篇文章中所说,过去在Python中进行数据可视化是非常困难的。 许多像Matplotlib这样的工具包都很难使用。
对Python图形语法的实现将简化Python中的数据可视化。
反过来,这将使 "在数据中寻找洞察力"变得更加容易。
最终,它将促进Python中更好、更快的数据分析。(记住:数据分析=数据可视化+数据操作。)
因此,如果你认真对待Python中的数据科学,我强烈建议你学习Seaborn。 它已经非常强大,而且非常有用。
而Seaborn即将变得更好。
学习Seaborn,在Python中进行数据可视化
Seaborn是我现在最喜欢的Python数据可视化包。
它是我用于统计数据可视化的主要工具。
它也是我教给初级学生的唯一的Python数据可视化包(尽管在高级阶段,学生们可能想为特定的用例探索其他工具)。
如果你正在寻找一个Python数据可视化包,它易于使用,易于理解,功能强大,并能与Pandas数据框架很好地配合,我认为Seaborn绝对是最佳选择。