pandas---缺失值的处理

news2024/11/28 6:26:10

1. 处理缺失值

判断数据中是否包含NaN: pd.isnull(df);pd.notnull(df)

存在缺失值nan:

删除存在缺失值的:dropna(axis='rows')

不会修改原数据,需要接受返回值;

替换缺失值:fillna(value, inplace=True)

value:替换成的值;inplace = True:会修改原数据,False:不替换修改原数据,生成新的对象

如果缺失值没有使用NaN标记,比如使用 " ?"先替换为np.nan,然后继续处理。

1.1 缺失值的类型

Python自带的None,是Python中的空对象。None不能参与到任何计算中。

object类型的运算要比int类型的运算慢得多。

Pandas中None与np.nan都视作np.nan。

np.nan是浮点类型,能参与到计算中。但计算的结果总是NaN。

可以使用np.nan*()函数来计算,此时会过滤掉nan。

比如np.nansum(df)

1.2 判断函数

isnull()    notnull()

df
df.isnull()
df.notnull()

all()  : 必须全部为True才会是True,类似and
any() : 只要有一个为True就为True,类似or 

# 找有空的列
df.isnull().any()   # 尽可能找到有空的列或行
# df.isnull().all()  # 必须全部都为空的行或列才会为True

# 找没有空的列
df.notnull().all()  # 尽量找没有空值的列或行
# df.notnull().any()
# 找有空的行
df.isnull().any(axis=1)

# 找没有空的行
df.notnull().all(axis=1)

 使用bool值索引过滤数据:

# 行过滤
cond = df.isnull().any(axis=1)
# display(~cond)  # 取反
df[~cond]

cond = df.notnull().all(axis=1)
df[cond]
# 过滤列
cond = df.isnull().any()
df.loc[:, ~cond]

cond = df.notnull().all()
df.loc[:, cond]

1.3 过滤函数

dropna():可以选择过滤的是行还是列(默认为行)。

使用dropna的前提是,缺失值的类型必须是np.nan。

# 默认删除有空的行
df.dropna()

df.dropna(axis=1)  # 删除有空的列

 也可以选择过滤的方式 how = 'all':

df.dropna(how='any')

# 必须所有数据都为nan才会删除
df.dropna(how='all', axis=1)

 inplace=True 修改原数据:

df2 = df.copy()
df2

# inplace=True 修改原数据
df2.dropna(inplace=True)
df2

 替换所有缺失值:

for i in movie.columns:
if np.all(pd.notnull(movie[i])) == False:
print(i)
movie[i].fillna(movie[i].mean(), inplace=True)

缺失值不是nan类型的,有默认标记的 :

以上数据在读取时,可能会报如下错误:

URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)>

 解决办法:

# 全局取消证书验证
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

先替换 ‘?’ 为np.nan:

df.replace(to_replace=, value=)

to_replace:替换前的值;value:替换后的值

# 把一些其它值标记的缺失值,替换成np.nan
wis = wis.replace(to_replace='?', value=np.nan)
# 在进行缺失值的处理
# 删除
wis = wis.dropna()

1.4 填充函数

fillna(value, inplace=True)

value:替换成的值;inplace = True:会修改原数据;False:不替换修改原数据,生成新的对象

# 填充nan
df.fillna(value=100)
df2 = df.copy()
df2.loc[1, 'B'] = np.nan
df2.loc[2, 'C'] = np.nan
df2
# limit: 限制填充的次数
df2.fillna(value=100, limit=1, inplace=True)

可以选择前向填充还是后向填充:

df.fillna(method='ffill')  # 向前填充
df.fillna(method='backfill')  # 向后填充

# method : {'backfill', 'bfill', 'pad', 'ffill', None}, default None
#     Method to use for filling holes in reindexed Series
#     pad / ffill: propagate last valid observation forward to next valid
#     backfill / bfill: use next valid observation to fill gap.
df.fillna(method='ffill', axis=1)  # 向左填充
df.fillna(method='backfill', axis=1)  # 向右填充

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于STM32的四旋翼无人机项目(一):基础知识篇

前言&#xff1a;本篇博客为飞控专栏的第一篇系统性概述文章&#xff0c;将对飞控系统进行详细讲解介绍。考虑到飞控项目具有一定工程复杂度&#xff0c;所以作者将整个项目进行分章节教学与讲解&#xff0c;希望可以给读者朋友带来更好地学习体验。项目将以 C-Quad 四轴无人机…

SpringBoot 中使用 JWT 案例分享详解

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

大模型LLM领域,有哪些可以作为学术研究方向?

清湛人工智能研究院 2023-05-31 09:23 发表于江苏 编者&#xff1a;本文转载了清华大学计算机系刘知远教授对大模型的一些思索&#xff0c;以飨读者。 刘知远 CCF 高级会员&#xff0c;CCCF 前编委。清华大学计算机系副教授、博士生导师。已在ACL、IJCAI、AAAI等人工智能领域…

回归预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于GRU-AdaBoost门…

单品GMV破千万,这些品类正在抖音热卖

优势品类及核心产品能更好触达消费者&#xff0c;以较低的成本让用户感知品牌&#xff0c;塑造品牌力。 抖音作为品牌最核心的线上渠道之一&#xff0c;该如何找到平台优势品类&#xff1f;制定品牌营销策略&#xff1f;有效提升产品销量呢&#xff1f; 近期&#xff0c;新抖上…

【CesiumJS入门】(4)加载3D Tiles并获取tileset

前言 本次&#xff0c;我们将写一个函数来加载3D Tiles数据&#xff0c; 3D Tiles数据的文档&#xff1a;CesiumGS/3d-tiles: Specification for streaming massive heterogeneous 3D geospatial datasets (github.com) 同时我们将获取加载成功后的tileset数据集&#xff08;有…

Python 中错误 ImportError: No Module Named Sklearn

在 Python 中,sklearn 被用作机器学习工具,用于在回归、集群等方面创建程序。很多时候,导入它会抛出错误—— No module named sklearn。 这意味着由于安装错误、无效的 Python 或 pip 版本或其他问题,系统无法找到它。 Python中错误ImportError: No module named sklearn…

基于Java营业厅宽带系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

Karl Guttag评Vision Pro:比Quest Pro做了更多正确选择

上周苹果正式发布Vision Pro&#xff0c;尽管要到明年才发售&#xff0c;但光学领域的专业博主Karl Guttag也发表了自己的看法。他提到&#xff1a;目前受邀体验的媒体中要不是苹果粉丝、要不就是对AR、VR了解比较少&#xff0c;没有我看到“批判性思维”或太多对技术分析的内容…

MySQL常用操作(一)

创建表 create table user(id int unsigned primary key not null auto_increment,name varchar(50) unique not null,age tinyint not null,sex enum(M, W) not null )engineINNODB default charsetutf8;# 查看创建表语句 show create table user两种插入方式比较 # 方式1 i…

加速千行百业转型,华为如何为智能世界构建感知底座

导读&#xff1a;感知正成为行业数字化的新引擎。 我们正在迈进一个万物感知的时代。 日常生活中&#xff0c;感知已经无处不在。小到智能家居的控制系统&#xff0c;大到智慧城市虚实联动的数字孪生&#xff0c;感知是一切智能化的前提&#xff0c;也是行业数字化转型的基础。…

如何恢复被隔离的u盘数据?2种恢复u盘隔离数据的方法

很多时候&#xff0c;我们可能会因为各种原因导致U盘数据丢失&#xff0c;比如误删、格式化等情况。但最近有一位朋友咨询小编关于U盘文件被隔离的问题&#xff0c;他在使用U盘时发现有些文件被隔离了&#xff0c;想知道如何恢复。其实&#xff0c;U盘文件被隔离可能是由于存在…

记录--为什么推荐用svg而不用icon?

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 使用背景&#xff1a; 1.因为svg图标在任何设备下都可以高清显示&#xff0c;不会模糊。而icon会在显卡比较低的电脑上有显示模糊的情况 2.svg图标在页面render时 速度会比icon稍微快一点 3.实现小程序…

Hightopo 使用心得(3)- 吸附与锚点

吸附与锚点是 HT for Web 中两个比较重要的概念。这两个概念在执行交互和动画时会经常被用到。 吸附&#xff0c;顾名思义&#xff0c;是一个节点吸附到另一个节点上。就像船底的贝类一样&#xff0c;通过吸附到船身&#xff0c;在船移动的时候自己也会跟着移动&#xff1b;而…

研究显示,超过一半的安全领导者对保护应用程序机密缺乏信心

这可能会让人感到意外&#xff0c;但秘密管理已经成为AppSec房间里的大象。虽然像常见漏洞和暴露(cve)这样的安全漏洞经常成为网络安全领域的头条新闻&#xff0c;但秘密管理仍然是一个被忽视的问题&#xff0c;可能会对企业安全产生直接而有影响的后果。 《卫报》最近的一项研…

AUTOSAR通信篇 - CAN网络通信(四:CanSM)

文章目录 简述CAN网络状态机触发器PowerOnCanSM_InitCanSM_DeInitT_START_WAKEUP_SOURCET_STOP_WAKEUP_SOURCET_FULL_COM_MODE_REQUESTT_SILENT_COM_MODE_REQUESTT_NO_COM_MODE_REQUESTT_BUS_OFF 防护条件G_FULL_COM_MODE_REQUESTEDG_SILENT_COM_MODE_REQUESTED 作用E_PRE_NOCO…

Question Log

Question Log 提示&#xff1a;记录一下平常遇到的坑 Question Log&#xff08;★ &#xff1e; &#xff09; Question LogⅠ、★ &#xff1e; 使用VsCode构建Unity开发环境1.环境配置2.遇到的相关问题★.The .NET Core SDK cannot be located: A valid dotnet installation …

【Flutter】Flutter 使用splashscreen包创建启动页面

文章目录 一、 前言二、 什么是启动页面和 splashscreen三、 如何安装和使用 splashscreen四、 详细的代码示例&#xff1a;使用 splashscreen 创建启动页面五、 总结 一、 前言 大家好&#xff0c;今天我们要聊一聊如何在 Flutter 中使用 splashscreen 包来创建一个漂亮的启动…

使用Fiddler模拟网络

Fiddler已经预置提供了模拟Modem速度的选项&#xff0c;其位置位于&#xff1a; Rules->Performances->Simulate Modem Speeds 果你想学习Fiddler抓包工具&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站播放全网第一的Fiddler抓包工具教程&#x…

【道友避坑】yolov5视频抽帧构建数据集

写在前面&#xff1a;本篇博客记录了yolov5视频抽帧构建数据集的全过程。 目录 一、 视频材料准备 二、数据集构建 三、运行数据集 一、 视频材料准备 1. 在yolov5-master下创建mydata目录&#xff0c;然后创建video目录和images目录、labels目录 2. 下载一个一两分钟的视频…