领取MOLI红包

你的位置:RING中文网 > BCAT中文网 >

SQL操作Pandas DataFrame的三种方式示例详解

发布日期:2025-01-03 19:11    点击次数:51
Pandas的DataFrame操作 假如你现在需要对Pandas的DataFrame进行如下操作: 而如果用SQL来书写,达到上面的处理效果,我们可以写出更优雅和更易于理解的代码: 虽然我们非常喜欢Python,但很明显,对数据进行简单分析时,SQL才是我们最好的朋友,相比于Pandas的聚合函数语法,SQL语法更通俗、直观、便于理解。 接下来,本文将介绍三种使用SQL来操作Pandas DataFrame数据的方法。 假设我们已经有了一个准备好的DataFrame,其中包含你准备好的数据,下面我们开始介绍用SQL语句来查询DataFrame数据的方法。 方法1:使用DuckDB来查询DataFrame DuckDB是一个开源的内存中的分析型数据库,专为高效处理分析工作负载而设计。它被称为SQLite的分析/OLAP等效工具,因为它提供了类似SQL的查询语言,并支持在Pandas DataFrame上执行SQL查询。 DuckDB是一个强大而灵活的分析型数据库,它的集成性和性能优势使得在Pandas中使用SQL查询变得更加便捷和高效,首先按照通常的方法进行安装: DuckDB中的基准查询: 注意:我们需要明确地将结果转换为DataFrame,DuckDB会自动扫描你的内核,寻找属于DataFrame的变量,并让你像查询表一样查询它们。不过这种扫描是在查询运行时发生的,所以你不能使用如DESCRIBE这样的语句: DuckDB对空白更难处理,反斜线不能解析,所以你需要引用表(DataFrame)的名字,然后是列名(带引号): DuckDB是专门为OLAP使用案例而设计的数据库引擎,相较于SQLite,它提供了一些在SQLite中不存在的强大功能。一个例子是DuckDB的SAMPLE关键字,它使得对数据进行采样变得非常简单,特别适用于处理大型数据集的聚合函数。这一功能在数据分析和探索性数据分析(EDA)中非常有用。 或许,你使用DuckDB而不是SQLite来查询Pandas数据的主要原因是速度。DuckDB声称在分析性查询方面比SQLite快得多,Pandas内置的to_sql和from_sql函数在SQLite中工作得很慢,但在DuckDB中却相当快,在大数据的聚合基准查询中,速度的差异是相当大的。 方法2:使用Pandas .query()方法 你可能已经熟悉了Pandas中的.query()函数。它不完全是SQL,但它可以使一些基本的查询变得更容易,你可以理解它为一个简单的WHERE或.filter()的等价方法。 query()方法的文档比较少,你还可以使用&或者and、or、not等逻辑运算符,以及其它常见的操作符(例如==,<,>,!=等)来连接过滤器: 尽管query()方法提供了方便的语法来筛选DataFrame,但它的表达能力相对有限,某些复杂的查询可能无法使用单个query()表达式解决,需要使用其他方法或技巧来实现。 方法3:使用SmartNoteBook中dfSQL模块来查询DataFrame SmartNoteBook是一款协作的、集成的、一站式的数据科学/分析环境,其内置的dfSQL方式可以快速实现利用SQL语句对DataFrame进行快速查询。通过dfSQL,用户可以实现利用简单的SQL语句,对Pandas数据框、当前环境下的csv文件以及已经存在的df变量进行访问,除了dfSQL方法也可实现对其它数据源的快速访问,其基本用法如下: 1. 利用dfSQL从DataFrame变量中查询: 在SmartNoteBook中新建的SQL单元格中,数据源我们选择dfSQL,cars变量是前面我们已经读取到变量空间中的DataFrame变量,则我们可以直接利用SQL语句对变量cars进行查询,所查询到的表结果保存为my_cars变量。 2. 利用dfSQL查询环境中的csv文件: 在上述的SQL单元格中,数据源我们选择dfSQL,Iris.csv是存在于本地的一个csv文件,我们可以通过dfSQL,利用SQL语句直接从环境中对其进行读取,并选择我们需要的变量进行聚合,重新保存在一个名为iris的DataFrame变量中。 3. 利用dfSQL进行联合数据分析 在执行SQL语句时,有时为了查到复杂的信息我们往往需要对多表联查或嵌套查询,dfSQL通过在内存中加载保存变量,可以使得其逻辑更具可读性: 上述SQL单元中,我们需要查询每个地区Miles_per_Gallon、Cylinders、Acceleration均大于其地区均值的相关信息。我们可以分为两步,先查出各个地区的相关变量均值,基于保存的df1变量,再从原表中取出满足条件的信息并将其保存名为df2的DataFrame变量。 4. 利用SQL直接访问数据源文件: 实际上在SmartNoteBook的SQL代码模块,其也支持选择数据源,直接对远程数据库进行访问并直接保存为DataFrame变量: 上述SQL单元,我们选择了名为mysql 数据源的远程数据仓库,利用SQL语句直接读取仓库中的信息,并将其保存为名为my_data的DataFrame变量。 dfSQL具有更轻量化,集成优秀的特点,其对接外部数据源不需要再建立复杂的链接,而且可以直接实现对DataFrame变量和本地csv文件的访问。后面执行的SQL查询可以引用NoteBook中之前已执行的SQL查询结果,就像我们写复杂SQL中包含许多CTE(公共表表达式)一样。用户可以使用这种方式将复杂SQL按照逻辑进行拆分,使整个查询过程更具可读性。 以上就是SQL操作Pandas DataFrame的三种方式示例详解的详细内容,更多关于SQL操作Pandas DataFrame的资料请关注脚本之家其它相关文章!