详解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使用PIL模块实现给图片打水印的方法
May 22 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
Jun 20 Python
Python制作词云的方法
Jan 03 Python
Python中GIL的使用详解
Oct 03 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
Oct 23 Python
python调用matlab的m自定义函数方法
Feb 18 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
Python3 执行系统命令并获取实时回显功能
Jul 09 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
Jul 26 Python
python numpy 矩阵堆叠实例
Jan 17 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
Mar 01 Python
Python基于os.environ从windows获取环境变量
Jun 09 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 删除cookie和浏览器重定向
2009/03/16 PHP
php cout<<的一点看法
2010/01/24 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
PHP中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
jQuery 白痴级入门教程
2009/11/11 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
js实现限定区域范围拖拉拽效果
2020/11/20 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
爬山算法简介和Python实现实例
2014/04/26 Python
Python抓取京东图书评论数据
2014/08/31 Python
用Python脚本来删除指定容量以上的文件的教程
2015/05/04 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
Django保护敏感信息的方法示例
2019/05/09 Python
自定义django admin model表单提交的例子
2019/08/23 Python
广告学毕业生求职信
2014/01/30 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
初中体育教学随笔
2015/08/15 职场文书
python中的sys模块和os模块
2022/03/20 Python