数据清洗----重复值处理
记:
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' )