07-19 pandas 数据清洗(重复值的处理+缺失值处理)

数据清洗----重复值处理

记:
1、现实生活中,数据并非完美的,需要对所获得的不完美的数据进行清洗才能进行后面的数据分析
2、数据清洗包括 处理缺失值,重复值和异常值等
3、数据清洗工作占整个数据分析项目的百分之60以上的时间

一、重复值的处理

重复值一般采取删除法 来处理
但是有些重复值不能删除,例如订单明细,数据或交易明细数据等

具体函数如下:

inplace=True  
加上后 所有才做才会直接作用于原始数据上

import 部分和读取部分一样的,就不加详述;

df.duplicated() ---重复行的判断,一默认值判断

df[df.duplicated() ]  重复行的返回

df.duplicated( subset=['appname' , ' comments' ] , keep = 'last / first' ) 

1、依次判断每一行是否为重复值,是返回 True ,不是返回 False
2、subset 为判断的变量 依据
3、 keep为重复后 保留 第一行还是最后一行的选择

np.sum(df.duplicates() ) ---统计计算重复的行数
np.sum()  ---默认对行进行操作

df.drop_duplicates() ----删除重复行

df.drop_duplicates(subset=['appname','comments'],keep ='last/first')

筛选删除

二、缺失值的处理

缺失值首先需要实际情况定义
可以采取直接删除法
有时候需要使用替换法或者 插值法

替换法有三:

均值替换,前向和后向替换,常数替换

df.isnull()  判断每个位置上是否为缺失值( 返回 true  false

np.sum(df.isnull() )   ---里边默认对每一行进行操作,作用于每一列(axis=0 )上,

即统计每个变量里缺失值的个数

缺失值比例的统计 —缺失率的计算

df.apply( lambda x: sum( s.isnull() ) / len(x) ,axis=0 ) 

直接删除法

df.dropna( how='any' , axis = 0 )  ---只要一行中有一个缺失值,该行就会被删除

df.dropna( how='all' , axis = 0 )   all表示一行全是缺失值,才会被删除 

Python的numpy和pandas 中一般都默认对行(axis=0)进行处理货删除,不会直接删除列的,除非一列全部缺失,

只有性别和年龄两列有一列有缺失值时就会被删除

df=pd.dropna( subset=['gender', ' age' ] ,how = 'any'  ) 

只有性别和年龄两列同时有缺失值时就会被删除

df=pd.dropna( subset=['gender', ' age' ] ,how = 'all'  ) 

你可能感兴趣的:(知识要点,练习题)