第五章——数据清洗与校验

一、对文件merge.csv进行完全去重

1.源数据预览

2.打开kettle新建一个转换并添加下述步骤然后用跳连接 

 3.双击CSV文件输入进行配置

点击浏览导入文件,然后点击获取字段

 最后点击预览看数据是否抽取进来

 4.双击唯一行(哈希值)进行配置

在用来比较的字段处,添加要去重的字段,这里可以单击获取按钮,获取要去重的字段

 5.保存运行,成功后截图如下

 6.查看去重之后的数据

选中唯一行(哈希值)控件,单击执行结果窗口的Preview data选项卡,查看是否消除CSV文件merge.csv中完全重复的数据

 二、对文件people_survey.txt中的缺失值进行填充

1.数据预览

 2.新建一个转换并按照下述新建好步骤然后用跳连接

 3.双击文本文件输入进行配置

点击浏览导入数据,之后点击增加,效果图如下

 单击内容选项卡;在清除分隔符处的默认分隔符;单击Insert TAB按钮,在分隔符处插入一个制表符;取消勾选头部

 单击字段选项卡;根据文件people_survey.txt文件的内容添加对应的字段名称,并指定数据类型

 点击预览查看数据是否抽取成功

 4.双击过滤记录进行配置

将过滤字段设置为workclass、过滤值设置为Private作为过滤条件;在发送true数据给步骤:下拉框中选择空操作;在发送false数据给步骤:下拉框中选择空操作(什么也不做)2

 5.双击替换NULL进行配置

勾选选择字段处的复选框,并在字段框添加字段为hours_per_week,值替换为44

 6.双击合并记录进行配置

在旧数据源:下拉框选择替换NULL值,新数据源:下拉框选择空操作(什么也不做)2;在匹配的关键字:部分,添加关键字段,即userid。

 7.双击替换NULL值 2进行配置

勾选选择字段处的复选框,并在字段框添加字段为workclass,值替换为Private

 8.双击字段选择进行配置

在移除选项卡处添加要移除的字段名称,这里移除的是字段flagfield。

 9.保存并运行,成功后截图如下

 10.查看缺失值是否已填充

单击字段选择控件,再单击执行结果窗口的Preview data选项卡,查看是否填充了文件people_survey.txt中的缺失值。

 三、总结

        完全去重指的是消除完全重复的数据,这里提到的完全重复数据指的是数据表记录字段值完全一样的数据,去重也是数据清洗的一个重要步骤。在数据挖掘中,面对的通常都是大型的数据库,它的属性有几十个甚至几百个,因为其中某个属性值的缺失而放弃大量其他的属性值,这种删除是对信息的极大浪费,所以产生了插补缺失值的思想与方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据分析 数据分析——数据校验 数据校验   很多时候在数据分析之前,我们需要对样本进⾏校验,以确定样本的价值。   先写⼊数据: import pandas as pd import numpy as np df = pd.DataFrame({'⼀班':[90,80,66,75,99,55,76,78,98,None,90], '⼆班':[75,98,100,None,77,45,None,66,56,80,57], '三班':[45,89,77,67,65,100,None,75,64,88,99]}) 1完整性校验 完整性校验 # 判断是否为缺失值(空值) df.isnull() # 统计出每⼀列的缺失值数⽬ df.isnull().sum() # 每⼀列缺失⽐例 df.isnull().sum()/df.shape[0] # 判断⾮空值的数⽬ df.notnull().sum()   笔记:这⾥也可以⽤到describe⽅法,如下: # 使⽤describe⽅法查看数据的完整性,统计出了⾮空值的数⽬ df.describe().iloc[0,:]   忘了describe⽅法的话,请查看《》 2时间跨度检验 时间跨度检验   很多样本的时间数据并不是以datatime64类型存储的,此时我们得先进⾏"数据类型修改"   详见:《》的4.3数据修改   之后进⾏最⼤最⼩相减就OK了。 print(date.max()-date.min()) 3重复检验 重复检验 # ⼆班和四班是相同的 df1 = pd.DataFrame({'⼀班':[90,80,66,90,99,55,76,90,98,None,90], '⼆班':[75,98,100,75,77,45,None,75,56,80,57], '三班':[45,89,77,45,65,100,None,45,64,88,99], '四班':[75,98,100,75,77,45,None,75,56,80,57]}) 3.1样本重复检验(⾏) 样本重复检验(⾏) DataFrame.drop_duplicates(subset=None, keep='first', inplace=False) subset:表⽰以这⼏个特征为基础,对整体样本进⾏去重。默认为使⽤所有特征 keep:表⽰保留第⼏个重复的样本。只允许填⼊first(保留第⼀个),last(保留最后⼀个),False(只要存在重复均不保留)。默认为first inplace:表⽰是否在原DataFrame上进⾏操作,会改变原数据。默认为False # 删除重复样本(⾏) df1.drop_duplicates() # 计算样本重复率 (df1.shape[0] - df1.drop_duplicates().shape[0])/df1.shape[0] 3.2特征重复检验(列) 特征重复检验(列)   特征重复检验相⽐样本重复检验要⿇烦⼀点,因为没有现成的函数可调⽤。   需要⽤到相似度的概念,如下: pearson相似度 spearman相似度 kendall相似度 # 使⽤pandas的⽅法:DataFrame.corr(method='pearson') asso = df1.corr() # 输出asso,看⼀下是怎样的先 print(asso)   不难看出,这是⼀个对称矩阵,所以我们只需要判断右上半⾓的数据便可。 # 输出应删除的columns,1.0可根据需求改动 delCol = [] for i in range(len(asso)): for j in range(i+1,len(asso)): if asso.iloc[i,j] == 1.0: delCol.append(asso.columns[j]) print(delCol) 最后,附上⼀段 特征重复检验 的⾃定义代码: # 输⼊DataFrame,输出特征重复的列名,可直接复制调⽤ def drop_features(data,way = 'pearson',assoRate = 1.0): ''' 此函数⽤于求取相似度⼤于assoRate的两列中的⼀个,主要⽬的⽤于去除数值型特征的重复 data:数据框,⽆默认 assoRate:相似度,默认为1 ''' assoMat = data.corr(method = way) delCol = [] length = len(assoMat) for i in range(length): for j in range(i+1,length): if asso.iloc[i,j] >= assoRate: delCol.append(assoMat.columns[j]) r
在Python中,有许多强大的库可以用于数据清洗数据校验,其中最常用的是NumPy和Pandas。NumPy是一个用于科学计算的库,而Pandas则是一个专门用于数据处理和分析的库。 使用NumPy和Pandas,你可以轻松地对数据进行各种操作,例如删除重复值、处理缺失值、过滤异常值,以及整理数据等。这些库支持向量化操作,这意味着你不需要使用循环来处理每个值,而是可以直接对整个数据集进行操作,从而提高了处理数据的效率。 对于数据清洗数据校验,你可以使用NumPy和Pandas的功能来实现。例如,你可以使用Pandas来读取Excel或数据库中的数据,并使用NumPy和Pandas的各种函数和方法来进行数据转换、校验和比较。你还可以使用断言操作来验证数据的正确性,并将错误信息输出成表格的形式,方便团队对错误进行修复。 此外,你还可以结合UI或接口自动化来验证数据清洗后的数据是否符合预期,并进行功能回归测试。总之,Python的NumPy和Pandas库提供了强大的功能和效率,使得数据清洗数据校验变得更加简便和高效。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【python】数据清洗测试思路以及探索](https://blog.csdn.net/qq_34979346/article/details/122035075)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值