Python EXCEL 理论探究:格式转换时处理缺失值方法

python 缺失值筛选_Python练习:数据缺失值处理 使用Excel自建了一个数据集,作为演示数据,如下:可见,数据中存在部分缺失值。第一步:读入excel文件。这里需要使用pandas库中的read_excel()函数。初次使用这个函数,可以看一看帮助文档~一个很小的技巧,使用help()查看帮助文档时,第一,一定要明确函数所在的库名。第二,函数后面不能加(),否则会报错。错误原因是函数没有参数。因为,当函数本身是要输入参数的,一旦我们添加了括号,... 阅读详情

使用 Python(特别是 pandas 的 read_excel() 函数)读取 Excel 文件时,处理各种错误值和空缺值是数据清洗的关键第一步。

1. Excel 中的错误类型和空缺类型

类型Excel 中的表现示例/原因
空单元格完全没有任何内容未输入数据
公式错误值#DIV/0!, #N/A, #NAME?, #NULL!, #NUM!, #REF!, #VALUE!公式计算错误、引用失效等
表示为空字符串一个单引号 ' 或公式 =""用户手动输入或公式返回以表示“无”
表示为文本的“空”字符串如 "null", "NULL", "NA", "N/A", "缺失"用户习惯性输入
数字格式的“空”数字如 -999, 0有时被用作占位符或缺失值代码

2. pandas 默认读取行为

当使用 pd.read_excel(‘file.xlsx’) 时,pandas 会按照一套默认规则来处理上述情况:

  1. 真正的空单元格:

    • 默认转换为 NaN(Not a Number),这是 pandas 中标记缺失值的标准标量值。在 DataFrame 中显示为 NaN。
  2. Excel 公式错误值(如 #DIV/0!, #N/A):

    • 行为因 pandas 和引擎版本而异,但通常也会被转换为 NaN。
      • 现代版本的 openpyxl 和 xlrd 引擎通常能很好地处理,将这些错误直接解析为 NaN,这是最理想的情况。
      • 在某些旧版本或特定环境下,这些错误值可能导致读取过程抛出异常,而不是安静地转换为 NaN。最佳实践是预先处理或之后检查。
  3. 空字符串 "":

    • 默认被保留为 Python 的空字符串对象 "",不会被转换为 NaN。
    • 这意味着 DataFrame 可能会混合两种“空”:NaN(来自真正空单元格)和 ""(来自空字符串)。这在后续处理时需要特别注意,因为 df[‘col’].isna() 会过滤掉 NaN,但不会过滤掉 ""。
  4. 文本字符串(如 “NULL“, “NA“, “N/A“):

    • 默认被保留为普通的字符串 "NULL", "NA", "N/A"。它们不会被自动识别为缺失值。

3. 主动控制和处理:read_excel() 的关键参数

na_values 参数

这是最重要的参数,用于指定哪些附加的字符串应被识别为 NaN/缺失值。

  • 作用:提供一个列表,列表中的每个值在读取时都会被转换为 NaN。
  • 示例:
    import pandas as pd
    
        # 将常见的表示“空”的字符串和数字都识别为 NaN
    df = pd.read_excel(
        'data.xlsx',  # 文件名使用英文单引号
        na_values=['', '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN',
                   '-NaN', '-nan', '1.#IND', '1.#QNAN', '<NA>', 'N/A',
                   'NA', 'NULL', 'NaN', 'n/a', 'nan', 'null', '缺失', -999, 0] 
    )
    
    • 这样,Excel 中无论是真正的空单元格、还是用户输入的 “NA"、“NULL”,甚至是占位数字 -999 或 0,都会被统一转换为 pandas 的 NaN,极大简化后续处理。

keep_default_na 参数

这个参数与 na_values 配合使用,控制是否保留 pandas 默认的缺失值识别列表。

  • keep_default_na=True (默认值):

    • pandas 会使用其内置的长列表(包括空字符串 ""、"#N/A"、"#N/A N/A"、"#NA"、"-1.#IND"、"-1.#QNAN"、"-NaN"、"-nan"、"1.#IND"、"1.#QNAN"、"<NA>"、"N/A"、"NA"、"NULL"、"NaN"、"n/a"、"nan"、"null")来识别缺失值。
    • 再加上 na_values 中指定的任何值。
  • keep_default_na=False:

    • 只有 na_values 参数中指定的值才会被识别为 NaN。
    • False: 关闭pandas 所有的默认缺失值识别。
    • 真正的空单元格仍然会被转换为 NaN,不受此参数影响。
    • 使用场景:当用户想要完全自定义什么才算是缺失值时。例如,如果数据中合法地包含了 "NA" 这个字符串(如国家代码)。
    # 只将我自定义的值视为缺失值,忽略pandas的所有默认设置
    df = pd.read_excel(
        ‘data.xlsx‘,
        keep_default_na=False,
        na_values=[‘自定义空‘, ‘无效值‘, -1] # 只有这三个和真正空单元格会是NaN
    )
    

4. 读取后的检查和处理

  1. 检查缺失值:

    # 显示每列的缺失值总数
    print(df.isna().sum())
    
    # 显示整个DataFrame的缺失值热力图(用于可视化)
    import seaborn as sns
    sns.heatmap(df.isna(), cbar=False)
    
  2. 处理混合的空字符串和 NaN:
    如果读取时没有使用 na_values 处理空字符串 "",数据中就会混合了 NaN 和 ""。

    # 方法一:将空字符串替换为 NaN(推荐,便于统一处理)
    df.replace(‘‘, pd.NA, inplace=True) # 对于字符串列,pd.NA 是新的缺失值标志
    # 或者更通用的写法
    df = df.replace(‘‘, np.nan) # 对于混合类型数据,np.nan 更通用
    
    # 方法二:统一过滤(查找所有“空”,包括NaN和空字符串)
    # isnan() 不认识字符串,所以需要组合条件
    empty_mask = df[‘column_name‘].isna() | (df[‘column_name‘] == ‘‘)
    
  3. 处理意外残留的错误值:
    极少数情况下,可能有错误值没被正确转换,在 DataFrame 中显示为字符串,如 ‘#DIV/0!‘。

    # 手动将它们替换为 NaN
    error_list = [‘#DIV/0!‘, ‘#NAME?‘, ‘#NUM!‘, ‘#VALUE!‘, ‘#REF!‘, ‘#NULL!‘]
    df = df.replace(error_list, np.nan)
    

最佳实践总结

  1. 显式优于隐式:不要依赖默认行为。在读取 Excel 时,始终使用 na_values 参数来明确指定哪些值应被视为缺失值。
  2. 理解 keep_default_na:判断是 扩充 默认列表(keep_default_na=True)还是 替换 (keep_default_na=False)。
  3. 读取后立即验证:使用 df.info() 和 df.isna().sum() 快速检查数据类型和缺失值情况。
  4. 统一“空”的表示:确保 DataFrame 中只有一种表示缺失值的方式(通常是 NaN/pd.NA),而不是混合着 NaN、""、“NULL” 等。这为后续的填充、删除或计算操作扫清障碍。
  5. 注意数据类型:强制转换错误值或占位数字(如 -999)为 NaN 后,相关列的数据类型可能会发生变化(例如从 int64 变为 float64),这是正常现象,因为整数类型无法原生表示 NaN。
数据清洗---缺失值处理 阅读详情

相关推荐

Pandas模块:读入excel/csv文件,过滤重复值和缺失值处理

Pandas模块:读入excel/csv文件,过滤重复值和缺失值处理 首先导入Pandas模块 import pandas as pd

qq_44039983的博客 5522

Pandas读写Excel文件

本篇介绍Pandas读写Excel文件基本操作,并提供示例代码,帮助快速掌握Pandas与Excel的交互方法。

记录应用与学习笔记,Python、算法、工具、踩坑... 3083

关于【中孚计算机终端保密检查系统】的卸载

卸载中孚计算机终端保密检查系统

码农之路,向死而生 4万+

python无法识别Excel数值缺失

python无法识别Excel数据缺失值解决 我的excel表格是这样的,但是缺失值在pandas上无法识别出来,经过排查,我发现是我的这份excel表格的缺失值使用空格键打上了,导致python无法识别缺失值。

m0_60092139的博客 589

windchill安装搭建(保姆式)

保姆式搭建windchill 材料准备 Vmware工具,用来创建和打开虚拟机的工具 安装系统的镜像文件 数据库安装文件,这里是Oracle数据库 Windchill的安装包 Vmware工具,用来安装和打开虚拟机的软件 Windowsserver2008的镜像工具,用来安装虚拟机环境的系统,如果你有win2007或win2010的也可以,在做虚拟机时,需要先安装系统。 Oracle数据库安装包 Windchill11M030的安装包 (安装包如有需要可以私信邮箱发送) 虚拟机安装 安装虚拟机VMware

tr1294937662的博客 6219

ensp VRRP+MSTP综合性实验

网络结构拓扑图 实验要求 要求: 1、全网互通,IP地址任意规划,路径最优,无环路。 2、AR1上面有一个loopback口,ip地址为1.1.1.1/24, 要求所有电脑能访问。 3、vlan10通过LSW1访问1.1.1.1,当LSW1出现问题即使 g0/0/1故障亦能通过lsw2访问。 vlan30通过LSW2访问1.1.1.1,当LSW2出现问题即使 g0/0/1故障亦能通过lsw1访问。 4、LSW1为vlan10的主根,vlan30的备根。 LSW2为vlan30的主根,vlan1

qq_45631844的博客 1万+

Python如何处理excel中的空值和异常值

对于普通人来说,觉得编程和自己日常的工作风马牛不相及。其实我还是建议学一下python,因为很多人的工作都是离不开与word和excel这些软件打交道。有时很多文档的处理都是重复性的规律性工作,而使用编程来完成这些工作最适合不过。前两年与文档打交道特别多,会遇到一些例如写cosmic、excel中提取文本生成word等工作。于是我就打算开发一些小工具,在对比了Java和python的开发和使用简易性之后,我义无反顾选择了python。

CatchLight的博客 1873

夏令营纪实——东南大学计科院&PALM实验室面试全解析

本文详细解析了东南大学计科院与PALM实验室夏令营的面试全流程,包括前期准备、技术考察、项目经验深挖等关键环节。特别针对自然语言处理(NLP)和机器学习(ML)领域的高频问题提供应对策略,帮助申请者提升面试表现。文章还分享了实用的准备技巧和面试经验,为有意向参加该夏令营的学生提供宝贵参考。

convnet3designer的博客 459

Pandas对缺失值的处理-pandas处理excel表格缺失值

目录 原始数据: 最后输出数据: 处理步骤: 1、读取数据: 2、删除全是空值的列 3、删除全是空值的行 4、将分数列值为NAN(空值)的填充为0分 5、将姓名的缺失值进行填充 6、将清洗好的数据保存到指定excel中 原始数据: 最后输出数据: 处理步骤: 1、读取数据: 2、删除全是空值的列 3、删除全是空值的行 4、将分数列值为NAN(空值...

qinzaoxiaozhu的专栏 7135

4.Simulink基础建模操作——加减乘除运算

加减乘除运算

FPGA/MATLAB学习教程/源码/项目合作开发 9553

嵌入式工程师必学(9):USB 3.0协议理解

USB3.0和USB2.0相比,在线缆上从4根线(Vbus、GND、D+、D-)变为了8根线(Vbus、GND、D+、D-、SSRX+\SSRX-\SSTX+\SSTX-),可见增加的4根线都是和超速相关的,新增加的超速有两类,分别为:超速Gen1(5.0Gbps),超速+Gen2(10Gbps),还兼容USB2.0的3类速率:low-speed(1.5Mbps),full-speed(12Mbps),andhigh-speed(480Mbps)。从设计可以看出,USB3....

码农17年的博客 1万+

Python数据分析中缺失值处理方法

导入数据 import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False data = pd.read_excel("data/attacks.xlsx"...

Lavency的博客 7484

组态王与DLT645-2007电能表通讯调试总结

组态王与电力协议DLT 645-2007调试总结 DLT 645-2007是多功能电能表通信协议,该标准由中国电力企业联合会2006年提出,该协议为主-从结构的半双工通信方式。手持单元或其它数据终端为主站,多功能电能表为从站。每个多功能电能表均有各自的地址编码。通信链路的建立与解除均由主站发出的信息帧来控制。帧是传送信息的基本单元,每帧由帧起始符、从站地址域、控制码、数据域长度、数据域、帧信息纵向校验码及帧结束符7个域组成,每部分由若干字节组成,帧格式如图1所示。 1.确定设备地址 地址域由 6 个字节构

逍遥子的博客 1万+

python数据预处理之缺失值的各种填补方式

对于数据挖掘的缺失值的处理,应该是在数据预处理阶段应该首先完成的事,缺失值的处理一般情况下有三种方式: (1)删掉缺失值数据 (2)不对其进行处理 (3)利用插补法对数据进行补充 第一种方式是极为不可取的,如果你的样本数够多,删掉数据较少,这种情况下还是可取的,但是,如果你的数据本身就比较少,而且还删除数据,这样会导致大量的资源浪费,将丢弃了大量隐藏在这些记录中的信息.利用插值法对数据进行补充,是极为推荐的一个方式. 常见的插补法有以下几种: 1.用固定值插补 #输出文件名 outp.

我是小曾,欢迎来到我的博客 2万+

2024年03月CCF-GESP编程能力等级认证Python编程一级真题解析

小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?( ) A. 小程序 B. 计时器 C. 操作系统 D. 神话人物

人生就是一个不断学习的过程 1029

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python缺失值处理实现

在数据处理相关工作中,读取的数据中常常会有缺失值的情况,为顺利进行后续的操作,需要首先对缺失值进行处理,处理的方式一般为**删除**或**填充**,Python中提供了专门的工具包,可以方便地进行实现。读取操作可以由pandas模块实现,通常直接读一个excel或csv文件,创建为DataFrame对象,模块中的dropna方法和fillna方法可以实现对缺失值的删除和填充。

归去来兮的博客 2324

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Python处理EXCEL】基础操作篇2:Python对EXCEL数据的预处理

用python处理excel的基础操作的第二篇。

Deng333333555的博客 9051

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python处理csv中的缺失值_python 检查数据中是否有缺失值,删除缺失值的方式

python 检查数据中是否有缺失值,删除缺失值的方式# 检查数据中是否有缺失值np.isnan(train).any()Flase:表示对应特征的特征值中无缺失值True:表示有缺失值通常情况下删除行,使用参数axis = 0,删除列的参数axis = 1,通常不会这么做,那样会删除一个变量。print(df.dropna(axis = 0))以上这篇python 检查数据中是否有缺失值,删除缺...

weixin_39991055的博客 8892

使用 Python 自动处理 Excel 数据缺失值的完整指南

通过上述方法,你可以快速自动化处理 Excel 文件中的缺失值,为后续分析奠定基础。如果需要更复杂的处理(如插值、预测填充),可以结合其他库(如clevercsv或pandas的方法)进一步优化。下一步建议尝试用mode()替换,对比结果差异。对清洗后的数据进行可视化分析(如用matplotlib或seaborn封装为可复用的函数,集成到数据分析工作流中。希望这篇博客能帮助你高效处理数据缺失值!如果有任何问题或改进想法,欢迎在评论区交流。

东方佑 1722

使用Python快速处理Excel操作笔记四:表格数据缺失值与异常值的处理

1、缺失值 当读取csv文件或者excel文件生成DataFrame时,某些单元格的数据是缺失的,缺失的部分会显示为NaN,None或者NaT(取决于单元格的数据类型) NaN 表示数字类型的缺失值 NaT 表示时间类型的缺失值 None 表示字符串类型的缺失值 实际项目中,如果缺失值一直存在原始的数据源总,后续数据分析时很可能有错误的结果 需要根据实际情况进行抉择,来降低缺失值对于分析结果的影响 a 按单元格查看缺失值情况 使用isna函数 # 假设data_info为已经读取为DataFrame da

wait me的博客 9983

【Python】用 Python 处理 Excel 的 14 个常用操作

自从学了Python后就逼迫用Python来处理Excel,所有操作用Python实现。目的是巩固Python,与增强数据处理能力。

Trb401012的博客 4102

利用Python处理Excel数据

目录 读取数据 显示数据 显示数据的行与列数 查看数据格式dtpyes 显示列名 添加默认的列名 显示数据后5行 显示数据唯一值 跳过文件的第i行不读取 对缺失值进行识别 数据清洗 处理空值 更改数据格式 更改列名称 删除重复值 对列表内的值进行替换 数据预处理 对数据进行排序 数据分组 数据分列 数据提取 按标签提取 按位置提取 按标签和位置提取 按条件提取 从合并的数值中提取出指

liuyq859的博客 13万+

python pandas缺失值处理_Python Pandas对缺失值的处理方法

Pandas使用这些函数处理缺失值:isnull和notnull:检测是否是空值,可用于df和seriesdropna:丢弃、删除缺失值axis : 删除行还是列,{0 or ‘index', 1 or ‘columns'}, default 0how : 如果等于any则任何值为空都删除,如果等于all则所有值都为空才删除inplace : 如果为True则修改当前df,否则返回新的dffill...

weixin_39870664的博客 714

pandas中如何处理缺失值

大多机器学习算法不能处理缺失的特征,因此先创建一些函数来处理特征缺失的问题。当在一些.csv文件中缺少某些值的时候,一般有三种方法解决: 1 去掉对应的整个属性 2 去掉缺失值所在的数据 3 将缺失值进行赋值 在pandas中,用 DataFrame 的 dropna() ,drop() ,和 fillna() 方法,可以方便地实现: #去掉缺失值所在数据 data.dropna(su...

wang959512421的博客 2660

Python Pandas缺失值处理

Python Pandas缺失值处理 在一些数据分析业务中,数据缺失是我们经常遇见的问题,缺失值会导致数据质量的下降,从而影响模型预测的准确性,这对于机器学习和数据挖掘影响尤为严重。因此妥善的处理缺失值能够使模型预测更为准确和有效。 为什么会存在缺失值? 前面章节的示例中,我们遇到过很多 NaN 值,关于缺失值您可能会有很多疑问,数据为什么会丢失数据呢,又是从什么时候丢失的呢?通过下面场景,您会得到答案。 其实在很多时候,人们往往不愿意过多透露自己的信息。假如您正在对用户的产品体验做调查,在这个过程中您会发

ccc369639963的博客 3814
上一篇: EXCEL VBA 清空Excel工作表(Sheet)的方法
下一篇: Excel VBA 自动生成文件夹框架
偷心伊普西隆
博客等级 码龄7年 511粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值