当前位置: 首页 > news >正文

【Pandas总结】第四节 Pandas 缺失值处理(通过实例进行演示)

文章目录

  • 核心知识点
    • 一、检测空值: `isnull()` `notnull()`
    • 二、删除空值: `dropna()`
    • 三、填充空值: `fillna()`
  • 实例
    • 结果对比
    • 一、读入数据
    • 二、去掉无用的行
    • 三、 去掉全部为空值的列
    • 四、 去掉全部为空值的行
    • 五、将成绩为NaN的单元格,填充为0
    • 六、将缺失的姓名填充
    • 七、保存到excel中

核心知识点

一、检测空值: isnull() notnull()

df.isnull()df.notnull() :用于检测dataframe 或者 series
在这里插入图片描述

二、删除空值: dropna()

格式:df.dropna(DataFrame, axis='',how='', inplace='')

参数说明
DataFrame待处理的df
axis删除行还是删除列,传入0或者’index’ 代表行,传入1或者’columns’ 代表列
how‘any’ 表示任何值为空都删除,‘all’ 表示所有值为空才删除
inplaceTrue 表示修改当前df; false 表示返回修改后的df, 默认为false

举例可以参考下面的实例;

三、填充空值: fillna()

格式:df.fillna(value='', method='', axis='',inplace='')

参数说明
value用于填充的值,可以是单个值或者字典(key是列名,value是用于填充的值)
method‘ffill’:即forword fill ,使用前一个不为空的值进行填充
‘bfill’:即backfill, 使用后一个不为空的值进行填充
axis删除行还是删除列,传入0或者’index’ 代表行,传入1或者’columns’ 代表列
inplaceTrue 表示修改当前df; false 表示返回修改后的df, 默认为false

举例可以参考下面的实例;

实例

现实中,经常有一些非常漂亮的Excel, 例如下面的例子中的Excel。 这种Excel虽然好看,但是却不满足数据处理的要求,数据处理时,需要的是一个标准的表格,不包含合并单元格等这些格式; 这就需要我们对数据进行处理,这里举一个例子,供大家参考:

结果对比

处理前: 好看但不好用!
在这里插入图片描述

处理后:不好看,但好用!
在这里插入图片描述

一、读入数据

data_path=r"E:\VSCODE\2_numpy_pandas\pandas\data.xlsx"
df=pd.read_excel(data_path)
print(df)

在这里插入图片描述

二、去掉无用的行

可以看到,读出的数据并非是我们想要的,我们需要的数据只有蓝色区域内,这时我们需要对读入的数据进行处理;首先我们需要把无用的行去掉,这里可以使用pd.read_excel 函数中的参数来修改,详细的内容可以参考:【Pandas总结】第二节 Pandas 的数据读取_pd.read_csv()的使用详解 , 将代码修改为:

df=pd.read_excel(data_path,skiprows=2)

这样处理后,打印的结果为:
在这里插入图片描述

三、 去掉全部为空值的列

使用drop.na 来处理全部为空值的列;

df.dropna(axis="columns",how="all",inplace=True)
print(df)

可以看到,全部为空值的列没有了;
在这里插入图片描述

四、 去掉全部为空值的行

与去除列的方式一样,只要将axis的参数改为rows, 即可删除全部为空值的列;代码如下:

df.dropna(axis="rows",how="all",inplace=True)
print(df)

在这里插入图片描述

五、将成绩为NaN的单元格,填充为0

使用fillna() 来处理全部为空值的列;

df = df.fillna({"成绩":0})
print(df)

在这里插入图片描述

六、将缺失的姓名填充

df = df.fillna(method='ffill')
print(df)

在这里插入图片描述

七、保存到excel中

data_path_new = r"E:\VSCODE\2_numpy_pandas\pandas\data_new.xlsx"
df.to_excel(data_path_new)

相关文章:

  • 【C#】复杂Json的反序列
  • 使用VsCode搭建Vue开发环境
  • RK3568+Codesys ARM+LINUX硬件平台的软PLC解决方案
  • 三、python基础——六大基本数据类型
  • 用Python进行数学建模(二)
  • 你把 《时间》 玩明白
  • 飞桨机器学习最小实现,出租车计费规则预测
  • 【andriod】设备APP开发之各种细节部署和操作
  • 矩阵论习题1.1
  • OAuth2-单点-多点-三方登录
  • SSO 基于token vue + element ui spring boot前端分离
  • pandas:jupyter notebook笔记(更新中)
  • 牛客网刷题——JAVA
  • Tpflow V6.0.8 正式版发布
  • 中缀转后缀表达式(思路分析) [数据结构][Java]
  • java8 Stream Pipelines 浅析
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript标准库系列——Math对象和Date对象(二)
  • mysql 5.6 原生Online DDL解析
  • React的组件模式
  • redis学习笔记(三):列表、集合、有序集合
  • scrapy学习之路4(itemloder的使用)
  • vue-cli在webpack的配置文件探究
  • 安卓应用性能调试和优化经验分享
  • 关于 Cirru Editor 存储格式
  • 力扣(LeetCode)965
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 三栏布局总结
  • 我的面试准备过程--容器(更新中)
  •  一套莫尔斯电报听写、翻译系统
  • 国内开源镜像站点
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​如何在iOS手机上查看应用日志
  • (+4)2.2UML建模图
  • (03)光刻——半导体电路的绘制
  • (三分钟)速览传统边缘检测算子
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 材料检测系统崩溃分析
  • .Net下的签名与混淆
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [BUUCTF]-Reverse:reverse3解析
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)
  • [codevs 2822] 爱在心中 【tarjan 算法】
  • [Delphi]一个功能完备的国密SM4类(TSM4)[20230329更新]