几种常见的数据清洗工具使用教程与示例

本文首先了介绍几种常见的数据清洗工作,然后详细说明了如何搭建数据清洗工具的环境,并通过实例操作深入浅出的阐述如何使用清洗工具清洗数据,最后给出笔者的学习和使用建议,希望读者对数据清洗工具能有更加全面和深入的认识。

Excel

VBA(VisualBasic宏语言)

VisualBasicforApplications(VBA)是VisualBasic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是MicrosoftOffice软件。也可说是一种应用程式视觉化的Basic脚本。VBA可以使现有的应用程序实现自动化的手段,并可以通过自定义的方法创建你需要的解决问题的方案。

Python

Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。Python语言的简洁性、易读性以及可扩展性,Python行业现状,Python在2018年世界脚本语言排行榜中,Python排名第一,也是多领域首选语言,掌握了Python就是掌握了未来。

JupyterNotebook

jupyterNotebook(此前被称为IPythonnotebook)是一个交互式笔记本,支持运行40多种编程语言。JupyterNotebook是一款开放源代码的Web应用程序,支持实时代码,数学方程,可视化和markdown,便于创建和共享文学化程序文档,可以在其中记录代码,运行代码,查看结果,可视化数据并在查看输出结果。这些特性使其成为一款执行端到端数据科学工作流程的便捷工具,可以用于数据清理,统计建模,构建和训练机器学习模型,可视化数据以及许多其他用途。

PyCharm

PyCharm是一种PythonIDE集成开发环境,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。

JDK

JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Excel一般都自带,不用独立安装。新建Excel文件,在工具条上点击开发工具,点击VisualBasic可以进入代码编写环境,如下图所示。

为运行并编译java,需配置java环境,下载安装JDK、配置环境变量、验证安装。如果不是专业人士,可以教专业人士协助安装,直接使用已下载安装文件及协助配置。系统安装验证:windows系统,运行——cmd,进入dos窗口,输入java,安装成功的话,如下图所示。

2.4JupyterNotebook如果已经安装好了Python,那么可以使用pip命令安装,Pipinstalljupyter。不需要激活,直接可以使用。系统安装验证:windows系统,运行——cmd,进入dos窗口,输入JupyterNotebook。

前面说过,PyCharm是一款功能强大的Python编辑器,具有跨平台性,需要独立下载安装文件,安装完成后还需激活许可,具体步骤可参考网上教程。

另外说一下,激活许可后,不要忘记关键一步,修改本机系统修改hosts文件,Windwos系统hosts文件路径为:C:\Windows\System32\drivers\etc

笔者分别用VBA、python写一句“helloworld”例子,其中Python写的例子分别使用JupyterNotebook、pyCharm编译代码,体会一下不同编译器对代码执行结果,根据自己能力选取适合的清洗工具。

代码及编译工具

代码内容

说明

VBA(Excel)

DimstrAsString

str='helloworld'

Debug.Print(str)

需定义变量

输出界面,单一

print(str)

不需要定义变量

交互式编程

输出界面,简单明了

为非专业人进入编程世界提供机会

pyCharm

编程环境界面专业

适合专业人士

3.1.1VBA环境

在Python环境下,建立工程文件,再建立代码文件,然后编写代码并编译。

在日常数据清洗业务中,大家经常会遇到处理各种字符串的问题,比如对字符串进行拆分、合并、截取、替换等,笔者还是用如下方式各写几个样例。

代码概述

继续使用“helloworld”为例子,通过空格拆分,左边取hello右边去word,并打印输出;

使用使用instr、mid函数拆分

灵活掌握字符串函数

使用split()函数拆分

体会交互式编程乐趣

体会专用化的编译环境

3.2.1VBA环境

代码如下:

DimstrAsString'定义字符串

Dimstr_helloAsString'定义字符串截取hello

Dimstr_worldAsString'定义字符串截取world

Dimint_lenAsInteger'获取helloworld长度

DimiAsInteger'记录空格位置

'len(字符串)返回[字符串]的长度

int_len=Len(str)

'instr(从第几个开始,字符串1,字符串2)从规定的位置开始查找,返回字符串2在字符串1中的位置

i=InStr(1,str,'')

'mid(字符串,从第几个开始,长度)在[字符串]中[从第几个开始]取出[长度个字符串]

str_hello=Mid(str,1,i)

str_world=Mid(str,i,int_len)

Debug.Print'输出完整字符串-';str

Debug.Print'输出字符串长度-';int_len

Debug.Print'输出空格位置-';i

Debug.Print'按空格截取左边部分并输出';str_hello

Debug.Print'按空格截取,右边部分并输出';str_world

截图如下:

3.2.2JupyterNotebook环境

本文使用python字符串的split()函数进行实现字符串拆分例子,split()就是将一个字符串分裂成多个字符串组成的列表,split()当不带参数时以空格进行分割,当代参数时,以该参数进行分割。充分发挥JupyterNotebook的交互式编程环境的优势,通过不同单元格来实现本例子。

3.2.3PyCharm环境

#定义字符串及为字符串赋值

#直接使用split函数对字符串按空格拆分

print(len(str))

print(str.split()[0])

print(str.split()[1])

本例主要展示VBA、Python对xls文件基本操作,对象是ExcelVBA编程的核心,了解xls文件对象结构,Execl基本的体系结构为application-workbook-worksheet-range,其中application为应用对象,workbook是工作簿对象,worksheet表格对象,range或者Cell单元格对象,每一个类对象都包含了许多属性和方法。

本例子xls文件数据如下:实现操作为读取A列数据,并对A列数据进行拆分,拆分完毕后赋值给B列和C列,并完成保存。

Excel对象模型中的Workbook对象专门用于处理工作薄,新建与打开工作薄的操作需要Workbooks集合进行处理。

Workbooks集合的常用属性和方法如下:

属性

Count

返回当前打开的所有工作薄的总数

Item

通过名称或索引号来引用当前打开的工作薄

方法

Add

新建一个工作薄,成为活动工作薄

Close

关闭当前打开的所有工作薄

Open

打开一个工作薄

Workbook对象的常用属性和方法如下:

Activesheet

返回工作薄中的活动工作表

FullName

返回工作薄的完整路径和名称

Name

返回工作薄的文件名称

Path

返回工作薄的路径

Sheets

返回工作薄中的所有工作表和图表工作表

Workssheets

返回工作薄中所有工作表

关闭工作薄

Save

保存工作薄

SaveAs

另存为工作薄

Excel对象模型中的Worksheet对象专门用于处理工作表,新建与打开工作表的操作需要Worksheets集合进行处理。

Worksheets集合的常用属性和方法如下:

返回当前打开的所有工作表的总数

通过名称或索引号来引用当前打开的工作表

新建一个工作表,成为活动工作表

Worksheet对象的常用属性和方法如下:

Cells

返回工作表中的所有单元格

Columns

返回工作表的所有列

返回或设置工作表的名称

Range

返回工作表的单元格或单元格区域

Rows

返回工作表的所有行

Activate

激活工作表

Copy

复制工作表

Delete

删除工作表

Move

移动工作表

讲工作表保存为一个独立的工作薄

Select

选择工作表

Range对象代表单元格区域,几乎所有与单元格区域操作都与Range对象有关。

Range对象的常用属性和方法如下:

返回单元格区域中的所有单元格

返回单元格区域中的所有列,如果有多个区域,返回第一个区域所有列

返回单元格区域中的所有列的总数

Row

返回单元格区域第一行的行号

返回单元格区域所有行

Value

返回或设置单元格的值

激活选中的单元格

ClearContents

清除单元格区域中的内容

Find

在单元格区域查询特定信息

选择单元格或单元格区域

可以使用Cells引用单元,Cells与Range区别为,Range属性以字符串的形式进行引用,Cells以数字的形式引用,笔者个人习惯使用Cells,Cells属性的父对象可以是Application、Worksheet或Range。

本例在模块中,申明一个子函数便于拆分字符串和返回值

FunctionGetSplit(dt,idx)'申明一个拆分字符串的子函数,按空格拆分

DimarAsString

aa=Split(dt,'')

GetSplit=aa(idx)

EndFunction

PrivateSubCommandButton1_Click()

DimwksAsWorksheet'申名工作表变量

DimRowCountSumAsLong'申名工作表最大行数变量

DimiAsLong'申名临时变量

Setwks=Worksheets('字符串')'取工作表字符串工作表,并赋值

RowCountSum=wks.UsedRange.Rows.Count

Fori=1ToRowCountSum

'拆分单元格A列,并按拆分索引值存取顺序给单元格B、单元格C赋值

wks.Cells(i,2)=GetSplit(wks.Cells(i,1),0)

wks.Cells(i,3)=GetSplit(wks.Cells(i,1),1)

Nexti

MsgBox('OK')

EndSub

Python有专门支持Excel文件的操作的库,这些库包括xlrd、xlwt、xlutils、openpyxl、xlsxwriter几种,本文采用openpyxl简绍,openpyxl中有三个不同层次的类,Workbook是对工作簿的抽象,Worksheet是对表格的抽象,Cell是对单元格的抽象,每一个类都包含了许多属性和方法。

一个Workbook对象代表一个Excel文档,因此在操作Excel之前,都应该先创建一个Workbook对象。对于创建一个新的Excel文档,直接进行Workbook类的调用即可,对于一个已经存在的Excel文档,可以使用openpyxl模块的load_workbook函数进行读取,该函数包涵多个参数,但只有filename参数为必传参数。filename是一个文件名,也可以是一个打开的文件对象。

Workbook集合的常用属性和方法如下:

active

获取当前活跃的Worksheet

worksheets

以列表的形式返回所有的Worksheet(表格)

read_only

判断是否以read_only模式打开Excel文档

properties

获取文档的元数据,如标题,创建者,创建日期等

sheetnames

获取工作簿中的表(列表)

get_sheet_names

获取所有表格的名称(新版已经不建议使用,通过Workbook的sheetnames属性即可获取)

get_sheet_by_name

通过表格名称获取Worksheet对象(新版也不建议使用,通过Worksheet[‘表名‘]获取)

get_active_sheet

获取活跃的表格(新版建议通过active属性获取)

remove_sheet

删除一个表格

create_sheet

创建一个空的表格

copy_worksheet

在Workbook内拷贝表格

获取Worksheet对象后,可以通过Worksheet对象获取表格的属性,得到单元格中的数据,修改表格中的内容。openpyxl提供了非常灵活的方式来访问表格中的单元格和数据,常用的Worksheet属性如下:

title

表格的标题

dimensions

表格的大小,这里的大小是指含有数据的表格的大小,即:左上角的坐标:右下角的坐标

max_row

表格的最大行

min_row

表格的最小行

max_column

表格的最大列

min_column

表格的最小列

rows

按行获取单元格(Cell对象)

columns

按列获取单元格(Cell对象)

freeze_panes

冻结窗格

values

按行获取表格的内容(数据)

Cell相对Workbook、Worksheet对象老说比较简单,常用的属性如下:

row

单元格所在的行

column

单元格坐在的列

value

单元格的值

coordinate

单元格的坐标

本例使用JupyterNotebook环境来说明处理xls数据的例子,本例用到Python中数组、Zip函数、split函数。(可以看到Python相比VBA操作xls数据更加容易)

通过上述内容,相信大家对几种常见的数据清洗工具有了一定的认识和了解,根据笔者在实际工作中运用积累的经验,对几种数据清洗工具的学习和使用给出个人理解和建议:

Python语言算是当前最流行的编程语言,特别适合数据分析和人工智能等行业,相比其他面向对象的编程语言,Python更适合非专业开发人员学习并通过代码交流,笔者认为其最大不同是不用事先申明变量和对象,直接根据思维认识书写相应的代码。另外就是编译工具JupyterNotebook的出现,使得代码调试工作变得更加便捷高效,代码执行结果同步显示,编译工具易学易用也会让大众对Python颇有好感。笔者认为PyCharm编译工具适合专业开发人员使用,非专业人员可以去了解一下,非专业人员学习起来难度稍大。

随着互联网、大数据、人工智能等新一代信息技术的蓬勃发展,各行各业已建立了众多计算机信息系统,积累了大量的数据,可靠无误的数据能够准确地反映企业的实际状况,能够有效地支持企业的日常运作和决策。

笔者希望通过本文抛砖引玉,权当拓展大家的思路和视野,熟练掌握几种数据清洗工具,不断提升对数据的认识,进而去分析数据之间的关系,挖掘数据潜在价值,在数据领域扬帆远航。

THE END
1.数据处理和分析之数据预处理:数据清洗项目案例分析与实践数据清洗,也称为数据清理,是数据预处理过程中的关键步骤,旨在识别和纠正数据集中的错误、不一致和遗漏。这一过程对于确保数据分析的准确性和可靠性至关重要。数据清洗涉及多种技术和算法,用于检测和处理数据中的质量问题,包括但不限于缺失值、异常值、重复记录和格式不一致等问题。 https://blog.csdn.net/2401_87715305/article/details/142836939
2.数据清洗的概念及实战案例(配图)!!!51CTO博客# 数据分析的过程和别的过程没什么区别 只要明确思路 其他都不难 拿做菜举例 # 类比定义 数据分析过程 做菜过程 明确需求 明确做什么菜品 收集采集 去菜市场买菜 数据清洗 洗菜切菜配菜 数据分析 炒菜 数据报告 + 数据可视化 拍照发朋友圈吃 # 专业定义 https://blog.51cto.com/u_15127637/4278148
3.数据清洗案例分析袋鼠社区数据清洗案例分析 - 在大数据时代,数据已经成为企业的重要资产。然而,原始数据往往存在许多问题,如缺失值、异常值、重复值等,这些问题会影响数据分析的准确性和可靠性。因此,数据清洗成为了数据处理过程中不可或缺的一步。本文将通过一个实际的数据清洗案例,详细介绍https://www.dtstack.com/bbs/article/12691
4.国外客商数据清洗示例不完整的数据会污染数据库,降低其业务质量。 数据清洗,通常也称为数据清理,实际上不是对数据库的单个活动,而是涉及多种技术使用的整个过程。他们的目标是:拥有一个干净、可靠、一致和完整的数据库。干净的数据无非就是高质量的数据,我们可以信任的数据,并可以根据这些数据做出正确的决策。在商业领域,据估计每年有25https://36kr.com/p/2707385155614849
5.数据清洗? 清理数据 3 例子 数据清洗 编辑 数据清理,包括用于删除和更正数据库或其他信息系统中数据错误的各种方法。 例如,错误可能包括不正确的(最初是错误的或过时的)、冗余的、不一致的或格式错误的数据。 数据清洗的基本步骤是重复检测(相同数据集的检测和合并)和数据融合(合并和补全不完整的数据)。 数据清洗是对提https://vibaike.com/347397/
6.数据仓库中的数据清洗(精选十篇)运用数据仓库技术对各类水利业务系统中产生的海量信息进行综合分析处理,实现宏观统计数据与详细业务数据之间的联系。通过数据仓库逻辑模型的设计与实现,从综合数据库或外部系统中抽取数据进行数据清洗、转换,并装载到数据仓库中等过程,方便快速地为水利系统各行业提供统计分析信息,并可对信息进行多维统计分析,通过OLAP和数据挖https://www.360wenmi.com/f/cnkeykil00hn.html
7.如何进行数据清洗和预处理?如何进行数据清洗和预处理? 收藏 在数据分析和机器学习任务中,数据清洗和预处理是非常重要的步骤。这些过程可以帮助我们从原始数据中提取有价值的信息,并减少由于数据质量问题导致的误差和偏差。 本文将介绍数据清洗和预处理的基本步骤和技术,并提供一些实践建议和例子。https://www.cda.cn/bigdata/202679.html
8.数据清洗HRTechChina.com如何清洗人力资源分析数据?给你6个详细的步骤指南!数据清理是人力资源分析中的关键因素。在你分析数据之前,你需要对数据进行 "清洁"。在这篇数据清理指南中,我们将解释为什么数据清理很重要,以及你如何进行数据清理。在文章的底部,我们附上了一个有用的数据清洗信息图。 在数据分析中常说的一句话是。"垃圾进,垃圾https://www.hrtechchina.com/tag/%E6%95%B0%E6%8D%AE%E6%B8%85%E6%B4%97/
9.机器学习数据清洗之识别异常点数据是现代社会中的一种宝贵资源,但在利用数据之前,我们需要进行数据清洗以确保数据的质量和准确性。 异常值是数据中常见的问题之一,它们可能会对分析和建模产生负面影响,因此识别和处理异常值是数据清洗过程中的重要步骤之一。 本文将介绍异常值的概念、危害以及与缺失值的比较,并探讨了多种识别异常值的方法,包括基于https://www.jianshu.com/p/6676be6cdae4
10.SPSS分析实战数据清洗数据-标识异常个案模块来操作,这部分是通过算法来查找异常值,只能作为参考,而不能作为唯一标准。比如我们举的这个例子,这几个样本都不算异常。 算法基本原理 聚类:将所有个案分为若干类 评分:对每一个个案在其所属类别的异常度进行评分,并计算相应的异常Index 报告:对每一个异常个案,列出导致异常的具体变量的情况https://www.medsci.cn/article/show_article.do?id=83631855e8d6
11.手把手教你搞定4类数据清洗操作腾讯云开发者社区3)以其他变量的计算结果填充缺失值。举个最简单的例子:年龄字段缺失,但是有屏蔽后六位的身份证号信息,那么就可以轻松找出出生年月,算出目前年龄。 4)以业务知识或经验推测填充缺失值。 4. 重新取数 如果某些变量非常重要同时缺失率高,那就需要和取数人员或业务人员进行沟通,了解是否有其他渠道可以取到相关数据。https://cloud.tencent.com/developer/article/1955170
12.大厂的调查问卷如何设计样本填答调查者被访者无意义的分类不但不能帮助完成调研目标,还会增加后期分析数据的任务量。 举个例子:性别在以消费为核心的产品中会有明显的区别,男性和女性就是两个相异的群体,应该进行分群,但是在某些工具类的APP中,或许就没那么必要了。 3. 了解行业情况 阅读相关的行业研究报告或做竞品分析研究,通过吸取现有的经验和教训,可以提https://www.163.com/dy/article/H73PNDPF0511805E.html
13.如何用Excel实现多重条件匹配与分段计价2、生成的Excel不能直接使用,需要数据清洗。大概就是: a、去掉样式,去掉空白行列。 b、替换无法识别的字符,数据转为纯数字。 c、从文本中识别数据,比如要将9行和11行的包裹类型、长、宽、高提取出来,转化为我们需要的标准化数据表格式,这种格式能够被函数识别并匹配包裹类型和报价。 https://www.douban.com/note/815266757/
14.研究生学术训练营之信息素养系列回顾(2018Python进阶之数据爬取与清洗(海南医学院副教授 余本国) 内容提要:本节课开始以统计美剧《老友记》英语台词词频的案例,对上节课关于模块的应用进行了复习,随后老师以上海外国语贴吧和研究生讲座网站为例,为同学们展示了如何利用Python快速爬取网页上的文本及数据。 https://wmcj.shisu.edu.cn/1a/15/c990a137749/page.htm
15.深入浅出数据科学很多人是某一个(或者两个)领域的专家,但合理地使用数据科学需要同时精通以上3个领域。我们将深入讨论这3个领域并解决复杂的问题。我们将清洗、探索和分析数据,得出科学、准确的结论。我们还将利用机器学习和深度学习技术解决更加复杂的数据问题。 本书涵盖的内容 第1章:如何听起来像数据科学家。本章将介绍数据科学https://labs.epubit.com/bookDetails?id=N8339