引言
数据是信息的基础,高质量的数据是各种数据分析如大数据、数据挖掘等有效应用的基本条件。人们常常抱怨“数据丰富,信息贫乏”,究其原因,一是缺乏有效的数据分析技术,二是数据质量不高,如数据输入错误、不同来源数据引起的不同表示方法,数据间的不一致等,导致现有的数据中存在这样或那样的脏数据。如果需要获得高质量的数据就需要对数据进行清洗,数据清洗是对数据进行收集和分析,重新审查和校验的过程,目的在于对缺失的、异常的、重复的、非法的等不同类型的数据进行处理,确保数据的精确性、完整性、一致性、有效性及唯一性。
本文首先了介绍几种常见的数据清洗工作,然后详细说明了如何搭建数据清洗工具的环境,并通过实例 *** 作深入浅出的阐述如何使用清洗工具清洗数据,最后给出笔者的学习和使用建议,希望读者对数据清洗工具能有更加全面和深入的认识。
一数据清洗工具简介Excel
Microsoft Excel是Microsoft为使用windows和Apple Macintosh *** 作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,使Excel成为最流行的个人计算机数据处理软件。Excel对于很多数据相关从业人员来说,是最初级也是最主要的分析工具,它可以进行各种数据的处理、统计分析和辅助决策 *** 作,如果不考虑性能和数据量,它可以处理绝大部分的数据相关处理工作。
VBA(Visual Basic宏语言)
Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(olE)任务的编程语言。主要能用来扩展windows的应用程序功能,特别是Microsoft Office软件。也可说是一种应用程式视觉化的Basic脚本。VBA可以使现有的应用程序实现自动化的手段,并可以通过自定义的方法创建你需要的解决问题的方案。
Python
Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。Python语言的简洁性、易读性以及可扩展性,Python行业现状,Python在2018年世界脚本语言排行榜中,Python排名第一,也是多领域首选语言,掌握了Python就是掌握了未来。
Jupyter Notebook
jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。Jupyter Notebook 是一款开放源代码的 Web 应用程序,支持实时代码,数学方程,可视化和 markdown,便于创建和共享文学化程序文档,可以在其中记录代码,运行代码,查看结果,可视化数据并在查看输出结果。这些特性使其成为一款执行端到端数据科学工作流程的便捷工具 ,可以用于数据清理,统计建模,构建和训练机器学习模型,可视化数据以及许多其他用途。
PyCharm
PyCharm是一种Python IDE集成开发环境,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。
JDK
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
二数据清洗工具环境准备2.1总则VBA(Excel)Excel一般都自带,不用独立安装。新建Excel文件,在工具条上点击开发工具,点击Visual Basic 可以进入代码编写环境,如下图所示。
2.2JDK
为运行并编译java,需配置java环境,下载安装JDK、配置环境变量、验证安装。如果不是专业人士,可以教专业人士协助安装,直接使用已下载安装文件及协助配置。系统安装验证:windows系统,运行——cmd,进入dos窗口,输入java,安装成功的话,如下图所示。
Python最新安装程序可以在Python的官网查询:https://www.python.org/ ,系统安装验证:windows系统,运行——cmd,进入dos窗口,输入python,安装成功的话可以看到版本信息并进入编程模式,如下图所示。
2.4Jupyter Notebook如果已经安装好了 Python,那么可以使用pip命令安装,Pip install jupyter。不需要激活,直接可以使用。系统安装验证:windows系统,运行——cmd,进入dos窗口,输入Jupyter Notebook。
2.5PyCharm前面说过,PyCharm 是一款功能强大的 Python 编辑器,具有跨平台性,需要独立下载安装文件,安装完成后还需激活许可,具体步骤可参考网上教程。
另外说一下,激活许可后,不要忘记关键一步,修改本机系统修改hosts文件,WinDWos系统hosts文件路径为:C:\windows\System32\drivers\etc
3.1hello world例子
笔者分别用VBA 、python 写一句“hello world”例子,其中Python写的例子分别使用Jupyter Notebook、pyCharm编译代码,体会一下不同编译器对代码执行结果,根据自己能力选取适合的清洗工具。
代码及编译工具 | 代码内容 | 说明 |
VBA(Excel) | Dim str As String str = " hello world" DeBUG.Print (str) | 需定义变量 输出界面,单一 |
Jupyter Notebook | str = " hello world" print(str) | 不需要定义变量 交互式编程 输出界面,简单明了 为非专业人进入编程世界提供机会 |
pyCharm | str = " hello world" print(str) | 不需要定义变量 编程环境界面专业 适合专业人士 |
3.1.1 VBA 环境
3.1.2 Jupyter Notebook环境3.1.3 PyCharm环境在Python环境下,建立工程文件,再建立代码文件,然后编写代码并编译。
3.2字符串函数在日常数据清洗业务中,大家经常会遇到处理各种字符串的问题,比如对字符串进行拆分、合并、截取、替换等,笔者还是用如下方式各写几个样例。
代码及编译工具 | 代码概述 | 说明 |
VBA(Excel) | 继续使用“hello world” 为例子,通过空格拆分,左边取 hello 右边去word,并打印输出; 使用使用instr、mID函数拆分 | 灵活掌握字符串函数 |
Jupyter Notebook | 继续使用“hello world” 为例子,通过空格拆分,左边取 hello 右边去word,并打印输出; 使用split()函数拆分 | 体会交互式编程乐趣 |
pyCharm | 继续使用“hello world” 为例子,通过空格拆分,左边取 hello 右边去word,并打印输出; 使用split()函数拆分 | 体会专用化的编译环境 |
3.2.1 VBA 环境
代码如下:
Dim str As String '定义字符串
Dim str_hello As String '定义字符串截取hello
Dim str_world As String '定义字符串 截取 world
Dim int_len As Integer '获取hello world 长度
Dim i As Integer '记录空格位置
str = "hello world"
'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.2 Jupyter Notebook环境
本文使用python 字符串的split()函数进行实现字符串拆分例子,split()就是将一个字符串分裂成多个字符串组成的列表,split()当不带参数时以空格进行分割,当代参数时,以该参数进行分割。充分发挥Jupyter Notebook 的交互式编程环境的优势,通过不同单元格来实现本例子。
3.2.3 PyCharm环境
代码如下:
#定义字符串及为字符串赋值
#直接使用split函数对字符串按空格拆分
str = "hello world"
print(str)
print(len(str))
print(str.split()[0])
print(str.split()[1])
截图如下:
3.3处理xls数据本例主要展示VBA、Python对xls文件基本 *** 作,对象是Excel VBA 编程的核心,了解xls文件对象结构,Execl 基本的体系结构为application-workbook-worksheet-range,其中application为应用对象,workbook是工作簿对象,worksheet表格对象,range或者Cell单元格对象,每一个类对象都包含了许多属性和方法。
本例子xls文件数据如下:实现 *** 作为读取A列数据,并对A列数据进行拆分,拆分完毕后赋值给B列和C列,并完成保存。
3.3.1 VBA 环境Excel对象模型中的Workbook对象专门用于处理工作薄,新建与打开工作薄的 *** 作需要Workbooks集合进行处理。
Workbooks集合的常用属性和方法如下:
属性 | 说明 |
Count | 返回当前打开的所有工作薄的总数 |
Item | 通过名称或索引号来引用当前打开的工作薄 |
方法 | 说明 |
Add | 新建一个工作薄,成为活动工作薄 |
Close | 关闭当前打开的所有工作薄 |
Open | 打开一个工作薄 |
Workbook对象的常用属性和方法如下:
属性 | 说明 |
Activesheet | 返回工作薄中的活动工作表 |
Fullname | 返回工作薄的完整路径和名称 |
name | 返回工作薄的文件名称 |
Path | 返回工作薄的路径 |
Sheets | 返回工作薄中的所有工作表和图表工作表 |
Workssheets | 返回工作薄中所有工作表 |
方法 | 说明 |
Close | 关闭工作薄 |
Save | 保存工作薄 |
SaveAs | 另存为工作薄 |
Excel对象模型中的Worksheet对象专门用于处理工作表,新建与打开工作表的 *** 作需要Worksheets集合进行处理。
Worksheets集合的常用属性和方法如下:
属性 | 说明 |
Count | 返回当前打开的所有工作表的总数 |
Item | 通过名称或索引号来引用当前打开的工作表 |
方法 | 说明 |
Add | 新建一个工作表,成为活动工作表 |
Worksheet对象的常用属性和方法如下:
属性 | 说明 |
Cells | 返回工作表中的所有单元格 |
Columns | 返回工作表的所有列 |
name | 返回或设置工作表的名称 |
Range | 返回工作表的单元格或单元格区域 |
Rows | 返回工作表的所有行 |
方法 | 说明 |
Activate | 激活工作表 |
copy | 复制工作表 |
Delete | 删除工作表 |
Move | 移动工作表 |
SaveAs | 讲工作表保存为一个独立的工作薄 |
Select | 选择工作表 |
Range对象代表单元格区域,几乎所有与单元格区域 *** 作都与Range对象有关。
Range对象的常用属性和方法如下:
属性 | 说明 |
Cells | 返回单元格区域中的所有单元格 |
Columns | 返回单元格区域中的所有列,如果有多个区域,返回第一个区域所有列 |
Count | 返回单元格区域中的所有列的总数 |
Row | 返回单元格区域第一行的行号 |
Rows | 返回单元格区域所有行 |
Value | 返回或设置单元格的值 |
方法 | 说明 |
Activate | 激活选中的单元格 |
ClearContents | 清除单元格区域中的内容 |
Find | 在单元格区域查询特定信息 |
Select | 选择单元格或单元格区域 |
可以使用Cells引用单元,Cells与Range区别为,Range 属性以字符串的形式进行引用,Cells以数字的形式引用,笔者个人习惯使用Cells,Cells属性的父对象可以是Application、Worksheet或Range。
本例在模块中,申明一个子函数便于拆分字符串和返回值
Function GetSplit(dt, IDx) '申明一个拆分字符串的子函数,按空格拆分
Dim ar As String
aa = Split(dt, " ")
GetSplit = aa(IDx)
End Function
Private Sub Commandbutton1_Click()
Dim wks As Worksheet '申名工作表变量
Dim RowCountSum As Long '申名工作表最大行数变量
Dim i As Long '申名临时变量
Set wks = Worksheets("字符串") '取工作表字符串工作表,并赋值
RowCountSum = wks.UsedRange.Rows.Count
For i = 1 To RowCountSum
'拆分单元格A列,并按拆分索引值存取顺序给单元格B 、单元格C赋值
wks.Cells(i, 2) = GetSplit(wks.Cells(i, 1), 0)
wks.Cells(i, 3) = GetSplit(wks.Cells(i, 1), 1)
Next i
MsgBox ("OK")
End Sub
3.3.2 Jupyter Notebook环境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 | 单元格的坐标 |
本例使用Jupyter Notebook环境来说明处理xls数据的例子,本例用到Python 中数组、Zip函数、split函数。(可以看到Python 相比VBA *** 作xls数据更加容易)
通过上述内容,相信大家对几种常见的数据清洗工具有了一定的认识和了解,根据笔者在实际工作中运用积累的经验,对几种数据清洗工具的学习和使用给出个人理解和建议:
VBA不要具备专业开发知识,编译工具随office软件,上手简单,只需要在简单的代码基础上修修补补就可以执行。与办公软件完美兼容,分享性和移植性很强,几乎所有测试通过的程序放到别的机器上也能执行,不足之处就是验证通过代码随相应文件而依存,如果类似文件也需要同样的代码,就需要导出和导入相应工程文件或者在需要的文件上重新编写代码。
Python语言算是当前最流行的编程语言,特别适合数据分析和人工智能等行业,相比其他面向对象的编程语言,Python更适合非专业开发人员学习并通过代码交流,笔者认为其最大不同是不用事先申明变量和对象,直接根据思维认识书写相应的代码。另外就是编译工具Jupyter Notebook的出现,使得代码调试工作变得更加便捷高效,代码执行结果同步显示,编译工具易学易用也会让大众对Python颇有好感。笔者认为PyCharm编译工具适合专业开发人员使用,非专业人员可以去了解一下,非专业人员学习起来难度稍大。
根据笔者的学习经验,买1到2本相关书籍就行,讲语法部分大概过一遍,没必要仔细去看,用到时翻阅即可,平时遇到什么问题,网上可查询类似代码解决问题。由于工作关系笔者重点关注与电子表格相关的例子章节并深入学习,相信很多人都不是专业的程序员,大家根据自己日常工作中遇到的典型数据问题关注相关内容即可。笔者建议先看书籍,看书先有个大整体性的认识,然后实 *** 相应的例子,对于关注的点可以在网上查询相关资料重点学习,快速入门,激发兴趣,持续深入。
总结随着互联网、大数据、人工智能等新一代信息技术的蓬勃发展,各行各业已建立了众多计算机信息系统,积累了大量的数据,可靠无误的数据能够准确地反映企业的实际状况,能够有效地支持企业的日常运作和决策。
笔者希望通过本文抛砖引玉,权当拓展大家的思路和视野,熟练掌握几种数据清洗工具,不断提升对数据的认识,进而去分析数据之间的关系,挖掘数据潜在价值,在数据领域扬帆远航。
总结以上是内存溢出为你收集整理的几种常见的数据清洗工具使用教程与示例全部内容,希望文章能够帮你解决几种常见的数据清洗工具使用教程与示例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)