一、缺失值的概念

表现形式

        1.数据库中常用null表示

        2.部分编程语言中用NA表示

        3.可能表现为空字符串(‘’)或特定数值

        4.在Pandas中统一用NaN表示(来自NumPy库,NaN、NAN、nan本质一致)

NaN的特性

        1.与任何值都不相等(包括自身),如NaN == 0、NaN == NaN结果都是False。

        2.判断方法:Pandas提供isnull()/isna()(判断是否为缺失值)和notnull/notna()(判断是否为缺失值)

二、缺失值的来源于加载

来源

        1.原始数据本身包含缺失值(如用户未填写的问卷信息)

        2.数据整理过程中产生(如数据格式转换、合并时出现不匹配)

加载包含缺失值的数据(以Pandas为例)

方法说明
pd.read_csv('file.csv')默认加载,自动识别常见缺失值形式
pd.read_csv('file.csv', keep_default_na=False)不加载默认缺失值
pd.read_csv('file.csv', na_values=[""], keep_default_na=False)手动指定缺失值标识(如空字符串)

三、缺失值的检测与分析

基础检测方法

        1.查看特定字段确实情况:如train['Survived'].value_counts() 

         2.计算每列缺失值百分比:通过自定义函数(如missing_values_table)统计      

可视化分析

        条形图(msno.bar(train)):直观展示各列数据完整性,可快速识别含缺失值的列(如泰坦尼克数据中的 “年龄”“客舱号码”“登船港口”)

        热力图(msno.heatmap(train)):分析缺失值之间的相关性,辅助判断缺失原因

四:确实值的处理方法

1.删除缺失值

按行删除:train_1.dropna(subset = ['Age'],how = 'ang',inplace = True)

        适用场景:缺失数据占比低,且缺失为随机分布

        缺点:可能损失有价值信息,减少样本量

按列删除:train_1.drop(['Age',axis = 1])

        适用场景:某列缺失值占比极高(如超过80%),且该列对分析意义不大

        注意:谨慎使用,避免删除关键信息

2.填充缺失值

非时间序列数据

        常亮填充:train_constant.fillna(0,inplace = True)(用 0 或其他指定常量填充)

        统计量填充:如用均值填充train_mean['Age'].fillna(train_mean['Age'].mean(),inplace=True),还可使用中位数、众数等,适用于数据分布相对均匀的情况

时间序列数据

        前向填充(ffill):用空值的上一个非空值填充,city_day.fillna(method = 'ffill',inplace = True)

        后向填充(bfill):用空值的下一个非空值填充,city_day.fillna(method = 'bfill',inplace = True)

        线性插值:假定数据点间为线性关系,利用相邻非缺失值计算缺失值,city_day.interpolate(limit_direction = 'both',inplace = True),适用于随时间呈现一定趋势的数据

高级方法

        机器学习算法预测填充(如用回归模型根据其他特征预测缺失值),适用于缺失值较多且与其他特征存在较强关联的情况

五、总结与扩展

总结

        1.缺失值普遍存在,来源包括原始数据和处理过程

        2.Pandas中用NaN表示确实值,可通过isnull()等方法判断

        3.处理方式包括删除(行/列)和填充(常亮、统计量、时间序列方法、算法预测)

扩展

        1.缺失值处理原则:优先考虑填充,尽量保留数据信息;删除需谨慎,需评估对分析结果的影响

        2.进阶技术:使用多重插补(生成多个完整数据集进行分析)、基于模型的填充(如 KNN 填充,根据相似样本的值进行填充)等

        3.实际应用:在机器学习中,缺失值处理不当可能导致模型性能下降,需结合数据特点和模型要求选择合适的处理方式,如树模型对缺失值有一定的容忍度,而线性模型通常需要严格处理缺失值

       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93859.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93859.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/93859.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络:(十五)TCP拥塞控制与拥塞控制算法深度剖析

> 当网络变成"堵城",TCP如何化身智能交通指挥家?揭秘百万级并发背后的流量控制艺术! ### 一、生死攸关:为什么需要拥塞控制? **真实灾难案例**:1986年劳伦斯伯克利实验室网络大崩溃,因缺乏拥塞控制导致全网瘫痪36小时。TCP拥塞控制由此诞生,核心解决**资…

python中的单下划线“_”与双下划线“__”的使用场景及“左右双下划线”(魔术方法:`__xxx__`)

在Python中,单下划线“_”和双下划线“__”的使用场景和含义有显著区别,主要体现在命名约定和语法 一、单下划线“_”的使用场景 单下划线更多是编程约定(而非强制语法),用于传递特定的“暗示”,不影响代码…

我们为什么需要时序数据库?

引言在当今数据驱动的世界中,时间序列数据正以前所未有的速度增长。从物联网设备传感器、金融交易记录到应用程序性能监控,时间序列数据无处不在。传统的关系型数据库在处理这类数据时往往力不从心,这时时序数据库(Time Series Database, TSD…

python-林粒粒的视频笔记1

python的方法和函数指什么 可变类型和不可变类型 不可变类型,比如字符串通过方法调用后,字符串本身的值不改变 要改变需要重新赋值才能进行改变 比如可变数据类型类型,调用方法后可以直接改变原列表 因此,可变数据类型需要再重新赋…

CentOS 7的下载与安装

一 、CentOS 7的下载与安装 注意: CentOS 7 已于2024年6月30日停止维护! 1、下载 由于 centos 7 已经停止维护,部分镜像网站移除了对centos 7的支持,这里找到了部分现在还可以使用的镜像网站 阿里云开源镜像站:http…

矿物分类系统开发笔记(二):模型训练[删除空缺行]

目录 一、阶段衔接与开发目标 二、数据准备 三、模型选择与训练 1. 逻辑回归(LR) 2. 随机森林(RF) 3. 高斯朴素贝叶斯(GNB) 4. 支持向量机(SVM) 5. AdaBoost 6. XGBoost 四…

通信方式:命名管道

一、命名管道 1. 命名管道的原理 有了匿名管道,理解命名管道就非常简单了。 对于普通文件而言,两个进程打开同一个文件,OS是不会将文件加载两次的,这两个进程都会指向同一个文件,那么,也就享有同一份 in…

如何将数据库快速接入大模型实现智能问数,实现chatbi、dataagent,只需短短几步,不需要配置工作流!

智能问数系统初始化操作流程 一、系统初始化与管理员账号创建登录与初始化提示:首次访问系统登录页,若系统未初始化,会弹出 “系统未完成初始化,请初始化管理员账号” 提示,点击【去创建】。填写管理员信息&#xff1a…

告别手写文档!Spring Boot API 文档终极解决方案:SpringDoc OpenAPI

在前后端分离和微服务盛行的今天,API 文档是团队协作的“通用语言”。一份清晰、准确、实时同步的文档,能极大提升开发和联调效率。然而,手动编写和维护 API 文档(如 Word、Markdown 或 Postman)是一场永无止境的噩梦—…

N4200EX是一款全智能超声波检测仪产品简析

N4200EX是一款全智能超声波检测仪,适用于石油、石化、天然气、气体生产等行业的压力管路、阀门、设备的各种防爆场合气体泄漏、真空泄漏、阀门内漏检测。●本安防爆设计,防爆、防尘、防水、抗摔。●适应恶劣环境,可在-25℃超低温环境检测&…

NestJS @Inject 装饰器入门教程

一、核心概念解析 1.1 依赖注入(DI)的本质 依赖注入是一种设计模式,通过 IoC(控制反转)容器管理对象生命周期。在 NestJS 中,Injectable() 标记的类会被容器管理,而 Inject() 用于显式指定依赖项…

网络地址详解

子网划分详解:从 IP 地址结构到实际应用 在计算机网络中,子网划分是一项关键的技术,它能帮助我们更高效地管理 IP 地址资源,优化网络性能。要深入理解子网划分,首先需要从 IP 地址的基本结构说起。 一、IPv4 地址的基…

吾日三省吾身 | 周反思 8.19

上周一览总体来说,上个周是一个被项目驱使而险些丧失自主思考能力的危险阶段。相比任何有机械化工作经验的读者都有类似的体验,在手上打螺丝的无尽循环中,自己的脑子就会逐渐丧失对自身的感知以及自主思考的能力。而这个负循环一旦开始&#…

08.19总结

连通性 在无向图中,若任意两点间均存在路径相连,则该图称为连通图。 若删除图中任意一个顶点后,剩余图仍保持连通性,则该图为点双连通图。 若删除图中任意一条边后,图仍保持连通性,则该图为边双连通图。 在…

车e估牵头正式启动乘用车金融价值评估师编制

8月13日,汽车金融行业职业能力评价规范编制启动工作会议在广州圆满落幕。本次会议由中国机械工业联合会机械工业人才评价中心主办,广州穗圣信息科技有限公司(车e估)承办。会议汇聚了众多行业精英,包括中国机械工业联合…

清空 github 仓库的历史提交记录(创建新分支)

想在 现有仓库中创建一个新分支 master,删除原来的 main,然后把 master 重命名为 main,并且清空历史。可以用下面一条完整的命令序列操作: # 1. 创建一个没有历史的新分支 master git checkout --orphan master# 2. 添加当前所有文…

使用B210在Linux下实时处理ETC专用短程通信数据(2)-CPU单核高速数据处理

在上一篇文章中,使用Octave初步验证了ETC车联数据的格式。然而,Octave无法实时处理20M的采样带宽。我们本节通过C语言,重写 Octave程序,实现实时处理,涉及下面三个关键特点。 文章目录1. 全静态内存2. 使用环状缓存3 无…

Spark 运行流程核心组件(二)任务调度

1、调度策略参数默认值说明spark.scheduler.modeFIFO调度策略(FIFO/FAIR)spark.locality.wait3s本地性降级等待时间spark.locality.wait.processspark.locality.waitPROCESS_LOCAL 等待时间spark.locality.wait.nodespark.locality.waitNODE_LOCAL 等待时…

Orbbec---setBoolProperty 快捷配置设备行为

在奥比中光(Orbbec)SDK(通常称为ob库)中,setBoolProperty函数是用于设置设备或传感器的布尔类型属性的核心接口。它主要用于开启/关闭设备的某些功能或模式,是配置设备行为的重要方法。 函数原型与参数解析…

[OWASP]智能体应用安全保障指南

1.关键组件定义 KC1 生成式语言模型(Generative Language Models) KC1.1 大语言模型(LLMs):作为代理的“大脑”,基于预训练基础模型(如 GPT 系列、Claude、Llama、Gemini)&#xff…