掌握Pandas数据筛选方法与高级应用全解析【第70篇—python:数据筛选】

news2024/11/17 22:29:44

文章目录

  • 掌握Pandas:数据筛选方法与高级应用全解析
    • 1. between方法
    • 2. isin方法
    • 3. loc方法
    • 4. iloc方法
    • 5. 查询复杂条件的结合应用
    • 6. 避免inplace参数
    • 7. 利用Lambda函数进行自定义筛选
    • 8. 处理缺失值
    • 9. 多条件排序
    • 10. 数据统计与分组
  • 总结:

掌握Pandas:数据筛选方法与高级应用全解析

在数据分析和处理中,Pandas是一款强大的Python库,提供了丰富的功能来操作和处理数据。本文将深入介绍Pandas中几种常用的数据筛选方法:betweenisinlociloc,并通过代码实例和解析展示它们的用法和优势。

image-20240210173650099

1. between方法

between方法用于筛选数据框中某列的数值在指定范围内的行。下面是一个简单的例子:

import pandas as pd

# 创建示例数据框
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 22, 35],
        'Salary': [50000, 60000, 45000, 70000]}

df = pd.DataFrame(data)

# 使用between筛选年龄在25到30之间的行
filtered_df = df[df['Age'].between(25, 30)]

print(filtered_df)

这段代码将输出包含年龄在25到30之间的行的数据框。

image-20240210173404458

2. isin方法

isin方法用于筛选数据框中某列的数值是否在给定的列表中。以下是一个例子:

# 创建示例数据框
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Department': ['HR', 'IT', 'Finance', 'Marketing']}

df = pd.DataFrame(data)

# 使用isin筛选属于IT或Marketing部门的行
filtered_df = df[df['Department'].isin(['IT', 'Marketing'])]

print(filtered_df)

这段代码将输出包含属于IT或Marketing部门的行的数据框。

image-20240210173436158

3. loc方法

loc方法基于标签来进行行列选择。以下是一个示例:

# 使用loc筛选年龄在25到30之间的行,并选择Name列和Age列
filtered_df = df.loc[df['Age'].between(25, 30), ['Name', 'Age']]

print(filtered_df)

这段代码将输出包含年龄在25到30之间的行,并选择Name列和Age列的数据框。

4. iloc方法

iloc方法基于整数位置来进行行列选择。以下是一个示例:

# 使用iloc筛选第2到第3行,并选择第1到第2列
filtered_df = df.iloc[1:3, 0:2]

print(filtered_df)

这段代码将输出包含第2到第3行,第1到第2列的数据框。

通过学习这些Pandas常用的数据筛选方法,你将能更灵活地处理和分析数据,提高数据处理的效率。希望这篇文章能够帮助你更好地利用Pandas进行数据分析工作。

image-20240210173456443

5. 查询复杂条件的结合应用

除了单独使用这些方法外,我们还可以将它们组合起来,以满足更复杂的条件筛选需求。以下是一个综合运用的例子:

# 创建示例数据框
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 22, 35],
        'Salary': [50000, 60000, 45000, 70000],
        'Department': ['HR', 'IT', 'Finance', 'Marketing']}

df = pd.DataFrame(data)

# 使用复杂条件筛选:年龄在25到30之间且属于IT或Marketing部门的行,并选择Name和Salary列
filtered_df = df.loc[(df['Age'].between(25, 30)) & (df['Department'].isin(['IT', 'Marketing'])), ['Name', 'Salary']]

print(filtered_df)

这段代码将输出包含年龄在25到30之间且属于IT或Marketing部门的行,并选择Name和Salary列的数据框。

6. 避免inplace参数

在Pandas中,这些方法通常返回新的数据框,而不是修改原始数据框。因此,我们应该避免使用inplace参数,而是将结果赋值给新的变量。这样可以更好地维护数据的可追溯性。

# 不推荐使用inplace参数
df.drop('Department', axis=1, inplace=True)

# 推荐的方式:将结果赋值给新的变量
new_df = df.drop('Department', axis=1)

通过遵循这个规则,我们能够更好地追踪数据处理的步骤,减少潜在的错误。

7. 利用Lambda函数进行自定义筛选

除了上述方法外,还可以使用apply方法结合Lambda函数进行自定义筛选。这种方法在处理需要根据列的某些特定条件进行筛选的情况下非常有用。

# 创建示例数据框
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 22, 35],
        'Salary': [50000, 60000, 45000, 70000],
        'Department': ['HR', 'IT', 'Finance', 'Marketing']}

df = pd.DataFrame(data)

# 使用Lambda函数筛选年龄大于30的行,并选择Name和Department列
filtered_df = df[df.apply(lambda row: row['Age'] > 30, axis=1)][['Name', 'Department']]

print(filtered_df)

这段代码将输出包含年龄大于30的行,并选择Name和Department列的数据框。

image-20240210173517728

8. 处理缺失值

在数据处理中,处理缺失值也是一个常见的任务。使用dropna方法可以轻松删除包含缺失值的行或列。

# 创建含有缺失值的示例数据框
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, None, 22, 35],
        'Salary': [50000, 60000, 45000, None],
        'Department': ['HR', 'IT', 'Finance', 'Marketing']}

df = pd.DataFrame(data)

# 删除包含缺失值的行
cleaned_df = df.dropna()

print(cleaned_df)

上述代码将删除包含缺失值的行,得到一个不含缺失值的新数据框。

9. 多条件排序

Pandas提供了sort_values方法,可以根据一列或多列的值进行排序。这在数据分析中常常用于观察数据的趋势或找出关键信息。

# 创建示例数据框
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 22, 35],
        'Salary': [50000, 60000, 45000, 70000],
        'Department': ['HR', 'IT', 'Finance', 'Marketing']}

df = pd.DataFrame(data)

# 按照年龄升序、工资降序的顺序进行排序
sorted_df = df.sort_values(by=['Age', 'Salary'], ascending=[True, False])

print(sorted_df)

这段代码将输出一个根据年龄升序、工资降序排序的数据框。

10. 数据统计与分组

Pandas中的groupby方法允许我们根据某一列的值将数据框分组,然后对每个组进行统计或其他操作。

# 创建示例数据框
data = {'Department': ['HR', 'IT', 'Finance', 'Marketing', 'HR', 'IT', 'Marketing'],
        'Salary': [50000, 60000, 45000, 70000, 55000, 65000, 72000]}

df = pd.DataFrame(data)

# 按照部门分组,并计算每个部门的平均工资
grouped_df = df.groupby('Department')['Salary'].mean()

print(grouped_df)

这段代码将输出每个部门的平均工资。

通过这些高级的Pandas操作,我们能够更加深入地挖掘数据的信息,进行更复杂的分析和处理。这些技巧对于数据科学家和分析师来说都是非常有用的工具。

image-20240210173544838

总结:

本文深入介绍了Pandas中几种常用的数据筛选和处理方法,包括betweenisinlociloc、Lambda函数、多条件排序、数据统计与分组等。通过代码实例和解析,读者能够更全面地了解这些方法的用法和优势。

首先,我们学习了between方法,用于筛选指定范围内的数据。然后,介绍了isin方法,可以根据给定的列表筛选数据。接着,深入讲解了lociloc方法,分别基于标签和整数位置进行行列选择。通过这些方法,我们可以在数据框中轻松定位和提取感兴趣的数据。

进一步,我们了解了如何结合Lambda函数进行自定义筛选,处理复杂的条件需求。同时,强调了避免使用inplace参数的最佳实践,以维护数据处理的可追溯性。

在处理缺失值方面,我们使用dropna方法清理数据,确保得到不含缺失值的数据框。此外,学习了多条件排序和数据统计与分组的高级应用,使数据分析更加灵活和有深度。

通过这篇文章,读者将掌握使用Pandas进行数据处理和分析的关键技巧,能够更有效地应对各种数据处理任务,提高工作效率。希望这些知识能够帮助读者更自信地探索和分析数据,为数据科学和分析领域的工作提供实用的工具和方法。

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

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

相关文章

NLP_引入注意力机制

文章目录 点积注意力创建两个张量x1和x2计算张量点积, 得到原始权重对原始权重进行归一化求出注意力分布的加权和 缩放点积注意力编码器-解码器注意力定义Attention类重构Decoder类重构Seq2Seq类可视化注意力权重 注意力机制中的 Q、K、V自注意力多头自注意力注意力…

Excel——重复项处理

一、高亮重复项 选择需要高亮重复项的列/单元格 选择【数据】——【重复项】—— 【高亮重复项】 如果高亮重复项的数据较长,例如:身份证号、银行卡,可以勾选下列选项,能够精准检查重复项。 结果如下所示 如果想要清除高亮的重复…

Java并发基础:ArrayBlockingQueue全面解析!

内容摘要 ArrayBlockingQueue类是一个高效、线程安全的队列实现,它基于数组,提供了快速的元素访问,并支持多线程间的同步操作,作为有界队列,它能有效防止内存溢出,并通过阻塞机制平衡生产者和消费者的速度…

【Qt 学习之路】在 Qt 使用 ZeroMQ

文章目录 1、概述2、ZeroMQ介绍2.1、ZeroMQ 是什么2.2、ZeroMQ 主线程与I/O线程2.3、ZeroMQ 4种模型2.4、ZeroMQ 相关地址 3、Qt 使用 ZeroMQ3.1、下载 ZeroMQ3.2、添加 ZeroMQ 库3.3、使用 ZeroMQ3.4、相关 ZeroMQ 案例 1、概述 今天是大年初一,先给大家拜个年&am…

c++2024寒假J312实战班2.4

长话短说,简明扼要一直是我的行事风格,如有不精准的地方,就到网上去搜,好吧。 今天分享我们做的四道题,都挺简单的,就是难思考。 题目列表: 1.Maximum Subarray Sum 2.分解因数 3.公交换乘 4.…

05-Java原型模式 ( Prototype Pattern )

原型模式 摘要实现范例 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能原型模式实现了一个原型接口,该接口用于创建当前对象的克隆当直接创建对象的代价比较大时,则采用这种模式 例如&#xff0c…

用bootstrap结合jQuery实现简单的模态对话框

嗨害嗨,我又来了奥。今天呢,给大家分享一个工作中常用到的插件——模态对话框的用法。想必大家在工作中也遇到很多页面,需要用模态对话框进行交互的吧,现在呢,就让我们一起来了解一下它的使用吧。 首先,我…

《动手学深度学习(PyTorch版)》笔记8.3

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…

【RabbitMQ(二)】:Exchange 详解 | Message Convert 消息转换器

文章目录 03. 使用 Java 代码去操控 RabbitMQ3.1 快速入门3.1.1 创建父子项目3.1.2 编写代码 3.2 Work 模型3.3 RabbitMQ 中的三类交换机3.3.1 Fanout 扇出交换机3.3.2 Direct 交换机3.3.3 Topic 交换机 3.4 声明队列交换机3.4.1 方式一:书写 Config 类3.4.2 方式二…

MySQL篇之回表查询

一、聚集索引 将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据。特点:必须有,而且只有一个。 聚集索引选取规则: 1. 如果存在主键,主键索引就是聚集索引。 2. 如果不存在主键,将使用第一个唯一(UNIQUE&am…

算法学习——LeetCode力扣栈与队列篇2

算法学习——LeetCode力扣栈与队列篇2 150. 逆波兰表达式求值 150. 逆波兰表达式求值 - 力扣(LeetCode) 描述 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。…

ClickHouse--01--简介

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1. ClickHouse 简介官网: [https://clickhouse.com/docs/zh](https://clickhouse.com/docs/zh) 1.1 大数据处理场景1.2 什么是 ClickHouse1.3 OLAP 场景…

Tuxera NTFS2024永久免费版磁盘读写软件

Tuxera NTFS 2024由Tuxera公司开发,是一款专为Mac系统设计的NTFS磁盘读写软件。以下是这款软件的具体优势: 全面的读写功能:Tuxera NTFS 2024允许Mac用户全面读写NTFS格式的硬盘、U盘、SD卡等存储设备。这意味着用户可以在Mac上自由读取和写…

Android Graphics 图像显示系统 - 开篇

“ 随着学习的不断深入和工作经验的积累,欲将之前在博客中整理的Android Graphics知识做进一步整理,并纠正一些理解上的错误,故开设Graphics主题系列文章 ” 序言 由于工作需要,也源于个人兴趣,终于下决心花时间整理一…

gem5学习(19):gem5内存系统——The gem5 Memory System

目录 一、Model Hierarchy 二、CPU 三、Data Cache Object 四、Tags & Data Block 五、MSHR and Write Buffer Queues 六、Memory Access Ordering 七、Coherent Bus Object 八、Simple Memory Object 九、Message Flow 1、Memory Access Ordering(re…

[每周一更]-(第86期):PostgreSQL入门学习和对比MySQL

入门学习PostgreSQL可以遵循以下步骤: 安装 PostgreSQL: 首先,你需要在你的计算机上安装 PostgreSQL。你可以从 PostgreSQL 官方网站 下载适合你操作系统的安装包,并按照官方文档的指导进行安装。 学习 SQL: PostgreS…

【JS逆向三】逆向某某网站的sign参数,并模拟生成仅供学习

逆向日期:2024.02.06 使用工具:Node.js 类型:webpack 文章全程已做去敏处理!!! 【需要做的可联系我】 可使用AES进行解密处理(直接解密即可):AES加解密工具 1、打开某某…

深入理解Go的垃圾回收机制

导语 如果你是一位Golang的开发者,你一定对于语言特性和详细结构有所了解。但是,你是否曾经停下来深入研究过Golang背后复杂而强大的垃圾回收(GC)机制?在这篇文章中,我们将具体深入探讨Golang垃圾回收机制…

fast.ai 深度学习笔记(三)

深度学习 2:第 1 部分第 6 课 原文:medium.com/hiromi_suenaga/deep-learning-2-part-1-lesson-6-de70d626976c 译者:飞龙 协议:CC BY-NC-SA 4.0 来自 fast.ai 课程的个人笔记。随着我继续复习课程以“真正”理解它,这…

HiveSQL——不使用union all的情况下进行列转行

参考文章: HiveSql一天一个小技巧:如何不使用union all 进行列转行_不 union all-CSDN博客文章浏览阅读881次,点赞5次,收藏10次。本文给出一种不使用传统UNION ALL方法进行 行转列的方法,其中方法一采用了concat_wsposexplode()方…