Pandas 查询示例 Pandas .query() 方法过滤数据 数据帧中类似 SQL 的查询

摘要:
Python是一种用于进行数据分析的出色语言,主要是因为以数据为中心的Python包的奇妙生态系统。Pandas是使导入和分析数据更容易的软件包之一。Pandas提供了许多过滤数据框的方法,它Dataframe.query()就是其中之一。在应用query()方法之前,列名中的空格已被替换为“_”。#importingpandaspackageimportpandasaspd#makingdataframefromcsvfiledata=pd.read_csv#replacingblankspaceswith'_'data.columns=[column.replaceforcolumnindata.columns]#filteringwithquerymethoddata.query#displaydata输出:如输出图像所示,数据现在只有高级管理为真的行。

Python 是一种用于进行数据分析的出色语言,主要是因为以数据为中心的 Python 包的奇妙生态系统。Pandas是使导入和分析数据更容易的软件包之一。

分析数据需要大量的过滤操作。Pandas 提供了许多过滤数据框的方法,它Dataframe.query()就是其中之一。

注意极客!通过Python 编程基础课程巩固您的基础并学习基础知识。

首先,您的面试准备通过Python DS课程增强您的数据结构概念要开始您的机器学习之旅,请加入机器学习 - 基础课程

语法:DataFrame.query(expr, inplace=False, **kwargs)

参数:
expr:过滤数据的字符串形式的表达式。
就地:如果 True
kwargs:其他关键字参数,则在原始数据框中进行更改

返回类型:过滤后的数据框

要下载使用的 CSV 文件,请单击此处。

注意:Dataframe.query()方法仅在列名没有任何空格时才有效。所以在应用该方法之前,列名中的空格被替换为“_”

示例 #1:单条件过滤

在这个例子中,数据是根据单一条件过滤的。在应用 query() 方法之前,列名中的空格已被替换为“_”。

# importing pandas package
import pandas aspd
  
# making data frame fromcsv file 
data = pd.read_csv("employees.csv")
  
# replacing blank spaces with '_'data.columns =[column.replace(" ", "_") for column indata.columns]
  
# filtering with query method
data.query('Senior_Management == True', inplace =True)
  
# display
data

输出:
如输出图像所示,数据现在只有高级管理为真的行。
Pandas 查询示例 Pandas .query() 方法过滤数据 数据帧中类似 SQL 的查询第1张
示例 2:多条件过滤

在此示例中,数据帧已在多个条件下进行过滤。在应用 query() 方法之前,列名中的空格已被替换为“_”。

# importing pandas package
import pandas aspd
  
# making data frame fromcsv file 
data = pd.read_csv("employees.csv")
  
# replacing blank spaces with '_'data.columns =[column.replace(" ", "_") for column indata.columns]
  
# filtering with query method
data.query('Senior_Management == True 
            and Gender =="Male" and Team =="Marketing"and First_Name =="Johnny"', inplace = True)
# display
data

输出:
如输出图像所示,根据应用的过滤器只返回了两行。
Pandas 查询示例 Pandas .query() 方法过滤数据 数据帧中类似 SQL 的查询第2张

为什么使用查询

因为它使您能够就地创建视图和过滤器。

对于数值运算,它也比纯 python 更快。1

import pandas as pd

# using filters needs two steps
# one to assign the dataframe to a variable
df = pd.DataFrame({
    'name':['john','david','anna'],
    'country':['USA','UK',np.nan]
})

# another one to perform the filter
df[df['country']=='USA']

但是您可以在一个步骤中定义数据帧并对其进行查询(内存会立即释放,因为您没有创建任何临时变量)

# this is equivalent to the code above
# and uses no intermediate variables
pd.DataFrame({
    'name':['john','david','anna'],
    'country':['USA','UK',np.nan]
}).query("country == 'USA'")

Python变量

在查询中引用外部变量,请使用@variable_name

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'name':['john','david','anna'],
    'country':['USA','UK',np.nan],
    'age':[23,45,45]
})

target_age = 45

df.query('age == @target_age')

或运算符

只需使用or.不要忘记括号。

import pandas as pd

df = pd.DataFrame({
    'name':['john','david','anna'],
    'country':['USA','UK', 'USA'],
    'age':[23,45,45]
})

df.query("(name=='john') or (country=='UK')")
源数据框之前:源数据框
后过滤器或运算符之后:只有 name'john'
或 country 的'UK'

AND 运算符

只需使用and.不要忘记括号。

import pandas as pd

df = pd.DataFrame({
    'name':['john','david','anna'],
    'country':['USA','UK', 'USA'],
    'age':[23,45,45]
})

df.query("(country=='USA') and (age==23)")
源数据框包含所有行的源数据框
后加运算符过滤器之后:只有一行有
country='USA'
age =23

多重条件

有关更多示例,请参阅上面的and 运算符或运算符

  • 示例:AND 运算符

df.query((col1 == 1) and (col2 == 2))

  • 示例:OR 运算符

df.query((col1 == 1) or (col2 == 2))

数组中的值

将值放入 python 数组中并使用in @myvar

import pandas as pd

df = pd.DataFrame({
    'name':['john','david','anna'],
    'country':['USA','UK', 'USA'],
    'age':[23,45,45]
})

names_array = ['john','anna']

df.query('name in @names_array')
源数据框源数据框
where-column-is-in-array名称所在的行['john', 'anna']

不在数组中

将值放入 python 数组中并使用not in @myvar

import pandas as pd

df = pd.DataFrame({
    'name':['john','david','anna'],
    'country':['USA','UK', 'USA'],
    'age':[23,45,45]
})

invalid_array = ['anna']

df.query('name not in @invalid_array')
源数据框源数据框:所有行
where-column-not-in-array名称不在的选定行['anna']

转义列名

转义特殊字符(例如空格),请将列名称括在反引号中:'`'

df = pd.DataFrame({
    'name':['john','david','anna'],
    'country of birth':['USA','UK', 'USA'],
    'age':[23,45,45]
})

df.query('`country of birth` == "UK"')
源数据框Source dataframe: one of the column
names has spaces in it
过滤后列名称空间Selected rows where
country of originequals'UK'

Is null

To filter the dataframe where a column value isNULL, use.isnull()

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'name':['john','david','anna'],
    'country':['USA','UK',np.nan]
})

df.query('country.isnull()')
原始数据框Original Dataframe
查询何处为空Equivalent to:
"where country is NULL"

Is not null

Use.notnull()

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'name':['john','david','anna'],
    'country':['USA','UK',np.nan]
})

df.query('country.notnull()')
原始数据框Original Dataframe
查询何处为空Equivalent to:
"where country is NOT NULL"

Like

Although like isnot supportedas a keyword in query, we can simulate it usingcol.str.contains("pattern"):

import pandas as pd

df = pd.DataFrame({
    'col1':['foo','bar','baz','quux']
})

df.query('col1.str.contains("ba")')
源数据框Source dataframe
类似查询后Result: filter wherecol1matches"ba"

1It usesnumexprunder the hood:https://github.com/pydata/numexpr

免责声明:文章转载自《Pandas 查询示例 Pandas .query() 方法过滤数据 数据帧中类似 SQL 的查询》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SaaS到底是什么使用 MVVMLight 绑定数据(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python常见错误记录

1. x^y x**y 2. range(a,b,c) http://www.runoob.com/python/python-func-range.html 以a为首项(默认从0开始),c为公差(默认为1)且不超过b-1的等差数列 3. lambda匿名函数 https://blog.csdn.net/liang19890820/article/det...

PySpark DataFrame 添加自增 ID

PySpark DataFrame 添加自增 ID 本文原始地址:https://sitoi.cn/posts/62634.html 在用 Spark 处理数据的时候,经常需要给全量数据增加一列自增 ID 序号,在存入数据库的时候,自增 ID 也常常是一个很关键的要素。 在 DataFrame 的 API 中没有实现这一功能,所以只能通过其他方式实现,或者...

python数据分析——pandas的拼接操作

pandas的拼接操作 pandas的拼接分为两种: 级联:pd.concat, pd.append 合并:pd.merge, pd.join 1. 使用pd.concat()级联 pandas使用pd.concat函数,与np.concatenate函数类似,只是多了一些参数: objs axis=0 keys join='outer' /...

20个Pandas函数详解

作者|Soner Yıldırım 编译|VK 来源|Towards Data Science Pandas是一个python数据分析库。它提供了许多函数和方法来加快数据分析过程。pandas之所以如此普遍,是因为它具有强大的功能,以及他简单的语法和灵活性。 在这篇文章中,我将举例来解释20个常用的pandas函数。有些是很常见的,我敢肯定你以前用过。有些...

pandas 按某列中的指定字符拆分某列 pandas.DataFrame.field.str.split()

需求 把指定列的数据根据指定字符进行拆分,并保留拆分后所需的列; 原始数据:  需要将这列数据根据 ‘.’ 进行拆分,并保留 .DCE 前面的部分; 解决 借助于 pandas.DataFrame.field.str.split() df['ts_code'].str.split('.', expand=True) # expand=True 将拆分出...

Spark SQL概述

前言:一些逻辑用spark core 来写,会比较麻烦,如果用sql 来表达,那简直太方便了 一、Spark SQL 是什么 是专门处理结构化数据的 Spark 组件 Spark SQL 提供了两种操作数据的方法:   sql 查询   DataFrames/Datasets API Spark SQL = Schema + RDD 二、Spark SQL...