SQL里筛选数据主要用到了where、and、in等语句。而在Python里实现筛选的方式比较多样,用到了 与&或|非~ 逻辑运算符,和isin()函数等。我们感受一下二者的区别吧:
汇总:
类型 | Python语句参考 |
单条件筛选 | data[data['shop_type']=='A'] |
多个值的筛选 | data[data['uid'].isin([17437864,17402857])] |
不含某些值的筛选 | data[~data['AB_group'].isin(['A','B'])] |
且条件 筛选 | data[(data['shop_type']=='A')&(data['order_count']>=20)] |
或条件 筛查 | data[(data['order_count']>=100)|(data['order_shops']>=100)] |
单个条件的筛选
例子:筛选A类店铺
select
*
from t_store_order
where shop_type = 'A'
data[data['shop_type']=='A']
代码详解:
==用于判断两个值是否相等;
data['shop_type']=='A'返回的是布尔型的数据,会返回值为True的那些行。
运行结果:
isin()某些值范围内的筛选
例子:查询给定用户id的数据
select
*
from t_store_order
where uid in (17437864,17402857)
data[data['uid'].isin([17437864,17402857])]
代码详解:
[17437864,17402857]是一个用中括号括起来的列表list;
isin()方法用于判断某个值是否在一个列表中,会返回一个布尔型的Series对象;
data['uid']是一个Series格式的数据,可以调用isin()方法;
运行结果:
剔除某些值(不含某些值的筛选)
例子:剔除分组为A、B的数据
select
*
from t_store_order
where AB_group not in ('A','B')
data[~data['AB_group'].isin(['A','B'])]
代码详解:
~ 代表反转运算符,True会变成False,False会变成True;
在上一段我们了解到data[~data['AB_group'].isin(['A','B'])]会生成布尔型的Series对象,加了反转运算符后,原本包含这些值就变成剔除这些值了。
运行结果:
查询某个范围
例子:查询订单数大于20的记录
select
*
from t_store_order
where shop_type = 'A'
data[data['shop_type']=='A']
多条件筛选
且条件
例子:查询店铺类型为A且订单数大于20的记录
select
*
from t_store_order
where shop_type = 'A'
and order_count >= 20
data[(data['shop_type']=='A')&(data['order_count']>=20)]
代码详解:
&代表与运算符;
这样(布尔型的Series对象)&(布尔型的Series对象)两个布尔型的series进行与运算,同时为True才会返回True;
运行结果:
或条件
例子:查询订单数大于100或下单店铺数大于100的记录
select
*
from t_store_order
where shop_type = 'A'
data[(data['order_count']>=100)|(data['order_shops']>=100)]
代码详解:
| 代表或运算符;
两个布尔型的series进行与运算,有一个为True就会返回True,同时为False结果才为False;
运行结果:
附录:
在jupyter notebook上运行SQL的方法:对比SQL学Python:在jupyter notebook运行SQL_紫昂张的博客-CSDN博客