python pandas缺失值处理_Pandas之缺失值处理

原标题:Pandas之缺失值处理

本文作者:杨长青

本文编辑:周聪聪

技术总编:张学人

好消息!!!爬虫俱乐部将于2019年5月2日至4日在武汉举行Stata编程技术五一训练营,此次采用理论与案例相结合的方式,旨在帮助大家熟悉Stata数据分析技巧,能够通过编程读取不同类型的数据源、实现复杂数据合并、清洗的程序化,并且熟悉Stata核心的爬虫技术。

当我们用python进行数据处理时会遇到很多缺失值,缺失值一般是由于我们所处理的数据本身的特性、当初录入的失误或者其它原因导致的,比如读入数据的空值、做0/0等计算时这些数据都被处理成缺失值。对于缺失值我们的处理或者直接删除或者进行填补,今天我们来介绍几个基础的缺失值处理函数:

dropna:删除缺失值

isna、notna:判断缺失值

fillna、interpolate:填补缺失值

接下来我们结合具体的例子来详细介绍上述函数用法。在DataFrame中缺失值的标签一般为NAN(not a number)。可以沿用numpy中np.nan定义缺失值。我们构造一个包含缺失值的简单例子:

importnumpy asnp

importpandas aspd

dict1={'make':['AMC Concord', np.nan,'AMC Spirit',np.nan,'Buick Electra ','AMC Pacer'],

'price':[4099,4749,np.nan,7824,np.nan,2154],

'rep78':[3,4,np.nan,5,np.nan,5]} #通过np.nan生成缺失值

auto=pd.DataFrame(dict1)

auto #展示auto

数据如下:

一、删除缺失值

dropna的语法介绍:

dataFrame.dropna(axis = 0,how ='any',thresh = None,subset = None,inplace = False )

axis:确定删除缺失值的行或列。axis=0:删除包含缺失值的行。axis=1:删除包含缺失值的列。

how:删除方式。how=’any’:删除包含缺失值的行或列。how=’all’:只有行或列都为缺失值才会被删除。

thresh:设置需要的非缺失值。当thresh=2:保存包含至少有两个非缺失值的行或列。

subset:沿着其他轴考虑的标签。假设删除行,可以指定subset=[‘make’]:删除缺失make变量数据的行。

inplace:是否对原数据集进行处理替换。inplace=True替换修改原对象。

对于上面的例子,我们想要删除price和rep78为空的观测,只需:

auto.dropna(subset=['make','rep78'])

最终输出如下:

二、判断缺失值

isna用来判断DataFrame元素是否大小写,返回相同大小的对象,如果是缺失值则为True,否则为False。而notna刚好相反,如果是缺失值则为False,否则为True。下面两图是auto数据集使用isna和notna判断的结果:

在数据处理的过程中,经常是要对各个特征下数据缺失的多少进行一个判断,对于缺失数较多的特征我们一般不会使用。isna很方便我们对缺失值进行统计,并按缺失值的比重排列。程序如下:

na_count = auto.isnull().sum().sort_values(ascending=False) #对bool数据进行累加并从大到小排列

na_rate = na_count / len(auto) #计算比率

na_data = pd.concat([na_count,na_rate],axis=1,keys=['count','ratio'])

na_data

输出如下:

三、填补缺失值

fillna的主要语法如下:

DataFrame.fillna(value = None,method= None, inplace= False,limit =None)

value:用于指定用何值填充缺失值。可以是一个标量,如value=0,用0填补所有缺失值。可以是一个字典,键为需要填充的列名,值为需要填充的内容。

method:指定填充的方式。method='ffill':用前面的补齐后面的缺失值。method='bfill' :用下一个非缺失值填充该缺失值。

inplace:如上定义。

limit:在指定method时,控制向前或向后填充缺失值的最大数量。

对于上述例子,我们将price和rep78的缺失值分别用均值和中位数进行替换:

value={'price':auto.price.mean(),

'rep78':auto.rep78.median() } #分别计算均值个中位数

auto.fillna(value)

替换之后,如下所示:

同时还可以使用插值法对缺失值进行填补,通过interpolate函数完成,默认为线性插值,即method='linear'。除此之外,还有‘linear’、‘time’等插值方法可供选择。这里我们就不再详细介绍。

以上介绍如何通过 Pandas 处理数据集中的缺失值,包括识别、删除、填补。如果大家在学习使用python的过程中有什么问题,可以通过邮件与我们进行联系。

关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

投稿要求:

1)必须原创,禁止抄袭;

2)必须准确,详细,有例子,有截图;

注意事项:

1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。

3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。返回搜狐,查看更多

责任编辑:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言怎么让写的函数兼容int型和char型_既然C语言void指针是“万能指针”,那么malloc还需类型转换吗?...

在C语言程序开发中,动态内存分配是不可避免的,而调用 malloc()/free() 库函数实现这一过程是方便的,事实上,在很多C语言程序中,malloc/free 库函数的使用相当频繁,它俩的C语言函数原型如下,请看…

python奖励多少钱_关于python的问题,好的高奖励!

我想设计一个猜数字程序:系统随机生成一个四位数a,之后用户也输入一个四位数b,这里,将进行判断:b中各个数位上的数字是否在a出现,有出现,那么将b中的那个数为上的数字定位Y......(简略...我想设计一个猜数字程序:系统随机生成一个四位数a,之后用户也输入一个四位数b,这里,将进行…

如何在mysql中添加用户_如何给mysql数据库添加一个用户

首先以root身份登录到MySQL服务器中。$ mysql -u root -p当验证提示出现的时候,输入MySQL的root帐号的密码。创建一个MySQL用户使用如下命令创建一个用户名和密码分别为"myuser"和"mypassword"的用户。mysql> CREATE USER myuserlocalhost I…

python可视化图表工具_酷炫的可视化图表工具来帮忙 深度评测五大Python数据可视化工具...

原标题:酷炫的可视化图表工具来帮忙 深度评测五大Python数据可视化工具不少Python用户的一大诉求是做出各种酷炫的可视化图表,而这就需要了解清楚工具特色,才好在制作不同类型图表顺利找到适合自己的那一款。今天就来聊聊五个Python数据可视化…

mysql datetime最小值_MySQL的5种时间类型的比较

日期时间类型占用空间日期格式最小值最大值零值表示DATETIME8 bytesYYYY-MM-DD HH:MM:SS1000-01-01 00:00:009999-12-31 23:59:590000-00-00 00:00:00TIMESTAMP4 bytesYYYY-MM-DD HH:MM:SS197001010800012038 年的某个时刻00000000000000DATE4 bytesYYYY-MM-DD1000-01-019999-1…

python制作海报_生成海报(前端 | python)

我最近没有摸鱼,一直都在工作。只不过目前需要爬一点数据 python 做的,之后看机会分享一下。忙着忙着老大说要生成海报,有个活动要给每个用户来个分享图。想法PS 批处理?脚本? 能甩出去的活都甩出去,机智如…

Mysql数据库的简单备份与还原_史上最简单的MySQL数据备份与还原教程

本文主要为大家详细介绍了史上最简单的MySQL数据备份与还原教程第一篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。数据备份与还原第一篇分享给大家,具体内容如下基础概念:备份,将…

python正负数转换,如何在Python中将负整数值转换为十六进制

I use python 2.6>>> hex(-199703103)-0xbe73a3f>>> hex(199703103)0xbe73a3fPositive and negative value are the same?When I use calc, the value is FFFFFFFFF418C5C1.解决方案Pythons integers can grow arbitrarily large. In order to compute the …

mysql 分表索引_mysql中,分表查询和索引查询哪个更快?

谢谢邀请!查询快慢主决的因素有很多,存储碎片、数据量大属于I/O类问题;表结构设计、查询语句属于技术是否熟练(经验)问题。对于你的分表快还是索引快的这个问题本身就是有问题的:在建立数据表的时候,索引是必须的&…

fluent python 第二版_Fluent Python 笔记(二):序列基础

目录:本篇开始总结 Python 基本的数据结构,大部分情况下,这些数据结构就已经够用了,不需要重复造轮子。首先是序列及其相关的操作。序列(Sequence)标准库中提供了很多序列类型,都是C实现的,效率很高。容器序…

mysql数据库云读取_云数据库 MySQL版

{"moduleinfo":{"banner_bigTit":"云数据库 MySQL版读写分离上线","banner_subTit":"自动扩展读写分离,性能提升不止一点","banner_link":"https://rdsnew.console.aliyun.com/console/index#/rd…

mysql数据库整体备份和恢复_MySQL 数据库的备份和恢复

MySQL 数据库的备份和恢复  基本知识>>>>>>>  逻辑备份:  1.mysqldump(数据导出工具)  mysqldump options db_name[table_name]//备份单个数据库  mysqldump 选项 --database database-name1 [databases-name2]....//备份指定的数据库一个或者多…

mysql查询并设置高亮_慢查询分析调优工具~mysqldumpslow

在日常的业务开发中,MySQL出现慢查询是很常见的,要么说明你家产品的增长性很好,要么就是你的SQL写的太烂了。所以对慢查询SQL进行分析和优化很重要,其中mysqldumpslow是MySQL服务自带的一款很好的分析调优工具。MySQL慢查询日志My…

数据库安装mysql57_记录CentOS7.X版本下安装MySQL5.7数据库

记录CentOS7.X版本下安装MySQL5.7数据库设置rpm下载目录在/opt目录下新建一个目录存放mysqlcd /optsudo mkdir mysql12下载MySQL的源如果在这之前没有提示-bash: wget: command not found,那么还得先安装wgetsudo yum install wget1安装MySQL的rpmsudo rpm -ivh mys…

python递归函数的思想_Python递归函数实例讲解

Python递归函数实例1、打开Python开发工具IDLE,新建‘递归.py文件,并写代码如下:def digui(n):if n 0 :print ()returnprint (**n)digui(n-1)if __name__ __main__:digui(5)这里递归打印*号,先打印后递归2、F5运行程序,打印内容…

非法的表达式开始_轮回、开始还是结束?

上节课说到&#xff0c;要打印0-9这十个数字&#xff0c;除了一个一个的 document.write 还有什么办法?下面介绍一个for语法for (var 变量 初始值; 结束判断表达式; 变量递增/递减) { 循环体&#xff0c;用于处理变量;}我们来实操一下for (var c0;c<9;cc1) { do…

sql 统计记录条数后 打印出所有记录_用SQL完成购买行为分析(下篇II)

&#xff08;接《用SQL完成购买行为分析&#xff08;下篇I&#xff09;》内容&#xff09;12&#xff09;查询首条记录为fav&#xff0c;总记录条数为14的记录。将前面getNum(3)红框处替换为12&#xff0c;运行getNum(14)得到第2条记录的数量&#xff1a;替换为11&#xff0c;得…

library的英语怎么读音_library怎么读声音

library的英式读音和美式读音均为&#xff1a;[ˈlaɪbrəri]。library可作名词&#xff0c;其作名词时&#xff0c;中文意思有&#xff1a;图书馆&#xff1b;藏书楼&#xff1b;图书室&#xff1b;资料室&#xff1b;(书、激光唱片等的)个人收藏等含义。一、library 读音英式…

sift线特征提取代码_车道线检测LaneNet

LanNetSegmentation branch完成语义分割,即判断出像素属于车道or背景Embedding branch完成像素的向量表示,用于后续聚类,以完成实例分割H-NetSegmentation branch解决样本分布不均衡车道线像素远小于背景像素.loss函数的设计对不同像素赋给不同权重,降低背景权重.该分支的输出为…