数据清洗
(一)编码问题
from ftfy import fix_text
fix_text(data.text)
(二)缺失值的检测和处理
df = DataFrame({'c1':[0,1,2,None], 'c2':[1,None,2,3]})
用 isnull()进行检测,再通过sum() 得到行列的缺失汇总:
df.isnull().sum()
指定值来填补缺失的值:
df.fillna('missing')
df.fillna(df.mean())
df.fillna(method="bfill", limit=1) #使用缺失值后面的数据填充,后面如果没有数据则填充不了
df.fillna(method="ffill", limit=1) #使用缺失值前面的数据填充,limit 限制连续填充,这里表示一列中有多个缺失值相邻时,只填充最近的一个缺失值。
还可以通过插值方法进行插值:
df.interpolate(method="polynomial", order=2) #二次多项式插值
df.interpolate(method="spline", order=3) #三次样条插值
......pandas还提供很多其他的插值方法,可以查阅官方文档
自定义去除缺失值:
df.dropna(how="any") #默认参数:how='any' 即有一个数据为NaN就去除整行或整列。
df.dropna(how="all", axis=1) #how='all' 整行或整列为NaN的时候才去除,axis为0代表行,1代表列。
(三)去除异常值
df.query("xxx>=0 and xxx<=110")....
(四)去除重复值与冗余信息
df.drop_duplicates()
subset=None 默认对整个DataFrame去重,可以指定subset来对特定的列去重。
keep='first' 重复时保留第一次出现的数据,'last' 保留最后出现的数据,False去除所有重复的数据。
inplace=False 当为False时,不改变原来的DataFrame,返回新筛选后的数据。

浙公网安备 33010602011771号