详解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 struct.unpack
Sep 06 Python
python BeautifulSoup设置页面编码的方法
Apr 03 Python
使用python遍历指定城市的一周气温
Mar 31 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
Python3对称加密算法AES、DES3实例详解
Dec 06 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 Python
关于django 1.10 CSRF验证失败的解决方法
Aug 31 Python
使用python实现希尔、计数、基数基础排序的代码
Dec 25 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
Python selenium自动化测试模型图解
Apr 15 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
Aug 22 Python
python 两种方法删除空文件夹
Sep 29 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 存储文本换行实现方法
2010/01/05 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
php将html转为图片的实现方法
2017/05/19 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
屏蔽script注入小例子
2013/11/12 Javascript
jquery手风琴特效插件
2015/02/04 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
Vue实现base64编码图片间的切换功能
2019/12/04 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
python删除某个字符
2018/03/19 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
python matplotlib拟合直线的实现
2019/11/19 Python
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
.net开发工程师面试题
2014/02/25 面试题
介绍一下Java中的static关键字
2012/05/12 面试题
计算机专业毕业生求职信分享
2013/12/24 职场文书
小小的船教学反思
2014/02/21 职场文书
辩护词范文大全
2015/05/21 职场文书
企业财务管理制度范本
2015/08/04 职场文书
感恩老师主题班会
2015/08/12 职场文书
ubuntu如何搭建vsftpd服务器
2022/12/24 Servers