首页 游戏 软件 资讯 排行榜 专题
首页
业界动态
Pandas 入门三:数据清洗必学!缺失值/重复值处理,一步到位不踩坑

Pandas 入门三:数据清洗必学!缺失值/重复值处理,一步到位不踩坑

热心网友
61
转载
2026-04-14

今天我们将会学习 Pandas 数据清洗的核心:缺失值“先检测后处理(删除/填充)”,重复值“一键去重”,新手跟着代码跑一遍就能掌握!

大家好,Pandas系列教程继续推进。前两期我们搭建了基础环境,掌握了数据读取和DataFrame的核心操作。今天,我们要深入到数据处理中避不开的“关键一步”——数据清洗。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

(前文回顾:《Pandas 入门一:零基础也能懂!3步安装+10分钟玩转数据读取》《Pandas 入门二:DataFrame 核心操作,新手也能轻松筛选/修改数据》)

现实中的数据往往不会那么“规整”。你拿到的原始表格里,大概率会存在空白单元格(即缺失值)、或者完全相同的重复行。这些“脏数据”如果不去处理,会直接影响后续分析的准确性。别担心,今天我们就用Pandas,把这两个高频问题一次性梳理清楚,过程清晰,一步到位。

一、先准备:加载数据(新手直接复制运行)

第一步还是老样子,导入Pandas并准备数据。为了让大家能无障碍地跟着练习,这里直接创建一个包含典型“脏数据”的示例表格。复制下面的代码运行,就能生成我们的练习数据集。

import pandas as pd

# 创建带缺失值、重复值的示例数据(模拟真实场景)
data = {
    ‘姓名’: [‘张三’, ‘李四’, ‘王五’, ‘张三’, None, ‘赵六’],  # None表示缺失值
    ‘年龄’: [25, 30, None, 25, 35, 35],  # 空白单元格对应None
    ‘城市’: [‘北京’, ‘上海’, ‘广州’, ‘北京’, ‘深圳’, ‘深圳’],
    ‘工资’: [8000, 12000, 10000, 8000, None, 10000]
}

# 转为DataFrame(表格格式)
df = pd.DataFrame(data)
print(“原始带脏数据的表格:”)
print(df)

运行这段代码后,你会看到一个包含NaN和重复行的表格。请注意,在Pandas里,NaN就代表了缺失值,也就是我们看到的空白格。

原始带脏数据的表格:
      姓名    年龄  城市      工资
0    张三  25.0  北京   8000.0
1    李四  30.0  上海  12000.0
2    王五   NaN  广州  10000.0
3    张三  25.0  北京   8000.0  # 这行是重复值
4   None  35.0  深圳      NaN
5    赵六  35.0  深圳  10000.0

二、缺失值处理:先检测,再处理

所谓缺失值,就是表格里那些空着没填的单元格(在Pandas里显示为NaN或None)。处理它们有一个标准流程:先定位,再解决。定位就是检测出哪里有缺失,解决则是选择删除这些不完整的记录,或者用合理的值把它们填上。

1. 三种快速检测缺失值的方法

# 方法1:查看每列缺失值的数量(最常用)
print(“=“*30)
print(“每列缺失值数量:”)
print(df.isnull().sum())  # isnull()判断是否为缺失值,sum()统计个数

# 方法2:查看缺失值占比(更直观)
print(“=“*30)
print(“每列缺失值占比:”)
print((df.isnull().sum() / len(df)).round(2))  # 除以总行数,保留2位小数

# 方法3:快速查看数据整体情况(包含缺失值)
print(“=“*30)
print(“数据整体信息:”)
df.info()  # 会显示每列非空值数量、数据类型

运行这几个指令,情况就一目了然了:“姓名”、“年龄”、“工资”三列各缺失了一个值。数据哪里“缺了”,缺了多少,新手也能秒懂。

2. 种核心缺失值处理方法(新手优先掌握)

(1) 方法1:直接删除(适合缺失值少的情况)

如果缺失的记录只是零星几个,占总体比例很低,那么最直接的办法就是删掉这些不完整的行。这是通过dropna()函数实现的。

# 删除包含缺失值的行(默认axis=0,删行;axis=1删列,不常用)
df_drop = df.dropna()
print(“=“*30)
print(“删除缺失值后的表格:”)
print(df_drop)

运行之后你会发现,所有包含NaN的行都消失了,剩下的数据都是“完整无缺”的。

(2) 方法2:填充缺失值(适合缺失值多的情况)

如果缺失的比例较高,直接删除会损失大量数据样本,这时候就该考虑填充了。核心思想是:用一个合理的估计值来代替缺失的空位。使用fillna()函数。

# 复制原始数据,避免修改原数据(新手好习惯)
df_fill = df.copy()

# 1. 数值型列(年龄、工资):用均值/中位数填充(更合理)
df_fill[‘年龄’] = df_fill[‘年龄’].fillna(df_fill[‘年龄’].mean())  # 均值填充
df_fill[‘工资’] = df_fill[‘工资’].fillna(df_fill[‘工资’].median())  # 中位数填充

# 2. 文本型列(姓名):用固定值填充(比如“未知”)
df_fill[‘姓名’] = df_fill[‘姓名’].fillna(‘未知’)

print(“=“*30)
print(“填充缺失值后的表格:”)
print(df_fill)

现在再看表格,所有的NaN都被替换了:年龄列用平均值填上,工资列采用了更稳健的中位数,姓名列则统一标记为“未知”。相比直接删除,这个方法能最大限度地保留数据体量。

新手小贴士:

  • 数值型数据(如年龄、工资、分数):优先考虑用中位数填充,因为它对极端值不敏感。试想,如果数据里有个年薪百万的极值,用平均值去填充就会把整体水平拉高,造成偏差。
  • 文本型数据(如姓名、城市):直接用固定的占位符填充,比如“未知”、“待补充”等。
  • 当某一列的缺失值占比超过50%时,其实它已经失去大部分信息价值了。这时候,要么采用复杂的填充策略,要么就该考虑舍弃这一整列。

三、重复值处理:一键去重超简单

重复值就是那些在所有列上内容完全一致的行(比如我们示例数据里的两个“张三”)。它们会让后续的统计计数翻倍,必须清理。处理流程同样清晰:先侦测,后清除。

1. 检测重复值

print(“=“*30)
print(“是否有重复行(True=重复):”)
print(df.duplicated())  # 每行判断是否为重复行(第一次出现的行算不重复)

# 统计重复行数量
print(“=“*30)
print(“重复行数量:”)
print(df.duplicated().sum())

运行代码后,系统会明确标出第3行(索引为3)是重复行,并且告诉你总的重复数量是1。

2. 删除重复值

使用drop_duplicates()可以一键清除所有重复项。注意,新手可以加上inplace=True参数直接在原数据上修改,或者将结果赋值给一个新变量,这是两种常见的做法。

# 复制填充后的表格(继续处理重复值)
df_clean = df_fill.copy()

# 删除重复行(默认保留第一次出现的行)
df_clean.drop_duplicates(inplace=True)

print(“=“*30)
print(“去重后的最终干净表格:”)
print(df_clean)

好了,现在再看最终结果。多余的“张三”行已经被移除,我们得到了一份既没有缺失值也没有重复值的、干净清爽的数据表格。

四、新手必记:核心函数速查表

五、总结

今天,我们系统性地梳理了Pandas数据清洗的两个核心操作:对于缺失值,遵循“先检测、后处理(删除或填充)”的流程;对于重复值,则是“一键检测、一键删除”。跟着代码从头到尾跑一遍,这个流程就能牢牢掌握。

必须强调的是,干净的数据是所有深度分析的地基。缺失值和重复值处理,是实际工作中使用频率最高的操作之一。建议大家多动手复现几遍,形成肌肉记忆。下一篇,我们将进入Pandas的进阶世界,学习数据筛选、分组与聚合,你会发现,这些操作比在Excel里手动处理,要高效不止一个量级。

来源:https://www.51cto.com/article/834745.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Pandas 入门一:零基础也能懂!3步安装+10分钟玩转数据读取
业界动态
Pandas 入门一:零基础也能懂!3步安装+10分钟玩转数据读取

「Pandas从入门到精通」系列一:从零到一的起手式,10分钟搞定安装与数据读取 很多数据分析的探索旅程,往往就卡在第一步:面对海量的表格数据,手动整理效率低下且易错;想要用代码提升效率,却被陌生的术语和复杂的环境配置劝退。 如果你也有过类似的困扰,那么今天的内容正是为你准备的。我们将一起认识数据分

热心网友
04.14
Pandas-Profiling,一个 Python 效率神器!
业界动态
Pandas-Profiling,一个 Python 效率神器!

Pandas-Profiling:让探索性数据分析效率翻倍的神器 很多数据分析新手,最初可能都用过 df describe() 和 df info() 这两板斧来初步了解数据。这当然没错,但效率上总感觉差了那么一口气。 今天要介绍一个堪称神器的工具——Pandas-Profiling。它能一键生成一

热心网友
04.14
Pandas 入门二:DataFrame 核心操作,新手也能轻松筛选/修改数据
业界动态
Pandas 入门二:DataFrame 核心操作,新手也能轻松筛选/修改数据

Pandas数据处理实战:从数据洞察到精准操作 在上一篇文章中,我们掌握了Pandas的安装和数据读取,成功将表格数据加载为DataFrame。今天,我们将继续深入,聚焦数据处理中最核心的三个环节:如何快速了解你的数据、如何精准筛选出目标信息,以及如何高效地修改数据内容。每个环节都配有可直接复制的代

热心网友
04.14
Pandas 入门三:数据清洗必学!缺失值/重复值处理,一步到位不踩坑
业界动态
Pandas 入门三:数据清洗必学!缺失值/重复值处理,一步到位不踩坑

今天我们将会学习 Pandas 数据清洗的核心:缺失值“先检测后处理(删除 填充)”,重复值“一键去重”,新手跟着代码跑一遍就能掌握! 大家好,Pandas系列教程继续推进。前两期我们搭建了基础环境,掌握了数据读取和DataFrame的核心操作。今天,我们要深入到数据处理中避不开的“关键一步”——数

热心网友
04.14
Pandas 实战九:时序数据处理,日期筛选/统计分析一看就会
业界动态
Pandas 实战九:时序数据处理,日期筛选/统计分析一看就会

今天,咱们来搞定时序数据的核心操作 接续上篇《Pandas 实战八:电商数据案例分析》,这次我们聚焦数据处理中的另一个重要板块:时序数据。掌握了日期格式转换、按周期筛选、统计与趋势分析这几项技能,你就能轻松应对日常工作中绝大多数与时间相关的分析需求了。 什么是时序数据?顾名思义,就是那些带有日期或时

热心网友
04.14

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

Lemonaid-AI音乐生成工具
AI
Lemonaid-AI音乐生成工具

Lemonaid是什么 如果你正为音乐创作寻找得力助手,那么Lemonaid很可能就是答案。它是一款专门面向专业音乐人打造的AI音乐生成工具,核心能力在于自主生成包含完整旋律、和声与节奏的乐曲。无论是想要一段氛围感十足的背景音乐,还是为具体场景定制配乐,它都能提供高度逼真且质量上乘的作品。工具提供了

热心网友
04.14
苹果折叠屏iPhone Ultra关键点汇总:这4个问题你肯定想知道
iphone
苹果折叠屏iPhone Ultra关键点汇总:这4个问题你肯定想知道

苹果也要出折叠屏,传闻已经有几年了,从目前供应链、分析师与知名爆料者释放的信息来看,这款与市面大折都不一样的阔折叠似乎已经蓄势待发,大概率今年下半年就要正式面市。今天我们就来为大家汇总一波,没准儿就有你想知道的消息。 关于苹果折叠屏手机的传闻,已经流传了好几年。如今,综合供应链、分析师以及各路知名爆

热心网友
04.14
《刺客信条4:黑旗 重制版》对手来了!被称为4A级海盗大作
游戏评测
《刺客信条4:黑旗 重制版》对手来了!被称为4A级海盗大作

《刺客信条:黑旗重制版》官宣之际,这款新海盗游戏为何能抢先赢得玩家口碑? 当游戏界的焦点都集中在《刺客信条:黑旗重制版》的正式公布时,一款名为《风启之旅》(Windrose)的开放世界海盗生存建造游戏,却凭借其过硬的品质与独特的玩法融合,悄然在玩家社区中掀起热议。这款由乌兹别克斯坦团队Kraken

热心网友
04.14
腾讯智影-智能视频创作与发布一体化平台
AI
腾讯智影-智能视频创作与发布一体化平台

产品介绍 提到云端智能视频创作,腾讯智影是一个绕不开的名字。这款由腾讯推出的平台,本质上是一个一站式的在线视频工厂,集成了从素材挖掘、剪辑、渲染到最终发布的全链路功能,旨在为用户提供全方位的视频创作解决方案。更吸引人的是,它不仅免费开放,还深度整合了多项前沿AI技术,目标很明确:让视频化表达这件事,

热心网友
04.14
比心被拒小哥回应:不尴尬 尊重Coser 大家当个乐子
游戏评测
比心被拒小哥回应:不尴尬 尊重Coser 大家当个乐子

《王者荣耀世界》线下活动风波:合影互动引争议,职业素养与网络舆论深度探讨 近日,《王者荣耀世界》的一场线下玩家见面会,因台上一次短暂的合影互动,意外成为全网热议的焦点。活动中,一位男粉丝上台与角色扮演者(Coser)合影时,主动做出比心手势以示友好,却未得到身旁Coser的任何回应。男生举着手势在原

热心网友
04.14