




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
引入案例任务分析知识解析案例解析任务实训实训评价4.4.1merge()函数的运用4.4.2join()函数的运用4.4.3concat()函数的运用任务4.4利用Pandas进行财务数据合并4.4.4append()函数的运用任务4.4
利用Pandas进行财务数据合并任务4.4利用Pandas进行财务数据合并引入案例任务分析知识解析到了月初,美创科技有限公司财务人员小王开始对上个月企业员工的应付工资进行汇总,小王发现员工的工资数据来自两张Excel表格,分别是企业员工基本工资表.xlsx、企业员工加班工资表(位置:E:\file\),如何利用Pandas实现对这两张表进行合并呢?要想实现不同表格数据的合并和连接,就要用到Pandas模块中的merge()函数、concat()函数、join()函数和append()函数,通过这些函数实现两张表或多张表的纵向或横向连接。分析数据往往来源于不同渠道,在进行数据分析时经常需要融合多方信息,比如将分布在不同表格中的财务数据整合到一张表进行数据处理,那么在Pandas中,如何将多个表格的数据合并或者连接在一起呢?Pandas提供了多种连接、合并的方法,包括merge()函数、concat()函数、join()函数和append()函数,这些函数均适用于表格数据的合并,但适用的场景有所不同。任务4.4利用Pandas进行财务数据合并4.4.1merge()函数的运用Python中merge()函数的表格连接功能类似于Excel中实现拼接的vlookup()函数,也类似于关系型数据库的连接方式,可以根据一个或多个键(列值)将不同的DateFrame对象连接起来。该函数的典型应用场景是,两个DataFrame对象存在相同的列名,根据列名整合到一张表里面。一、merge()函数的语法格式及参数说明merge()函数的语法格式如下:pandas.merge(left,right,how=’inner’,on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=True,suffixes=(’_x’,’_y’),copy=True,indicator=False,validate=None)任务4.4利用Pandas进行财务数据合并merge()函数的参数及其说明参数说明left、right接收DataFrame或Series。分别对应合并操作时左边的DateFrame、右边的DateFrame。how接收inner、left、right、outer。表示数据的连接方式,默认为inner。on接收string或sequence。表示用于连接的列名,必须存在于左右两个DateFrame中,如果没有指定且其他参数也没有指定,则以两个DateFrame列名交集作为连接键。left_on接收string或sequence。表示左侧DateFrame中用于连接的列名,这个参数在左、右表中列名不同但代表的含义相同时非常的有用。right_on接收string或sequence。表示右侧DateFrame中用于连接的列名。任务4.4利用Pandas进行财务数据合并merge()函数的参数及其说明参数说明left_index接收boolean。表示使用左侧DateFrame中的行索引作为连接键。right_index接收boolean。表示使用右侧DateFrame中的行索引作为连接键。sort接收boolean,默认为True。表示将合并的数据进行排序,设置为False可以提高性能。suffixes接收tuple。表示字符串值组成的元组,用于指定当左右DateFrame存在相同列名时后面附加的后缀名称,默认为(‘_x’,‘_y’)。例如,如果左右两个DataFrame对象都有“data”,则结果中就会出现“data_x”和“data_y”。copy接收boolean,默认为True。如果设置为False,可以在某些特殊情况下避免将数据复制到结果数据结构中。indicator默认为False,表示是否显示每行数据的来源。validate自动检查其合并键中是否有意外的重复项。任务4.4利用Pandas进行财务数据合并二、merge()函数常用参数1.how参数how参数表示数据合并的方式,其取值可以为inner、outer、left、right,含义如下表所示。合并类型参数值含义图形演示内连接inner只保留匹配的行,相当于交集操作左连接left只保留左边全部行,如果右边没有被匹配,则右边字段取NaN右连接right只保留右边全部行,如果左边没有被匹配,则左边字段取NaN全连接outer保留左右两边全部行,相当于并集操作,没有被匹配的一边字段取NaN任务4.4利用Pandas进行财务数据合并【做中学4.4.1】请编写程序实现以下操作:如图4.4.1所示,读入基本工资表.xlsx和加班工资表.xlsx(位置:E:\file\),然后进行合并,这时参数设置为:on=[’工号’,’部门’,’姓名’],how=’left’。最后得到合并的表格如下图中df3所示。任务4.4利用Pandas进行财务数据合并importpandasaspd#读取基本工资表df1=pd.read_excel(r'E:\file\基本工资表.xlsx')#读取加班工资表df2=pd.read_excel(r'E:\file\加班工资表.xlsx')#两张表合并为一个新表df3=pd.merge(df1,df2,on=['工号','部门','姓名'],how='left')df3#查看df3df4=pd.merge(df1,df2,on=['工号','部门','姓名'],how='inner')df4#查看df4df5=pd.merge(df1,df2,on=['工号','部门','姓名'],how='outer')df5#查看df5STEP01STEP02STEP03how='left'how='inner'how='outer'任务4.4利用Pandas进行财务数据合并2.on参数
on参数用来指定用于连接的列名,必须存在于左右两个DateFrame对象中,可以是一个列名,也可以是多个列名的列表。在【做中学4.4.1】中,on=['工号','部门','姓名']表明在这三列值都相同的情况下才能合并成一行。how参数的四种操作都是基于on参数的,在how参数不变的情况下,如果on参数发生变化,合并后表格也会发生变化。假如仅仅把【做中学4.4.1】程序中的merge()函数的参数on修改为on=['工号’,'姓名’],其运行结果如右图所示。df6=pd.merge(df1,df2,on=['工号','姓名’],how='outer')df6#查看df6程序如下:运行结果:任务4.4利用Pandas进行财务数据合并4.4.2join()函数的运用
join()函数通常用于基于行索引index上的两个或多个DataFrame对象的连接,而merge()函数是一个更通用的函数,既可以基于行索引index,又可以基于列名的DataFrame对象连接。一、join()函数的语法格式及参数说明join()函数语法格式如下:DataFrame.join(other,on=None,how='left',lsuffix='',rsuffix='',sort=False)join()函数常用参数及其说明参数说
明other接收DataFrame、Series或者包含多个DataFrame的list。表示参与连接的DataFrame、Series,或者DataFramelist。on接收列名或者包含列名的list或tuple。指定左表中用于连接的列名,右表必须有相同的列(需设置为索引)。默认为None,使用索引连接。how接收inner、left、right、outer。表示数据的连接方式,与merge()函数中的how含义一致,默认为left。lsuffix接收string。表示两表列名重复时,追加到左表的重复列名的后缀,无默认值。rsuffix接收string。表示两表列名重复时,追加到右表的重复列名的后缀,无默认值。sort接收boolean。根据连接键对合并的数据进行排序,默认为False。任务4.4利用Pandas进行财务数据合并二、join()函数常用参数1.on参数默认值None当on参数为默认值None时,join()函数是基于行索引index的连接,即DataFrame表格合并时按照index索引匹配连接。【做中学4.4.2】请编写程序实现以下操作:如图4.1.4所示,读入基本工资表.xlsx和加班工资表.xlsx(位置:E:\file\),使用join()函数进行合并,这时on参数为默认值None。最后得到合并表格如右图中df3所示。任务4.4利用Pandas进行财务数据合并importpandasaspd#引入Pandas模块#读取基本工资表df1=pd.read_excel(r'E:\file\基本工资表.xlsx')#读取加班工资样表df2=pd.read_excel(r'E:\file\加班工资表.xlsx')#两张表合并为一个新表df3=df1.join(df2,lsuffix='_df1',rsuffix='_df2')df3#查看df3程序如下:运行结果:2.on参数为列名或者包含列名的list或tuple
在实际应用中如果右表的索引值也是左表的某一列或几列的值,这时可以通过设定on参数,实现将右表的索引和左表的列匹配合并。【做中学4.4.3】读入基本工资表.xlsx和加班工资表.xlsx(位置:E:\file\),使用join()函数进行合并,设定参数on=['部门','工号','姓名'],实现工资表格的正确合并。任务4.4利用Pandas进行财务数据合并importpandasaspd#引入Pandas模块#读取基本工资表df1=pd.read_excel(r'E:\Excel\基本工资表.xlsx')#读取加班工资表df2=pd.read_excel(r'E:\Excel\加班工资表.xlsx')df3=df2.set_index(['部门','工号','姓名'])df4=df1.join(df3,on=['部门','工号','姓名'])df4#查看df4程序如下:运行结果:4.4.3concat()函数的运用concat()函数用来沿特定轴连接两个或两个以上的DataFrame对象,既可实现纵向合并也可实现横向合并,行列索引均可重复。concat()函数语法格式如下:pandas.concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verify_integrity=False,copy=True)任务4.4利用Pandas进行财务数据合并concat()函数参数及其说明参数说明objs接收多个Series、DataFrame或Pane对象的序列或映射。表示参与连接的pandas对象的列表的组合。无默认值。axis接收0或1。表示连接的轴向,默认是0,实现纵向连接。join接收inner或outer。表示其他轴向上的索引是按交集(inner)或并集(outer)进行合并,默认为outer。join_axes接收Inedx对象。表示用于其他n-1条轴的索引,可以代替内、外连接的逻辑。ignore_index接收boolean。表示是否保留连接轴上的索引,产生一组新索引range(total_length),默认值为False。keys接收sequence。表示与连接对象有关的值,用于形成连接轴向上的层次化索引,可以是任意值的列表或数组、元组数组、数组列表(如果向levels参数传入多层数组)。levels接收包含多个sequence的list。指定用作层次化索引各级别上的索引,如果设置了keys的话。names接收list。用于创建分层级别的名称,如果设置了keys和(或)levels的话。verify_integrity接收boolean。用于检查结果对象新轴上的重复情况,如果发现则引发异常,默认(False)允许重复。任务4.4利用Pandas进行财务数据合并二、concat()函数常用参数1.axis=1时实现横向堆叠当axis=1的时候,concat()函数做行(x轴)对齐,然后将不同列名称的两张或多张表合并。当两个表行索引(index)不完全一样时,可以使用join参数选择是内连接还是外连接。在内连接的情况下,仅仅返回索引重叠部分;在外连接的情况下,则显示索引的并集部分数据,不足的地方则使用空值填补。【做中学4.4.4】读入基本工资表.xlsx和加班工资表.xlsx(位置:E:\file\),使用concat()函数进行合并,设定参数axis=1,为了更好的观察join参数的变化对表格合并的影响,需对df2的行索引进行调整。importpandasaspddf1=pd.read_excel(r'E:\file\基本工资表.xlsx’,converters={'工号':str})df2=pd.read_excel(r'E:\file\加班工资表.xlsx’,converters={'工号':str})df2['序号']=pd.Series([1,2,4,5,6])df3=df2.set_index(['序号'])df4=pd.concat([df1,df3],axis=1,join="inner")df5=pd.concat([df1,df3],axis=1,join="outer")做中学4.4.4程序如下:任务4.4利用Pandas进行财务数据合并当两张表行索引完全一样时,不论join参数的取值是inner或者outer,结果都是将两个表完全按照x轴拼接起来。运行示意图任务4.4利用Pandas进行财务数据合并二、concat()函数常用参数2.axis=0时实现纵向堆叠当axis=0的时候,concat()函数做列(y轴)对齐,将不同行索引的两张或多张表纵向合并。在两张表的列名并不完全相同的情况下,可以通过设置join参数实现不同的合并方式。当join参数取值为inner时,返回的仅仅是列名的交集所代表的列;当join参数取值为outer时,返回的是两者列名的并集所代表的列。【做中学4.4.5】读入基本工资表.xlsx和加班工资表.xlsx(位置:E:\file\),使用concat()函数进行合并,设定参数axis=0,观察join参数分别为inner、outer时对表格合并的影响。读入基本工资表.xlsx和加班工资表.xlsx。程序如下:importpandasaspd#导入Pandas模块df1=pd.read_excel(r'E:\file\基本工资表.xlsx',converters={'工号':str})df2=pd.read_excel(r'E:\file\加班工资表.xlsx',converters={'工号':str})STEP01任务4.4利用Pandas进行财务数据合并利用concat()函数进行合并,设置axis=0,join="inner"。程序如下:pd.concat([df1,df2],axis=0,join="inner")STEP02利用concat()函数进行合并,设置axis=0,join="outer"。程序如下:pd.concat([df1,df2],axis=0,join="outer")STEP03任务4.4利用Pandas进行财务数据合并4.4.4append()函数的运用append()函数用来向DataFrame对象中添加新的行(纵向合并),如果添加的列名不在DataFrame对象中,将会被当作新的列进行添加。append()函数适用场景:两个DataFrame纵向连接,是concat()函数(axis=0)的简略形式。append()函数的语法格式如下所示:DataFrame.append(other,ignore_index=False,verify_integrity=False,sort=False)append()函数参数及其说明参数说明other接收Series或DataFrame。表示添加的新数据,无默认值。ignore_index接收boolean。如果输入为Ture,就会对新生成的DataFrame使用新的索引(自动产生),而忽略原来数据的索引,默认值为False。verify_integrity接收boolean。如果为True则遇到重复索引内容时则引发异常,默认值为False。sort接收boolean。表示是否将合并的数据进行排序,默认值为False。任务4.4利用Pandas进行财务数据合并【做中学4.4.6】读入基本工资表.xlsx和加班工资表.xlsx(位置:E:\file\),使用append()函数进行表格的合并。importpandasaspd#导入Pandas模块df1=pd.read_excel(r'E:\file\基本工资表.xlsx’,convert
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 12 慧眼看交通 第1课时 教学设计-2023-2024学年道德与法治三年级下册统编版
- 8 我们离不开呼吸 教学设计-2023-2024学年科学三年级下册粤教粤科版
- 21 古诗词三首 长相思(教学设计)-2024-2025学年统编版语文五年级上册
- 3《做个“开心果”》第一课时(教学设计)2023-2024学年统编版道德与法治二年级下册
- 场地宣传合同范本
- 2 祖父的园子 教学设计-2024-2025学年语文五年级下册统编版
- 2024年春七年级语文下册第三单元11台阶教学反思新人教版
- Module 5(教学设计)-2023-2024学年外研版(一起)英语一年级下册
- 2 百分数(二)成数 教学设计-2023-2024学年六年级下册数学人教版
- 运输支架合同范本
- The Frog and the Mouse青蛙和老鼠的故事英语伊索寓言
- 转运铁水包安全风险告知卡
- 31863:2015企业履约能力达标全套管理制度
- 苏教版数学二年级下册《认识时分》教案(无锡公开课)
- 打造金融级智能中台的数据底座
- 工程合同管理教材(共202页).ppt
- ANKYLOS机械并发症处理方法
- 道路桥梁实习日记12篇
- 第十章运动代偿
- 氩弧焊机保养记录表
- 《企业经营统计学》课程教学大纲
评论
0/150
提交评论