Python与机器学习(第2版)(微课版) 课件 项目01 用餐数据异常分析_第1页
Python与机器学习(第2版)(微课版) 课件 项目01 用餐数据异常分析_第2页
Python与机器学习(第2版)(微课版) 课件 项目01 用餐数据异常分析_第3页
Python与机器学习(第2版)(微课版) 课件 项目01 用餐数据异常分析_第4页
Python与机器学习(第2版)(微课版) 课件 项目01 用餐数据异常分析_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目背景|项目概述|学习目标|任务实施步骤用餐数据异常分析【数据挖掘应用】背景先导项目概述项目学习目标任务实施步骤01Background02BriefIntroduction03LearningObjectives04ImplementationSteps主要内容数字经济背景在数字经济时代,“数据”被誉为“新黄金”。数据与土地、劳动力、资本和技术并列为五大要素市场。不少国家将发展数字经济、促进数据价值释放作为关键任务。根据中国信息通信研究院发布的《全球数字经济白皮书(2022年)》,数字经济为全球经济复苏提供重要支撑,发达国家数字经济领先优势明显。目前中、美、欧呈现出全球数字经济发展的三极格局。我国提出要大力发展数字经济,牢牢抓住数字技术发展主动权,把握新一轮科技革命和产业变革发展先机。

12月19日,《中共中央国务院关于构建数据基础制度更好发挥数据要素作用的意见》对外发布。该意见指出,数据作为新型生产要素,是数字化、网络化、智能化的基础,已快速融入生产、分配、流通、消费和社会服务管理等各环节,深刻改变着生产方式、生活方式和社会治理方式。数据基础制度建设事关国家发展和安全大局。为加快构建数据基础制度,充分发挥我国海量数据规模和丰富应用场景优势,激活数据要素潜能,做强做优做大数字经济,增强经济发展新动能,构筑国家竞争新优势。数字经济背景2022年国务院意见文件数字经济背景

数据已被认为是现代生产力的关键要素,可以提供有关市场趋势、消费者行为及竞争对手策略的信息,帮助企业做出更好的决策,以满足市场需求、优化运营,增强竞争力。如何有效利用这些数据是企业面临的挑战。需要投入资源建立数据管理系统,并培养数据分析能力,以有效利用数据。Pandas库最初是由WesMcKinney一人于2008年开发设计的,2012年,WesMcKinn的同事SienChang加入开发工作,他们一起开发出了用于数据分析的著名开源Python库——Pandas。Pandas是选择以NumPy为基础进行设计,在数据分析中Pandas和NumPy这两个模块经常是一起使用。另外,为了数据分析的需要,Pandas专门设计了两种新型的数据结构。使用这两种数据结构管理与SQL关系数据库和Excel工作表具有类似特征的数据会非常方便。Pandas最初是作为金融数据分析工具而开发出来,因此,Pandas为时间序列分析提供了很好的支持。

Pandas数据分析工具Pandas数据分析工具Pandas的核心是Series和DataFrame两大数据结构:Series数据结构是用于存储一个序列的一维数组DataFrame数据结构则是用于存储复杂数据的二维数据结构项目总体要求

用餐数据异常分析

给定用餐基本信息文件“tip1.csv”和用餐费用文件“tip2.csv”。需要细致地观察、洞悉数据,使用Pandas对公开的用餐数据集展开数据集成、数据加工、特征处理与简单的数据分析工作。项目三维目标了解特征工程的基本概念、主要内容和常见操作;(大数据工程技术人员国家职业技术技能标准初级5.3.1)掌握缺失值、重复值处理的常用方法;掌握异常值检测的基本方法及不同的处理方式;掌握数据转换和特征构造的基本概念及主要方法。

(大数据工程技术人员国家职业技术技能标准初级5.1)知识目标技能目标素养目标证证项目三维目标会使用Pandas工具对数据进行操作,如数据集成、数据抽取等;会使用Pandas工具对数据进行清洗,包括缺失值、重复值、异常值的检测与处理等;(重点:2021年全国工业化和信息化大赛“工业大数据算法”赛项考点)会使用Pandas工具进行数据转换,并构造特征。知识目标技能目标素养目标赛项目三维目标把控大数据时代政策前沿,提升数据驱动的大数据行业价值观;提升数据处理过程中的严谨、细致的工作态度与一丝不苟的科学精神;合法、合规地使用数据,培养大局意识以及遵纪守法、遵守社会公德的意识。技能目标素养目标知识目标数据准备流程数据转换数据清洗数据合并将给定的两个数据集做归并合成一个数据集数据转换数据清洗对数据集中已有的数据字段(或特征项)进行处理,产生新的特征项数据准备流程数据合并数据清洗对数据集中存在的重复值、缺失值、异常值进行处理,以利于后续的分析与挖掘数据准备流程数据合并数据转换还在等什么?马上动手实施用餐数据异常分析项目吧~1.数据要素的概念2.认识Pandas数据分析工具3.数据异常检测与分析流程小结数据集成与处理任务实施【数据挖掘应用】课程用餐数据异常分析掌握Numpy、Pandas等第三方包的基本使用;会使用Pandas数据分析工具进行数据集成、数据映射、数据处理等操作;会应用merge()、apply()等函数对用餐数据做加工与处理。能力目标主要内容任务工单引导问题任务评价标准任务解决方案代码解析用餐数据集成与处理tips1.csv、tips2.csv教学难点任务工单基于获得的数据集,使用Pandas中相应的工具对sex、smoker、day列做数据映射;基于day、date列构建特征;并对name、phone、totalbill、tip列做不同数据处理,将name列变成首字母大写,隐藏phone列中间5位(第4至8位)数值,将totalbill、tip转换成浮点型。任务概述

任务描述:

使用read_csv()从文件中读取数据后,按两个数据集的索引列做集成操作,并完成相应的数据加工与处理。010010011001101010100100110110100101110101000100001011011101001010101101010011010010数据源tips1.csv、tips2.csv显示结果

任务要求任务概述(1)什么是数据集成?数据集成常见的操作有哪些?(2)Pandas中对数据做合并、连接等操作的相关函数是什么?(3)Pandas中merge()函数有哪些参数?分别用来指定什么?(4)Pandas中用来构造特征的函数有哪些?主要用途是什么?(5)Pandas中数据类型转换函数有哪些?如何使用?”

问题引导:任务概述

任务评价:任务概述评价内容评价要点分值分数评定自我评价1.任务实施数据读取与集成2分会读取数据得1分,会正常合并数据得1分

数据映射2分会正确映射sex、smoker列得1分,能正确映射day列得1分

特征构造2分能正确构造是否工作日得1分,能正确构造月份得1分

数据加工与处理3分首字母大写正确得1分,能正确隐藏部分号码得1分,能正确转换费用数据类型得1分

3.任务总结依据任务实施情况总结结论1分总结内容切中本任务的重点要点得1分

合计10分

第1行:本文件用utf-8编码,utf-8编码支持多种文字,包括中文。第2行:导入pandas包,并给出别名pd。第3行:从tips1.csv文件中读取数据#coding:utf-8importpandas

aspddf1=pd.read_csv("tips1.csv",index_col=0,header=0,names=['ID','sex','smoker','day','time','size','name','date','phone'])

df1.head()第4行:打印出前面几条数据,如果在pycharm中可使用print。任务解决方案(1)从“tips1.csv”中读数据存入df1第5行:从tips2.csv文件中读取数据df2=pd.read_csv("tips2.csv",index_col=0,header=0,names=['ID','bill','tip'],encoding='gbk')

df2.head()任务解决方案部分数据显示(2)从“tips2.csv”中读数据存入df2任务解决方案第7行:按ID列对数据进行合并df=df1.merge(df2,on='ID')

df.head()部分数据显示(3)df1+df2数据集成df第9行:导入numpy包,并给出别名np。第10行:对sex列做数据映射,男性编码为1,女性为0。import

numpyasnpdf['sex2']=np.where(df['sex']=='Male',1,0)任务解决方案第12行:对smoker列做数据映射,,将是否吸烟转化为1和0。df[‘smoker2’]=np.where(df[‘smoker‘]

=='Yes',1,0)days={'Mon':1,'Tues':2,'Wed':3,'Thur':4,'Fri':5,'Sat':6,'Sun':7}第13行:构造一个星期字典days。第10行:对sex列做数据映射,男性编码为1,女性为0。第12行:对smoker列做数据映射,,将是否吸烟转化为1和0。第13行:构造一个星期字典days。第9行:导入numpy包,并给出别名np。第10行:对sex列做数据映射,男性编码为1,女性为0。(4)df数据预处理任务解决方案days={'Mon':1,'Tues':2,'Wed':3,'Thur':4,'Fri':5,'Sat':6,'Sun':7}第13行:构造一个星期字典days。df['day2']=df['day'].apply(lambdax:days[x])第14行:对day列做数据映射,其中星期一映射为1,星期二为2,以此类推,存为day2。部分数据显示(4)df数据预处理第15行:构造day3列:将day2中的星期几转换化是否工作日;df['day3']=np.where(df['day2']>5,0,1)第16、17行:构造month列,从date列中抽取月份。任务解决方案第19行:处理phone列,隐藏phone列中电话号码中间5位,变成*,存为phone2列。第18行:处理name列,实现首字母大写;df['date']

=

pd.to_datetime(df['date'],format="%Y-%m-%d",

errors

=

'coerce’)df['month']=df['date'].dt.monthdf['name']

=df['name'].map(str.capitalize)df['phone2']

=

df['phone'].astype(str).map(lambda

x:x.replace(x[3:8],"*****"))(4)df数据预处理第20、21行:处理bill、tip列中美元,并将其转化为浮点型:方式一,采用字符串替换的方式df['bill2’]=df['bill'].astype(str).apply(lambdax:float(x.replace("美元","")))df['tip2’]=df['tip'].astype(str).apply(lambdax:float(x.replace("美元","")))第22、23行:方式二,采用数据抽取的方式任务解决方案df['bill3']

=

df['bill'].str.slice(0,-2).astype(float)df['tip3']

=

df['tip'].str.slice(0,-2).astype(float)部分数据显示(4)df数据预处理任务解决方案df

=

df1.merge(df2,on='ID’)

df

=

df1.join(df2.set_index('ID'),on='ID',how

=

'outer’)df1.combine_first(df2)pandas.to_datetime(dateString,format)

代码解析:在pandas中,通过两个数据集上一个或多个键来合并数据时,可使用merge()函数。使用join()函数来实现根据特定的列和索引进行合并数据的操作。join()函数默认是通过index来进行连接,也可以通过设置参数“on”来指定连接的列。该函数的作用是用函数参数对象中的数据为函数调用对象的缺失数据“打补丁”。即填充函数调用对象中的数据缺失值。日期转换是指将字符型的日期格式的数据转换成为日期型数据的过程。小结1.数据集成相关函数2.数据映射函数3.数据加工与处理不急后续会有详细说明与讲解哦~重复值处理任务实施【数据挖掘应用】课程用餐数据异常分析会使用Pandas等第三方包对数据做预处理;会使用Pandas检测重复值;会使用Pandas处理重复值。能力目标主要内容任务概述任务要求引导问题任务解决方案用餐数据重复值检测与处理检测给定的用餐数据集中是否存在重复记录,如存在,则输出具体重复的记录并对记录进行适当的处理。检测数据集中数值型的特征列是否重复,如存在,则做相应处理。任务概述

任务描述:去除用餐数据中的重复值010010011001101010100100110110100101110101000100001011011101001010101101010011010010(1)找到重复值(2)去除重复值(1)数据中存在重复值会对数据分析结果造成什么影响?(2)Pandas工具包中,哪些函数可以用来检测重复值?(3)处理重复值的方法有哪些?如何选择合适的处理方法?(4)Pandas工具包中,哪些函数可以用来处理重复值?”

问题引导:任务概述任务解决方案

参考代码:第1行:检测是否存在重复记录,如果结果为True,表示数据中存在重复值。第2行:输出具体的重复记录。df.duplicated().any()df[df.duplicated()==True]第3行:显示去除重复记录前的记录数df.count()检测到的重复值一、检测并输出重复记录任务解决方案

参考代码df.count()第4行:去除重复记录第5行:显示去除重复记录后的记录数df=df.drop_duplicates()二、删除重复记录任务解决方案

参考代码第6行:检测是否存在重复的特征列,此外检测totalbill、tip列是否完全相关。df['bill2'].corr(df['tip2'])结果输出约为:0.678,即两列数据并不是完全相关的,即不存在重复特征。三、检测重复特征列小结如何检测是否存在重复记录、重复特征?如何输出重复记录?处理重复值的方法有哪些?如何删除重复记录?不急后续会有详细说明与讲解哦~缺失值处理任务实施【数据挖掘应用】课程用餐数据异常分析会依据数据对缺失值进行检测会使用Pandas包处理缺失值掌握缺失值处理函数的使用方法知识与能力目标主要内容任务工单任务说明引导问题任务评价任务解决方案用餐数据缺失值检测与处理任务工单用餐数据集缺失值会对数据的准确性和完整性造成影响,并且在进行数据分析和建模时会导致模型精度降低或计算错误。因此,处理缺失值对保证数据的质量和可靠性非常重要。任务概述

任务描述:

基于给定的用餐数据集,检测各列是否存在缺失值,并尝试使用不同的方法对缺失值做处理。……010010011001101010100100110110100101110101000100001011011101001010101101010011010010检测缺失值缺失值处理结果

任务要求:任务概述(1)数据中存在缺失值会造成什么样的影响?(2)Pandas工具包中,哪些函数可以用来检测缺失值?(3)处理缺失值的方法有哪些?如何选择合适的处理方法?(4)Pandas工具包中,哪些函数可以用来处理缺失值?”

问题引导:任务概述

任务评价:任务概述评价内容评价要点分值分数评定自我评价1.任务实施缺失值检测2分能正确检测出数据中是否含有缺失值得2分

缺失值输出2分能正确显示含有缺失值的记录得2分

缺失值处理5分会使用不同方式处理缺失值,会使用1种得1分,至多5分

2.任务总结依据任务实施情况总结结论1分总结内容切中本任务的重点要点得1分

合计10分

任务解决方案

(1)检测是否存在缺失值df.isna().any()如果运行结果的某一列显示为True,表示该列数据中存在缺失值。以下数据中tip列中就存在缺失值显示结果任务解决方案df[df['tip'].isna()==True]

(2)输出

tip列为空的具体记录。显示结果任务解决方案df.count()re1

=

df.dropna()

(3)处理缺失值:删除df.count()第1行:显示去除缺失值前的记录数第3行:显示去除后的记录数,结果显示记录数为242条第2行:在数据集中去除含有缺失值的记录数方法一任务解决方案re2=df.fillna(0)re2.iloc[2]

(3)处理缺失值:填0第1行:将缺失值置为0,保存为re2第2行:显示该条记录数方法二任务解决方案re3_1=df.fillna(method='bfill’)re3_2=df.fillna(method='ffill')

(3)处理缺失值:邻近值填充第1行:用下一个非缺失值填充该缺失值第2行:用前一个非缺失值填充该缺失值方法三任务解决方案re4=df.fillna(df['tip2'].mean())

(3)处理缺失值:均值填充第1行:用均值填充方法四显示结果小结如何发现数据中是否存在缺失值如何找到含有缺失值的记录如何处理缺失值?对应的Pandas函数有哪些?不急后续会有详细说明与讲解哦~异常值处理任务实施【数据挖掘应用】课程用餐数据异常分析知识与能力目标掌握常用的异常值检测与处理方法;会使用Pandas、Matplotlib等工具识别异常值;会使用Pandas等工具处理异常值。主要内容任务说明引导问题任务实施步骤任务解决方案用餐数据异常值检测与处理教学难点任务概述基础数据任务工单

任务描述:

基于前续任务的结果,对用餐数据中的小费(tip)列做异常检测,如发现异常值,则对其做适当的处理。基于获得的数据集,使用不同的方法来发现异常值,比如简单统计、箱形图等分析存在的异常值,选择适当的方法对其做相应的处理,比如删除、替换等(1)什么是异常值?异常值对数据分析与挖掘会有什么样的影响?(2)识别异常值的方法有哪些?使用时,有何注意要点?(3)Pandas中提供了什么样的工具可用于检测异常值?(4)如何对已发现的异常值做处理?(5)Pandas中提供了什么样的工具可用于做异常值处理?

问题引导:任务概述

任务评价:任务概述评价内容评价要点分值分数评定自我评价1.任务实施异常值检测5分会使用不同方法识别异常值,会使用1种得1分,至多5分

异常值输出2分能正确显示含有异常值的记录得2分

缺失值处理2分会使用不同方式处理异常值,会使用1种得1分,至多2分

3.任务总结依据任务实施情况总结结论1分结论切中任务要点,能比较不同方法的适用性得1分

合计10分

任务解决方案

(1)检测tip列是否存在异常值:散点图#coding:utf-8importmatplotlib.pyplotaspltfig,ax=plt.subplots()ax.scatter(re1['day'],re1['tip2’])plt.xlabel('day')plt.ylabel('tip')第2行:导入画图包方法一:使用散点图查看数据分布,观察tip的分布及与发生日期的关系任务解决方案

(1)检测tip列是否存在异常值:简单统计

re1.sort_values(by='tip2',ascending=True)方法二:对tip列的值进行排序。排序后的数据呈现规律性,易帮助发现异常值。部分结果显示任务解决方案re1['tip2'].hist(bins=20)plt.xlabel('tip')方法三:对于服务正态分布的数据,我们可以使用3δ原则。首先,我们可以使用直方图查看tip数据的分布。使用直方图显示数据分布

(1)检测tip列是否存在异常值:3δ原则任务解决方案u=re1['tip2'].mean()delta=re1['tip2'].std()a=u-3*deltab=u+3*deltare1[(re1['tip2']<a)|(re1['tip2']>b)]第1行:获得小费均值第5行:条件筛选,显示异常记录第3、4行:计算小费边界值第2行:获得小费标准差

(1)检测tip列是否存在异常值:3δ原则任务解决方案re1[['tip2']].boxplot()方法四:使用箱形图也可以帮助我们找到异常值部分结果显示

(1)检测tip列是否存在异常值:箱形图任务解决方案ax1=sns.boxplot(y="tip2",data=re1) ax2=sns.swarmplot(y="tip2",data=re1,color=".25")箱形图与分簇散点图结合使用显示图像

(1)检测tip列是否存在异常值:箱形图任务解决方案Q1=np.percentile(re1['tip2'],25)median=np.percentile(re1['tip2'],50)Q3=np.percentile(re1['tip2'],75)IQR=Q3-Q1low=Q1-1.5*IQRhigh=Q3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论