【数据分析】数据筛选(布尔索引:多个判断条件)

在pandas模块中,++逻辑运算符++ 有以下几种:

1.&表示并且

2.|表示或者

3.~表示非

1. & (并且)运算符

当且仅当运算符两边的布尔值均为 True 时,运算结果才为 True ,其他情况为 False

|----------------------------------------------------------------------------------------------------------|
| a = True b = True c = False print(a & b) # 输出: True print(a & c) # 输出: False print(b & c) # 输出: False |

在Pandas中使用 & 进行多条件筛选

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| import pandas as pd # 创建一个示例DataFrame data = pd.DataFrame({ 'A': 1, 2, 3, 4, 'B': 4, 3, 2, 1 }) # 筛选出 A 列大于 1 并且 B 列小于 4 的行 filtered_data = data(data\['A' > 1) & (data'B' < 4)] print(filtered_data) |

2. | (或者)运算符

当运算符两边的布尔值中至少有一个为 True 时,运算结果就为 True ,仅当两边的布尔值都是 False 时结果才为 False

|----------------------------------------------------------------------------------------------------------|
| a = True b = False c = False print(a | b) # 输出: True print(b | c) # 输出: False print(a | c) # 输出: True |

在Pandas中使用 | 进行多条件筛选:

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| import pandas as pd # 创建一个示例DataFrame data = pd.DataFrame({ 'A': 1, 2, 3, 4, 'B': 4, 3, 2, 1 }) # 筛选出 A 列大于 2 或者 B 列小于 2 的行 filtered_data = data(data\['A' > 2) | (data'B' < 2)] print(filtered_data) |

3. ~ (非)运算符

仅有一个布尔值参与运算,运算结果为对这个布尔值取反,即 True 变为 FalseFalse 变为 True

|-----------------------------------------------------------------|
| a = True b = False print(~a) # 输出: False print(~b) # 输出: True |

在Pandas中使用 ~ 进行布尔索引的取反操作:

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| import pandas as pd # 创建一个示例DataFrame data = pd.DataFrame({ 'A': 1, 2, 3, 4, 'B': 4, 3, 2, 1 }) # 筛选出 A 列不大于 2 的行 filtered_data = data\~(data\['A' > 2)] print(filtered_data) |

简单解释:

这一行代码的功能是使用布尔索引结合取反运算符 `~`,从 `data` 数据框中筛选出 `A` 列中不大于 `2` 的行。我们来详细解析它的工作方式:

代码总结:

import pandas as pd

创建一个示例DataFrame

data = pd.DataFrame({

'A': 1, 2, 3, 4,

'B': 4, 3, 2, 1

})

筛选出 A 列不大于 2 的行

filtered_data = data\~(data\['A' > 2)]

打印筛选结果

print(filtered_data)

运行结果:

A B

0 1 4

1 2 3

通过 `~` 运算符,可以轻松地实现条件筛选的取反操作。

总结:

1.& (并且) :运算符两边的布尔值均为True时,运算结果才为True,其他情况为False。
2. |(或者) :运算符两边的布尔值至少有一个为True时运算结果就为True,仅当两边的布尔值都是False 时结果才为False。
3.~ (非) :仅有一个布尔值参与运算,运算结果为对这个布尔值取反。

让我们来思考以下例子:
假设在读取电商数据时,我们想要输出所有 "cutdown_price"大于0 和 "post_fee"大于0 的行,该怎么做呢?

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 接下来,要同时输出 "cutdown_price"大于0 和 "post_fee"大于0的行数据,就需要在一个索引中,使用 & 来连接对应的两个判断条件。 注意: 当有多个判断条件时,每一个判断条件都需要用小括号( )括起来。 这时,同时满足这两个判断的行数据就会被筛选出来 |
| # 导入pandas模块,并以"pd"为该模块的简写 import pandas as pd # 使用pd.read_csv() 函数读取路径为 "/Users/yequ/电商数据清洗.csv" 的CSV文件,并将结果赋值给变量data data = pd.read_csv("/Users/yequ/电商数据清洗.csv") # 使用print()和布尔索引 # 输出"cutdown_price"这一列值里大于0 # 和"post_fee"这一列值里大于0的行 print(data(data\["cutdown_price">0) & (data"post_fee">0)]) |
| |

代码具体解释:

|------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------|
| 要筛选的数据 data是需要进行筛选的DataFrame对象。 | print(data(data\["cutdown_price">0) & (data"post_fee">0)]) |
| 第一个中括号 第一个中括号,也就是最外面的中括号,表示对变量data进行索引。 | print(data(data\["cutdown_price">0) & (data"post_fee">0)]) |
| 条件表达式 中括号里的内容是一个条件表达式,用来判断cutdown_price"这一列值里是否大于0和"post_fee"这一列值是否大于0。 pandas通过这个条件表达式得到一个布尔型Series,再通过这个Series来索引数据。 | print(data(data\["cutdown_price">0) & (data"post_fee">0)]) |
| 第一个判断条件 中括号中的第一个小括号里是第一个判断条件:判断"cutdown_price"这一列数据是否大于0。 | 第二个判断条件 中括号中的第二个小括号里是第二个判断条件:判断"post_fee"这一列数据是否大于0。 |

总结:当有多个判断条件时,每一个判断条件都需要用小括号( )括起来。

总结:

相关推荐
ZZZMMM.zip4 分钟前
鸿蒙生态新征程:基于鸿蒙Flutter框架的AI菜谱营养应用深度解析
人工智能·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
美团技术团队9 分钟前
直播回放·含 ACL'26 杰出论文 | 美团 AI 顶会论文 32 篇精讲
人工智能
无心水11 分钟前
【全域智能营销实战】10、三大引擎协同工作流:从用户消息到智能决策的完整链路
人工智能·springai·openclaw·顶尖架构师·全域智能营销·harmess·herness
ClickHouseDB14 分钟前
简化 Langfuse 的规模化应用
人工智能·数据挖掘
中微极客15 分钟前
从提示词到产品级视频:生成式AI的工程化实践与工具栈选型(LTX Studio实战)
人工智能·chatgpt·音视频
@陈小鱼16 分钟前
MATLAB+Python:基于小样本卷积神经网络的 PPG 血压预测
人工智能·python·机器学习·matlab·脉搏波·血压·一维卷积神经网络
大鱼>18 分钟前
AI+快递分拣:视觉识别+自动分拣+异常检测
人工智能·深度学习·算法·机器学习
具身新纪元21 分钟前
ECCV 2026|MATCH用Flow Matching重做多视角工业质检
人工智能·计算机视觉·视觉检测
卷无止境24 分钟前
Python数据进阶专题:用声明式验证让数据管道告别"惊喜"
后端·python·数据分析
AIHR数智引擎24 分钟前
15%对撞40%:WEF白皮书里的AI组织隐忧
数据库·人工智能·经验分享·职场和发展·aihr