4.坏数据处理(丢弃、填补)

丢弃数据


丢弃数据即根据过滤条件丢弃掉部分无用数据

默认情况下axis=0(对行操作)。

三种方法:

  • 根据标签
  • 去重
  • 去缺失

1.根据标签丢弃数据

drop():根据标签丢弃多行或者多列数据。

参数:

  • labels,单个或者多个标签,传入类列表值(列表、array等)
  • axis,丢弃行(0,默认)或者丢弃列(1)
  • inplace,是否用结果替换原Pandas对象(默认为False)
df.drop(['d', 'e'])

2.丢弃重复数据

duplicated()方法返回一个布尔型的Series,表示各行是否是重复行,仅仅将重复的最后一行标记为True。

参数

  • keep:'first'、'last'或False,分别表示返回的结果中第一个重复、最后一个重复或者所有的重复数据为True

I.返回布尔型Series:

df.duplicated()

II.通过布尔过滤,丢弃掉数据:

df[~df.duplicated()]

III.drop_duplicates()方法更简单的完成去重(本例只希望根据"one"列判断重复项):

df.drop_duplicates('one')

3.丢弃缺失值数据

dropna()方法可以丢弃缺失值相关数据。

参数:

  • axis,丢弃缺失值所在行(0,默认)或者所在行(1)
  • how,"any"表示只要存在缺失值即丢弃(默认),"all"表示所有值为缺失值才丢弃
  • subset,考虑部分行和列
  • inplace,替换原来的对象,即直接对原始对象进行修改

丢弃所有列均为缺失值的行,并且替换原来的对象:

df.dropna(how='all', inplace=True)

缺失值处理


缺失值的数量分析

isnull():对Pandas对象中的所有数值进行逐一判断,返回一个同样大小的对象。如果是NaN,则返回True。

df.isnull()

True和False在进行算术运算时,可以将其分别视为1和0。所以为了统计每一行或者每一列的缺失值数量,我们可以直接沿或者沿列进行求和:

print df.isnull().sum()
print df.isnull().sum(1)

缺失值填补

使用fillna()方法的四种填补方式:

1.使用同一个值填补所有

例:使用0填补

df.fillna(0)

2.使用空缺前一个值或后一个值填补

通过设置method参数实现:

参数 说明
ffill或pad 前向(同行上一列)填充值
bfill或backfill 后向(同行下一列)填充值

例:

df.fillna(method='ffill')
df.fillna(method='bfill')

3.不同缺失不同填补

通过传入字典实现。

例:对"one"列使"0"填补,对"three"列使用"1"填补。

df.fillna({'one':0,'three':1})

4.使用一个Pandas对象进行填补

利用Pandas的自动对齐功能,我们可以直接向fillna()传入Pandas对象。

df.fillna(df.mean())

你可能感兴趣的:(4.坏数据处理(丢弃、填补))