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中的列表知识点汇总
Apr 14 Python
用Python实现服务器中只重载被修改的进程的方法
Apr 30 Python
python自定义异常实例详解
Jul 11 Python
使用python将大量数据导出到Excel中的小技巧分享
Jun 14 Python
python K近邻算法的kd树实现
Sep 06 Python
python3爬虫怎样构建请求header
Dec 23 Python
Python使用post及get方式提交数据的实例
Jan 24 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
Django组件content-type使用方法详解
Jul 19 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
Aug 06 Python
Python json读写方式和字典相互转化
Apr 18 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 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 zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
php 生成随机验证码图片代码
2010/02/08 PHP
PHP 反向排序和随机排序代码
2010/06/30 PHP
php中判断文件存在是用file_exists还是is_file的整理
2012/09/12 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
js一组验证函数
2008/12/20 Javascript
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
Angular通过angular-cli来搭建web前端项目的方法
2017/07/27 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
layui的select联动实现代码
2019/09/28 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
Vue中使用JsonView来展示Json树的实例代码
2020/11/16 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
Python操作CouchDB数据库简单示例
2015/03/10 Python
Python之列表实现栈的工作功能
2019/01/28 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
python实现五子棋程序
2020/04/24 Python
在Python中实现字典反转案例
2020/12/05 Python
SmartBuyGlasses中国:唯视良品(销售名牌太阳镜、墨镜和眼镜框)
2017/07/03 全球购物
青年文明号事迹材料
2014/01/18 职场文书
2014高考励志标语
2014/06/05 职场文书
村干部群众路线整改措施思想汇报
2014/10/12 职场文书
世界遗产的导游词
2015/02/13 职场文书
自主招生自荐信范文
2015/03/04 职场文书
毕业设计工作总结
2015/08/14 职场文书
医生行业员工的辞职信
2019/06/24 职场文书