数据分析疑难杂症-02

我们拿到的数据通常是不干净的,所谓的不干净,就是数据中有缺失值,有一些异常点等,需要经过一定的处理才能继续做后面的分析或建模,所以拿到数据的第一步是进行数据清洗,本章我们将学习缺失值、重复值、字符串和数据转换等操作,将数据清洗成可以分析或建模的亚子。

2、数据清洗

2.1 缺失值观察与处理

2.1.1缺失值的观察

#方法一
df.info()

#方法二
df.isnull().sum()

缺失值的处理

#检索空缺值
#方法一
np.isnan(df['Age'])

#方法二
df['Age'].isnull()

#注意:df[['Age']].isnull()返回的是DataFrame对象。

 其中关于np.isnan()和pd.isnull()用法可以参考,写得很清晰。

问题:关于用df['Age']==np.nan这个方法检索空值的问题?

#我是这样理解的
import numpy as np
np.nan==np.nan
#返回为False,故这样检查空值有问题。

#另外用下面这种方法检索空值也容易出错
df[1]==None
#返回结果与上面一样
#我自己从np.nan ==None返回False来理解

另外的情况是

还有一种情况是

上面两种情况再进行缺失值的处理比较容易出错。

#缺失值类型有:空格,逗号,或者本身为np.nan或者为None,或者其他
#建议先查看离散变量的取值情况,代码如下:
for col in df:
   print(f'{col}:{df[col].unique()}')
#这样就可以对缺失值的形式进行了解
#明白缺失值的形式之后,就可以用replace函数替换成统一的形式,比如np.nan形式

2.1.2、缺失值的处理 

关于replace函数,这个博客写得很清晰,不再展开了。

缺失值处理这块是个大问题,可以参考二手车交易价格预测的思路

dropna()用法,主要作用是删除空缺值所在行或者列,这篇写得挺清晰的,不再展开了。

另外多写一句,df.dropna()是删除所有包含NaN的行,相当于参数全部默认,其中这个参数inplace: 默认False,即筛选后的数据存为副本,True表示直接在原数据上更改。

fillna()用法介绍用特殊值0、中位数、平均数、字典、临近值进行填充,写的挺清晰,不再展开了。

2.2、重复值观察与处理

#查看重复值
df[df.duplicated()]

#重复值处理
#以下是对整个行有重复值的清理的方法举例:
df = df.drop_duplicates()
df.head()
#将前面清洗的数据保存为CSV格式
df.to_csv('test_clear.csv')

重复值处理,这篇博客写得挺清晰,不展开了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值