如何处理Pandas里的缺失值(入门篇1)

在使用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)
函数作用:
删除含有空值的行或列
函数具体参数:
axis:维度,axis=0表示index行,axis=1表示columns列,默认为0
how:"all"表示这一行或列中的元素全部缺失(为nan)才删除这一行或列,"any"表示这一行或列中只要有元素缺失,就删除这一行或列
thresh: axis中至少有thresh个非缺失值,否则删除。(对此参数存在疑问的,我会在另外的文章写到)
subset:在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行还是列)
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

运行结果:
如何处理Pandas里的缺失值(入门篇1)_第1张图片
可以看到,运行结果中出现了三个缺失值,下面我们来尝试一下用dropna函数处理它
(1)默认参数:删除行,只要有空值就会删除,不替换。
如何处理Pandas里的缺失值(入门篇1)_第2张图片
可以看到,此时含有缺失值的行和列都被删除了,只剩下不含空值的行和列。
(2)指定行/列时:
如何处理Pandas里的缺失值(入门篇1)_第3张图片
可以看到,当我们通过axis=0或axis=1指定行/列时,程序会帮我们输出不含缺失值的行/列。
(3)当想指定所有值全为缺失值才删时,用how=“all”:
如何处理Pandas里的缺失值(入门篇1)_第4张图片
(4)当想指定至少出现过两个缺失值才删除,用(thresh=2):
如何处理Pandas里的缺失值(入门篇1)_第5张图片
(5)当想指定删除某个分组(可以理解成哪几列或那几个标签)中的含有缺失值的行或列,用subset=[ ]:
如何处理Pandas里的缺失值(入门篇1)_第6张图片
以上便是<如何处理Pandas里的缺失值(入门篇1)>的内容,欢迎感兴趣的小伙伴一起讨论、纠正、学习,更多内容请看我的其他文章。

你可能感兴趣的:(如何处理Pandas里的缺失值(入门篇1))