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 相关文章推荐
打开电脑上的QQ的python代码
Feb 10 Python
Python基于smtplib实现异步发送邮件服务
May 28 Python
Python while、for、生成器、列表推导等语句的执行效率测试
Jun 03 Python
详解python的数字类型变量与其方法
Nov 20 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
浅谈python数据类型及类型转换
Dec 18 Python
浅析python打包工具distutils、setuptools
Apr 20 Python
python中将zip压缩包转为gz.tar的方法
Oct 18 Python
python实现字符串加密成纯数字
Mar 19 Python
pytorch之ImageFolder使用详解
Jan 06 Python
Python语法垃圾回收机制原理解析
Mar 25 Python
python求前n个阶乘的和实例
Apr 02 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
PHP答题类应用接口实例
2015/02/09 PHP
php解析xml方法实例详解
2015/05/12 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
jQuery查找和过滤_动力节点节点Java学院整理
2017/07/04 jQuery
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
2020/06/06 jQuery
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
Python爬虫使用代理IP的实现
2019/10/27 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
国旗下的演讲稿
2014/05/08 职场文书
微笑面对生活演讲稿
2014/05/13 职场文书
农村党建工作汇报材料
2014/10/27 职场文书
满月酒邀请函
2015/01/30 职场文书
怎样写工作总结啊!
2019/06/18 职场文书