导读:本期聚焦于小伙伴创作的《如何使用Pandas进行条件筛选与分组计数并处理缺失值》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何使用Pandas进行条件筛选与分组计数并处理缺失值》有用,将其分享出去将是对创作者最好的鼓励。

在数据分析工作中,我们经常会遇到需要先从原始数据中提取符合特定条件的记录,再按照某个维度统计数量,同时还要处理数据中存在的缺失值的情况,Pandas作为Python生态中核心的数据处理库,提供了完善的工具支持这些操作。

如何使用Pandas进行条件筛选与分组计数并处理缺失值

条件筛选的基本方法

条件筛选是指根据指定的规则从DataFrame中提取符合条件的行,最常用的是布尔索引方式。我们可以先构造布尔条件,再将条件传入DataFrame的索引中。

比如我们有一个存储用户信息的DataFrame,需要筛选出年龄大于18岁的用户,代码实现如下:

import pandas as pd
import numpy as np

# 构造示例数据
data = {
    "user_id": [1, 2, 3, 4, 5],
    "age": [16, 22, 25, np.nan, 19],
    "city": ["北京", "上海", "广州", "深圳", np.nan]
}
df = pd.DataFrame(data)

# 条件筛选:年龄大于18岁
condition = df["age"] > 18
filtered_df = df[condition]
print(filtered_df)

需要注意的是,如果列中存在缺失值,条件判断的结果会是NaN,对应的行会被自动过滤掉,不会出现在筛选结果中。

分组计数的实现方式

分组计数是按照某个或多个列的取值对数据进行分组,然后统计每个组内的记录数量,核心使用的是groupby方法配合size或者count方法。

size会统计每个组的总行数,包含缺失值所在的行;count会统计每个组中非缺失值的数量,默认忽略缺失值。示例代码如下:

# 按照城市分组计数,使用size统计总行数
group_size = df.groupby("city").size()
print("使用size分组计数结果:")
print(group_size)

# 按照城市分组计数,使用count统计非缺失值数量
group_count = df.groupby("city").count()
print("n使用count分组计数结果:")
print(group_count)

缺失值的处理操作

缺失值会影响筛选和计数的结果准确性,因此需要先进行处理。Pandas提供了多种缺失值处理方式:

  • 识别缺失值:使用isna()或者isnull()方法判断每个元素是否为缺失值,返回布尔类型的DataFrame。
  • 过滤缺失值:使用dropna()方法删除包含缺失值的行或列,默认删除行。
  • 填充缺失值:使用fillna()方法用指定值填充缺失值,比如用均值、中位数或者固定值填充。

下面是缺失值处理的示例代码:

# 识别缺失值
print("缺失值判断结果:")
print(df.isna())

# 删除包含缺失值的行
drop_na_df = df.dropna()
print("n删除缺失值后的数据:")
print(drop_na_df)

# 用0填充年龄列的缺失值,用未知填充城市列的缺失值
fill_df = df.copy()
fill_df["age"] = fill_df["age"].fillna(0)
fill_df["city"] = fill_df["city"].fillna("未知")
print("n填充缺失值后的数据:")
print(fill_df)

组合操作完整示例

实际场景中我们通常会将条件筛选、分组计数和缺失值处理组合使用,比如需求是:先删除年龄列的缺失值,再筛选出年龄大于18岁的用户,最后按照城市统计用户数量。

完整实现代码如下:

# 组合操作:处理缺失值-条件筛选-分组计数
# 第一步:删除年龄列的缺失值
step1_df = df.dropna(subset=["age"])
# 第二步:筛选年龄大于18岁的用户
step2_df = step1_df[step1_df["age"] > 18]
# 第三步:按照城市分组计数
result = step2_df.groupby("city").size()
print("组合操作最终结果:")
print(result)

通过这种链式操作的方式,我们可以清晰实现复杂的数据处理需求,同时保证每一步的逻辑可查,方便后续调试和维护。

注意事项

1. 条件筛选时如果存在多个条件,需要用括号包裹每个条件,并用&(与)、|(或)、~(非)连接,不能使用Python原生的and、or、not。
2. 分组计数时如果需要同时统计多个列的非缺失值数量,使用count方法更合适;如果只需要统计分组后的总行数,使用size方法效率更高。
3. 填充缺失值时要根据业务场景选择合适的填充值,避免填充不合理的值导致后续分析结果偏差。

常用方法对比

下面是条件筛选、分组计数、缺失值处理中常用方法的对比:

操作类型常用方法作用说明
条件筛选布尔索引根据指定条件提取符合条件的行
分组计数groupby + size/count按照指定维度统计分组后的数量
缺失值识别isna()/isnull()判断数据中的缺失值位置
缺失值过滤dropna()删除包含缺失值的行或列
缺失值填充fillna()用指定值填充缺失值

Pandas条件筛选分组计数缺失值处理DataFrame修改时间:2026-07-22 07:39:24

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。