在数据分析中,80%的时间是用于数据清理。
1.对于数值型数据,pandas用用浮点值NaN来表示缺失值,称之为标识符,这种值能被轻易检测到。
在pandas中,把缺失值表示NA
内建的python None也表示缺失值NA
import numpy as np
import pandas as pd
obj=pd.Series(['li','xun',np.nan,'big'])
print(obj)
print(obj.isnull())
obj[0]=None
print(obj.isnull())
#输出:
0 li
1 xun
2 NaN
3 big
dtype: object
0 False
1 False
2 True
3 False
dtype: bool
0 True
1 False
2 True
3 False
dtype: bool
2.过滤缺失值
过滤缺失值的一些方法。可以使用pandas的isnull来标记出数据的为True的 Boolean indexing,然后配合函数dropna.对于Series过滤,会返回它的非空数据和标签值index values
from numpy import nan as NA #相当于将np.nan重新命名为NA
obj1=pd.Series([1,NA,3,NA,5])
print(obj1)
print(obj1.dropna())
#输出:
0 1.0
1 NaN
2 3.0
3 NaN
4 5.0
dtype: float64
0 1.0
2 3.0
4 5.0
dtype: float64
上面等同于obj1[obj1.notnull()]
3.对于DataFrame,会想删除包含NA的rows 和columns。dropna会默认删除包含缺失值的row
data = pd.DataFrame([[1., 6.5, 3.], [1., NA, NA],
[NA, NA, NA], [NA, 6.5, 3.]])
print(data)
cleaned=data.dropna()
print(cleaned)