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
|
