Python中处理无效数据的详细教程(附案例实战)

简介: Python中处理无效数据的详细教程(附案例实战)

1.无效数据的概念


       无效数据是指不符合数据收集目的或数据收集标准的数据。这些数据可能来自于不准确的测量、缺失值、错误标注、虚假的数据源或其他问题。无效数据可能会对数据分析结果产生误导,因此需要在数据分析之前进行过滤和处理。


无效数据的类型包括但不限于以下几种:


  1. 缺失值:缺失值是指在数据集中没有收集到足够的信息来完全确定其值的数据点。缺失值可以是由于数据收集过程中的误差、数据源的不确定性、数据点之间的相互作用等原因产生的。在数据分析中,缺失值可能会对数据集的质量和模型的准确性产生负面影响。


  1. 重复值:重复值是指在数据集中重复出现的数据点。在数据集中,每个数据点都应该是唯一的,即不存在两个相同的数据点。重复值可能会对数据分析和建模产生负面影响,因为它们可能会掩盖数据集中的重要信息。


  1. 异常值:异常值是指在数据集中偏离平均值或常见值的数据点。异常值可以是由于数据收集过程中的误差、数据源的不确定性、数据点之间的相互作用等原因产生的。异常值可能会对数据分析和建模产生负面影响,因为它们可能会掩盖数据集中的重要信息,或者导致模型产生错误的结论。


2.无效数据的处理方法


2.1缺失值处理


 缺失值处理是指在数据分析过程中,针对数据集中存在缺失值的数据点进行的处理和重新处理。缺失值处理的目的是消除缺失值对数据集的影响,提高数据集的质量和模型的准确性。


缺失值处理的方法包括以下几种:


  1. 填充均值:将缺失值填充为数据集中该值所在列的均值。
  2. 填充中位数:将缺失值填充为数据集中该值所在列的中位数。
  3. 填充最大最小值:将缺失值填充为数据集中该值所在列的最大最小值。
  4. 使用其他数据点的信息填充缺失值:根据数据集中的其他数据点的信息,使用统计方法或其他算法来填充缺失值。
  5. 删除缺失值:将缺失值所在的数据点从数据集中删除。


在处理缺失值时,需要根据具体情况进行决策。填充均值和使用其他数据点的信息填充缺失值通常适用于数据集中存在少量缺失值的情况。使用其他数据点的信息填充缺失值和删除缺失值适用于数据集中存在大量缺失值的情况。此外,缺失值处理的方法也需要考虑到数据集的完整性和一致性,以确保数据分析和建模的准确性。


案例演示


首先导入我们演示的数据集

import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings('ignore')
data = pd.read_csv('test.csv')
data


我们可以使用isnull来查看缺失值个数


可以看出姓名列是没有缺失值,年龄列有1个缺失值,余额列有两个缺失值。


1.填充均值


比如我们想要将年龄列中的缺失值用均值来填充,首先可以看一下年龄列均值是多少


接着使用fillna()函数填充缺失值,第一个参数是填充的值,这里我们使用年龄的均值,也就是前面的24.25,可以使用int()转化为整数,inplace=True表示在原数据上修改,默认为False。修改之后我们再次查看数据发现年龄列的缺失值已经使用均值24填充。


2.填充中位数


还是以年龄为例,查看年龄列的中位数


使用中位数进行填充


3.填充最大最小值


以年龄为例,查看最大最小值


使用最大最小值填充


4.前向填充/后向填充


前向填充就是将缺失值所在位置的上一个值作为填充值填充缺失数据。


后向填充就是将缺失值所在位置的下一个值作为填充值填充缺失数据。


但是如果我们在使用后向填充的时候,最后一个数据是缺失值的话,那么最后一个缺失值将会遗漏。所以我们可以前向和后向结合起来就可以做到万无一失,比如下面的示范:


5.删除缺失值


删除的话直接使用dropna即可,需要在原数据上操作的话可以加个inplace=True。


2.2重复值处理


重复值的话一般都是采取删除处理,因为相同的数据出现了n次都是没有意义的,一次就够。


案例演示


首先导入演示数据集


我们可以先使用any函数和duplicated函数来检测数据是否存在重复值,如果返回结果为True说明数据存在重复值;如果返回结果为False说明数据不存在重复值。


前面我们导入数据的时候就发现李四数据是有重复的,所以这里检测的结果为True。删除的话直接使用drop_duplicates函数即可。


2.3异常值处理


       异常值是指在数据集中偏离通常模式或规律的值,可以是正常情况的异常值,也可以是异常情况的异常值。


       正常情况的异常值。比如我们想建立居民收入水平的时候,那些收入极其高或低极端数据会影响模型的效果,所以我们一般要进行剔除。


 异常情况的异常值。比如数值型变量中出现负数或其他不符合常理的值等等。


检测方法1


使用describe()方法来查看数值型变量是否存在极端值


检测方法2


通过画出箱线图的方式来展示数据分布情况


比如上图中的第五幅图就明显存在极端值。


处理的方法就是剔除这些异常数据,这个方式很灵活。比如前面我们发现累计票房一般都是在100000以内,却出现了700000的极端数据,我们就可以采取以下方式挑选出正常数据:


如果我们有多个条件的话可以使用()和&/|字符来结合使用,&表示and交集的意思,|表示or并集的意思。比如下图我们就挑选出累计票房小于100000并且场均人次小于100的数据:


3.如何避免无效数据?


       那我觉得就需要在获取数据的源头来防止无效数据的产生,这样也能较少花在处理无效数据的时间成本上。获取数据一般就是获取或从数据库中提取。在编写代码时可以采取适当的过滤措施,比如某个字段出现空值或异常值,你可以将这条数据不进行保存。从数据库提取的话,在sql上加一些去重/去空的语句即可。


4.实战案例


关于处理无效数据,我在之前的数据分析文章都用到过,大家可以了解一些。

目录
相关文章
|
2天前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。
|
2天前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
5天前
|
JSON API 数据格式
Python 请求微店商品详情数据 API 接口
微店开放平台允许开发者通过API获取商品详情数据。使用Python请求微店商品详情API的主要步骤包括:1. 注册并申请API权限,获得app_key和app_secret;2. 确定API接口地址与请求参数,如商品ID;3. 生成签名确保请求安全合法;4. 使用requests库发送HTTP请求获取数据;5. 处理返回的JSON格式响应数据。开发时需严格遵循微店API文档要求。
|
2天前
|
设计模式 机器学习/深度学习 前端开发
Python 高级编程与实战:深入理解设计模式与软件架构
本文深入探讨了Python中的设计模式与软件架构,涵盖单例、工厂、观察者模式及MVC、微服务架构,并通过实战项目如插件系统和Web应用帮助读者掌握这些技术。文章提供了代码示例,便于理解和实践。最后推荐了进一步学习的资源,助力提升Python编程技能。
|
4天前
|
数据采集 搜索推荐 C语言
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化和调试技巧,涵盖使用内置函数、列表推导式、生成器、`cProfile`、`numpy`等优化手段,以及`print`、`assert`、`pdb`和`logging`等调试方法。通过实战项目如优化排序算法和日志记录的Web爬虫,帮助你编写高效稳定的Python程序。
|
4天前
|
数据采集 人工智能 数据挖掘
Python 编程基础与实战:从入门到精通
本文介绍Python编程语言,涵盖基础语法、进阶特性及实战项目。从变量、数据类型、运算符、控制结构到函数、列表、字典等基础知识,再到列表推导式、生成器、装饰器和面向对象编程等高级特性,逐步深入。同时,通过简单计算器和Web爬虫两个实战项目,帮助读者掌握Python的应用技巧。最后,提供进一步学习资源,助你在Python编程领域不断进步。
|
4天前
|
Python
Python 高级编程与实战:深入理解面向对象与并发编程
本文深入探讨Python的高级特性,涵盖面向对象编程(继承、多态、特殊方法、类与实例属性)、异常处理(try-except、finally)和并发编程(多线程、多进程、异步编程)。通过实战项目如聊天服务器和异步文件下载器,帮助读者掌握这些技术,编写更复杂高效的Python程序。
|
4天前
|
机器学习/深度学习 数据可视化 算法
Python 高级编程与实战:深入理解数据科学与机器学习
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化和调试技巧。本文将深入探讨 Python 在数据科学和机器学习中的应用,并通过实战项目帮助你掌握这些技术。
|
1天前
|
存储 监控 API
1688平台API接口实战:Python实现店铺全量商品数据抓取
本文介绍如何使用Python通过1688开放平台的API接口自动化抓取店铺所有商品数据。首先,开发者需在1688开放平台完成注册并获取App Key和App Secret,申请“商品信息查询”权限。接着,利用`alibaba.trade.product.search4trade`接口,构建请求参数、生成MD5签名,并通过分页机制获取全量商品数据。文中详细解析了响应结构、存储优化及常见问题处理方法,还提供了竞品监控、库存预警等应用场景示例和完整代码。
|
4天前
|
Python
Python高级编程与实战:深入理解函数式编程与元编程
本文深入介绍Python的函数式编程和元编程。函数式编程强调纯函数与不可变数据,涵盖`map`、`filter`、`reduce`及`lambda`的使用;元编程则涉及装饰器、元类和动态属性等内容。通过实战项目如日志记录器和配置管理器,帮助读者掌握这些高级技术,编写更灵活高效的Python程序。

热门文章

最新文章