一周学会Pandas2 Python数据处理与分析-Pandas2复杂数据查询操作

锋哥原创的Pandas2 Python数据处理与分析 视频教程:  

2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

前面我们学了.loc[]等几个简单的数据筛选操作,但实际业务需求往 往需要按照一定的条件甚至复杂的组合条件来查询数据。

逻辑运算操作

类似于Python的逻辑运算,我们以DataFrame其中一列进行逻辑计算,会产生一个对应的由布尔值组成的Series,真假值由此位上的数据是否满足逻辑表达式决定。

我们看一个最简单示例,查看语文是否及格:

df.set_index('姓名').语文分数 >= 60

同样支持多列判断,查看语文,数据,英语是否及格:

df.set_index('姓名').loc[:, ['语文分数', '数学分数', '英语分数']] >= 60

同时还支持组合条件的逻辑运算,我们来查下数学及格的男生。

~(df.数学分数 < 60) & (df['性别'] == '男')

逻辑筛选数据操作

前面我们逻辑运算返回的是布尔类型的Series结果集,我们现在可以通过切片[],.loc()方法来返回逻辑筛选结果。

我们看几个切片[]实例:

df[df['语文分数'] >= 60] # 查询语文及格的人
df[~(df['语文分数'] >= 60)] #查询语文不及格的人
df[df.语文分数 > df.数学分数] # 查询语文分数高于数学分数的人

我们在几个.loc[]实例:

df.loc[df['语文分数'] >= 60, '语文分数'] # 查询语文及格的人,只显示索引名称和语文分数列
df.loc[(df.语文分数 >= 60) & (df.数学分数 >= 60) & (df.英语分数 >= 60)] # 语数英都及格的人
df.loc[(df.语文分数 >= 90) | (df.数学分数 >= 90) | (df.英语分数 >= 90)] # 语数英至少有一个90分的人
df.loc[df.语文分数 == 100] # 语文满分的人

需要注意的是在进行或(|)、与(&)、非(~)运算时,各个独 立逻辑表达式需要用括号括起来。

pandas提供了一些比较函数来支持逻辑运算:

df.ne() # 不等于 !=
df.le() # 小于等于 <=
df.lt() # 小于 <
df.ge() # 大于等于 >=
df.gt() # 大于 >

参考示例:

df.loc[df.语文分数.eq(100)] # 语文满分的人
df.loc[(df.语文分数.ge(60)) & (df.数学分数.ge(60)) & (df.英语分数.ge(60))]  # 语数英都及格的人

查询函数query()操作

pandasquery() 方法是一种高效且简洁的 DataFrame 数据过滤工具,允许通过字符串表达式筛选满足条件的行。它的语法类似于 SQL 的 WHERE 子句,特别适合复杂查询和动态条件处理。

基本语法

DataFrame.query(expr, inplace=False, **kwargs)
  • expr:字符串形式的查询条件表达式(支持列名、运算符、逻辑条件等)。

  • inplace:是否直接修改原 DataFrame(默认为 False,返回新 DataFrame)。

  • **kwargs:其他参数(如 engine='python'parser='pandas')。


核心特性

  1. 简洁性:无需重复写 DataFrame 名称,直接使用列名操作。

  2. 动态表达式:支持字符串插值(如 @variable 引用外部变量)。

  3. 性能优化:底层依赖 numexpr 库,对大数据集查询效率更高。

  4. 复杂条件支持:灵活组合多条件(and/or/not)。

我们来看下示例:

df.query('数学分数>90') # 数学分数大于90的人
df.query('数学分数+语文分数+英语分数>250') # 总分大于250的人
df.query('(语文分数>90)&(性别=="男")') # 语文分数90分以上的男生
df.query('(语文分数>90)and(性别=="男")') # 语文分数90分以上的男生

还支持使用@符号引入变量,看下下面示例:

avg = df.语文分数.mean()  # 求平均分
df.query('语文分数>@avg')  # 语文分数超过平均分的人
df.query('语文分数>@avg+30')  # 语文分数超过平均分30分的人

筛选函数filter()操作

pandasfilter() 方法用于根据行或列的标签名称筛选数据,支持按列名或行名匹配规则快速过滤。它不依赖数据内容,而是基于标签的规则匹配,适合处理列名或索引有特定规律的场景。

基本语法

DataFrame.filter(items=None,         # 直接指定列名/行名列表like=None,          # 模糊匹配包含指定字符串的标签regex=None,         # 正则表达式匹配标签axis=None           # 筛选方向:0(行)或 1(列,默认)
)

核心参数详解:

  1. items:精确匹配列名或行名

  2. like:模糊匹配包含字符串的标签

  3. regex:正则表达式匹配标签

  4. axis:指定筛选方向

具体示例:

df.filter(items=['语文分数', '数学分数']) # 选择列
df.filter(like='分数')  # 列名包含分数的列
df.filter(regex='孙', axis=0)  # 所有孙姓数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/79430.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vue bug】:deep()失效

vue 组件中使用了 element-plus 组件 <template><el-dialog:model-value"visible":title"title":width"width px":before-close"onClose"><div class"container" :style"{height:height px}"&g…

Trae 安装第三方插件支持本地部署的大语言模型

Trae 安装第三方插件支持本地部署的大语言模型 0. 引言1. 安装插件 0. 引言 字节发布的 Trae IDE 一直不支持本地部署的的大语言模型。 Qwen3 刚刚发布&#xff0c;想在 Trae 中使用本地部署的 Qwen3&#xff0c;我们可以在 Trae 中安装其他插件。 1. 安装插件 我们可以安装…

JavaScript 中的 Proxy 与 Reflect 教程

目录 get 和 set 捕获器详解 为什么要用 Reflect? 使用语法间接调用内部方法 使用 Reflect 直接调用内部方法 对比总结: Reflect API 及其与 Proxy 的配合 Proxy 的典型应用场景 Proxy 是 ES6 引入的一种元编程特性。它允许创建一个代理对象来包装目标对象,并拦截对目标…

基于STM32的心电图监测系统设计

摘要 本论文旨在设计一种基于 STM32 微控制器的心电图监测系统&#xff0c;通过对人体心电信号的采集、处理和分析&#xff0c;实现对心电图的实时监测与显示。系统采用高精度的心电信号采集模块&#xff0c;结合 STM32 强大的数据处理能力&#xff0c;能够有效去除噪声干扰&a…

C语言----操作符详解(万字详解)

目录 1. 操作符的分类 2. 二进制和进制转换 3. 原码 反码 补码 4. 移位操作符 4.1 左移操作符 >> 4.2 右移操作符 >> 5. 位操作符 5.1 按位与 & 5.2 按位或 | 5.3 按位异或 ^ 5.4 按位取反 ~ 练习 整数存储在内存中二进制中1的个数 练习 二进制位…

【进阶】C# 委托(Delegate)知识点总结归纳

1. 委托的基本概念 定义&#xff1a;委托是一种类型安全的函数指针&#xff0c;用于封装方法&#xff08;静态方法或实例方法&#xff09;。 核心作用&#xff1a;允许将方法作为参数传递&#xff0c;实现回调机制和事件处理。 类型安全&#xff1a;委托在编译时会检查方法签…

WebRTC 服务器之Janus视频会议插件信令交互

1.基础知识回顾 WebRTC 服务器之Janus概述和环境搭建-CSDN博客 WebRTC 服务器之Janus架构分析-CSDN博客 2.插件使用流程 我们要使⽤janus的功能时&#xff0c;通常要执⾏以下操作&#xff1a; 1. 在你的⽹⻚引入 Janus.js 库&#xff0c;即是包含janus.js&#xff1b; <…

Go语言中的无锁数据结构与并发效率优化

1. 引言 在高并发系统开发中&#xff0c;性能瓶颈往往出现在并发控制上。作为一个有着10年Go开发经验的后端工程师&#xff0c;我见证了无数因锁竞争导致的性能问题&#xff0c;也亲历了无锁编程为系统带来的巨大提升。 传统的锁机制就像是十字路口的红绿灯——虽然能确保安全…

STM32部分:2、环境搭建

飞书文档https://x509p6c8to.feishu.cn/wiki/DQsBw76bCiWaO4kS8TXcWDs0nAh Keil MDK用于编写代码&#xff0c;编译代码芯片支持包&#xff0c;用于支持某类芯片编程支持STM32CubeMX用于自动生成工程&#xff0c;减少手动重复工作 STM32F1系列芯片支持包 软件下载 直接下载&am…

U3D工程师简历模板

模板信息 简历范文名称&#xff1a;U3D工程师简历模板&#xff0c;所属行业&#xff1a;其他 | 职位&#xff0c;模板编号&#xff1a;B29EPQ 专业的个人简历模板&#xff0c;逻辑清晰&#xff0c;排版简洁美观&#xff0c;让你的个人简历显得更专业&#xff0c;找到好工作。…

Java设计模式: 实战案例解析

Java设计模式: 实战案例解析 在软件开发中&#xff0c;设计模式是一种用来解决特定问题的可复用解决方案。它们是经过实践验证的最佳实践&#xff0c;能够帮助开发人员设计出高质量、易于维护的代码。本文将介绍一些常见的Java设计模式&#xff0c;并通过实战案例解析它们在实际…

Vue3源码学习5-不使用 `const enum` 的原因

文章目录 前言✅ 什么是 const enum❌ 为什么 Vue 3 不使用 const enum1. &#x1f4e6; **影响构建工具兼容性**2. &#x1f501; **难以做模块间 tree-shaking**3. &#x1f9ea; **调试困难**4. &#x1f4e6; **Vue 是库&#xff0c;不掌控用户配置** ✅ 官方推荐做法&…

C++学习:六个月从基础到就业——C++11/14:lambda表达式

C学习&#xff1a;六个月从基础到就业——C11/14&#xff1a;lambda表达式 本文是我C学习之旅系列的第四十篇技术文章&#xff0c;也是第三阶段"现代C特性"的第二篇&#xff0c;主要介绍C11/14中引入的lambda表达式。查看完整系列目录了解更多内容。 引言 Lambda表达…

AIDC智算中心建设:计算力核心技术解析

目录 一、智算中心发展概览 二、计算力核心技术解析 一、智算中心发展概览 智算中心是人工智能发展的关键基础设施&#xff0c;基于人工智能计算架构&#xff0c;提供人工智能应用所需算力服务、数据服务和算法服务的算力基础设施&#xff0c;融合高性能计算设备、高速网络以…

IoTDB时序数据库V2.0.2大版本更新的一些梳理

一些小知识&#xff1a; 关于事务&#xff1a;时序数据库是没有事务的&#xff0c;它和关系数据库的应用场景不同&#xff0c;通常情况下不需要多点同时操作同一条数据&#xff0c;而且要保证极高的吐出量&#xff0c;事务太消耗资源&#xff0c;并且时序数据库提供了覆写的功能…

CSS定位详解

在前端开发中&#xff0c;CSS 定位&#xff08;positioning&#xff09;是一个核心概念&#xff0c;它决定了元素在页面上的位置和布局方式。无论是构建复杂的交互界面&#xff0c;还是实现简单的页面排版&#xff0c;CSS 定位都是不可或缺的工具。本文将全面介绍 CSS 中的五种…

React 语法扩展

useReducer钩子函数 不同action类型返回不同处理行为 useState()函数返回解构为两个值 state当前状态 dispatch修改状态函数 dispatch()函数参数为一个actuon对象 如 &#xff1a; 样例&#xff1a; import { useReducer } from react; import ./App.css;// 定义一个Reduce…

MCP协议与Dify集成教程

一、MCP协议概述 MCP&#xff08;Model Control Protocol&#xff09;是一种新兴的开放协议&#xff0c;为大型语言模型&#xff08;LLM&#xff09;与外部应用之间构建了双向通信通道。它就像是AI的"USB-C"接口&#xff0c;帮助模型发现、理解并安全调用各种外部工…

学习springboot-条件化配置@Conditional(条件注解)

前言 在Spring Boot中&#xff0c;Conditional 注解及其相关注解是用于条件化配置的重要工具。它们允许开发者根据特定条件决定是否加载某个Bean或配置类。 注意&#xff1a;Conditional 相关注解&#xff0c;通常和Bean搭配使用 学习springboot-Bean管理&#xff08;Bean 注…

2025年- H18-Lc126-54.螺旋矩阵(矩阵)---java版

1.题目描述 2.思路* 思路1&#xff1a; 补充2&#xff1a; directions[1][0] // 表示“下”这个方向的行增量&#xff08;1&#xff09; directions[1][1] // 表示“下”这个方向的列增量&#xff08;0&#xff09; int[][] directions {{0, 1}, {1, 0}, {0, -1}, {-…