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
|