详解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 相关文章推荐
Python3使用PyQt5制作简单的画板/手写板实例
Oct 19 Python
Python异常对代码运行性能的影响实例解析
Feb 08 Python
Python实现基于C/S架构的聊天室功能详解
Jul 07 Python
在python中将字符串转为json对象并取值的方法
Dec 31 Python
python实现大转盘抽奖效果
Jan 22 Python
Python实现求两个数组交集的方法示例
Feb 23 Python
对Django 中request.get和request.post的区别详解
Aug 12 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
Jan 17 Python
什么是Python中的顺序表
Jun 02 Python
Python 实现集合Set的示例
Dec 21 Python
python regex库实例用法总结
Jan 03 Python
Python爬虫入门案例之回车桌面壁纸网美女图片采集
Oct 16 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
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
PHP通过API获取手机号码归属地
2015/05/28 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
php的RSA加密解密算法原理与用法分析
2020/01/23 PHP
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
2015/12/19 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
javascript实现简易的计算器
2020/01/17 Javascript
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
python清理子进程机制剖析
2017/11/23 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
详解【python】str与json类型转换
2019/04/29 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
Django bulk_create()、update()与数据库事务的效率对比分析
2020/05/15 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
护士演讲稿范文
2014/01/05 职场文书
一年级班主任寄语
2014/01/19 职场文书
迎元旦广播稿
2014/02/22 职场文书
小学生安全演讲稿
2014/04/25 职场文书
万能检讨书
2015/01/27 职场文书
Python打包为exe详细教程
2021/05/18 Python