详解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爬虫框架scrapy实现的文件下载功能示例
Aug 04 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
python: 判断tuple、list、dict是否为空的方法
Oct 22 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
Jan 26 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
Jun 19 Python
pycharm设置鼠标悬停查看方法设置
Jul 29 Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 Python
python或C++读取指定文件夹下的所有图片
Aug 31 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
Python操作qml对象过程详解
Sep 26 Python
Keras SGD 随机梯度下降优化器参数设置方式
Jun 19 Python
Python Selenium库的基本使用教程
Jan 04 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常用正则表达式的整理汇总
2013/06/08 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
js new Date()实例测试
2019/10/31 Javascript
python 字符串追加实例
2019/07/20 Python
Pandas分组与排序的实现
2019/07/23 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
python解析多层json操作示例
2019/12/30 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
美国在线印刷公司:PsPrint
2017/10/12 全球购物
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
BannerBuzz加拿大:在线定制横幅印刷、广告和标志
2020/03/10 全球购物
个人应聘自我评价分享
2013/11/18 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
预备党员考察意见范文
2015/06/01 职场文书
2015选调生工作总结
2015/07/24 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书