Pandas DataFrame.query()2025年3月17日 | 阅读 10 分钟 Python 是一种出色的编程语言,用于执行数据分析,这主要归功于它提供的以数据为中心的出色包生态系统。Pandas 是这些包之一,它允许用户高效有效地导入和分析数据。数据分析需要许多过滤操作。Pandas DataFrame 提供了多种方法来过滤数据框中的数据,其中 query() 方法就是其中之一。 在下面的教程中,我们将通过示例学习 DataFrame.query() 方法。但在开始之前,让我们讨论一下 Python Pandas 包的基础知识。 Pandas 简介Pandas 是一个开源但功能强大的 Python 包,用于数据分析和操作。Pandas 包提供两种主要数据结构 - DataFrame 和 Series。这些数据结构简化了文本数据和数字数据的表格数据管理过程。这些过程包括:
理解 Pandas 的工作原理Pandas 包围绕 DataFrame 和 Series 对象展开。DataFrame 对象是用于以行和列存储数据的二维表,而 Series 对象是用于仅存储单一类型数据的一维数组。 Pandas 与 NumPy 库协同工作,NumPy 库允许用户高效地对大型数组执行各种数值操作。与 NumPy 的这种集成允许两个包(一个表格,一个数值)之间进行统一和更快的操作。 我们可以从不同的数据源创建 DataFrame 和 Series 对象,例如 CSV 文件、Excel 文件、SQL 数据库,甚至 Python 字典和列表。 安装 Pandas 包后,我们可以访问多个函数来从各种源读取和写入数据,从而简化任何格式的数据制表过程。 Pandas 的主要特点Pandas 是一个广泛用于数据操作、清理和分析的 Python 库。以下是 Pandas 的一些主要特性和功能: 1. 数据清理 Pandas 包提供了许多函数来清理和转换数据,例如填充缺失值、删除行或列、删除 NULL 值和重命名列。 2. 数据过滤和选择 Pandas 包提供了广泛的函数,用于基于高度精细的条件进行数据过滤和选择。因此,无论数据的复杂性如何,我们都可以使用 Pandas 提取所需的精确信息。 3. 数据聚合 借助 Pandas,我们可以执行聚合操作,例如 pivot、groupby 和 merge 来汇总和重构数据。 4. 数据可视化 Pandas 包与流行的 Matplotlib 库集成,用于数据可视化,允许用户从数据创建不同类型的绘图和图表。 使用 Pandas 包的一些优点使用 Pandas 包进行数据分析和操作有许多原因,包括但不限于:
Pandas 入门现在让我们了解如何在 Python 中开始使用 Pandas 库。 安装 Pandas 并验证安装使用 Pandas 的主要步骤是确保它已安装在系统中。我们可以通过在命令提示符或终端中键入以下命令来使用 PIP 安装程序安装 Pandas。 语法 安装完成后,我们可以通过创建新的 python 程序文件并导入 pandas 模块来验证 Pandas 库是否正确安装。 以下是说明相同内容的代码片段。 文件:verify.py import pandas as pd 注意:在这里,pd 指的是 Pandas 的别名。但是,不必使用别名导入库,它只是有助于在每次调用方法或属性时编写更少的代码。现在,让我们保存文件并在命令提示符或终端中运行以下命令。 语法 $ python verify.py 如果程序没有返回任何导入错误,则表示库已成功安装。如果出现任何异常,请尝试重新安装库并考虑查看其官方文档。 使用 Pandas 的第一个 Python 程序现在 Pandas 包已正确安装在系统上,让我们在 Python 中编写第一个程序,使用 Pandas 创建一个 DataFrame 示例 1:使用 Pandas 创建 DataFrame 输出 DataFrame: Empty DataFrame Columns: [] Index: [] DataFrame: 0 0 I 1 love 2 learning 3 Pandas 4 from 5 JavaTpoint 说明 在上面的代码片段中,我们导入了 pandas 模块作为 pd。然后我们调用了 DataFrame 类的构造函数。之后我们初始化了一个字符串列表。最后,我们对初始化的列表调用了 DataFrame 类的构造函数。作为列表,第一个 DataFrame 是空的。但是,第二个 DataFrame 包含多行多列,其中包含来自列表的数据。 要深入了解 Pandas,您可以访问 JavaTpoint 提供的 Pandas 教程。 现在我们已经掌握了 Pandas 的基本知识,是时候深入了解 DataFrame.query() 方法了。 理解 Pandas DataFrame.query() 方法pandas.DataFrame 类提供了一个名为 query() 的方法。此方法用于根据给定的表达式(单个或多个列条件)查询行并返回一个新的 DataFrame。我们还可以通过将 query() 方法的 inplace 参数设置为 True 来就地修改现有 DataFrame。这使用户能够高效地过滤和操作 DataFrame 的数据,而无需创建额外的副本。 以下是关于 DataFrame.query() 方法的一些要点:
DataFrame.query() 方法的语法DataFrame.query() 方法的语法如下: 语法 参数
返回值 此方法用于返回过滤后的 DataFrame。 现在让我们看一下 DataFrame.query() 方法的实现。 Pandas DataFrame.query() 方法的实现在以下部分中,我们将查看不同的示例,说明如何使用 query() 方法过滤给定 DataFrame 中的数据。 示例 1:单条件过滤 在此示例中,数据根据单个条件进行过滤。在应用 query() 方法之前,我们将把列名中的空格替换为 '_'。 代码 输出 Unfiltered DataFrame First Name Gender Start Date Last Login Time Salary Bonus % Senior Management Team 0 Douglas Male 8/6/1993 12:42 PM 97308 6.945 True Marketing 1 Thomas Male 3/31/1996 6:53 AM 61933 4.170 True NaN 2 Maria Female 4/23/1993 11:17 AM 130590 11.858 False Finance 3 Jerry Male 3/4/2005 1:00 PM 138705 9.340 True Finance 4 Larry Male 1/24/1998 4:47 PM 101004 1.389 True Client Services .. ... ... ... ... ... ... ... ... 995 Henry NaN 11/23/2014 6:09 AM 132483 16.655 False Distribution 996 Phillip Male 1/31/1984 6:30 AM 42392 19.675 False Finance 997 Russell Male 5/20/2013 12:39 PM 96914 1.421 False Product 998 Larry Male 4/20/2013 4:45 PM 60500 11.985 False Business Development 999 Albert Male 5/15/2012 6:24 PM 129949 10.169 True Sales [1000 rows x 8 columns] Filtered DataFrame First_Name Gender Start_Date Last_Login_Time Salary Bonus_% Senior_Management Team 0 Douglas Male 8/6/1993 12:42 PM 97308 6.945 True Marketing 1 Thomas Male 3/31/1996 6:53 AM 61933 4.170 True NaN 3 Jerry Male 3/4/2005 1:00 PM 138705 9.340 True Finance 4 Larry Male 1/24/1998 4:47 PM 101004 1.389 True Client Services 6 Ruby Female 8/17/1987 4:20 PM 65476 10.012 True Product .. ... ... ... ... ... ... ... ... 991 Rose Female 8/25/2002 5:12 AM 134505 11.051 True Marketing 992 Anthony Male 10/16/2011 8:35 AM 112769 11.625 True Finance 993 Tina Female 5/15/1997 3:53 PM 56450 19.040 True Engineering 994 George Male 6/21/2013 5:47 PM 98874 4.479 True Marketing 999 Albert Male 5/15/2012 6:24 PM 129949 10.169 True Sales [468 rows x 8 columns] 说明 在上面的代码片段中,我们导入了 pandas 模块。然后我们使用 CSV 文件创建了一个 DataFrame 并打印了 DataFrame 以供参考。然后我们将数据中的空格替换为下划线 '_',然后使用 filter() 方法过滤 DataFrame。最后,我们打印了过滤后的 DataFrame 以供参考。 结果,过滤后的数据中只有 Senior Management 设置为 True 的行。 示例 2:多条件过滤 在此示例中,DataFrame 已在多个条件下进行过滤。在应用 query() 方法之前,我们将把列名中的空格替换为 '_'。 代码 输出 Unfiltered DataFrame First Name Gender Start Date Last Login Time Salary Bonus % Senior Management Team 0 Douglas Male 8/6/1993 12:42 PM 97308 6.945 True Marketing 1 Thomas Male 3/31/1996 6:53 AM 61933 4.170 True NaN 2 Maria Female 4/23/1993 11:17 AM 130590 11.858 False Finance 3 Jerry Male 3/4/2005 1:00 PM 138705 9.340 True Finance 4 Larry Male 1/24/1998 4:47 PM 101004 1.389 True Client Services .. ... ... ... ... ... ... ... ... 995 Henry NaN 11/23/2014 6:09 AM 132483 16.655 False Distribution 996 Phillip Male 1/31/1984 6:30 AM 42392 19.675 False Finance 997 Russell Male 5/20/2013 12:39 PM 96914 1.421 False Product 998 Larry Male 4/20/2013 4:45 PM 60500 11.985 False Business Development 999 Albert Male 5/15/2012 6:24 PM 129949 10.169 True Sales [1000 rows x 8 columns] Filtered DataFrame First_Name Gender Start_Date Last_Login_Time Salary Bonus_% Senior_Management Team 43 Marilyn Female 12/7/1980 3:16 AM 73524 5.207 True Marketing 98 Tina Female 6/16/2016 7:47 PM 100705 16.961 True Marketing 158 Norma Female 2/28/1999 8:45 PM 114412 8.756 True Marketing 331 Evelyn Female 9/3/1983 1:58 PM 36759 17.269 True Marketing 446 Cheryl Female 8/16/1994 8:33 AM 67150 15.850 True Marketing 468 Janice Female 6/28/1997 1:48 PM 136032 10.696 True Marketing 531 Virginia Female 5/2/2010 9:10 PM 123649 10.154 True Marketing 617 Kathy Female 1/14/2001 5:11 AM 45682 1.451 True Marketing 625 Cynthia Female 6/29/2015 6:38 AM 82408 8.701 True Marketing 656 Lisa Female 2/9/1982 6:44 PM 113592 17.108 True Marketing 676 Annie Female 6/6/1992 10:04 AM 138925 9.801 True Marketing 730 Nicole Female 4/26/2009 12:40 AM 66047 18.674 True Marketing 811 Judith Female 9/3/1989 11:16 AM 134048 6.818 True Marketing 813 Evelyn Female 2/10/2002 4:44 AM 123621 19.767 True Marketing 894 Betty Female 11/19/2002 10:40 AM 37005 7.645 True Marketing 930 Nancy Female 9/10/2001 11:57 PM 85213 2.386 True Marketing 942 Lori Female 11/20/2015 1:15 PM 75498 6.537 True Marketing 991 Rose Female 8/25/2002 5:12 AM 134505 11.051 True Marketing 说明 在上面的代码片段中,我们导入了 pandas 模块。然后我们使用 CSV 文件创建了一个 DataFrame 并打印了 DataFrame 以供参考。然后我们将数据中的空格替换为下划线 '_',然后使用 filter() 方法过滤 DataFrame。最后,我们打印了过滤后的 DataFrame 以供参考。 结果,根据应用的过滤器只返回了 18 行。 下一个主题DataFrame.rename() |
我们请求您订阅我们的新闻通讯以获取最新更新。