评论
1. Google 网络安全证书 - 快速进入网络安全职业生涯。
2. Google 数据分析专业证书 - 提升你的数据分析技能
3. Google IT 支持专业证书 - 支持你的组织 IT
这两种工具对数据科学家以及类似职位的人(如数据分析和商业智能)都非常重要。也就是说,数据科学家应该在什么时候使用 pandas 而不是 SQL,反之亦然?在某些情况下,你可以仅使用 SQL,而在其他情况下,pandas 的使用会更方便,特别是对专注于 Jupyter Notebook 环境中的研究的数据科学家。接下来,我将讨论你应该在什么时候使用 SQL,什么时候使用 pandas。请记住,这两种工具有其特定的使用场景,但在许多情况下,它们的功能是重叠的,这也是我将要比较的内容。
照片由 Kalen Kemp 拍摄,来源于 Unsplash。
Pandas 是一个开源的数据分析工具,使用 Python 编程语言。当你已经有了主要数据集,通常是从 SQL 查询中获得时,pandas 的优势开始显现。这一主要区别可能意味着这两个工具是分开的。然而,你也可以在各自的工具中执行多个相同的功能。例如,你可以在 pandas 中从现有列创建新特征,这可能比在 SQL 中更简单、更快捷。
需要注意的是,我并不是在比较 pandas 和 SQL 各自无法完成的任务。我将选择那些在数据科学工作中更高效或更适用的工具——这是基于我的个人经验的观点。
在以下情况下,使用 pandas 比使用 SQL 更有利,同时也具备 SQL 的相同功能:
- 从现有特征创建计算字段
在整合更复杂的 SQL 查询时,你通常也会整合子查询,以便从不同的列中分离值。在 pandas 中,你可以更简单地分离特征,如下所示:
df["new_column"] = df["first_column"]/df["second_column"]
上面的代码演示了如何将两列分别相除,并将这些值分配给新列。在这种情况下,你是在整个数据集或数据框上执行特征创建。你可以在数据科学的特征探索和特征工程过程中使用这个功能。
- 按分组
还涉及到子查询,在 SQL 中,按分组可能变得相当复杂,需要大量代码,这些代码可能会让人视觉上感到不堪重负。在 pandas 中,你只需一行代码即可完成分组。我并不是指简单的表选择查询末尾的‘group by’,而是涉及多个子查询的情况。
df.groupby(by="first_column").mean()
这个结果会返回数据框中每一列的first_column的均值。还有很多其他使用这个分组函数的方法,这些方法在 pandas 文档中有很好的说明。
- 检查数据类型
在 SQL 中,你通常需要进行类型转换,但有时看到 pandas 以垂直格式呈现数据类型会更清晰,而不是在 SQL 中滚动查看水平输出。你可以预期某些 数据类型的返回值为 int64、float64、datetime64[ns] 和 object。
df.dtypes
尽管这些都是 pandas 和 SQL 中相对简单的功能,但在 SQL 中,它们特别棘手,有时在 pandas 数据框中实现起来会简单得多。现在,让我们看看 SQL 擅长的部分。
照片由 Caspar Camille Rubin 提供,来源于 Unsplash。
SQL 可能是使用最多的编程语言,涉及到各种不同职位。例如,数据工程师、Tableau 开发者或产品经理都可能使用 SQL。话虽如此,数据科学家往往频繁使用 SQL。需要注意的是,有几种不同版本的 SQL,通常它们具有相似的功能,只是格式略有不同。
以下是 SQL 比 pandas 更有优势的情况——同时具有与 pandas 相同的功能:
- WHERE 子句
这个 SQL 子句使用频繁,也可以在 pandas 中执行。然而,在 pandas 中,它稍微更困难或不太直观。例如,你需要编写冗余的代码,而在 SQL 中,你只需要WHERE。
SELECT id
FROM table
WHERE id > 100
在 pandas 中,它可能是这样的:
df[df["id"] > 100]["id"]
是的,两者都简单,但 SQL 更具直观性。
- 连接
Pandas 有几种连接方法,这可能会有些让人不知所措,而在 SQL 中,你可以像下面这样执行简单的连接:INNER、LEFT、RIGHT。
SELECT
one.column_A,
two.column_B
FROM first_table one
INNER JOIN second_table two ON two.id = one.id
在这段代码中,连接比在 pandas 中更易于阅读,因为在 pandas 中你必须合并数据框,尤其是当你合并多个数据框时,这在 pandas 中可能会变得相当复杂。SQL 可以在同一查询中执行多次连接,无论是 INNER 等等。
所有这些示例,无论是 SQL 还是 pandas,都可以在数据科学过程的探索性数据分析部分中使用,以及在特征工程和查询模型结果(一旦存储在数据库中)时使用。
pandas 与 SQL 的比较更多是个人偏好。话虽如此,你可能会有不同的看法。然而,我希望它仍能揭示 pandas 和 SQL 之间的差异,以及在这两种工具中使用略有不同的编码技术和完全不同的语言执行相同操作的能力。
总而言之,我们比较了使用 pandas 相较于 SQL 以及反之对几个共享功能的好处:
-
从现有特征创建计算字段
-
分组(grouping by)
-
检查数据类型
-
WHERE 子句
-
连接(JOINS)
原始。经许可转载。
相关: