python数据清洗最基本的几个操作

本文介绍了Python数据清洗中的关键操作,包括如何查找和处理缺失值,使用pandas和sklearn的方法,如丢弃、填充;异常值的识别和处理;以及如何判断和删除重复值。内容涵盖了从基本的缺失值检查到复杂的填充策略,旨在提供全面的数据预处理指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、缺失值处理

1. 查找缺失值

df.isnull():判断哪些元素有缺失值

df.isnull().any():判断哪些列有至少有一个缺失值,.any(axis=1)判断行

df.isnull().all():判断哪些列全部都缺失值,.all(axis=1)判断行

2. pandas处理缺失值

丢弃

df.dropna():直接丢弃含有缺失值的列,axis=1丢弃行

填充
df.fillna(
    value=None,
    method=None,
    axis=None,
    inplace=False,
    limit=None,
    downcast=None,
)
  • value:用来填充的内容
    • 一个指定的值
    • dict/Series/DataFrame:用序列中各列对应的值来填充对应列中的缺失值,如:{'col1':1,'col2':2}
    • 函数:df.fillna(df.mean())用平均值来填充,也可以是max()min()
  • method:{'backfill', 'bfill', 'pad', 'ffill', None}
    • backfill/bfill:用后面的值填充
    • pad/ffill:用前面的值填充
  • limit:如果存在连续的缺失值,限制只填充指定数量的缺失值
  • axis:0-列,1-行

3. sklearn处理缺失值

# 创建模型规则:用平均值填充
nan_model=SimpleImputer(missing_values=np.nan,strategy='mean')
# 创建模型规则:用常量填充
nan_model=SimpleImputer(missing_values=np.nan,strategy='constant',fill_value=0)
# 应用模型规则
nan_model.fit_transform(df)

SimpleImputer(
    missing_values=nan,
    strategy='mean',
    fill_value=None,
    verbose=0,
    copy=True,
    add_indicator=False,
)
  • missing_values:缺失值,默认np.nan
  • strategy:填充方法
    • mean:平均值
    • median:中位数
    • most_frequent:众数,出现最多的值
    • constant:常量,需用fill_value来指定常量
  • fill_value:用来填充的常量

若存在无穷大或无穷小的值,如np.inf-np.infmean会失效,此时可以使用median取中位数来处理

二、异常值处理

使用相应的规则或者方法判断出异常值,然后对异常值做出相应处理

df=pd.DataFrame(np.random.randint(0,100,20).reshape(5,4))
df
	0	1	2	3
0	15	3	91	65
1	15	94	70	13
2	51	65	31	30
3	82	39	41	65
4	24	21	91	27

# 将小于20判断为异常值,判断存在异常值的行
(df<20).any(axis=1)
0     True
1     True
2    False
3    False
4    False
dtype: bool

# 移除存在异常值的行
df[~(df<20).any(axis=1)]
	0	1	2	3
2	51	65	31	30
3	82	39	41	65
4	24	21	91	27

三、重复值处理

1. 判断重复

df.duplicated(
    subset: Union[Hashable, Sequence[Hashable], NoneType] = None,
    keep: Union[str, bool] = 'first',
) -> 'Series'
  • subset:要判断重复值的列,可以是一列或多列,默认全部列
  • keep:{'first', 'last', False}
    • first:除了第一个出现的以外,其余重复项均判断为True
    • last:除了最后一个出现的以外,其余重复项均判断为True
    • False:所有重复项均判断为True

2. 删除重复值

df.drop_duplicates(
    subset: Union[Hashable, Sequence[Hashable], NoneType] = None,
    keep: Union[str, bool] = 'first',
    inplace: bool = False,
    ignore_index: bool = False,
) -> Union[ForwardRef('DataFrame'), NoneType]
  • ignore_index
    • False:返回的结果中被删除数据对应的索引项缺失
    • True:返回的结果中将重新按顺序生成连续的索引

np.unique()set()可以返回唯一元素的集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值