DataFrame 中的空值处理

数据清洗是一项复杂且繁琐的工作,同时也是整个数据分析过程中最为重要的环节。

在 python 中空值被显示为 NaN。首先,我们要构造一个包含 NaN 的 DataFrame 对象。

|

1

2

3

4

5

6

7

8

9

10

11

|

>>> ``import numpy as np

>>> ``import pandas as pd

>>> ``from pandas ``import Series,DataFrame

>>> ``from numpy ``import nan as NaN

>>> data ``= DataFrame([[``12``,``'man'``,``'13865626962'``],[``19``,``'woman'``,NaN],[``17``,NaN,NaN],[NaN,NaN,NaN]],columns``=``[``'age'``,``'sex'``,``'phone'``])

>>> data

age    sex        phone

0  12.0    man  ``13865626962

1  19.0  woman          NaN

2  17.0    NaN          NaN

3   NaN    NaN          NaN

|

删除 NaN

删除 NaN 所在的行

删除表中全部为 NaN 的行

|

1

2

3

4

5

|

>>> data.dropna(axis``=``0``, how``=``'all'``)

age    sex        phone

0  12.0    man  ``13865626962

1  19.0  woman          NaN

2  17.0    NaN          NaN

|

删除表中任何含有 NaN 的行

|

1

2

3

|

>>> data.dropna(axis``=``0``, how``=``'any'``)

age  sex        phone

0  12.0  man  ``13865626962

|

删除 NaN 所在的列

删除表中全部为 NaN 的列

|

1

2

3

4

5

6

|

>>> data.dropna(axis``=``1``, how``=``'all'``)

age    sex        phone

0  12.0    man  ``13865626962

1  19.0  woman          NaN

2  17.0    NaN          NaN

3   NaN    NaN          NaN

|

删除表中任何含有 NaN 的列

|

1

2

3

4

|

>>> data.dropna(axis``=``1``, how``=``'any'``)

Empty DataFrame

Columns: []

Index: [``0``, ``1``, ``2``, ``3``]

|

注意:axis 就是”轴,数轴“的意思,对应多维数组里的”维“。此处作者的例子是二维数组,所以,axis 的值对应表示:0 轴(行),1 轴(列)

填充 NaN

如果不想过滤(去除)数据,我们可以选择使用 fillna() 方法填充 NaN,这里,作者使用数值’0’替代 NaN, 来填充 DataFrame。

|

1

2

3

4

5

6

|

>>> data.fillna(``0``)

age    sex        phone

0  12.0    man  ``13865626962

1  19.0  woman            ``0

2  17.0      0            0

3   0.0      0            0

|

我们还可以通过字典来填充,以实现对不同的列填充不同的值。

|

1

2

3

4

5

6

|

>>> data.fillna({``'sex'``:``233``,``'phone'``:``666``})

age    sex        phone

0  12.0    man  ``13865626962

1  19.0  woman          ``666

2  17.0    233          666

3   NaN    ``233          666

|