Pandas 数据筛选:条件过滤

简介: Pandas 是 Python 最常用的数据分析库之一,提供了强大的数据结构和工具。本文从基础到高级,介绍如何使用 Pandas 进行条件过滤,包括单一条件、多个条件过滤、常见问题及解决方案,以及动态和复杂条件过滤的高级用法。希望本文能帮助你更好地利用 Pandas 处理数据。

引言

Pandas 是 Python 中最常用的数据分析库之一,它提供了强大的数据结构和数据分析工具。在实际工作中,我们经常需要根据特定条件对数据进行筛选。本文将从基础到高级,逐步介绍如何使用 Pandas 进行条件过滤,并讨论常见的问题和报错及其解决方案。
image.png

基础概念

在 Pandas 中,数据通常存储在 DataFrame 对象中。DataFrame 可以看作是一个表格,其中每一列都有一个名称,每一行都有一个索引。条件过滤的基本思路是创建一个布尔掩码,然后使用这个掩码来筛选数据。

基本用法

假设我们有一个包含员工信息的 DataFrame

import pandas as pd

data = {
   
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 40],
    'Department': ['HR', 'Engineering', 'Sales', 'Marketing']
}

df = pd.DataFrame(data)
print(df)

输出:

      Name  Age Department
0    Alice   25         HR
1      Bob   30  Engineering
2  Charlie   35       Sales
3    David   40   Marketing
单一条件过滤

我们可以使用单一条件来筛选数据。例如,筛选出年龄大于 30 的员工:

filtered_df = df[df['Age'] > 30]
print(filtered_df)

输出:

Name  Age Department
2  Charlie   35       Sales
3    David   40   Marketing
多个条件过滤

我们也可以使用多个条件来筛选数据。例如,筛选出年龄大于 30 且部门为 Sales 的员工:

filtered_df = df[(df['Age'] > 30) & (df['Department'] == 'Sales')]
print(filtered_df)

输出:

      Name  Age Department
2  Charlie   35       Sales

注意:在使用多个条件时,每个条件需要用括号括起来,以确保逻辑运算符的优先级正确。

常见问题及解决方案

1. 条件表达式错误

问题描述:在编写条件表达式时,忘记使用括号导致逻辑运算符优先级错误。

解决方案:确保每个条件都用括号括起来。

# 错误示例
filtered_df = df[df['Age'] > 30 & df['Department'] == 'Sales']

# 正确示例
filtered_df = df[(df['Age'] > 30) & (df['Department'] == 'Sales')]
2. 类型不匹配

问题描述:在比较字符串和数字时,类型不匹配导致报错。

解决方案:确保比较的两个值类型一致。

# 错误示例
filtered_df = df[df['Department'] == 30]

# 正确示例
filtered_df = df[df['Age'] == 30]
3. 使用 andor 而不是 &|

问题描述:在 Pandas 中,andor 不能用于布尔数组,而应该使用 &|

解决方案:使用 &| 进行逻辑运算。

# 错误示例
filtered_df = df[df['Age'] > 30 and df['Department'] == 'Sales']

# 正确示例
filtered_df = df[(df['Age'] > 30) & (df['Department'] == 'Sales')]
4. 空值处理

问题描述:数据中存在空值(NaN)时,条件过滤可能会出错。

解决方案:使用 pd.notna()dropna() 方法处理空值。

# 示例数据
data = {
   
    'Name': ['Alice', 'Bob', None, 'David'],
    'Age': [25, 30, 35, 40],
    'Department': ['HR', 'Engineering', 'Sales', 'Marketing']
}
df = pd.DataFrame(data)

# 过滤出非空值
filtered_df = df[pd.notna(df['Name'])]
print(filtered_df)

输出:

      Name  Age Department
0    Alice   25         HR
1      Bob   30  Engineering
3    David   40   Marketing

高级用法

动态条件过滤

在实际应用中,我们可能需要根据用户输入或其他动态条件进行过滤。可以使用 eval 方法实现动态条件过滤。

condition = "Age > 30 & Department == 'Sales'"
filtered_df = df.query(condition)
print(filtered_df)

输出:

      Name  Age Department
2  Charlie   35       Sales
复杂条件过滤

对于更复杂的条件,可以使用 apply 方法自定义过滤逻辑。

def custom_filter(row):
    return row['Age'] > 30 and row['Department'] in ['Sales', 'Marketing']

filtered_df = df[df.apply(custom_filter, axis=1)]
print(filtered_df)

输出:

      Name  Age Department
2  Charlie   35       Sales
3    David   40   Marketing

总结

Pandas 提供了丰富的条件过滤功能,可以帮助我们高效地处理数据。本文从基础到高级,介绍了如何使用 Pandas 进行条件过滤,并讨论了常见的问题和报错及其解决方案。希望本文能帮助你在实际工作中更好地利用 Pandas 进行数据处理。

目录
相关文章
|
2天前
|
调度 云计算 芯片
云超算技术跃进,阿里云牵头制定我国首个云超算国家标准
近日,由阿里云联合中国电子技术标准化研究院主导制定的首个云超算国家标准已完成报批,不久后将正式批准发布。标准规定了云超算服务涉及的云计算基础资源、资源管理、运行和调度等方面的技术要求,为云超算服务产品的设计、实现、应用和选型提供指导,为云超算在HPC应用和用户的大范围采用奠定了基础。
|
9天前
|
存储 运维 安全
云上金融量化策略回测方案与最佳实践
2024年11月29日,阿里云在上海举办金融量化策略回测Workshop,汇聚多位行业专家,围绕量化投资的最佳实践、数据隐私安全、量化策略回测方案等议题进行深入探讨。活动特别设计了动手实践环节,帮助参会者亲身体验阿里云产品功能,涵盖EHPC量化回测和Argo Workflows量化回测两大主题,旨在提升量化投研效率与安全性。
云上金融量化策略回测方案与最佳实践
|
11天前
|
人工智能 自然语言处理 前端开发
从0开始打造一款APP:前端+搭建本机服务,定制暖冬卫衣先到先得
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。
8819 20
|
15天前
|
Cloud Native Apache 流计算
资料合集|Flink Forward Asia 2024 上海站
Apache Flink 年度技术盛会聚焦“回顾过去,展望未来”,涵盖流式湖仓、流批一体、Data+AI 等八大核心议题,近百家厂商参与,深入探讨前沿技术发展。小松鼠为大家整理了 FFA 2024 演讲 PPT ,可在线阅读和下载。
4752 12
资料合集|Flink Forward Asia 2024 上海站
|
15天前
|
自然语言处理 数据可视化 API
Qwen系列模型+GraphRAG/LightRAG/Kotaemon从0开始构建中医方剂大模型知识图谱问答
本文详细记录了作者在短时间内尝试构建中医药知识图谱的过程,涵盖了GraphRAG、LightRAG和Kotaemon三种图RAG架构的对比与应用。通过实际操作,作者不仅展示了如何利用这些工具构建知识图谱,还指出了每种工具的优势和局限性。尽管初步构建的知识图谱在数据处理、实体识别和关系抽取等方面存在不足,但为后续的优化和改进提供了宝贵的经验和方向。此外,文章强调了知识图谱构建不仅仅是技术问题,还需要深入整合领域知识和满足用户需求,体现了跨学科合作的重要性。
|
22天前
|
人工智能 自动驾驶 大数据
预告 | 阿里云邀您参加2024中国生成式AI大会上海站,马上报名
大会以“智能跃进 创造无限”为主题,设置主会场峰会、分会场研讨会及展览区,聚焦大模型、AI Infra等热点议题。阿里云智算集群产品解决方案负责人丛培岩将出席并发表《高性能智算集群设计思考与实践》主题演讲。观众报名现已开放。
|
10天前
|
人工智能 容器
三句话开发一个刮刮乐小游戏!暖ta一整个冬天!
本文介绍了如何利用千问开发一款情侣刮刮乐小游戏,通过三步简单指令实现从单个功能到整体框架,再到多端优化的过程,旨在为生活增添乐趣,促进情感交流。在线体验地址已提供,鼓励读者动手尝试,探索编程与AI结合的无限可能。
三句话开发一个刮刮乐小游戏!暖ta一整个冬天!
|
10天前
|
消息中间件 人工智能 运维
12月更文特别场——寻找用云高手,分享云&AI实践
我们寻找你,用云高手,欢迎分享你的真知灼见!
870 57

热门文章

最新文章