当前位置: 首页 > news >正文

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

布尔索引

布尔索引:在实际应用中,只要是通过比较运算返回的判断结果(一个布尔型Series),就可以进行布尔索引。

应用场景:

面对大型数据时,用于获取数据的行索引和列索引往往不确定,通常我们需要寻找满足或不满足特定计算或条件的值。这时候,我们就需要用到 布尔索引 来筛选出符合要求的数据。

让我们来考虑以下例子:
假设在读取电商数据时,我们想要输出所有 "cutdown_price"(优惠价格)大于0 行数据,该怎么做呢?

先访问了 "cutdown_price" 这一列数据,然后就需要判断该列中哪些值大于0。
如果大于0,就把对应的那一行数据保留下来。

判断 "cutdown_price" 这一列数据中哪些值大于0,可以使用比较运算中的大于(>)来写一个条件表达式:data["cutdown_price"]>0与我们之前学的数学操作类似,这时候该列的数据会逐个和0进行比较操作,每一行都会返回一个对应的布尔值,从而得到一个布尔型Series:

True表示该行的"cutdown_price"大于0;

False表示该行的"cutdown_price"小于等于0。

上面的图可以看到,"cutdown_price"这一列里,85647对应的数据是1000,大于0,所以返回的布尔值是True。

  1. 使用比较运算中的大于(>)来写一个条件表达式,判断一下data变量里,"cutdown_price"这一列哪些值大于0

# 导入pandas模块,并以"pd"为该模块的简写

import pandas as pd

# 使用pd.read_csv()函数读取路径为 "/Users/yequ/电商数据清洗.csv" 的CSV文件,并将结果赋值给变量data

data = pd.read_csv("/Users/yequ/电商数据清洗.csv")

# 使用列索引筛选出"cutdown_price"这一列数据

# 同时使用比较运算判断这一列哪些值大于0

# 并使用print()将结果直接输出

print(data["cutdown_price"] > 0)

输出:

  

在得到了一个布尔型Series后,我们就可以把True对应位置的行保留下来,作为新的DataFrame返回。

接下来,我们来获取所有 "cutdown_price" 大于0的行数据。

要将所有返回为True的对应行数据保留下来,就需要用到布尔索引。将刚刚写的条件表达式传入DataFrame对象后的中括号里作为布尔索引即可。布尔索引会把判断结果为True的行数据直接返回,从而达到筛选数据的效果。

# 导入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的行

print(data[data["cutdown_price"]>0])

从输出的内容可以看到,返回的DataFrame就是data变量里,所有"cutdown_price"这一列值里大于0的行数据。
这时的行索引index就类似于一个书签,用于标记位置,不影响内容。
根据行索引index,就能很快地知道原数据data变量里的第10行、第27行、第28行、......的cutdown_price都大于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的行

print(data[data["cutdown_price"]>0])

代码具体解释:

要筛选的数据

data是需要进行筛选的DataFrame对象。

print(data[data["cutdown_price"]>0])

第一个中括号

第一个中括号,也就是最外面的中括号,表示对变量data进行索引。

print(data[data["cutdown_price"]>0])

条件表达式

中括号里的内容是通过一个条件表达式,来判断"cutdown_price"这一列值里是否大于0。

pandas通过这个条件表达式得到一个布尔型Series,再通过这个Series来索引数据。

访问列数据

data["columns"]的形式访问"cutdown_price"这一列数据。

比较运算

通过大于(>)来判断"cutdown_price"列的数据是否大于0。

比如,常见的比较运算有:==><>=<=!=(不等于),以及接下来会学的一些逻辑判断

相关文章:

  • SAP-ABAP: 采购申请创建(PR)BAPI_PR_CREATE 技术指南-详解
  • (2025|ICLR|华南理工,任务对齐,缓解灾难性遗忘,底层模型冻结和训练早停)语言模型持续学习中的虚假遗忘
  • Spring Boot 与 Couchbase 整合教程
  • 麒麟银河V10服务器RabbitMQ安装
  • linux内核数据结构分析之链表
  • 简单几步完成dify的本地搭建
  • Qt窗口坐标体系
  • 2025年,电脑还需要分区吗?
  • QEMU源码全解析 —— 块设备虚拟化(6)
  • ospf动态路由
  • 【Linux】:自定义协议(应用层)
  • 信息学奥赛一本通 1831:【03NOIP提高组】神经网络 | 洛谷 P1038 [NOIP 2003 提高组] 神经网络
  • 数据结构(C\C++)——顺序表
  • 【MySQL数据库】存储过程与自定义函数(含: SQL变量、分支语句、循环语句 和 游标、异常处理 等内容)
  • 前端iView面试题及参考答案
  • 【大模型基础_毛玉仁】3.3 思维链
  • `fetch` 和 `axios`的前端使用区别
  • 基于Spring Boot的流浪动物救助平台的设计与实现(LW+源码+讲解)
  • Jetson Nano 三个版本(B01 4GB、Orin 4GB、Orin 8GB)本地部署Deepseek等大模型的测评
  • 机器学习开发完整流程
  • 宁波银行一季度净利74.17亿元增5.76%,不良率持平
  • 马上评丨市长信箱“已读乱回”,群众在意的是什么
  • 人民日报头版:上海纵深推进浦东高水平改革开放
  • 中国航天员乘组完成在轨交接,神十九乘组将于29日返回地球
  • 5月动漫|“爱死机”即将回归,《明末》或是下一个大IP?
  • 释新闻|SEVIS是什么?在美留学生遭身份中止意味什么?