一.数据清洗与准备
1.缺失值
NaN(np.nan): 对数值型数据,浮点值NaN(not a number)
NA(not available)
None 均为缺失值,通过data.isnull()检测,反方法:data.notnull()
过滤(删除缺失值)
newdata = data.dropna()
等价于 data[data.notnull()]
默认删除含有缺失值的整行
可选参数:
how=‘all’:当一行全是缺失值才删除该行,否则不删除
axis=1:删除列
thresh=n:保留含有n个观测值的行
补全
newdata = data.fillna(value)
:将缺失值替换为value
为不同列的NA设置不同的填充值:传入字典data.fillna({列名:value,…})
常用可选参数(详见文档字符串):
inplace=True:修改原对象而不返回新对象;
method=:插值方法,(比如’ffill’:用前面的值填补后面所有的缺失值),
与limit=n搭配,设置前向或后向填充时最大填充范围;
axis=1:需要填充的轴
可以用数据的平均值或中位数填充NA:data.fillna(data.mean())
2.数据转换
去重
df.duplicated(): 是否有重复值,返回同大小的TF结构
newdata = df.drop_duplicates([‘col1’]):基于某些列删除重复值,默认保留第一条重复行
常用可选参数(详见文档字符串):
列名列表:基于某些列去重
keep=‘last’:保留最后一条重复行
series的逐元素转换:map
se.map(映射:函数或字典):每个元素传入到函数或字典中进行转换
字典就是映射!字典就是映射!字典就是映射!
# 创建肉类的数据框
data = pd.DataFrame({'food':['bacon','beef','Bacon','nova lox'],'weight':[4,3,12,6]})