Python数据分析之缺失值处理(一)

Python数据分析之缺失值处理(一)_第1张图片

◆ ◆ ◆  ◆ 

前言

数据缺失值的处理,在数据分析前期,即数据处理过程中占着重要的地位,在数据分析面试中被问到的概率也是极大的。

一般情况下,我们对待缺失值有三种处理方式:

(1)源数据补录,即通过再次采样或者询问等方式将缺失内容补充完整;

(2)缺失值填充,即根据一定的规则将缺失值填充,可选众数、中位数等;

(3)删除缺失值,即根据一定的规则将含有缺失值的行或列直接进行删除。

我的会员请教了我关于缺失值的问题,于是我为他整理了一篇详细的文章,讲解一下如何进行缺失值处理。今天这篇文章只是缺失值处理的第一节——缺失值的删除

dropna

dropna为pandas库下DataFrame的一个方法,用于删除缺失值。基本参数如下:

dropna(self, axis=0, how='any', subset=None, inplace=False)

接下来,我们一一进行讲解。

# 预览模拟数据
>>> df
Out[1]: 
    name   age   birthday  gender
0   Alan  17.0 1999-01-25    male
1          NaN        NaT  female
2  Black  18.0 1997-02-07    male
3   Cici   NaN 2000-01-18  female
4  David  25.0        NaT    male
5    NaN  22.0        NaT  female


# 不加任何参数
>>> df.dropna()
Out[2]: 
    name   age   birthday gender
0   Alan  17.0 1999-01-25   male
2  Black  18.0 1997-02-07   male


>>> df.dropna(how = 'any')
Out[3]: 
    name   age   birthday gender
0   Alan  17.0 1999-01-25   male
2  Black  18.0 1997-02-07   male

通过上面的代码可以看出,在不加任何参数,即默认值情况下,会把所有包含缺失值的行统统删除

# all——删除整行均为缺失值的行
>>> df.dropna(how = 'all')
Out[4]: 
    name   age   birthday  gender
0   Alan  17.0 1999-01-25    male
1          NaN        NaT  female
2  Black  18.0 1997-02-07    male
3   Cici   NaN 2000-01-18  female
4  David  25.0        NaT    male
5    NaN  22.0        NaT  female


>>> df.iloc[:,1:3].dropna(how = 'all')
Out[5]: 
    age   birthday
0  17.0 1999-01-25
2  18.0 1997-02-07
3   NaN 2000-01-18
4  25.0        NaT
5  22.0        NaT


# 按列删除——即包含缺失值的列统统被删除
>>> df.dropna(axis = 1)
Out[6]: 
   gender
0    male
1  female
2    male
3  female
4    male
5  female


# 删除指定列包含缺失值的行
>>> df.dropna(subset = ['name','gender'])
Out[7]: 
    name   age   birthday  gender
0   Alan  17.0 1999-01-25    male
1          NaN        NaT  female
2  Black  18.0 1997-02-07    male
3   Cici   NaN 2000-01-18  female
4  David  25.0        NaT    male

当然了,以上所有的操作均不是对元数据产生作用,只是生成了一个副本。如果想要对元数据产生作用,则必须加一个inplace参数。

# 再次查看元数据,观察是否变化
>>> df
Out[8]: 
    name   age   birthday  gender
0   Alan  17.0 1999-01-25    male
1          NaN        NaT  female
2  Black  18.0 1997-02-07    male
3   Cici   NaN 2000-01-18  female
4  David  25.0        NaT    male
5    NaN  22.0        NaT  female


# 加入inplace参数,对元数据产生影响
>>> df.dropna(inplace = True)


>>> df
Out[9]: 
    name   age   birthday gender
0   Alan  17.0 1999-01-25   male
2  Black  18.0 1997-02-07   male

后记

缺失值的处理,是个很麻烦的事儿,在实际工作过程中,你会遇到各种各样的缺失值,而且处理起来非常棘手。比如索引为1的这一行,name字段也是一个缺失值,这时候该怎么处理呢?!欢迎关注我的公众号,带你每天都能更近一步!

>>> df[1:2]
Out[182]: 
  name  age birthday  gender
1       NaN      NaT  female

<点击跳转,优质推荐>

pandas中apply与map的异同

《安家》热播,我用Python对北京房价进行了分析,结果……

Pandas遇上Pyecharts碰撞出可交互的可视化效果

五行Python代码轻松实现OCR文字识别

记得点在看~祝大家一夜暴富,基金、股票一片红~

Python数据分析之缺失值处理(一)_第2张图片

在看”的永远18岁~

Python数据分析之缺失值处理(一)_第3张图片

你可能感兴趣的:(Python数据分析之缺失值处理(一))