Python笔记:在Pandas中处理NaN值

Pandas 中缺失值NaN的判断, 删除 及 替换 文章目录1. 检查缺失值NaN2. Pandas中NaN的类型3. NaN的删除 dropna()3.1 删除所有值均缺失的行/列3.2 删除至少包含一个缺失值的行/列3.3 根据不缺少值的元素数量删除行/列3.4 删除特定行/列中缺少值的列/行4. 缺失值NaN的替换(填充) fillna()4.1 用通用值统一替换4.2 为每列替换不同的值4.3 用每列的平均值,中位数,众数等替换4.4 替换为上一个或下一个值 当使用pandas读取csv文件时,如果元素为空,则将其视为缺失值NaN(Not a Num 阅读详情
AI摘要

本文介绍如何使用Pandas处理Python DataFrame中的缺失值(NaN),包括统计缺失值数量、删除含有缺失值的行或列、填充缺失值等方法。

关于NaN值

-在能够使用大型数据集训练学习算法之前,我们通常需要先清理数据, 也就是说,我们需要通过某个方法检测并更正数据中的错误。

  • 任何给定数据集可能会出现各种糟糕的数据,例如离群值或不正确的值,但是我们几乎始终会遇到的糟糕数据类型是缺少值。
  • Pandas 会为缺少的值分配 NaN 值。

创建一个具有NaN值得 Data Frame

import pandas as pd

# We create a list of Python dictionaries
# 创建一个字典列表
items2 = [{'bikes': 20, 'pants': 30, 'watches': 35, 'shirts': 15, 'shoes':8, 'suits':45},
{'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5, 'shirts': 2, 'shoes':5, 'suits':7},
{'bikes': 20, 'pants': 30, 'watches': 35, 'glasses': 4, 'shoes':10}]

# 创建一个DataFrame并设置行索引
store_items = pd.DataFrame(items2, index = ['store 1', 'store 2', 'store 3'])

# 显示
store_items

显示:

这里写图片描述

  • 数据量大时统计NaN的个数
# 计算在store_items中NaN值的个数
x =  store_items.isnull().sum().sum()

# 输出
print('在我们DataFrame中NaN的数量:', x)

输出:

在我们DataFrame中NaN的数量: 3
  • .isnull() 方法返回一个大小和 store_items 一样的布尔型 DataFrame,并用 True 表示具有 NaN 值的元素,用 False 表示非 NaN 值的元素。
store_items.isnull()

显示:

这里写图片描述

  • 在 Pandas 中,逻辑值 True 的数字值是 1,逻辑值 False 的数字值是 0。
  • 因此,我们可以通过数逻辑值 True 的数量数出 NaN 值的数量。
  • 为了数逻辑值 True 的总数,我们使用 .sum() 方法两次。
  • 要使用该方法两次,是因为第一个 sum() 返回一个 Pandas Series,其中存储了列上的逻辑值 True 的总数
  • 第二个 sum() 将上述 Pandas Series 中的 1 相加

除了数 NaN 值的数量之外,我们还可以采用相反的方式,我们可以数非 NaN 值的数量。为此,我们可以使用 .count() 方法

print('在我们DataFrame的列中具有非NaN值得数量分别为:\n', store_items.count())

输出:

在我们DataFrame的列中具有非NaN值得数量:
 bikes      3
glasses    2
pants      3
shirts     2
shoes      3
suits      2
watches    3
dtype: int64

处理这些 NaN 值

  • 如果 axis = 0,.dropna(axis) 方法将删除包含 NaN 值的任何行
  • 如果 axis = 1,.dropna(axis) 方法将删除包含 NaN 值的任何列
# 删除包含NaN值得任何行
store_items.dropna(axis = 0)

显示为:

这里写图片描述

store_items.dropna(axis = 1)

显示为:

这里写图片描述

注意:

  • .dropna() 方法不在原地地删除具有 NaN 值的行或列。
  • 原始 DataFrame 不会改变。你始终可以在 dropna() 方法中将关键字 inplace 设为 True,在原地删除目标行或列。

将NaN值替换为合适的值

我们不再删除 NaN 值,而是将它们替换为合适的值。例如,我们可以选择将所有 NaN 值替换为 0。为此,我们可以使用 .fillna() 方法

store_items.fillna(0)

显示:

这里写图片描述

  • 我们还可以使用 .fillna() 方法将 NaN 值替换为 DataFrame 中的上个值,称之为前向填充

  • .fillna(method = 'ffill', axis) 将通过前向填充 (ffill) 方法沿着给定 axis 使用上个已知值替换 NaN 值

store_items.fillna(method = 'ffill', axis = 0)

显示:

这里写图片描述

  • 注意 store 3 中的两个 NaN 值被替换成了它们所在列中的上个值。
  • 但是注意, store 1 中的 NaN 值没有被替换掉。因为这列前面没有值,因为 NaN 值是该列的第一个值。

现在,使用上个行值进行前向填充

store_items.fillna(method = 'ffill', axis = 1)

显示:

这里写图片描述

  • 在这种情况下:所有 NaN 值都被替换成了之前的行值

同时,也可以选择用 DataFrame 中之后的值替换 NaN 值,称之为后向填充

# 向后填充列,即为NaN的列值,用其列中的后一个来填充
store_items.fillna(method = 'backfill', axis = 0)

同理:也可以向后填充行,即为NaN的行值,用其行中的后一个来填充

# 向后填充行,即为NaN的行值,用其行中的后一个来填充
store_items.fillna(method = 'backfill', axis = 1)

注意:.fillna() 方法不在原地地替换(填充)NaN 值。也就是说,原始 DataFrame 不会改变。你始终可以在 fillna() 函数中将关键字 inplace 设为 True,在原地替换 NaN 值。

还可以选择使用不同的插值方法替换 NaN 值

  • .interpolate(method = 'linear', axis) 方法将通过 linear 插值使用沿着给定 axis 的值替换 NaN 值, 这个差值也就是前后或者上下的中间值
store_items.interpolate(method = 'linear', axis = 0)

同时,也可用行值插入

store_items.interpolate(method = 'linear', axis = 1)

和我们看到的其他方法一样,.interpolate() 方法不在原地地替换 NaN 值,图片就省略了。

Python中的Pandas详解-6-处理Nan的思路 正如之前提到的,在能够使用大型数据集训练学习算法之前,我们通常需要先清理数据。也就是说,我们需要通过某个方法检测并更正数据中的错误。虽然任何给定数据集可能会出现各种糟糕的数据,例如离群值或不正确的值,但是我们几乎始终会遇到的糟糕数据类型是缺少值。正如之前看到的,Pandas 会为缺少的值分配NaN值。在这,我们将学习如何检测和处理NaN值。首先,我们将创建一个具有一些NaN值的 DataFrame。可以清晰地看出,我们创建的 DataFrame 具有 3 个NaN值:商店 1 中有一个,商店 3 中有两个。 阅读详情

相关推荐

Pandas 模块-操纵数据(9)-分清楚 None 和 NaN 值,处理好 NaN 值

Python 中特殊的常量 None,None 和 False 不同,它不表示 0,也不表示空字符串,而表示没有值,也就是空值。numpy 模块中有三个常量 np.NAN 、np.nan 、np.NaN,这三个常量其实是一个东西。后面我们就只说 np.NaN 即可。 .isnull() 和.notnull() ,.isna() 和 .notna() 使用方法,都不区分 NaN 和 None值,这到底是为什么呢?

一分耕耘一分收获 6659

python之pandas中NaN与None的比较与处理

python之pandas中NaN与None的比较与处理

hutaotaotao的博客 6085

【Python】NaN值

在深入理解Python中(Not a Number)的表示之前,我们必须追溯到计算机科学的基石——浮点数的国际标准IEEE 754。并非一个随机的占位符,而是IEEE 754标准中明确定义的特殊浮点数值,用于表示不确定或无意义的计算结果。IEEE 754标准定义了两种主要的浮点数格式:单精度(32位)和双精度(64位)。Python的类型默认采用双精度浮点数。双精度浮点数由以下三个部分组成:一个标准的浮点数值 (V) 可以表示为: [ V = (-1)^{\text{符号位}} \times (1 + \t

宅男很神经 1798

pandas中对nan空值的判断和陷阱

pandas基于numpy,所以其中的空值nan和numpy.nan是等价的。numpy中的nan并不是空对象,其实际上是numpy.float64对象,所以我们不能误认为其是空对象,从而用bool(np.nan)去判断是否为空值,这是不对的。 对于pandas中的空值,我们该如何判断,并且有哪些我们容易掉进去的陷阱,即不能用怎么样的方式去判断呢? 可以判断pand......

S_o_l_o_n的博客 7万+

pandas中对nan值的处理dropna

假设现在有这样一组数据 数据中包含一些nan的值。我们多这个数据的可能操作有三种 1.去除一行全是nan的 2.去除一行包含有nan的 3.去除一行没有nan的 先看去除一行全是nan的,直接使用 df_part1.dropna(axis=0,how='all') 效果如下 可以看出了一行全是nan的已经被筛选没了。 现在来看第二种,去除一行中包含有nan的,可以使用以下代码 df_part1.dropna(axis=0,how='any') 具体效果没做,就不展示了(懒) 第三种是去除一种没有na

zr1213159840的博客 1754

SAP Script表单开发中ABAP preform方法的实战应用与调试技巧

本文深入探讨了在SAP Script表单开发中调用ABAP程序(preform方法)的实战应用与调试技巧。通过一个获取供应商版本名称的实例,详细讲解了如何在SE71中嵌入PERFORM指令、编写ABAP子程序进行数据查询与处理,并重点介绍了使用SAP Script Debugger进行高效调试的方法,帮助开发者灵活扩展表单功能,实现复杂业务逻辑。

o0p1q2r3的博客 554

Python数据分析实战笔记—Pandas库简介(1)

《Python数据分析实战》 1.Pandas:Python数据分析库 Pandas是一个专门用于数据分析的开源Python库。它能够以最简单的方式提供数据处理、数据抽取和数据操作所需的全部工具。 Pandas还有专门为数据分析设计的两个数据结构,Series和DataFrame。 Numpy主要是处理矩阵/数组。 2.Pandas数据结构—Series对象 pandas库的S...

yangyang的专栏 838

Renesas:定时器输入捕获

一、PWM输入捕获 1、Smart Configurator配置 注意:在使用前,需要使能对应的定时器!否侧无法正常进行输入捕获! 2、脉冲宽度的获取 如何区分高低电平的脉冲宽度:最常用的方法就是在触发中断后,判断IO口的高低电平,来确认是上升沿触发的中断还是下降沿触发的中断。 若无法进入中断,可查看:Renesas:配置中断的常规流程 (1)中断方式(Smart Configurator生成的代码) #pragma interrupt r_Config_TAUB0_0_i...

不吃鱼的猫的博客 2486

【Python系列】Python 中处理 NaN 值的技巧

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨。

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 2万+

Python-OpenCV及cv2,numpy库最新安装教程[最全步骤]

安装教程目录前言OpenCV-Python安装教程报错解决cv2安装numpy安装opencv安装(附加)总结 前言 首先,我知道一些看到我的Blog的人已经在网上找了很多歪路子,现在已经火冒三丈了(我也是这样过来的hhhh),那么现在,深呼吸,跟着我的教程,不要着急,每一步都要读一遍。完整安装过程需要1个小时左右(仅供参考,本人第一次安装python花了一天(确信)) OpenCV-Python...

qq_45425286的博客 7432

跟着Synopsys报告,一步步拆解车规芯片FMEDA计算(含公式与避坑点)

本文详细解析了车规芯片FMEDA计算的全流程,基于Synopsys报告拆解实战指南,涵盖基础失效率建模、安全机制效能评估及安全指标合成等关键步骤。通过公式解析、数据准备清单和避坑点分享,帮助工程师掌握ISO26262标准下的硬件量化分析技术,提升车载系统设计可靠性。

weixin_30460489的博客 195

Pandas 替换 NaN 值

NaN 代表 Not A Number,是表示数据中缺失值的常用方法之一。它是一个特殊的浮点值,不能转换为 float 以外的任何其他类型。NaN 值是数据分析中的主要问题之一。为了得到理想的结果,对 NaN 进行处理是非常必要的。, 可以替换为任意值,依照个人情况考虑。

uncle_ll的博客 1万+

避开PSRR仿真三大坑:用Cadence psspxf分析分频器时,这些设置错了白忙活

本文深入探讨了使用Cadence psspxf工具进行分频器PSRR仿真时常见的三大技术陷阱,包括扰动信号参数设置、收敛性优化和后处理信号提取。通过详细的参数推荐和实战技巧,帮助工程师避免仿真误差,提升PSRR分析效率与准确性,特别适用于16分频器等数字-模拟混合电路设计。

weixin_29258297的博客 303

python利用pandas读取.data文件并对nan进行处理

在数据挖掘的很多领域,数据内容往往以.data形式给出,因此读取data文件到矩阵中并对异常值进行处理就变得很重要了。

KI的博客 9万+

【MNE脑电信号处理学习笔记1】数据的读取、可视化、剪裁、滤波和保存

MNE之读取原始数据、可视化数据、剪裁数据、滤波和保存 Reading & visualizaing raw data, cropping, filtering, and saving 原视频教程:Pybrain: M/EEG analysis with MNE Python 原笔记和材料:pybrain_mne 本文根据视频和个人理解对原笔记进行细微修改。 Import the few packages we’ll need import matplotlib import pathlib i

小白家 4218

Python 爬虫实战:爬取去哪儿网酒店评价,提取住宿体验关键词

本文介绍了基于去哪儿网酒店评价数据的爬取与分析方法。首先通过分析网页结构和数据加载机制,定位到评价数据的JSON接口及关键参数。然后使用Python搭建爬虫环境,实现多页评价数据的批量采集与存储,并通过反爬策略确保数据获取的稳定性。在文本分析环节,采用jieba分词和TF-IDF算法提取高频关键词,结合词云可视化展示用户关注点。分析结果显示位置、服务、卫生是核心关注维度,同时识别出好评与差评的关键驱动因素。该方法为酒店服务优化和消费者决策提供了数据支持,并可通过扩展实现更深入的情感分析和竞品对比。

2503_91057718的博客 1000

有nan数怎么办python输出_在Pandas中处理NaN值的方法

关于NaN值-在能够使用大型数据集训练学习算法之前,我们通常需要先清理数据, 也就是说,我们需要通过某个方法检测并更正数据中的错误。- 任何给定数据集可能会出现各种糟糕的数据,例如离群值或不正确的值,但是我们几乎始终会遇到的糟糕数据类型是缺少值。- Pandas 会为缺少的值分配 NaN 值。创建一个具有NaN值得 Data Frameimport pandas as pd# We create ...

weixin_39629129的博客 1672

Esp32蓝牙Hid调用方案 http执行设备、鼠标、键盘相关操作

本文主要介绍 Esp32 蓝牙 Hid 相关的多种操作方式,详细的设备、鼠标、键盘相关操作的 http 调用方法。下面是整理出的所有 http 调用方法和 rhino 引擎方式。本机调用的话直接使用http://localhost:8080 如果是局域网调用则使用软件里的地址 比如我的是http://192.168.1.5:8080。文件地址: https://www.123865.com/s/Qtm4jv-xyZbd?使用前需要一块烧录好的ESP32板子并在手机安装好embedded软件用于蓝牙通信。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 571

python 温度插值nan处理_在Pandas中处理NaN值的方法

关于NaN值-在能够使用大型数据集训练学习算法之前,我们通常需要先清理数据, 也就是说,我们需要通过某个方法检测并更正数据中的错误。- 任何给定数据集可能会出现各种糟糕的数据,例如离群值或不正确的值,但是我们几乎始终会遇到的糟糕数据类型是缺少值。- Pandas 会为缺少的值分配 NaN 值。创建一个具有NaN值得 Data Frameimport pandas as pd# We create ...

weixin_42360905的博客 1501

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Python pandas,NaN的判断(isnull(),notnull()),NaN的处理,缺失处理,dropna(),fillna()

  demo.py(pandas,判断是否是NaN,isnull(),notnull()): # coding=utf-8 import numpy as np import pandas as pd # 创建DataFrame df = pd.DataFrame(np.arange(12, 32).reshape((5, 4)), index=["a", "b", "c", "d", ...

houyanhua1的专栏 3万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

从Python列表中删除Nan值

记录看到的问题及解决方法(亲测可用) 链接:从Python列表中删除Nan值-python黑洞网 问题:为什么这不起作用吗?我试图从我的python列表/数组中删除nan值。 import math import numpy as np def clean_List_nan(List): Myarray=np.array(List) x = float('nan') for elem in Myarray: if math.isnan(x):

hanwanbing的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

pandas怎么去除nan_删除python pandas中的NaN值

数据是来自人口普查数据的成年人收入,行看起来像:31, Private, 84154, Some-college, 10, Married-civ-spouse, Sales, Husband, White, Male, 0, 0, 38, NaN, >50K48, Self-emp-not-inc, 265477, Assoc-acdm, 12, Married-civ-spouse, P...

weixin_42530536的博客 5243

Python Pandas 异常数据处理:NaN 检查、填充与范围裁剪方法

本文介绍了在 pandas 中处理异常数据的常用方法,涵盖了 NaN 值的查找、移除、填充以及超出合理范围值的裁剪。通过 `isna()`、`dropna()`、`fillna()` 等方法,可以有效处理缺失数据。文章展示了如何按列均值或按规律填充缺失值,以及使用 `clip()` 函数限定数值范围,以避免异常值对分析结果的干扰。配合代码和图表示例,本文为数据清洗提供了实用的 pandas 操作技巧,使数据分析更加精确和直观。

敲代码别忘了喝上一杯凉白开。 2037

python 导入的nan怎么解决_python设置值及NaN值处理方法

如下所示:python 设置值import pandas as pdimport numpy as npdates = pd.date_range('20180101',periods=6)df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=['A','B','C','D'])print(df)A B C D2018-0...

weixin_39706441的博客 1026

python填充nan_Python Pandas Dataframe填充NaN值

三千列并不多。你有几排?您总是可以随机生成一个相同大小的数据帧并进行逻辑替换(数据帧的大小将决定这是否可行)。在如果您知道数据帧的大小:import pandas as pdimport numpy as np# create random dummy dataframedfrand = pd.DataFrame(data=np.random.randn(rows,cols))# import "...

weixin_39955925的博客 2110
上一篇: Python笔记:访问 Pandas DataFrame 中的元素
下一篇: Python笔记:Pandas DataFrame 加载数据的方式
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值