Python – 用Pandas.query()方法过滤数据
Pandas是Python中非常常用的数据处理库,它可以快速处理包含大量数据的表格。其中,Pandas.query()方法可以让我们用类SQL语言的语句来进行数据过滤查询操作。
语法
语法比较简单,以DataFrame对象调用query()方法,参数为类SQL语言的查询语句,例如:
result = DataFrameObject.query('column_name >= value')
例子
下面我们以一个示例数据集为例,通过pandas.query()方法来过滤符合特定条件的数据。
首先,我们需要导入Pandas库,读取数据集并转化为DataFrame对象:
import pandas as pd
#读取数据文件,返回DataFrame对象
df = pd.read_csv('data.csv')
假设我们现在需要过滤出“Age”列在20岁以上的数据,可以使用如下的类SQL语句:
result = df.query('Age >= 20')
如果需要过滤多个条件,可以用AND、OR等逻辑运算符连接:
result = df.query('Age >= 20 and Name == "John"')
同样地,也可以使用类SQL语句的其他语法,如IN、LIKE等。
result = df.query('Name in ["John", "Mary"] and Hobby like "Ping Pong%"')
在使用类SQL语言进行数据查询时,需要注意一些小细节:
- 如果查询语句里有引号,正确的输入方式应该是单引号包围字符串(类似’xxx’)。
- 如果类SQL查询语句里需要用到Python中的一些保留关键字,如and、not等,需要在查询语句里加to,例如使用and应该改为使用andto。
小贴士
- 如果查询语句较长,可以使用括号进行分组,提高可读性。
result = df.query('(Age >= 20 or Gender == "male") and (Hobby == "Basketball" or Hobby == "Football")')
- query()方法还支持使用变量来代替查询语句中的某些值,这可以让代码更加灵活。
age_query = 'Age >= 20'
name_query = 'Name == "John"'
result = df.query(age_query + ' and ' + name_query)
结论
Pandas.query()方法可以让我们用类SQL语法来查询数据,它相比于函数式调用代码更加直观、简单。能够更好地给数据分析和处理带来便利。