Python 用Pandas .query()方法过滤数据

  • Post category:Python

当我们处理大量数据时,经常需要过滤掉一些不需要的数据。Python中的Pandas库提供了名为query()的方法,可以非常方便地过滤数据。接下来,我将为您详细讲解如何使用Pandas.query()方法过滤数据,并提供实例说明。

1. 什么是Pandas.query()方法?

Pandas.query()方法是一种基于字符串的向量化操作,它可以让我们更轻松的筛选DataFrame中的数据,类似于SQL语句中的where子句。它非常适合处理大型数据集,因为它的速度非常快。

2. 如何使用Pandas.query()方法过滤数据?

使用Pandas.query()方法过滤数据有以下几个步骤:

2.1 导入Pandas库

首先,我们需要导入Pandas库。使用以下代码可以导入Pandas库:

import pandas as pd

2.2 创建DataFrame对象

然后,我们需要创建一个包含数据的DataFrame对象。在这个示例中,我们将使用以下代码创建一个DataFrame对象:

df = pd.DataFrame({'name': ['Tom', 'Jack', 'Steve', 'Ricky'],
                   'age': [28, 34, 29, 42],
                   'gender': ['M', 'M', 'M', 'M']})

此时,我们得到了一个包含四个人员信息的DataFrame对象。

2.3 使用query()方法过滤数据

现在我们可以使用query()方法过滤数据了。将以下代码添加到Python文件末尾,我们可以过滤掉年龄小于30岁的人员数据:

result = df.query('age > 30')
print(result)

执行以上代码后,我们将得到以下DataFrame对象:

    name  age gender
1   Jack   34      M
3  Ricky   42      M

2.4 使用变量和逻辑运算符过滤数据

我们还可以通过使用变量和逻辑运算符,进一步筛选DataFrame数据。例如,我们可以使用以下代码过滤掉年龄小于30岁并且性别为男性的人员数据:

age_limit = 30
gender = 'M'
result = df.query('age > @age_limit and gender == @gender')
print(result)

其中,双引号内的语句包含了两个变量age_limit和gender,它们分别表示年龄下限和性别。在查询中,我们可以通过@符号使用这些变量。执行以上代码后,我们将得到以下DataFrame对象:

   name  age gender
3  Ricky   42      M

3. 结论

以上就是使用Pandas.query()方法过滤数据的完整攻略。希望这篇文章对您有所帮助。