Python数据清洗:处理缺失值、异常值和重复值
off999 2024-09-16 00:49 51 浏览 0 评论
在Python数据分析中,数据清洗是一个非常重要的步骤。数据清洗包括处理缺失值、异常值和重复值,以及进行数据转换和归一化等操作。本文将介绍如何使用Python进行数据清洗,并提供相应的代码示例。
1.缺失值处理
缺失值是指数据集中某些数据项的值为空或未知。在数据分析中,通常需要对缺失值进行处理。以下是一些常用的处理方法:
1.1 删除含有缺失值的行或列
可以使用pandas库中的dropna()函数删除含有缺失值的行或列。例如:
import pandas as pd
data = pd.DataFrame({'A': [1, 2, None], 'B': [4, None, 6]})
data = data.dropna()
print(data)输出结果为:
A B
0 1.0 4.0
1 2.0 NaN
2 NaN 6.0
A B
0 1.0 4.0如上所示,可以看到,含有缺失值的行被删除了。
1.2 用平均值或众数填充缺失值
可以使用pandas库中的fillna()函数用平均值或众数填充缺失值。例如:
import pandas as pd
data = pd.DataFrame({'A': [1, 2, None], 'B': [4, None, 6]})
data['A'] = data['A'].fillna(data['A'].mean())
data['B'] = data['B'].fillna(data['B'].mode()[0])
print(data)data['B'].mode()表示:计算 'B' 列中的众数,即出现次数最多的值。mode() 方法返回一个包含众数的 Series。最后 data['B'].mode()[0]表示从众数的 Series 中选择第一个值,即取得列 'B' 中出现频率最高的值。 输出结果为:
A B
0 1.0 4.0
1 2.0 4.0
2 1.5 6.0可以看到,缺失值被用平均值填充了。上面两处代码的具体运行截图如下所示。
2.异常值处理
异常值是指数据集中与大多数数据不同的离群点。在数据分析中,通常需要对异常值进行处理。以下是一些常用的处理方法:
2.1 用平均值或中位数替换异常值
可以使用numpy库中的mean()和median()函数计算数据的平均值和中位数,然后用它们替换异常值。例如:
import numpy as np
import pandas as pd
import copy
data = pd.DataFrame({'A': [1, 2, 3, np.inf, -np.inf]})
copy_data = copy.deepcopy(data)
copy_data['A'] = copy_data['A'].replace([np.inf, -np.inf], np.nan)
print(copy_data)
mean = copy_data['A'].mean(skipna=True)
median = copy_data['A'].median(skipna=True)
data['A'] = np.where((data['A'] > mean + 3 * median) | (data['A'] < mean - 3 * median), median, data['A'])
print(data)输出结果为:
A
0 1.0
1 2.0
2 3.0
3 NaN
4 NaN
A
0 1.0
1 2.0
2 3.0
3 2.0
4 2.0可以看到,异常值被用中位数替换了。这段代码首先创建了一个 DataFrame,然后使用深拷贝创建了一个拷贝 DataFrame。在拷贝 DataFrame 上,使用 .replace 方法将正无穷大和负无穷大替换为 NaN(缺失值)。接着,计算拷贝 DataFrame 的 'A' 列的均值和中位数,注意使用了 skipna=True 参数来忽略缺失值。
接下来,使用 np.where 来检查原始 DataFrame 中的 'A' 列是否超出了 3 倍中位数的范围,如果是,则用中位数替换。
这个代码块的功能是处理 'A' 列中的异常值,将超出阈值的值替换为中位数,并且在处理之前通过拷贝 DataFrame 将正无穷大和负无穷大替换为 NaN。
3.重复值处理
重复值是指数据集中某些数据项的值相同。在数据分析中,通常需要对重复值进行处理。以下是一些常用的处理方法:
可以使用pandas库中的drop_duplicates()函数删除重复值。例如:
import pandas as pd
data = pd.DataFrame({'A': [1, 2, 2, 3, 3, 3], 'B': [4, 5, 5, 6, 6, 6]})
data = data.drop_duplicates()
print(data)输出结果为:
A B
0 1 4
1 2 5
3 3 6
可以看到,重复值被删除了。
用众数替换重复值
可以使用pandas库中的mode()函数计算数据的众数,然后用它替换重复值。例如:
import pandas as pd
import numpy as np
# 创建示例数据
data = pd.DataFrame({'A': [1, 2, 2, 3, 3, 3, 4, 4, 5, 6]})
print(data)
# 计算众数
mode_value = data['A'].mode()[0]
# 将重复值替换为众数
data['A'] = np.where(data.duplicated(subset=['A']), mode_value, data['A'])
print(data)在这个示例中,我们首先创建一个包含重复值的 DataFrame 'data'。然后,使用 .mode() 方法计算 'A' 列的众数,并将其保存在变量 mode_value 中。接着,使用 np.where 来检查 'A' 列是否有重复值,如果有,就将其替换为众数。运行代码后,输出结果为:
A
0 1
1 2
2 2
3 3
4 3
5 3
6 4
7 4
8 5
9 6
A
0 1
1 2
2 3
3 3
4 3
5 3
6 4
7 3
8 5
9 6可以看到,重复值被用众数替换了。其中data.duplicated(subset=['A']):这部分代码返回一个布尔数组,指示每行是否是重复行。subset=['A'] 表示我们只检查列 'A' 是否有重复值。
相关推荐
- qq历史版本官方下载(qq历史旧版本大全)
-
蟹妖。我用的小米手机,可以双开两个应用,你可以搞两个一样版本的qq。小米手机,还可以手机分身,一个手机不同的解锁方式进入不同的系统,第一个系统你可以安最新版本的qq,另一个系统你可以安装其他版...
- 一个人看的片免费高清大全(一个人看的片免费高清大全在线观看)
-
推荐“爱奇艺App手机版”。它是百度旗下的高清电影站,有许多最新最热的正版大片供免费观看,爱奇艺APP是一款集视频、商城、购票、阅读、直播、泡泡粉丝社区等多种服务于一体的移动软件。爱奇艺手机版为用户提...
- 搜狗翻译app下载(搜狗翻译app下载安装)
-
有啊,点击输入框弹出搜狗键盘,进入搜狗工具栏最左边的图标,进入加号,添加中英互译。1、首先确认是否电脑键盘按键出现问题,可以通过win+r调出运行,输入osk。2、调出虚拟键盘测试虚拟键盘是否可以正常...
- 女生付费和男生聊天(女生找男生聊天掉价吗)
-
不管在什么情况下女生好像都处在优势,因为只听说过娶不到媳妇儿的单身汉,还没有听说过嫁不出去的丑媳妇儿。所以一般这种交友聊天软件就是奔着让男人出钱来的,而且这类软件骗子太多,几乎都是机器人,或者是各种托...
- 腾讯公司版权所有(腾讯开放版权)
-
你好!其实这个很好理解,就是版权公司把这个音乐的管理、销售权限(独家版权)授权给了腾讯,腾讯可以把音乐对外进行转授权。所以你看有一些腾讯独家版权的歌,为什么其他音乐平也台会有呢?其实就是腾讯授予的。因...
- 智能语音机器人(智能语音机器人哪个最好)
-
1、小米的小爱小爱的智能应用随着近年来的不断升级,在很多手机应用都带来了智能新体验。像移动支付、生活购物、查询信息、打开应用等等,小爱智能语音识别就可以帮你解决。用户还可以自己创建快捷方式,进行语音交...
- adobe lightroom(adobe lightroom for ipad破解版)
-
adobelightroom是一款非常不错的在线教育软件,adobelinghtroom这款软件具有资源管理,资源共享,在线学习,在线考试,成绩管理,教学管控,教学互动,效果评估等等功能,可以为用户提...
- 解压软件免费(电脑解压软件免费)
-
WinRAR压缩软件winrar压缩软件界面友好,WINRAR现在最好的压缩工具。使用方便,压缩率和速度方面都有很好的表示。其压缩率比之WINZIP之流要高。winrar压缩软件采用了比Zip更...
- 微信名字 昵称 好听(微信名字 昵称 好听2025)
-
1、春风化雨,2、昨夜轻风3、番茄蛋汤,4、如花似玉5、花落无声,6、似水流年7、铿锵玫瑰,8、海阔天空9、潜物无声,10、浅笑心柔11、春风乍起,12、如花似玉13、淡泊人生,14、桃花盛开15、云...
- 编程基础知识(计算机编程零基础教程)
-
自动化编程是指利用计算机程序来实现自动化操作的技术。入门基础知识包括编程语言的基本语法和逻辑思维能力,了解常用的自动化工具和框架,如Python、Java、C#等编程语言,以及Selenium、Rob...
-
- mp3转mp4格式转换器(mp3转换成mp4格式的手机软件)
-
下载格式工厂,打开格式工厂,点音频,选择MP3,点右上角添加文件,选择要转换的MP4文件,点确定就可以了。...
-
2026-02-03 11:51 off999
- lol盒子官方下载(英雄联盟盒子官方)
-
Wegame英雄联盟箱也叫LOL盒子,但现在LOL盒子已经被删除了,但是你可以放现在的盒子Wegame它被理解为英雄联盟指定插件,因为它还具有查看召唤师记录和记录各种数据、水晶复活、野生怪...
- 微信2025最新版本官方免费下载
-
是的,苹果6可以继续使用微信。虽然苹果6已经不再是最新的iPhone型号,但它仍然能够支持微信的运行。只要你的苹果6上安装了最新版本的iOS系统,你就可以在上面下载和使用微信应用程序,与朋友们聊天、分...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
win7系统还原步骤图解(win7还原电脑系统的步骤)
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
16949认证费用是多少(16949审核员太难考了)
-
linux软件(linux软件图标)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
