用sql还是pandas处理数据(九道门如何使用Pandas对数据执行SQL查询)

用sql还是pandas处理数据(九道门如何使用Pandas对数据执行SQL查询)(1)

SQL 和 pandas 是两种不同的工具,但它们都在处理数据时扮演着重要角色。SQL 和 Pandas 不仅是处理任何与数据相关工作的基本工具,而且即使是新手用户也非常易于使用和实现。SQL 在数据库环境中工作,因此也需要了解数据库,而 Pandas 可以在电脑或基于浏览器的编辑器等简单的环境中快速使用,从简单的 CSV 文件开始。在本文中,我将分享一系列可以对数据执行的操作列表,并比较如何使用 SQL 和 Pandas 完成相同的任务。

关于 SQL 和 Pandas

让我们简单了解一下 SQL 和 Pandas。

SQL: 一种编程语言,更确切地说,它是一种可用于执行数据库操作的查询语言。可用于存储、查询、更新和修改数据。SQL 是大多数 RDBMS 实际使用的语言。

Pandas:实际上 Pandas 是 Python 语言的一个库,它可以帮助我们进行许多使用数据的操作。Pandas 使用的数据类型主要是表格。它也可以用于数据仓库, 使用 Pandas 我们可以在移入或移出数据时检查数据。

通过上述几点可知,Pandas 是 Python 中的一个库或工具包,而 SQL 本身就是一种查询语言。

在什么情况下使用 SQL 和 Pandas ?

SQL 和 Pandas 可以在各种应用程序中使用。让我们来看看它们的主要用法。

SQL:我们可以把 SQL 作为数据处理的首选,我们可以使用它来管理几种类型的关系数据库,查询数据仓库或分布式数据库。虽然我们也可以使用SQL进行数据分析,而且它是一种高性能语言,具有高维数据。

Pandas:我们可以把 Pandas 看作是数据的最后一个存放点,以便我们转换数据。对于复杂的数据转换和 EDA,Pandas 是一个更好的地方。大多时候,我们使用 Pandas 来处理数据帧格式的数据,这是一种整洁的数据形式。

通过上述几点,我们可以说,在数据分析的过程中我们可以使用 SQL 分析数据并从中导入所需的功能,然后使用 Pandas 更深入地分析数据并对其进行处理以进行机器学习建模。

说到业务逻辑,使用 SQL 的一个基本优势是我们可以将数据分发给每个人。SQL 可以在各种情况下提供帮助,例如将数据导入 Python、在 Tableau 中构建仪表板、显示 Web 报告等,并确保流程的性能更高。使用 Pandas 进行数据操作的优点包括我们可以将数据存储到一台计算机中,与重复查询数据库相比,I / O成本和延迟更低,并且能够在每个数据段中应用任意功能。

数据操作的比较

许多数据分析从业者必须定期使用 SQL 和 Pandas 来完成各种与数据相关的任务。因此,本文的这一部分将了解如何使用 SQL 语言和 Pandas 库执行不同的操作。为了解释这个过程,我们将使用泰坦尼克号数据集。

import Pandas as pd path = 'https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/' data = pd.read_csv(path "titanic.csv") data.head()

输出:

用sql还是pandas处理数据(九道门如何使用Pandas对数据执行SQL查询)(2)

从输出中我们可以看到不同列的名称。现在开始我们的第一个操作。

select

该操作用于从给定数据中获取所需的信息。使用SQL语言,我们可以通过以下方式使用一些变量执行这一操作:

SELECT Survived, Pclass, Name FROM data LIMIT 5;

说到 Pandas 库,我们可以通过以下方式来选择变量:

data[['Survived', 'Pclass', 'Name']].head()

输出:

用sql还是pandas处理数据(九道门如何使用Pandas对数据执行SQL查询)(3)

where

这是一个条件操作,我们主要使用它来从符合某些条件的数据中查找数据值。使用SQL,我们可以通过以下方式找到性别变量为男性的数据点:

SELECT * FROM data WHERE Sex = 'male' LIMIT 5

可以通过以下方式使用 pandas 执行相同的操作:

data[data['Sex'] == 'male'].head()

输出:

用sql还是pandas处理数据(九道门如何使用Pandas对数据执行SQL查询)(4)

请注意,我们在 SQL 中使用 * (星号) 来显示数据中的所有列。

OR 和 AND

这是将两个条件合并为一个条件的条件操作。使用 SQL 语言,我们可以通过以下方式找到变量性别为男性且年龄大于5岁的值:

SELECT * FROM data WHERE Sex = 'Male' AND Age > 5.00;

我们可以通过以下方式使用 Pandas 来执行相同的操作:

data[(data['Sex'] == 'male') & (data['Age'] > 5.00)]

输出:

用sql还是pandas处理数据(九道门如何使用Pandas对数据执行SQL查询)(5)

Group by

使用某些类别对数据值进行分组。有了这些数据,我们可以将男性和女性分组。在SQL中,可以通过以下方式实现:

SELECT Sex, count(*) FROM data GROUP BY Sex;

注意:此查询将提供每个性别的记录数。

可通过以下方式使用 pandas 执行相同的程序:

data.groupby('Sex').size()

输出:

用sql还是pandas处理数据(九道门如何使用Pandas对数据执行SQL查询)(6)

Join

连接操作是使用 SQL 最常用的操作,因为它主要帮助使用两个或多个数据生成新数据。可以通过以下几种方式连接数据:

• Inner join

此连接提供了加入的变量的公共值,使用 SQL 通过以下方式执行此操作:

SELECT * FROM df1 INNER JOIN df2 ON df1.key = df2.key;

这里有两个数据帧(df1 和 df2)和一个公共变量(key)。要执行此操作,我们需要有两个或多个数据集。可以通过以下方式使用 Pandas 制作数据帧:

import numpy as np df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': np.random.randn(4)}) df2 = pd.DataFrame({'key': ['B', 'D', 'D', 'E'], 'value': np.random.randn(4)})

现在,我们可以通过以下方式对数据集进行内连接:

pd.merge(df1, df2, on='key')

用sql还是pandas处理数据(九道门如何使用Pandas对数据执行SQL查询)(7)

• Left outer join

此操作有助于我们使用子句连接数据集。借助此功能,我们可以保留左侧数据中不匹配的行,并以右表的形式将它们与空行连接起来。在SQL中,可以通过以下方式执行此操作:

SELECT * FROM df1 LEFT OUTER JOIN df2 ON df1.key = df2.key;

可以通过以下方式使用 pandas 执行相同的操作:

pd.merge(df1, df2, on='key', how='left')

输出:

用sql还是pandas处理数据(九道门如何使用Pandas对数据执行SQL查询)(8)

• Right outer join

我们使用该子句保留右侧数据中的行,并在第一个(左)表的形状中使用 null 连接它们。我们可以通过以下方式使用 SQL 执行此操作:

SELECT * FROM df1 RIGHT OUTER JOIN df2 ON df1.key = df2.key;

通过以下方式使用 pandas 执行相同操作:

pd.merge(df1, df2, on='key', how='right')

输出:

用sql还是pandas处理数据(九道门如何使用Pandas对数据执行SQL查询)(9)

• Full join

此操作在连接数据时保留每个数据的所有行。此操作可以通过以下方式使用 SQL 执行:

SELECT * FROM df1 FULL OUTER JOIN df2 ON df1.key = df2.key;

可以使用 pandas 通过以下方式执行相同的操作:

pd.merge(df1, df2, on='key', how='outer')

输出:

用sql还是pandas处理数据(九道门如何使用Pandas对数据执行SQL查询)(10)

在上面的内容中,我们看到了一些可以使用 Pandas 库和 SQL 语言执行的重要操作。可以说将 Pandas 转换为 SQL 或将 Pandas 转换为 SQL 并不是一项艰巨的任务。我们可以配合着使用它们,用 SQL 来处理数据库中的数据,用 Pandas 来处理维数较低的数据。数据分析优质社群,等你加入哦~

用sql还是pandas处理数据(九道门如何使用Pandas对数据执行SQL查询)(11)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页