详解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正则获取、过滤或者替换HTML标签的方法
Jan 28 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
python实现简单中文词频统计示例
Nov 08 Python
python实现周期方波信号频谱图
Jul 21 Python
Django Admin中增加导出CSV功能过程解析
Sep 04 Python
Python Tkinter模块 GUI 可视化实例
Nov 20 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
Feb 26 Python
django的模型类管理器——数据库操作的封装详解
Apr 01 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
May 12 Python
opencv之颜色过滤只留下图片中的红色区域操作
Jun 05 Python
python怎么调用自己的函数
Jul 01 Python
通过Python实现Payload分离免杀过程详解
Jul 13 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
第五节 克隆 [5]
2006/10/09 PHP
PHP memcache扩展的三种安装方法
2009/04/26 PHP
php 无限级 SelectTree 类
2009/05/19 PHP
PHP 数据结构 算法 三元组 Triplet
2011/07/02 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
JavaScript中的高级函数
2018/01/04 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
利用Python开发实现简单的记事本
2016/11/15 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
Python的Lambda函数用法详解
2019/09/03 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
军训自我鉴定
2014/01/22 职场文书
专业见习报告范文
2014/11/03 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python