一、实验目的
(1) 掌握处理重复值的方法。
(2) 掌握处理缺失值的方法。
(3) 掌握处理异常值的方法。
二、实验内容
(1) 处理重复值。
(2) 处理缺失值。
(3) 处理异常值。
三、实验过程、内容
介绍代码实现的详细过程情况。
3.1 处理重复值
运用duplicated()方法查看数据重复情况,并运用drop_duplicates()方法删除重复值。
导入库
import pandas as pd
import numpy as np
导入数据
df = pd.read_csv('USER_INFO.csv',encoding='gbk')
df.head()
查看重复的数据情况
df[df.duplicated().values == True]
去重前数据大小
df.shape #去重前数据大小
去除重复的数据
df1 = df.drop_duplicates(ignore_index=True)
df1.shape #去重后数据大小
3.2 处理缺失值
查看数据中各个属性的缺失值数, 将性别缺失的赋值为3, 年龄缺失的赋值为0, 星座缺失的赋值为0。
查看数据的缺失值
df.isnull()
查看性别字段缺失情况
df1[df1['CUST_SEX'].isnull().values==True]
将性别列为空的的填充为3
df1 = df1.fillna({"CUST_SEX":3})
查看年龄字段缺失的值
df1[df1['CERT_AGE'].isnull().values==True]
将年龄缺失的赋值为0
df1 = df1.fillna({"CERT_AGE":0})
查看星座字段缺失值情况
df1[df1['CONSTELLATION_DESC'].isnull().values==True]
将星座缺失的赋值为0
df1 = df1.fillna({"CONSTELLATION_DESC":0})
3.3 处理异常值
查找出在网时长小于0、费用大于4万元、总通话时长比本地通话时长、国内长途通话时长和国内漫游通话时长的和大于100的数据并删除。
#删除异常值数据
df1.drop(df1[(df1['INNET_MONTH']<0)|(df1['ACCT_FEE']>40000)|(df1['CALL_DURA']>df1['NO_ROAM_LOCAL_CALL_DURA'])|(df1['NO_ROAM_GN_LONG_CALL_DURA']+df1['GN_ROAM_CALL_DURA']>100)].index,inplace=True)
删除后的数据大小由三十万缩减到快四万。
df1.shape
3.4 保存处理后的数据
df1.to_csv('./预处理后的数据.csv')