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

news2024/11/14 18:47:16

【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.coloradmin.cn/o/1484134.html

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

相关文章

什么是片内片间均匀性?

均匀性在芯片制程的每一个工序中都需要考虑到,包括薄膜沉积,刻蚀,光刻,cmp,离子注入等。较高的均匀性才能保证芯片的产品与性能。那么片内和片间非均匀性是什么?如何计算?有什么作用呢&#xff…

热点一线总有神秘小盒现身,到底有什么神秘之处?高人气随身WiFi第一名,2024最值得购买的随身WiFi

近日,一位好事儿的网友突然将多个新闻热点的截图发在了自己的社交平台上,引起了大家的广泛关注。原来在这些记者报道一线新闻的时候,总有一个神秘小盒子在若隐若现。后经网友深扒得知这是格行品牌旗下的大热产品——格行随身WiFi。为什么格行…

【C++ AVL树】

文章目录 AVL树AVL树的概念AVL树节点的定义AVL树的插入AVL树的旋转右单旋左单旋左右双旋右左双旋 代码实现 总结 AVL树 AVL树的概念 二叉搜索树在顺序有序或接近有序的情况下,而插入搜索树将退化为单叉树,此时查找的时间复杂度为O(n),效率低…

Unity游戏输入系统(新版+旧版)

使用新版还是旧版 旧版 using System.Collections; using System.Collections.Generic; using UnityEngine;public class c5 : MonoBehaviour {void Start(){}void Update(){// 注意要在游戏中 点鼠标键盘进行测试// 鼠标// 0左键 1右键 2滚轮if (Input.GetMouseButtonDown(0)…

python爬虫之selenium知识点记录

selenium 一、前期准备 1、概述 selenium本身是一个自动化测试工具。它可以让python代码调用浏览器。并获取到浏览器中加载的各种资源。 我们可以利用selenium提供的各项功能。 帮助我们完成数据的抓取。 2、学习目标 掌握 selenium发送请求,加载网页的方法 掌…

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

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

简易内存池2 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C 题目描述 请实现一个简易内存池,根据请求命令完成内存分配和释放。 内存池支持两种操作命令,REQUEST和RELEASE,其格式为: REQUEST请求的内存大小 …

golang学习5,glang的web的restful接口

1. //返回json r.GET("/getJson", controller.GetUserInfo) package mainimport (/*"net/http"*/"gin/src/main/controller""github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/get", func(ctx *…

【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug

文章目录 前言 State断点 Transition断点 条件断点 按State步进 Watch Data Value Sequence Viewer 分析和应用 总结 前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(二)——在Function编辑…

数据结构开篇

目录 一. 如何学好数据结构二. 基本概念和术语2.1 区分数据、数据元素、数据项、数据对象2.2 数据结构2.2.1 逻辑结构2.2.2 存储结构 2.3 数据类型和抽象数据类型2.4 抽象数据类型的实现 \quad 一. 如何学好数据结构 勤于思考;多做练习;多上机;善于寻求帮助;不怕困难&#xff…

NLP算法实战项目:使用 BERT 进行文本多分类

大多数研究人员将他们的研究论文提交给学术会议,因为这是更快地使研究结果可用的途径。寻找和选择合适的会议一直是一项具有挑战性的任务,特别是对于年轻的研究人员来说。基于先前会议论文集的数据,研究人员可以增加其论文被接受和发表的机会…

基于协同过滤算法的图书推荐系统

目录 一、功能介绍 二、开发环境 三、安装部署说明 一、功能介绍 本系统是一个采用协同过滤算法的图书推荐系统。 数据集:数据集来自亚马逊开源的Book-Crossings数据集。Book-Crossings数据集包含 278,858 个用户的 271,379 本书的 1,149,780 个评分。评分范围从1…

FL Studio选购指南:新手小白应该选择哪个版本FL Studio?

很多打算入手正版FL Studio的新手朋友都会纠结一个问题:哪个版本的FL Studio更适合我,到底应该入手哪一款FL Studio?本文会介绍每个版本之间的差异点,并带大家选择适合自己的FL Sudio版本。 FL Studio全版本 在选购前有一些小知识…

25高数考研张宇 -- 公式总结(更新中)

1. 两个重要极限 (1) lim ⁡ x → 0 sin ⁡ x x 1 \lim _{x \rightarrow 0} \frac{\sin x}{x}1 limx→0​xsinx​1, 推广形式 lim ⁡ f ( x ) → 0 sin ⁡ f ( x ) f ( x ) 1 \lim _{f(x) \rightarrow 0} \frac{\sin f(x)}{f(x)}1 limf(x)→0​f(x)sinf(x)​1. (2) lim ⁡…

小项目:2024/3/2

一、TCP机械臂测试 代码&#xff1a; #include <myhead.h> #define SER_IP "192.168.125.254" //服务器端IP #define SER_PORT 8888 //服务器端端口号#define CLI_IP "192.168.199.131" //客户端IP #define CLI_P…

Linux线程【互斥与同步】

目录 1.资源共享问题 1.1多线程并发访问 1.2临界区和临界资源 1.3互斥锁 2.多线程抢票 2.1并发抢票 2.2 引发问题 3.线程互斥 3.1互斥锁相关操作 3.1.1互斥锁创建与销毁 3.1.2、加锁操作 3.1.3 解锁操作 3.2.解决抢票问题 3.2.1互斥锁细节 3.3互斥…

[NSSCTF 2nd] web复现

1.php签到 <?phpfunction waf($filename){$black_list array("ph", "htaccess", "ini");$ext pathinfo($filename, PATHINFO_EXTENSION);foreach ($black_list as $value) {if (stristr($ext, $value)){return false;}}return true; }if(i…

【Spring IoC】实验四:特殊值处理

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

【NDK系列】Android tombstone文件分析

文件位置 data/tombstone/tombstone_xx.txt 获取tombstone文件命令&#xff1a; adb shell cp /data/tombstones ./tombstones 触发时机 NDK程序在发生崩溃时&#xff0c;它会在路径/data/tombstones/下产生导致程序crash的文件tombstone_xx&#xff0c;记录了死亡了进程的…

electron nsis 安装包 window下任务栏无法正常固定与取消固定 Pin to taskbar

问题 win10系统下&#xff0c;程序任务栏在固定后取消固定&#xff0c;展示的程序内容异常。 排查 1.通过论坛查询&#xff0c;应该是与app的api setAppUserModelId 相关 https://github.com/electron/electron/issues/3303 2.electron-builder脚本 electron-builder…