码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【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)
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    二、去掉无用的行

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

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

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

    三、 去掉全部为空值的列

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

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

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

    四、 去掉全部为空值的行

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

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

    在这里插入图片描述

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

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

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

    在这里插入图片描述

    六、将缺失的姓名填充

    df = df.fillna(method='ffill')
    print(df)
    
    • 1
    • 2

    在这里插入图片描述

    七、保存到excel中

    data_path_new = r"E:\VSCODE\2_numpy_pandas\pandas\data_new.xlsx"
    df.to_excel(data_path_new)
    
    • 1
    • 2
  • 相关阅读:
    第二十三章《斗地主游戏》第2节:系统功能实现
    从零开始的PICO教程(4)--- UI界面绘制与响应事件
    深度强化学习中深度Q网络(Q-Learning+CNN)的讲解以及在Atari游戏中的实战(超详细 附源码)
    卡尔曼家族从零解剖-(07) 高斯分布积分为1,高斯分布线性变换依旧为高斯分布,两高斯函数乘积仍为高斯。
    AVL平衡树的插入
    Linux安装frp并实现内网穿透
    使用scp把另外一台服务器上的文件夹/文件拷贝到当前服务器
    含文档+PPT+源码等]精品基于NET实现的旅游景点推荐系统[包运行成功]计算机毕业设计NET毕业设计项目源码
    条例26~30(实现)
    2530. 执行 K 次操作后的最大分数
  • 原文地址:https://blog.csdn.net/weixin_47139649/article/details/126850209
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号