Pandas使用query()优雅的查询实例

  • Post category:Python

当我们使用 Pandas 这个数据分析工具时,经常需要对数据进行查询和过滤。在这个过程中,使用 Pandas 的 query() 方法可以提高查询的效率和方便性。以下是关于如何使用 Pandas query() 方法的完整攻略:

什么是 Pandas 的 query() 方法?

Pandas 的 query() 方法是一种在数据框中进行条件查询的方法。我们可以使用类似 SQL 的语言对数据框进行筛选,并返回筛选后的结果。该方法不仅可以提高查询的速度和准确度,而且语法简单易懂。

如何使用 Pandas 的 query() 方法?

在使用 Pandas 的 query() 方法时,我们需要使用一些运算符和关键字,例如 ==、!=、>、<、>=、<=、and、or、not。这些关键词可以组合成复杂的逻辑关系,以实现对数据框进行高效的筛选和查询。以下是一个简单的示例:

import pandas as pd

data = pd.DataFrame({'name':['Tom', 'Jerry', 'Lucy', 'Lily'], 
            'age':[23, 21, 24, 26], 
            'gender':['Male', 'Male', 'Female', 'Female']})

result = data.query('age > 22 and gender =="Female"')
print(result)

在上述示例中,我们创建了一个包含名字、年龄、性别的数据框。然后,我们使用 query() 方法筛选年龄大于 22 且性别为女性的记录,并将结果打印输出。

Pandas 的 query() 方法的特点是什么?

相较于其他的 Pandas 数据过滤方法,query() 方法更简单、更优雅。

与在 iloc/loc 中使用表达式的优点相同,使用 query() 方法会有以下优点:

  • 更短的代码,更易于阅读
  • 可使用数据帧表列引用,而不是查询变量名称
  • 自动过滤使用Python全局对象或已编译的对象引用。Python对象引用使用@符号从表达式中删除
  • 可以获取局部和全局变量

而且,由于使用了精简的语法来过滤数据帧,query() 方法的查找速度通常比其他方法要快。

query() 方法的注意事项:

  • 使用 query() 方法时,表达式内的字符串必须用引号引起来。
  • 在表达式中使用的列必须用反引号引用。例如,在使用列名“my column”时应该写作 my column
  • 在表达式中引用变量时,应使用“@”字符。例如:salary > @my_var

以下是另外一个示例,展示了如何使用 query() 方法查询 Excel 导入的数据:

# 导入数据
df = pd.read_excel('data.xlsx')

# 简单的查询语句
df.query('price > 10 and quality > 80')

# 更复杂的查询语句
df.query('(price > 10 or quality > 80) and category == "A"')

在以上示例中,我们首先使用 read_excel() 方法从 Excel 文件中读取数据,然后使用 query() 方法进行简单和复杂查询。

在使用 query() 方法时,可以通过组合运算符和关键字,实现丰富、灵活的数据查询方式。

总结

Pandas 的 query() 方法是一种用于数据帧筛选和查询的非常方便、易用的方法。它的语法简单、流畅,表达式清晰易懂,能够提高数据分析的效率和准确度。在实际使用中,我们还可以结合其他 Pandas 方法使用,实现更为复杂的数据查询和处理。