【Python】进阶学习:pandas--如何根据指定条件筛选数据

【Python】进阶学习:pandas–如何根据指定条件筛选数据
在这里插入图片描述

🌈 个人主页:高斯小哥
🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您的订阅和支持~
💡 创作高质量博文(平均质量分92+),分享更多关于深度学习、PyTorch、Python领域的优质内容!(希望得到您的关注~)


🌵文章目录🌵

  • 📚 一、pandas库简介
  • 🔍 二、条件筛选基础
    • 📋 示例1:筛选DataFrame中的特定行
    • 📋 示例2:组合多个条件
  • 🎯 三、高级筛选技巧
    • 📋 示例3:使用`query()`方法筛选数据
    • 📋 示例4:使用`isin()`方法筛选数据
  • 📘 四、条件筛选与函数应用
    • 📋 示例5:使用`apply()`和条件函数筛选数据
  • 🌈 五、条件筛选的最佳实践
    • 📋 示例6:保持代码清晰
    • 📋 示例7:利用向量化操作
  • 🎉六、 总结
  • 🤝七、期待与你共同进步

📚 一、pandas库简介

  pandas是Python中一个非常流行的数据处理库,它提供了大量的数据结构(如Series和DataFrame)以及数据分析工具,让数据处理变得既简单又高效。在数据分析的过程中,我们经常需要根据某些条件筛选数据,这时pandas提供了非常灵活和方便的筛选功能。

🔍 二、条件筛选基础

  在pandas中,我们通常使用布尔索引(Boolean Indexing)来进行条件筛选。布尔索引是指根据条件表达式的结果(True或False)来选择数据。

📋 示例1:筛选DataFrame中的特定行


假设我们有一个DataFrame df,其中包含学生的信息:

import pandas as pd# 创建一个示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 筛选年龄大于23的学生
older_students = df[df['Age'] > 23]
print(older_students)

输出:

      Name  Age Grade
0    Alice   25     A
2  Charlie   28     A

📋 示例2:组合多个条件


我们也可以使用&(和)和|(或)来组合多个条件:

import pandas as pd# 创建一个示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 筛选年龄大于23且成绩为A的学生
specific_students = df[(df['Age'] > 23) & (df['Grade'] == 'A')]
print(specific_students)

输出:

      Name  Age Grade
0    Alice   25     A
2  Charlie   28     A

🎯 三、高级筛选技巧

  除了基本的布尔索引,pandas还提供了很多高级筛选技巧,如query()方法、isin()方法等。

📋 示例3:使用query()方法筛选数据

  query()方法允许我们使用字符串表达式来筛选数据,非常适合处理复杂的筛选条件。

import pandas as pd# 创建一个示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 筛选年龄大于23或成绩为A的学生
complex_filter = df.query('Age > 23 or Grade == "A"')
print(complex_filter)

输出:

      Name  Age Grade
0    Alice   25     A
2  Charlie   28     A

📋 示例4:使用isin()方法筛选数据

  isin()方法允许我们根据一个值列表来筛选数据。

import pandas as pd# 创建一个示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 筛选名字是Alice或Eve的学生
name_filter = df[df['Name'].isin(['Alice', 'Eve'])]
print(name_filter)

输出:

    Name  Age Grade
0  Alice   25     A
4    Eve   23     B

📘 四、条件筛选与函数应用

  除了直接使用条件表达式,我们还可以结合pandas提供的函数来进行更复杂的筛选操作。

📋 示例5:使用apply()和条件函数筛选数据

import pandas as pd# 创建一个示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 定义一个条件函数
def is_elderly(age):return age >= 21# 使用apply()方法应用条件函数
elderly_students = df[df['Age'].apply(is_elderly)]
print(elderly_students)

输出:

      Name  Age Grade
0    Alice   25     A
1      Bob   22     B
2  Charlie   28     A
4      Eve   23     B

  在这个例子中,我们定义了一个is_elderly函数来判断年龄是否大于等于21,然后使用apply()方法将这个函数应用到Age列上,得到一个布尔序列,最后用这个布尔序列来筛选数据。

🌈 五、条件筛选的最佳实践

  在实际应用中,遵循一些最佳实践可以让我们的代码更加清晰、高效。

📋 示例6:保持代码清晰

  尽量使用具有描述性的列名和条件表达式,这样其他人在阅读你的代码时可以更容易理解你的意图。

# 使用描述性的列名和条件表达式
high_scoring_students = df[(df['Grade'] == 'A') | (df['Grade'] == 'B')]
print(high_scoring_students)

📋 示例7:利用向量化操作

  pandas的许多函数都是向量化(vectorized)的,这意味着它们在整个数组上操作而不是在单个元素上循环。利用这些向量化操作可以提高代码的效率。

# 利用向量化操作筛选数据
high_grades = df['Grade'].isin(['A', 'B'])
high_scoring_students = df[high_grades]
print(high_scoring_students)

输出:

      Name  Age Grade
0    Alice   25     A
1      Bob   22     B
2  Charlie   28     A
4      Eve   23     B

在这个例子中,我们使用了isin()这个向量化函数来创建一个布尔数组,然后用这个数组来筛选数据。

🎉六、 总结

  条件筛选是pandas中非常重要的一个功能,它允许我们根据特定条件来快速、高效地筛选数据。通过学习和实践这些条件筛选的技巧和最佳实践,我们可以更好地利用pandas来处理和分析数据。希望这篇文章能够帮助你更深入地理解和应用pandas的条件筛选功能!

🤝七、期待与你共同进步

  🌱 亲爱的读者,非常感谢你每一次的停留和阅读!你的支持是我们前行的最大动力!🙏

  🌐 在这茫茫网海中,有你的关注,我们深感荣幸。你的每一次点赞👍、收藏🌟、评论💬和关注💖,都像是明灯一样照亮我们前行的道路,给予我们无比的鼓舞和力量。🌟

  📚 我们会继续努力,为你呈现更多精彩和有深度的内容。同时,我们非常欢迎你在评论区留下你的宝贵意见和建议,让我们共同进步,共同成长!💬

  💪 无论你在编程的道路上遇到什么困难,都希望你能坚持下去,因为每一次的挫折都是通往成功的必经之路。我们期待与你一起书写编程的精彩篇章! 🎉

  🌈 最后,再次感谢你的厚爱与支持!愿你在编程的道路上越走越远,收获满满的成就和喜悦!祝你编程愉快!🎉

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

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

相关文章

2024第二次培训:win11系统下使用nginx、JDK、mysql搭建基于vue2、java前后端分离的web应用运行环境

一.背景 公司安排了带徒弟的任务,给培训写点材料。前面分开介绍了mysql、jdk、nginx的安装,都只是零星的介绍,只能算零散的学习。学习了有什么用呢?能解决什么问题?能完成什么工作? 今天我们要用之前的几篇…

为什么要在业务系统中引入大宽表?

在高度系统化驱动的业务中,查看业务报表已经是一个很常见的需求了。在分工非常明确的大型企业里,往往有专门的数据分析团队 BI 或者数据开发团队,他们能够胜任此类需求(但也未必是轻松的,或者说高效的)。 …

Stable Diffusion 模型分享:AAM XL (Anime Mix)(动漫截屏风格 XL)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 AAM XL (Anime Mix) 是一个动漫截屏风格的模型,是 AAM - AnyLoRA Anime Mix 模…

【yolov8部署实战】VS2019环境下使用C++和OpenCV环境部署yolo项目|含详细注释源码

一、前言 之前一阵子一直在做的就是怎么把yolo项目部署成c项目,因为项目需要嵌套进yolo模型跑算法。因为自己也是本科生小白一枚,基本上对这方面没有涉猎过,自己一个人从网上到处搜寻资料,写代码,调试,期间…

黑马JavaWeb开发跟学(三)Web前端开发Vue-Element

黑马JavaWeb开发跟学三.Web前端开发Vue-Element 1 Ajax1.1 Ajax介绍1.1.1 Ajax概述1.1.2 Ajax作用1.1.3 同步异步 1.2 原生Ajax1.3 Axios1.3.1 Axios的基本使用1.3.2 Axios快速入门1.3.3 请求方法的别名1.3.4 案例 2 前后台分离开发2.1 前后台分离开发介绍2.2 YAPI2.2.1 YAPI介…

【GPU驱动开发】-mesa简介

前言 不必害怕未知,无需恐惧犯错,做一个Creator! 一、mesa介绍 Mesa 是一个开源的3D图形库,它实现了多种图形API,包括 OpenGL、Vulkan 和 OpenCL。Mesa 的目标是提供一个开源、跨平台的图形库,使得开发者…

ABAP - SALV教程08 列设置热点及绑定点击事件

实现思路:将列设置成热点,热点列是可点击的,再给SALV实例对象注册点击事件即可,一般作用于点击单号跳转到前台等功能 "设置热点方法METHODS:set_hotspot CHANGING co_alv TYPE REF TO cl_salv_table...."事件处理方法M…

合宙esp32-c3 进入深度睡眠无法唤醒解决一例

手贱,昨天收到了嘉立创最新的esp32 s3,想测试一下电流功耗,于是顺便测试了一下以前的合宙esp32 c3 无串口芯片的版本 打算对比一下c3和s3的功耗相差多少,结果把自己玩死了: void setup() {esp_deep_sleep_start();// esp_light_s…

oppo手机备忘录记录怎么转移到华为手机?

oppo手机备忘录记录怎么转移到华为手机?使用oppo手机已经有三四年了,因为平时习惯,在手机系统的备忘录中记录了很多重要的笔记,比如工作会议的要点、读书笔记、购物清单、朋友的生日提醒等。这些记录对我来说非常重要,我可以通过…

2000-2021年300+地级市进出口总额数据

2000-2021年300地级市进出口总额数据 1、时间:2000-2021年 2、指标:进出口总额 3、单位:万美元 4、来源:城市年鉴、各省年鉴、城市公报、2021年为城市统计年鉴中进口额出口额加总之后换算成万美元,已尽最大可能进行…

1.亿级积分数据分库分表:总体方案设计

项目背景 以一个积分系统为例,积分系统最核心的有积分账户表和积分明细表: 积分账户表:每个用户在一个品牌下有一个积分账户记录,记录了用户的积分余额,数据量在千万级积分明细表:用户每次积分发放、积分扣…

数据结构——Top-k问题

Top-k问题 方法一:堆排序(升序)(时间复杂度O(N*logN))向上调整建堆(时间复杂度:O(N * logN) )向下调整建堆(时间复杂度:O(N) )堆排序代码 方法二&…

LeetCode---386周赛

题目列表 3046. 分割数组 3047. 求交集区域内的最大正方形面积 3048. 标记所有下标的最早秒数 I 3049. 标记所有下标的最早秒数 II 一、分割数组 这题简单的思维题,要想将数组分为两个数组,且分出的两个数组中数字不会重复,很显然一个数…

人工智能指数报告2023

人工智能指数报告2023 主要要点第 1 章 研究与开发第 2 章 技术性能第 3 章 人工智能技术伦理第 4 章 经济第 5 章 教育第 6 章 政策与治理第 7 章 多样性第 8 章 舆论 人工智能指数是斯坦福大学以人为本的人工智能研究所(HAI)的一项独立倡议&#xff0c…

Java 石头剪刀布小游戏

一、任务 编写一个剪刀石头布游戏的程序。程序启动后会随机生成1~3的随机数,分别代表剪刀、石头和布,玩家通过键盘输入剪刀、石头和布与电脑进行5轮的游戏,赢的次数多的一方为赢家。若五局皆为平局,则最终结果判为平局。 二、实…

KubeSphere平台安装系列之三【Linux多节点部署KubeSphere】(3/3)

**《KubeSphere平台安装系列》** 【Kubernetes上安装KubeSphere(亲测–实操完整版)】(1/3) 【Linux单节点部署KubeSphere】(2/3) 【Linux多节点部署KubeSphere】(3/3) **《KubeS…

新一代电话机器人开源PHP源代码

使用easyswoole 框架开发的 新一代电话机器人开源PHP源码 项目地址:https://gitee.com/ddrjcode/robotphp 代理商页面演示地址 http://119.23.229.15:8080 用户名:c0508 密码:123456 包含 AI外呼管理,话术管理,CR…

每日一题 — 复写零

1089. 复写零 - 力扣(LeetCode) 思路: 首先找到最后一个复写的数: 双指针算法: 1、先判断 cur 位置上的值 2、然后决定 dest 移动一步还是两步 3、然后判断 dest 是否到终点了 4、最后 cur 处理越界的情况 arr[n-1] …

思维题(蓝桥杯 填空题 C++)

目录 题目一: ​编辑 代码: 题目二: 代码: 题目三: 代码: 题目四: 代码: 题目五: 代码: 题目六: 代码七: 题目八&#x…

用python和pygame库实现刮刮乐游戏

用python和pygame库实现刮刮乐游戏 首先,确保你已经安装了pygame库。如果没有安装,可以通过以下命令安装: pip install pygame 示例有两个。 一、简单刮刮乐游戏 准备两张图片,一张作为背景bottom_image.png,一张作…