Python数据预处理-数据清洗

16 阅读2分钟

数据清洗

读取数据

import pandas as pd

data = pd.read_csv(path)

unique()查看重复值

data.duplicated().unique()
  • data.duplicated():这个方法会检查DataFrame中的每一行,看它是否与之前的行完全相同(基于所有列)。如果某行与前面的行重复会被标记为True,否则为False。这个方法主要用于识别数据中的重复记录。
  • unique()在这里会返回一个包含这两个布尔值的数组

重复值处理

drop_duplicates()删除重复行

data.drop_duplicates(inplace=True)
  • inplace参数为True时,将永久性修改原数据,为False则不修改原数据

list()通过循环列表查找相同数据去重

data.list()

set()通过查找集合特征(元素唯一)去重

data.set()

equals()属性去重复

data.equals()

isnull()查看缺失值

data.isnull().sum()

插补方法

平均数、中位数、众数插补

根据属性值的类型,用该属性取值的平均数、中位数、众数进行插补

使用固定值

将缺失的属性值用一个常量替换

最近邻插补

在记录中找到与缺失样本最接近的样本对应属性值进行插补

回归方法

对带有缺失值的变量,根据已有数据和与其有关的其他变量(因变量)的数据建立拟合模型来预测缺失的属性值

插值法

利用已知点建立合适的插值函数f(x),未知值由对应点x,求出的函数值f(x)近似代替

异常值处理

样本中的个别数值明显偏离其余的观测值。

方法:删除含有异常值的记录、视为缺失值、平均值和不处理。

数据变换

数据标准化

最小-最大标准化(离差标准化)

(data – data.min()) / (data.max() – data.min()))

零 -均值标准化(标准差标准化)

(data – data.mean()) / data.std())

小数定标标准化

Data / 10 ** np.ceil(np.log10(data.abs().max()))

数据离散化

些数据分析算法,特别是某些分类算法,如ID3算法、KNN算法等,要求使用类别属性形式的数据,因此常常需要将连续属性变换成类别属性,即连续属性离散化。

  • 等宽法
  • 等频法
  • (一维)聚类

独热编码

统计时间出现次数

user_log_df.action_type.value_counts()
# 把分类变量转换成“独热编码” 
pd.get_dummies(user_log_df.action_type)