4-3-3数据匹配和标准化教学课件PPT.pptx

上传人:春哥&#****71; 文档编号:25336248 上传时间:2022-07-11 格式:PPTX 页数:28 大小:3MB
返回 下载 相关 举报
4-3-3数据匹配和标准化教学课件PPT.pptx_第1页
第1页 / 共28页
4-3-3数据匹配和标准化教学课件PPT.pptx_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《4-3-3数据匹配和标准化教学课件PPT.pptx》由会员分享,可在线阅读,更多相关《4-3-3数据匹配和标准化教学课件PPT.pptx(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、4-3-3数据匹配和标准化弘 德 明 志 博 学 笃 行第第4 4章章 数据处理和分析数据处理和分析-Pandas-Pandas第第0808讲讲 数据匹配和标准化数据匹配和标准化主讲人:马学强弘 德 明 志 博 学 笃 行Contents目录01正则表达式匹配正则表达式匹配模糊匹配模糊匹配02标准标准差标准化差标准化04离差标准化离差标准化03小数定标标准化小数定标标准化05弘 德 明 志 博 学 笃 行数据匹配数据匹配就是将信息主体拥有的数据项进行比对和差异分析,它是不同特征数据高效聚合的核心,也是数据深入挖掘的前提和基础。数据匹配技术分为:(1)实体匹配技术:以信息主体的某一个或几个不变的

2、数据项为基准,将与这一个或几个数据项完全匹配的信息聚合在一个信息主体的名下。(2)组合匹配技术:对匹配项执行组合匹配算法,以认定其所属记录是否存在同一性关系的过程。(3)模糊匹配技术:主要是对字符串或词进行比对,得到两个字符串或词的匹配度。在匹配度达到一定数值以上时,认为两个字符串或词是同一字符串或词。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行数据匹配在数据处理和分析的过程中,数据匹配的表现: Python的in操作符、字符串的find()、split()、replace()、translate()等方法; 正则表达式的使用; 利用特征相似度计算去除重复数据; 利用panda

3、s.merge()等方法进行数据聚合时,指定数据匹配的模式为inner、left、right、outer(后续章节)。以上过程都包含了数据匹配的技术与应用,体现了数据匹配的原理。本节数据匹配主要介绍以下两个方面的内容:1.1.正则表达式匹配正则表达式匹配2.2.模糊匹配模糊匹配数据处理和分析中的数据匹配问题:弘 德 明 志 博 学 笃 行01正则表达式匹配弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行正则表达式正则表达式的组成正则表达式是一个特殊的字符序列,通常称为regex,它提供了一种灵活的在文本中搜索或匹配字符串模式的方式。主要由一些特殊字符和限定符组成。在使用这些字符时,

4、应使用反斜杠“”进行字符转义。元字符元字符功能说明功能说明.匹配除换行符(n)以外的任意单个字符w匹配字母、数字、下划线或汉字s匹配任意空白字符,包括空格、制表符、换行符、回车、换页符等,等价于tnrfd匹配任意一个数字字符,等价于0-9b匹配一个单词边界,即单词与空格间的位置。如bCha匹配单词Chapter的开头三个字符,terb匹配Chapter的后三个字符|匹配|之前或之后的字符匹配行首,即匹配以后面的字符开头的字符串$匹配行尾,即匹配以$前面的字符结束的字符串( )表示一个子表达式的开始和结束表示位于之后的为转义字符 匹配中括号内的任意一个字符f换页符匹配n换行符匹配元字符元字符 功

5、能说明功能说明*匹配*之前的字符或子模式0次或多次+匹配+之前的字符或子模式1次或多次?匹配?之前的字符或子模式0次或1次,或指明一个非贪婪限定符n匹配前面的字符n次n,匹配前面的字符最少n次n,m匹配前面的字符最少n次,最多m次弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行正则表达式#正则表达式“s+” 匹配至少1个空格、制表符、换行符、回车、换页符 text=China peoplet 2019-nCoV tWin #定义字符串 re.split(s+,text) #调用时,先被编译,然后在text上应用split方法China, people, 2019-nCoV, Win

6、 regex=pile(s+) #编译正则表达式,得到可重用regex对象 regex.findall(text) #获取text中匹配regex的所有模式 , t , t正则表达式的简单应用Python提供了re标准模块负责对字符串应用正则表达式。re模块提供的函数可以分为三个大类:模式匹配、替换、拆分,这三类函数之间是相辅相成的。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行正则表达式正则表达式在电子邮件地址上的应用re模块比较常用的函数有match()、search()、findall()等,其中findall()返回字符串中所有的匹配项,search()只返回第一个匹配项

7、,而match()只匹配字符串的首部。这些函数可以应用在电子邮件地址的匹配中。 text=Joe J;masterpython.org;Smith B;Steve J;rob_ #定义电子邮件地址字符串 regex = rA-Z0-9._%+-+A-Z0-9.-+.A-Z2,4 #定义正则表达式 email=pile(regex,flags=re.IGNORECASE) #编译创建regex对象 email.findall(text) #查找字符串中所有的匹配项J,masterpython.org,B,J, rob_ f=email.search(text) #查找字符串中第一个匹配项 ema

8、il.match(text) #字符串的首部匹配 email.sub(Replaced,text) #替换匹配到的字符串弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行正则表达式正则表达式在电子邮件地址上的应用在查找电子邮件地址的同时,可以将地址分为三个部分:用户名、域名、后缀。要实现该功能,可以将模式中的相应部分用圆括号括起来。 regex = r(A-Z0-9._%+-+)(A-Z0-9.-+).(A-Z2,4) #模式分段 email=pile(regex,flags=re.IGNORECASE) email.match().groups() #返回模式各段组成的元组(adm

9、in, gmail, com) email.findall(text) #模式分组后,返回元组列表(Jeans, gmail, com), (admin, sdnu.edu, cn), (master, python, org), (Bub, yahoo, com), (Jobs, apple, com), (rob_cloud, 163, com)#sub()函数在替换分组模式匹配到的字符串时,还可以通过诸如1、2之类的特殊符号访问各匹配项中的分组。符号1对应第一个匹配的组,2对应第二个匹配的组,以此类推。 print(email.sub(rUsername:1,Domain:2,Suffi

10、x:3,text)弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行正则表达式对正则表达式的补充说明 正则表达式的编写技巧内容较多,超出了课程学习的范围。可以参阅更多相应的教程和资料进行学习。 一个regex描述了需要在文本中定位的一个模式,它可以用于许多目的。在此,我们仅说明数据处理时的基本应用。 如果想避免正则表达式中不需要的转义(),则可以使用原始字符串字面量,如rC:x(也可以编写其等价式C:x)。 若要对许多字符串应用同一条正则表达式,强烈建议通过pile()创建regex对象,这样将可以节省大量的CPU时间。弘 德 明 志 博 学 笃 行02模糊匹配弘 德 明 志 博 学

11、 笃 行弘 德 明 志 博 学 笃 行模糊匹配模糊匹配的功能模糊匹配可以用来处理数据中包含的拼写错误、较小的语法错误或句法偏移,即数据中存在的一些简单的不一致之处,在数据清洗过程中可以用来查找和合并相似值,提高数据的质量。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行模糊匹配模糊匹配需要的Python外部扩展库FuzzyWuzzy库是Python环境下对字符串模糊匹配的常用工具,其主要模块是fuzz,可以进行字符串与字符串的比较。另一个模块是process,可进行字符串与字符串列表的比较。在进行字符匹配时,FuzzyWuzzy默认使用Python的标准库difflib,但为了序列

12、匹配在速度上有更好的性能,可以安装和使用python-Levenshtein库。FuzzyWuzzy和python-Levenshtein是Python的外部扩展库,可以使用如下命令预先在线下载和安装:pip install fuzzywuzzypip install python-Levenshtein需要的外部扩展库安装完成以后,可以使用如下语句导入到Python环境:from fuzzywuzzy import fuzzfrom fuzzywuzzy import process弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行模糊匹配使用FuzzyWyzzy进行字符串模糊匹配

13、(1) 当两个字符串的拼写有不同,可使用fuzz模块的ratio()函数,基于纯Levenshtein距离对两个序列进行相似程度匹配。 records=favorite book:The Hunger Games, favorite movie:Roman Holiday, favorite show:Americas Got Talent Season(2), favorite book:Hunger Games, favorite movie:Roman Holidays, favorite show:Americas Got Talent Season(two) fuzz.ratio(r

14、ecords0.get(favorite book), records1.get(favorite book)86(2) 使用fuzz模块的partial_ratio()函数,可以进行子字符串的匹配,返回匹配程度最高的子字符串序列的相似程度。 fuzz.partial_ratio(records0.get(favorite movie),records1.get(favorite movie)100弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行模糊匹配使用FuzzyWyzzy进行字符串模糊匹配(3) 使用fuzz模块的token_sort_ratio()函数进行字符串的匹配时,先

15、按标记(这里是单词)对每个字符串进行排序,然后再进行比较。适用于不考虑单词顺序的情况。 data=favorite food:cheeseburgers with bacon, favorite drink:CoCo,beer,and milk, favorite dessert:cheese or cake, favorite food:burgers with cheese and bacon, favorite drink:beer,milk,and CoCo, favorite dessert:cheese cake fuzz.token_sort_ratio(data0.get(fa

16、vorite food),data1.get(favorite food)68(4)使用fuzz模块的token_set_ratio()函数对字符串进行匹配时,先基于标记获取到两个字符串的交集和差集,然后对排序后的标记尝试寻找最佳匹配,返回这些标记相似的比例。 fuzz.token_set_ratio(data0.get(favorite drink),data1.get(favorite drink)100弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行模糊匹配使用FuzzyWyzzy进行字符串模糊匹配(5) 使用process模块,可对有限列表内容进行匹配。 choices=Y

17、es,No,Maybe,N/A process.extract(ya,choices,limit=2) #字符串与列表选项依次比较,返回两个可能的匹配(Yes, 45), (Maybe, 45) process.extractOne(ya,choices) #返回列表中与字符串对应的最佳匹配(Yes, 45) process.extract(nope,choices,limit=2)(No, 90), (Yes, 29) process.extractOne(nope,choices)(No, 90)弘 德 明 志 博 学 笃 行数据标准化数据标准化的目的是为消除作为评价指标的数据特征之间的量

18、纲和取值范围(数量级)差异的影响,保证结果的可靠性。数据的标准化(Normalization)方法很多,不同的标准化方法对系统的评价结果会产生不同的影响,且没有通用的标准化方法可供选择。典型的标准化方法是将数据按照比例进行缩放,使之落入一个特定的区域,以去除数据的量纲限制,便于不同量纲或量级的指标进行比较和分析。 离差标准化; 标准差标准化; 小数定标标准化弘 德 明 志 博 学 笃 行03离差标准化弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行离差标准化离差标准化的定义弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行离差标准化离差标准化的特点离差标准化保留了原始数据

19、值之间的联系,是消除量纲和量级最简单的办法,其主要特点有: 数据的整体分布情况并不会随离差标准化而发生改变,原先取值较大的数据,在做完离差标准化后的值依旧较大。 当数据和最小值相等的时候,通过离差标准化可以发现数据变为0。 若数据极差过大就会出现数据在离差标准化后数据之间的差值非常小的情况。 当有新数据加入时,超过当前min,max取值范围时,会引起系统错误,需要重新定义max、min的值。 若数据集中某个数值很大,则离差标准化的值就会接近于0,并且相互之间差别不大。弘 德 明 志 博 学 笃 行04标准差标准化弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行标准差标准化标准差标准

20、化的定义弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行标准差标准化标准差标准化的特点 标准差标准化方法适用于数据的最大、最小值未知或有离群值的情况。 标准化后的值区间不限于0,1,且存在负值,大于0表示高于平均水平,小于0表示低于平均水平。 标准差标准化和离差标准化一样不会改变数据的分布情况。弘 德 明 志 博 学 笃 行05小数定标标准化弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行小数定标标准化小数定标标准化的定义数据标准化三种方法的比较(1) 离差标准化方法简单,便于理解,标准化后的数据限定在0,1区间内;(2) 标准差标准化受到数据分布的影响较小;(3) 小

21、数定标标准化方法的适用范围广,且受到数据分布的影响较小,其适用程度较其他两种方法适中。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行数据标准化示例 data=pd.DataFrame(np.random.randn(6,4)*5+3,columns=list(ABCD) #产生随机数 normalized_data=data.apply(lambda x:(x-min(x)/(max(x)-min(x) #离差标准化 (data-data.mean()/data.std() #标准差标准化 data.apply(lambda x:(x-np.mean(x)/np.std(x) #

22、标准差标准化 def idx_scale(m): #自定义函数,求小数定标标准化的小数位数k=1while m=1: m=m/10 k=k+1return k m=max(data.abs().max() #求所有数据的最大值 k=idx_scale(m) #调用自定义函数,求k值 data/(10*k) #小数定标标准化 data.apply(lambda x:x/(10*k)说明:在标准差标准化处理上,使用np.std()计算的是标准差,而df.std()计算的是标准差的无偏估计,结果有所差别。弘 德 明 志 博 学 笃 行谢谢大家 为什么要进行数据为什么要进行数据匹配匹配?有哪些常用匹配方法?有哪些常用匹配方法? 为什么要进行数据标准化?有哪些常用为什么要进行数据标准化?有哪些常用标准化标准化方法?方法?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁