详解Pandas 处理缺失值指令大全


Posted in Python onJuly 30, 2020

前言

运用pandas 库对所得到的数据进行数据清洗,复习一下相关的知识。

1 数据清洗

1.1 处理缺失数据

对于数值型数据,分为缺失值(NAN)和非缺失值,对于缺失值的检测,可以通过Python中pandas库的Series类对象的isnull方法进行检测。

import pandas as pd
import numpy as np
string_data = pd.Series(['Benzema', 'Messi', np.nan, 'Ronaldo'])
string_data.isnull()

对于缺失值,除了np.nan来表示,还可以用None来表示缺失值

string_data = None

1.2 滤除掉缺失数据

1.2.1 对于Series

使用dropna方法将NAN的数据过滤掉。

from numpy import nan as NA
import pandas as pd
data = pd.Series([1,NA,4.5,NA,5])
data.dropna()

另一种方法是使用布尔值索引对NAN数据进行过滤:

data[data.notnull()]

1.2.2 对于DataFrame

dropna()方法对于DataFrame的数据来说,会将含有NAN数据的行全部扔掉。

data = pd.DataFrame([[1., 6.5, 3.], [1., NA, NA],
           [NA, NA, NA], [NA, 6.5, 3.]])
data
data.dropna()

如果只想删除掉那些行中全部为NAN数据的DataFrame,通过设置dropna()方法中的参数how即可。

data.dropna(how = 'all')

如果操作对象变为列,代码如下:

data[4] = NA
data
data.dropna(axis=1, how = 'all')

如果想留下其中的一部分数据,则可以设置thresh参数:

df = pd.DataFrame(np.random.randn(7, 3))
df.iloc[:4, 1] = NA
df.iloc[:2, 2] = NA
df
df.dropna(thresh = 2)

thresh = n,参数n相当于保留至少含有n个非NA的行

1.3 填充缺失数据

fillna(n),n替换掉NA

df = pd.DataFrame(np.random.randn(7, 3))
df.fillna(0)

如果填充格式是字典,fillna({0:n1,1:n2}),将列0的NA填充为 n1,将列1的NA填充为 n2。

df.fillna({{1 : 0.2,2 : 0.3}})

直接填充df的NA值,直接改变df,不需要命名新的变量。

df.fillna(0, inplace = True)

2 数据转换

2.1 移除重复数据

data = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'],
           'k2': [1, 1, 2, 3, 3, 4, 4]})
data.duplicated()

返回的是每一行的重复结果,不重复是False,重复是True。

如果要去除重复的行,代码如下:

data.drop_duplicates()

如果操作对象为列,在duplicated方法中指定参数即可。

data['k3'] = range(7)
data.duplicated(['k1'])

返回的是 k1 列中重复的元素。

对于drop_duplicates()方法来说,去除掉的是重复数据的后者。比如说序号为0,1的数据重复,方法删除掉index = 1的行。如果想要删除前者,只需要指定参数 last即可:

data.drop_duplicates(['k1'], keep = 'last')

2.2 与映射相结合

map函数的使用方法

list(map(lambda x : 2 * x , range(10)))

2.3 替换

使用的是replace 方法,replace有两个参数,前者是被替换的数,后者是替换的数,参数格式可以是列表,也可以是字典

data = pd.Series([1., -999., 2., -999., -1000., 3.])
data.replace(-999.0, np.nan) #替换单个值
data.replace([-999.0, -1000.0], np.nan) #用一个值替换多个值
data.replace([-999.0, -1000.0],[np.nan, 0]) # 用不同值替换不同值
data.replace({-999.0 : 0, -1000.0 : np.nan}) # 格式为字典

2.4 创建数据的修改版

rename方法可以创建数据的修改版,而不必在原数据上进行修改。

data.rename(index=str.title, columns=str.upper)

还可以使用字典的格式,对index, columns 进行改变。

data.rename(index = {'OHIO': 'INDIANA'}, columns = {'three': 'peekaboo'})

这样的重命名并不对原数据进行修改,如果想要直接改变data, 如上,参数inplace = True即可。

data.rename(index = {'OHIO': 'INDIANA'}, columns = {'three': 'peekaboo'}, inplace = True)
data

这样就改变了data。

2.5 计算指标\哑变量

用于机器学习中,对定类数据的转化,用于将df中的object对象转化为One-hot编码,消除了数字间的比较大小问题。

df = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'b'],
          'data1': range(6)})
pd.get_dummies(df['key']) # 分解了key 列,分开了三个属性

如果想在分开的属性前面加上前缀的话,设定prefix 参数即可实现该功能,可以将其与原始数据合并在一起。

dummies = pd.get_dummies(df['key'], prefix = 'key')
df_with_dummies = df['data1'].join(dummies)
df_with_dummies

到此这篇关于详解Pandas 处理缺失值指令大全 的文章就介绍到这了,更多相关Pandas 处理缺失值内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python自动化工具日志查询分析脚本代码实现
Nov 26 Python
Python 列表(List) 的三种遍历方法实例 详解
Apr 15 Python
Python简单网络编程示例【客户端与服务端】
May 26 Python
Python实现模拟分割大文件及多线程处理的方法
Oct 10 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
Jun 18 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
Python序列对象与String类型内置方法详解
Oct 22 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
Apr 02 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
UI自动化定位常用实现方法代码示例
Oct 27 Python
python 如何将两个实数矩阵合并为一个复数矩阵
May 19 Python
Python集合set()使用的方法详解
Mar 18 Python
Python 爬虫的原理
Jul 30 #Python
Python爬虫与反爬虫大战
Jul 30 #Python
Python如何将装饰器定义为类
Jul 30 #Python
python实现mask矩阵示例(根据列表所给元素)
Jul 30 #Python
Python3爬虫发送请求的知识点实例
Jul 30 #Python
详解Python 最短匹配模式
Jul 29 #Python
Python如何给你的程序做性能测试
Jul 29 #Python
You might like
当海贼王变成JOJO风
2020/03/02 日漫
收集的php编写大型网站问题集
2007/03/06 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
php递归函数怎么用才有效
2018/02/24 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门
2020/09/13 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
web 页面分页打印的实现
2009/06/22 Javascript
js实现在页面上弹出蒙板技巧简单实用
2013/04/16 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
详解nodejs中express搭建权限管理系统
2017/09/15 NodeJs
vue的keep-alive用法技巧
2019/08/15 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
Python+Opencv识别两张相似图片
2020/03/23 Python
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
python实现感知器
2017/12/19 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
Html5新增标签有哪些
2017/04/13 HTML / CSS
百丽国际旗下购物网站:优购
2017/02/28 全球购物
环保建议书300字
2014/05/14 职场文书
个人担保书范文
2014/05/20 职场文书
承诺书模板
2014/08/30 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
群众路线剖析材料
2014/09/30 职场文书
学生会部长竞选稿
2015/11/19 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python