详解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解析xml中dom元素的方法
Mar 12 Python
用Python的pandas框架操作Excel文件中的数据教程
Mar 31 Python
详解Python设计模式编程中观察者模式与策略模式的运用
Mar 02 Python
Python计时相关操作详解【time,datetime】
May 26 Python
Python 用Redis简单实现分布式爬虫的方法
Nov 23 Python
使用Python从零开始撸一个区块链
Mar 14 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
Django设置Postgresql的操作
May 14 Python
Python同时处理多个异常的方法
Jul 28 Python
python爬虫中的url下载器用法详解
Nov 30 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
Dec 17 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基础学习笔记
2007/03/18 PHP
wordpress之wp-settings.php
2007/08/17 PHP
thinkPHP实现瀑布流的方法
2014/11/29 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
Angular实现表单验证功能
2017/11/13 Javascript
微信小程序版翻牌小游戏
2018/01/26 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
vue+iview 兼容IE11浏览器的实现方法
2019/01/07 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
Linux下通过python获取本机ip方法示例
2019/09/06 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
财务部岗位职责
2013/11/19 职场文书
秋季运动会表扬稿
2014/01/16 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
销售员岗位职责
2015/02/10 职场文书
狼牙山五壮士观后感
2015/06/09 职场文书
MYSQL 运算符总结
2021/11/11 MySQL
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python
Python闭包的定义和使用方法
2022/04/11 Python
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL