dataframe 如何选中某列的一行_如何处理Pandas里的缺失值(入门篇1)

d49f1c083345205ded5163790f9c8186.png

在使用python里的pandas库进行数据分析工作时,很多时候我们都会遇到这样一个问题:数据缺失。这也是大部分数据分析工作所会遇到的之一。而正确处理缺失值,也是我们在数据分析中数据预处理环节的关键的一环。下面我将讲讲在我学习Pandas的时候,对缺失值处理的一些总结。

首先在进行我们的缺失值处理之前,简单和大家做个小说明,在我们的pandas中,空值和缺失值是不同的。

空值:在pandas中的空值是:" "

缺失值:pandas里,如果是DataFrame(数据帧)中,缺失值可以表示为nan或者naT(缺失时间)。如果是在Series中,则为none或者nan。

同样的,如果想要生成缺失值的话,用:

生成缺失值可以使用:

pd.NaT 或np.nan

下面开始具体说说缺失值的处理。

(1)删除(dropna)

在遇到某列数据(标签或指标等)大量丢失时,我们常用的方法,是将该含有过多空值的行/列删除,通常这也是一种行之有效的做法。而一般在pandas里,我们用dropna函数实现这一操作。

具体函数:

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

函数作用:

删除含有空值的行或列

函数具体参数:

  1. axis:维度,axis=0表示index行,axis=1表示columns列,默认为0
  2. how:"all"表示这一行或列中的元素全部缺失(为nan)才删除这一行或列,"any"表示这一行或列中只要有元素缺失,就删除这一行或列
  3. thresh: axis中至少有thresh个非缺失值,否则删除。(对此参数存在疑问的,我会在另外的文章写到)
  4. subset:在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行还是列)
  5. inplace:刷选过缺失值得新数据是存为副本还是直接在原数据上进行修改。默认是False,即创建新的对象进行修改,原对象不变,和深复制和浅复制有些类似。(对此参数存在疑问的,我会在另外的文章写到)

下面我们举几个小例子:(以下代码均在jupyter运行,大家print的时候注意一下)

import pandas as pd
import numpy as np
df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'],
                "toy": [np.nan, 'Batmobile', 'Bullwhip'],
                  "born": [pd.NaT, pd.Timestamp("1940-04-25"),pd.NaT]})
df

运行结果:

0573a462b6b8bd3beda938709a119416.png

可以看到,运行结果中出现了三个缺失值,下面我们来尝试一下用dropna函数处理它

(1)默认参数:删除行,只要有空值就会删除,不替换。

91b932eff4974e53d68e6a3163bbe8bb.png

可以看到,此时含有缺失值的行和列都被删除了,只剩下不含空值的行和列。

(2)指定行/列时:

7521fd47047aabdd59fd0b4186d33e54.png

可以看到,当我们通过axis=0或axis=1指定行/列时,程序会帮我们输出不含缺失值的行/列。

(3)当想指定所有值全为缺失值才删时,用how="all":

e2a0ed14bd25120d41a06f132f0062c3.png

(4)当想指定至少出现过两个缺失值才删除,用(thresh=2):

772825a3cb3e45893b19e99b5bd44a92.png

(5)当想指定删除某个分组(可以理解成哪几列或那几个标签)中的含有缺失值的行或列,用subset=[ ]:

dc9946de8b5efb5339d433333b258525.png

以上便是<如何处理Pandas里的缺失值(入门篇1)>的内容,欢迎感兴趣的小伙伴关注下半部分<如何处理Pandas里的缺失值(入门篇2)>:

侦探L:如何处理Pandas里的缺失值(入门篇2)​zhuanlan.zhihu.com
6fa4699c6bfb7be1d6403485de290238.png

更多内容请小伙伴们看我的其他文章,同时留意我的动态。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值