Python Pandas对缺失值的处理方法


Posted in Python onSeptember 27, 2019

Pandas使用这些函数处理缺失值:

  • isnull和notnull:检测是否是空值,可用于df和series
  • dropna:丢弃、删除缺失值
    • axis : 删除行还是列,{0 or ‘index', 1 or ‘columns'}, default 0
    • how : 如果等于any则任何值为空都删除,如果等于all则所有值都为空才删除
    • inplace : 如果为True则修改当前df,否则返回新的df
  • fillna:填充空值
    • value:用于填充的值,可以是单个值,或者字典(key是列名,value是值)
    • method : 等于ffill使用前一个不为空的值填充forword fill;等于bfill使用后一个不为空的值填充backword fill
    • axis : 按行还是列填充,{0 or ‘index', 1 or ‘columns'}
    • inplace : 如果为True则修改当前df,否则返回新的df
import pandas as pd

实例:特殊Excel的读取、清洗、处理

步骤1:读取excel的时候,忽略前几个空行

studf = pd.read_excel("./datas/student_excel/student_excel.xlsx", skiprows=2)
studf

Unnamed: 0 姓名 科目 分数
0 NaN 小明 语文 85.0
1 NaN NaN 数学 80.0
2 NaN NaN 英语 90.0
3 NaN NaN NaN NaN
4 NaN 小王 语文 85.0
5 NaN NaN 数学 NaN
6 NaN NaN 英语 90.0
7 NaN NaN NaN NaN
8 NaN 小刚 语文 85.0
9 NaN NaN 数学 80.0
10 NaN NaN 英语 90.0

步骤2:检测空值

studf.isnull()

Unnamed: 0 姓名 科目 分数
0 True False False False
1 True True False False
2 True True False False
3 True True True True
4 True False False False
5 True True False True
6 True True False False
7 True True True True
8 True False False False
9 True True False False
10 True True False False
studf["分数"].isnull()
0 False
1 False
2 False
3 True
4 False
5 True
6 False
7 True
8 False
9 False
10 False
Name: 分数, dtype: bool
studf["分数"].notnull()
0 True
1 True
2 True
3 False
4 True
5 False
6 True
7 False
8 True
9 True
10 True
Name: 分数, dtype: bool
# 筛选没有空分数的所有行
studf.loc[studf["分数"].notnull(), :]

Unnamed: 0 姓名 科目 分数
0 NaN 小明 语文 85.0
1 NaN NaN 数学 80.0
2 NaN NaN 英语 90.0
4 NaN 小王 语文 85.0
6 NaN NaN 英语 90.0
8 NaN 小刚 语文 85.0
9 NaN NaN 数学 80.0
10 NaN NaN 英语 90.0

步骤3:删除掉全是空值的列

studf.dropna(axis="columns", how='all', inplace=True)
studf

姓名 科目 分数
0 小明 语文 85.0
1 NaN 数学 80.0
2 NaN 英语 90.0
3 NaN NaN NaN
4 小王 语文 85.0
5 NaN 数学 NaN
6 NaN 英语 90.0
7 NaN NaN NaN
8 小刚 语文 85.0
9 NaN 数学 80.0
10 NaN 英语 90.0

步骤4:删除掉全是空值的行

studf.dropna(axis="index", how='all', inplace=True)
studf

姓名 科目 分数
0 小明 语文 85.0
1 NaN 数学 80.0
2 NaN 英语 90.0
4 小王 语文 85.0
5 NaN 数学 NaN
6 NaN 英语 90.0
8 小刚 语文 85.0
9 NaN 数学 80.0
10 NaN 英语 90.0

步骤5:将分数列为空的填充为0分

studf.fillna({"分数":0})

姓名 科目 分数
0 小明 语文 85.0
1 NaN 数学 80.0
2 NaN 英语 90.0
4 小王 语文 85.0
5 NaN 数学 0.0
6 NaN 英语 90.0
8 小刚 语文 85.0
9 NaN 数学 80.0
10 NaN 英语 90.0
# 等同于
studf.loc[:, '分数'] = studf['分数'].fillna(0)
studf

姓名 科目 分数
0 小明 语文 85.0
1 NaN 数学 80.0
2 NaN 英语 90.0
4 小王 语文 85.0
5 NaN 数学 0.0
6 NaN 英语 90.0
8 小刚 语文 85.0
9 NaN 数学 80.0
10 NaN 英语 90.0

步骤6:将姓名的缺失值填充

使用前面的有效值填充,用ffill:forward fill

studf.loc[:, '姓名'] = studf['姓名'].fillna(method="ffill")
studf

姓名 科目 分数
0 小明 语文 85.0
1 小明 数学 80.0
2 小明 英语 90.0
4 小王 语文 85.0
5 小王 数学 0.0
6 小王 英语 90.0
8 小刚 语文 85.0
9 小刚 数学 80.0
10 小刚 英语 90.0

步骤7:将清洗好的excel保存

studf.to_excel("./datas/student_excel/student_excel_clean.xlsx", index=False)

总结

以上就是我在处理客户端真实IP的方法,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
跟老齐学Python之大话题小函数(2)
Oct 10 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
在python3.5中使用OpenCV的实例讲解
Apr 02 Python
Python 将pdf转成图片的方法
Apr 23 Python
详解python 注释、变量、类型
Aug 10 Python
Python中调用其他程序的方式详解
Aug 06 Python
Django错误:TypeError at / 'bool' object is not callable解决
Aug 16 Python
python 画出使用分类器得到的决策边界
Aug 21 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
Oct 11 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
Feb 20 Python
python mongo 向数据中的数组类型新增数据操作
Dec 05 Python
Python 可变类型和不可变类型及引用过程解析
Sep 27 #Python
Python操作qml对象过程详解
Sep 26 #Python
python 字典的打印实现
Sep 26 #Python
手把手教你pycharm专业版安装破解教程(linux版)
Sep 26 #Python
QML使用Python的函数过程解析
Sep 26 #Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 #Python
python3多线程知识点总结
Sep 26 #Python
You might like
php中foreach结合curl实现多线程的方法分析
2016/09/22 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
【消息提示组件】,兼容IE6/7&&FF2
2007/09/04 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
2013/11/14 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
[01:29]2017 DOTA2国际邀请赛官方英雄手办展示
2017/03/18 DOTA
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
Numpy之文件存取的示例代码
2018/08/03 Python
python一键去抖音视频水印工具
2018/09/14 Python
详解django中使用定时任务的方法
2018/09/27 Python
浅谈pycharm出现卡顿的解决方法
2018/12/03 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
python + selenium 刷B站播放量的实例代码
2020/06/12 Python
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
2014年公司植树节活动方案
2014/03/04 职场文书
职员竞岗演讲稿
2014/05/14 职场文书
本科应届生自荐信
2014/06/29 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
幼儿学前班评语
2014/12/29 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
浅谈如何提高PHP代码的质量
2021/05/28 PHP
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技