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

devtools/2025/3/21 11:00:57/

布尔索引

布尔索引:在实际应用中,只要是通过比较运算返回的判断结果(一个布尔型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。

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


http://www.ppmy.cn/devtools/168572.html

相关文章

代替Windows系统的最佳系统开发:开源、国产与跨平台的选择指南

近年来&#xff0c;随着技术自主化和隐私安全需求的提升&#xff0c;越来越多的用户开始寻求Windows系统的替代方案。本文结合国内外热门操作系统及开发工具&#xff0c;分析其核心优势与适用场景&#xff0c;助你找到最适合的开发与日常使用平台。 一、开源之王&#xff1a;Li…

C语言经典代码练习题

1.输入一个4位数&#xff1a;输出这个输的个位 十位 百位 千位 #include <stdio.h> int main(int argc, char const *argv[]) {int a;printf("输入一个&#xff14;位数&#xff1a;");scanf("%d",&a);printf("个位&#xff1a;%d\n"…

【华为OD题库-016】字符串摘要-Java

给定一个字符串的摘要算法&#xff0c;请输出给定字符串的摘要值 1、去除字符串中非字母的符号 2、如果出现连续字符(不区分大小写)&#xff0c;则输出:该字符(小)&#xff0b;连续出现的次数 3、如果是非连续的宁符(不区分大小写)&#xff0c;则输出:该字符(小写)该字母之后字…

如何解决Kafka Rebalance引起的重复消费

在Kafka中&#xff0c;Rebalance&#xff08;再平衡&#xff09;是消费者组&#xff08;Consumer Group&#xff09;动态调整分区分配的过程。当消费者组中的成员发生变化&#xff08;例如消费者加入或退出&#xff09;、订阅的Topic分区数量变化、或者消费者长时间未发送心跳时…

从头开始学C语言第二十八天——字符指针和字符串

C语言通过字符数组处理字符串。通常把char类型的指针变量称为字符指针&#xff0c;字符指针也被用来处理字符串。 初始化字符指针就是把字符串的首地址赋予指针&#xff0c;不是把字符串复制到字符指针。 char a[] "hello world"; char *pa a; *pa指向的不是字…

扩散模型算法实战——3D 形状生成

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​ ​​​​​​ ​ ​ 1. 引言 3D 形状生成是计算机视觉和计算机图形学领域中的一个重要研究方向&#xff0c;旨在通过算法自动生成高质…

继承的知识点及小细节

目录 1>概念及定义 a.概念 b.定义 c.继承类模板 2>基类和派生类间的转换 3>作用域 a.隐藏规则 b.经典选择题 4>派生类的默认成员函数 a.4个常见默认成员函数 b.实现一个不能被继承的类 5>继承与友元 6>继承与静态成员 7>多继承以及菱形继承…

mysql-查看binlog日志

mysql目前binlog_format默认是row格式&#xff0c; 找到binlog日志文件&#xff0c;通过命令查看 >mysqlbinlog binlog日志路径内容大致如下&#xff1a; /*!*/; # at 1163 #250317 14:13:43 server id 1 end_log_pos 1194 CRC32 0x09c8bcfd Xid 14 COMMIT/*!*…