python数据预处理: 使用pandas 进行数据清洗

本文介绍了使用pandas进行数据清洗,重点关注缺失值、异常值和重复值的处理。对于缺失值,提出了丢弃、补全、转化法和不处理四种策略;异常值处理涉及业务运营中的异常数据、异常检测模型和非异常敏感模型;重复值处理则讨论了何时保留重复记录以及重复值的业务意义。文章提供了多种处理方法和实际应用案例。
摘要由CSDN通过智能技术生成

问题:

介绍数据清洗方法。。

解答:

所谓数据清洗主要处理的是数据中的缺失值、异常值和重复值:

缺失值处理

数据缺失值指由于各种原因导致数据中存在的空缺值:数据库中的null,python返回对象none,pandas或numpy中的nan;另空字符串是有实体的不算是缺失值,缺失值没有实体。

处理数据缺失值一般有4中方法:

  1. 丢弃
  2. 补全
  3. 真值转化
  4. 不处理

丢弃

如果缺失的数据量不大,且对其丢弃对数据特征的影响有限,可以选着丢弃,毕竟这样容易操作。某一列丢失的数据过多,为了避免增加噪声,可以丢弃。

补全

相对于丢弃补全更常用,毕竟数据的完整性很重要,但是补全的方式也很重要,会影响到后续的数据处理。
对全的方法:

  • 用平均值、中值、分位数、众数、随机值等替代。效果一般,因为等于人为增加了噪声。
  • 建立一个模型来“预测”缺失的数据。
  • 对于重要的数据,可以专家不足,或是调用数据源头补全,缺点是成本高

转化法

我们承认缺失值的存在,并且把数据缺失也作为数据分布规律的一部分,这将变量的实际值和缺失值都作为输入维度参与后续数据处理和模型计算。但是变量的实际值可以作为变量值参与模型计算,而缺失值通常无法参与运算,因此需要对缺失值进行真值转换。

以用户性别字段为例,很多数据库集都无法对会员的性别进行补足,但又舍不得将其丢弃,那么我们将选择将其中的值,包括男、女、未知从一个变量的多个值分布状态转换为多个变量的真值分布状态。

不处理

一些模型可以自己处理缺失值,所以可以不对缺失值进行处理。常见的能够自动处理缺失值的模型包括:KNN、决策树和随机森林、神经网络和朴素贝叶斯、DBSCAN(基于密度的带有噪声的空间聚类)等

数据:

# 数据缺失值处理
import pandas as pd
import numpy as np
from sklearn.preprocessing import Imputer
import random
# 获取数据
df1 = pd.read_csv('https://raw.githubusercontent.com/ffzs/dataset/master/boston/train.csv')
df = df0.iloc[:10,:7]

# 查看是否有缺失值
df.isna().values.any()
# False 没有缺失值

# 数据行列
df.shape
# (10, 7) 10行 7列

# 制造10个缺失值
for i in range(10):
    df.iloc[random.choice(range(10)), random.choice(range(3,7))] = np.nan

看下数据:
在这里插入图片描述

# 查看缺失值分布
df.isna().sum()

ID       0
crim     0
zn       0
indus    1
chas     2
nox      3
rm       3
dtype: int64

# 丢弃缺失值
df_droped = df.dropna()
df_droped

  ID	crim	zn	indus	chas	nox	rm
2	4	0.03237	0.0	2.18	0.0	0.458	6.998
3	5	0.06905	0.0	2.18	0.0	0.458	7.147
9	15	0.63796	0.0	8.14	0.0	0.538	6.096

# 将缺失值替代为特定值
# 用后面的值替代缺失值
df.fillna(method='backfill')

  ID	crim	zn	indus	chas	nox	rm
0	1	0.00632	18.0	2.31	0.0	0.469	6.998
1	2	0.02731	0.0	7.07	0.0	0.469	6.998
2	4	0.03237	0.0	2.18	0.0	0.458	6.998
3	5	0.06905	0.0	2.18	0.0	0.458	7.147
4	7	0.08829	12.5	7.87	0.0	0.524	6.012
5	11	0.22489	12.5	7.87	0.0	0.524	6.377
6	12	0.11747	12.5	7.87	0.0	0.524	5.889
7	13	0.09378	12.5	7.87	0.0	0.524	5.889
8	14	0.62976	0.0	8.14	0.0	0.538	5.949
9	15	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值