数据分析应用项目化教程(Python) 课件 任务6.2 数据合并和连接_第1页
数据分析应用项目化教程(Python) 课件 任务6.2 数据合并和连接_第2页
数据分析应用项目化教程(Python) 课件 任务6.2 数据合并和连接_第3页
数据分析应用项目化教程(Python) 课件 任务6.2 数据合并和连接_第4页
数据分析应用项目化教程(Python) 课件 任务6.2 数据合并和连接_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

第六章使用pandas进行数据清洗和整理

任务6.2数据合并和连接concat合并append合并merge连接join连接combine_first和combine填充合并concat合并使用某种合并方式(inner/outer)沿着某个轴向(axis=0/1)将多个对象进行堆叠把多个Pandas对象(DataFrame/Series)合并成一个concat合并pandas.concat(objs,axis=0,join='outer',‘join_axes=None’,ignore_index=False,‘keys=None’)objs:一个列表,要进行拼接的pandas对象,可以是DataFrame或者Series,可以混合axis:指定对象按照那个轴进行拼接,默认为0(纵向拼接),1为横向拼接join:拼接的方式,inner为交集,outer为并集join_axes:index的列表,仅在横向合并时使用,指明要将数据合并入哪个原表的indexignore_index:如果设置为true,则无视表原来的轴标签,合并后生成新的轴标签keys:表标识的列表,用来区分合并的表来自哪里concat合并-按行pd.concat(frames):默认参数的concat,按行合并,参数为axis=0、join=outer、ignore_index=Falseconcat合并-按行pd.concat(frames,keys=['x','y','z'])使用keys标识表concat合并-按列pd.concat([df1,df4],axis=1)按列合并,axis=1pd.concat([df1,df4],axis=1,join='inner')#按行索引相同合并列append合并append语法:DataFrame.append(other,ignore_index=False)append只有按行合并,没有按列合并,相当于concat按行的简写形式other:单个dataframe、series、dict,或者列表ignore_index:是否忽略掉原来的数据索引merge连接Pandas的Merge,相当于Sql的Join,将不同的表按key关联到一个表。merge的语法:pd.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)left,right:要连接的dataframe或者Serieshow:join类型,'left','right','outer','inner'on:join的key,left和right都需要有这个keyleft_on:left的df或者series的keyright_on:right的df或者seires的keyleft_index,right_index:使用index而不是普通的column做joinsuffixes:两个元素的后缀,如果列有重名,自动添加后缀,默认是('x','y')

merge连接pd.merge(left,right,on='key')默认等值连接,左边和右边的key都有,才会出现在结果里merge连接pd.merge(left,right,on=['key1','key2'])#多个关键字等值连接,默认how=‘inner’merge连接pd.merge(left,right,how='left',on=['key1','key2'])#左边的都会出现在结果里,右边的如果无法匹配则为Nullmerge连接pd.merge(left,right,how='right',on=['key1','key2'])右边的都会出现在结果里,左边的如果无法匹配则为Nullmerge连接pd.merge(left,right,how='outer',on=['key1','key2'])#左边、右边的都会出现在结果里,如果无法匹配则为Nulljoin连接默认行索引匹配连接,

merge()默认是列索引匹配连接。用法:join()方法能够通过索引或指定列来连接多个DataFrame对象,它默认以index作为对齐的列。join()和merge()一样,是横向拼接,只能进行数据匹配,即添加列,不能添加行,并且支持how的四种模式:inner,left,right,outer。其实join()就是merge()的一种封装,后台调用的正是merge()。只是为了调用更为简单,才有了join()。语法:join(other,on=None,how='left',lsuffix='',rsuffix='',sort=False)

how:和merge中的how参数一样,用来指定表合并保留数据的规则,匹配到的内容不存在,则用NaN填充。

on:在实际应用中如果右表的索引值正是左表的某一列的值,这时可以通过将右表的索引和左表的列对齐合并这样灵活的方式进行合并。

sort:根据连接键对合并的数据进行排序,默认为False。理解leftjoin、rightjoin、innerjoin、outerjoin的区别join连接Joiningonindex(默认是基于索引连接的)常先设置两表的index列。left.join(right,how='inner')#等价pd.merge(left,right,left_index=True,right_index=True,how='inner')join连接Joiningleftkeycolumnsonanrightindex(左边列与右边索引连接)left.join(right,on='key')#left的key列和right的行索引连接,key必须是左边列#等价pd.merge(left,right,left_on='key',right_index=True,how='left',sort=False)join连接如何实现两个df的列连接呢?两种方法列连接,需要把两个df列转换成行索引df.set_index('key').join(other.set_index('key'))列连接,需要把other的列转换成行索引,key必须是df的列df.join(other.set_index('key'),on='key',how='inner')combine_firstbine_first(df2)填充空值规则是与null值的元素在同一位置等,同一位置指行列索引值一致。通过在df1中使用df2的非null值填充空值来组合两个DataFrame对象,函数返回的DataFrame的行索引和列索引将是两者的并集。如果df1中数据非空,则结果保留df1中的数据,如果df1中的数据为空值且传入combine_first()方法的df2中数据非空,则结果取df2中的数据,如果df1和df2中的数据都为空值,则结果保留df1中的空值。combine_firstcombine填充合并bine(df2,func,fill_value,

overwrite=True):df1基于传递的函数执行与df2的逐列组合。使用func将df1与df2组合到按元素组合的列。生成的DataFrame的行索引和列索引将是两者的并集。func函数的入参是两个Series,分别来自两个DataFrame(将DataFrame按列遍历),返回结果是一个合并之后的Series,在函数中实现合并的规则。combine填充合并fill_value:在将列传递给合并函数之前,先用fill_value填充df1、df2中所有列的值,再按传入的函数进行合并操作。overwrite=False,不处理缺少的列,缺少指df1中有而df2中没有该列,df1中A列原样返回小结df1.concat(df2):机械地行或列堆叠数据。df1.append(df2):只有按行合并,没有按列合并,相当于concat按行的简写形式。df1.merge(df2):适合处理列的连接。df1.join(df2):适合处理行索引的连接。df.set_index()、df.reset_index()、df.T可以进行df行列的转换,因此merge和join方法其实用一种就可以了

温馨提示

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

评论

0/150

提交评论