数据清洗

(一)编码问题

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,返回新筛选后的数据。

 

posted @ 2018-09-18 18:39  惹是非  阅读(273)  评论(0)    收藏  举报