丢弃数据
丢弃数据即根据过滤条件丢弃掉部分无用数据。
默认情况下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())
网友评论