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之玩转字符串(3)
Sep 14 Python
python模拟Django框架实例
May 17 Python
深入理解python对json的操作总结
Jan 05 Python
教你用Python写安卓游戏外挂
Jan 11 Python
Python实现的求解最大公约数算法示例
May 03 Python
Django自定义用户登录认证示例代码
Jun 30 Python
python 获取sqlite3数据库的表名和表字段名的实例
Jul 17 Python
Django admin model 汉化显示文字的实现方法
Aug 12 Python
python实现简单井字棋游戏
Mar 04 Python
Python自动登录QQ的实现示例
Aug 28 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 Python
Python按顺序遍历并读取文件夹中文件
Apr 29 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
2012/08/22 Javascript
验证码按回车不变解决方法
2013/03/29 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
nodeJs实现基于连接池连接mysql的方法示例
2018/02/10 NodeJs
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
Vue基础配置讲解
2019/11/29 Javascript
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
2019/08/27 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
Python接口测试文件上传实例解析
2020/05/22 Python
pandas数据处理之绘图的实现
2020/06/15 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
简单了解Django项目应用创建过程
2020/07/06 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
美术专业学生个人自我评价
2013/09/19 职场文书
外贸英语专业求职信范文
2013/12/25 职场文书
好的演讲稿开场白
2013/12/30 职场文书
关于人生的感言
2014/01/17 职场文书
家长对孩子评语
2014/01/30 职场文书
学生检讨书
2015/01/27 职场文书
高一数学教学反思
2016/02/18 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS