python数据清洗基础二

一、简单数据处理

  • 我们拿到一个数据表,先看看它的列名
df.columns

在这里插入图片描述

  • 取值
col = df.columns.values
col

在这里插入图片描述我们有的时候需要直接取列名的索引,可是由上面的数据显示,有的有空格有的没有,当数据太多的时候我们不可能面面俱到,因此,我们需要统一去掉空格!去掉空格用strip()函数,但它一次只能处理一个函数,要想处理多个,用循环解决;

col[0].strip() #strip函数一次只能处理一个数据
[x.strip() for x in col]
#strip去除前后空格

在这里插入图片描述

二、重复值处理

检查重复值duplicated()
Duplicated函数功能:查找并显示数据表中的重复值
重复,返回True

这里需要注意的是:

当两条记录中所有的数据都相等时duplicated函数才会判断为重复值
duplicated支持从前向后(first),和从后向前(last)两种重复值查找模式
默认是从前向后进行重复值的查找和判断,也就是后面的条目在重复值判断中显示为True

df.duplicated() #返回布尔型数据,告诉重复值的位置
df.duplicated().sum()#说明有100个重复值
#查看重复的记录
df[df.duplicated()]  #是以二维DF返回

在这里插入图片描述

  • 删除重复值drop_duplicates()
    drop_duplicates函数功能是:删除数据表中的重复值,判断标准和逻辑与duplicated函数一样
df.drop_duplicates(inplace=True) 
#inplace=True表示直接在源数据上进行操作
df.shape
(500013)之前是5100,现在删除了10条重复值

判断是否删除重复值,可以用shape检查

三、异常值的处理(数值型)

df.describe().T

在这里插入图片描述倒置

  • 通常用三倍标准差判断是否是异常值
    【定义】
    https://wenku.baidu.com/view/c26cafc70c22590102029d75.html?qq-pf-to=pcqq.group
#找出'价格'异常值 三倍标准差判断异常值
sta=(df['价格']-df['价格'].mean())/df['价格'].std()
sta.abs()>3
df[sta.abs()>3]  #大于3就为异常值

在这里插入图片描述异常值还有价格和节省,我们知道理论上价格>节省

#找出'节省'异常值
df[df.节省>df.价格]

在这里插入图片描述我们查找到的异常表进行连接,整合

pd.concat([df[df.节省>df.价格],df[sta.abs()>3]])

在这里插入图片描述对其删除

delindex = pd.concat([df[df.节省>df.价格],df[sta.abs()>3]]).index
df.drop(delindex,inplace=True) #inplace指在原数集上更改
df.shape
(4996, 13)

四、缺失值处理

df.isnull() #查看缺失值
df.notnull() #查看不是缺失值的数据
df.dropna() #删除缺失值
df.fillna() #填补缺失值

查看缺失的条目

df.isnull().sum()

在这里插入图片描述
今天先以出发地为例:

7.2 总结缺失值处理常用步骤:

1、先调用以下一个查看是否有缺失值

df.isnull() #查看缺失值

df.notnull() #查看不是缺失值的数据

df.dropna() #删除缺失值

df.fillna() #填补缺失值

2、可以用df.isnull().sum()汇总缺失值的条目总数 【一般用这个】

3、开始进行缺失值处理

3.1 可以通过replace()替换方法换成0或者其他,也可以通过其它索引列取片赋值给缺失值 总言而之,就得把缺失值填补上

7.4 实操目的地
df[df.出发地.isnull()]

在这里插入图片描述

[str(x)[:2] for x in df.loc[df.出发地.isnull(),'路线名']]  #变为字符串取出
['大连', '济南']
df.loc[df.出发地.isnull(),'出发地'] = [str(x)[:2] for x in df.loc[df.出发地.isnull(),'路线名']]

再次查看

df[df.出发地.isnull()]
df.出发地.isnull().sum()
0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值