4-4-2数据的连接与合并教学课件PPT.pptx
《4-4-2数据的连接与合并教学课件PPT.pptx》由会员分享,可在线阅读,更多相关《4-4-2数据的连接与合并教学课件PPT.pptx(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、4-4-2数据的连接与合并弘 德 明 志 博 学 笃 行第第4 4章章 数据处理和分析数据处理和分析-Pandas-Pandas第第1010讲讲 数据的连接与合并数据的连接与合并主讲人:马学强弘 德 明 志 博 学 笃 行Contents目录01横向合并横向合并纵向合并纵向合并02重叠合并重叠合并04主键合并主键合并03弘 德 明 志 博 学 笃 行01横向合并弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行横向合并参数名称参数名称功能描述功能描述objs表示参与连接的对象,可以是一个序列,也可以是DataFrame或Series对象的映射。axis表示连接的轴向,0为行索引,1为
2、列索引,默认为0。join表示其他轴向上的索引是按交集(inner)还是并集(outer)进行合并,默认为outer。ignore_index表示是否保留连接轴上的索引,并产生0,1,n-1的新索引。默认为False。keys表示用于连接轴上最外层的层次化索引,默认为None。levels表示用于各级别的层次化索引,可以是序列对象的列表,默认为None。names表示为keys和levels参数添加的多层次索引指定相应的名称,可以是列表对象,默认为None。verify_integrity表示是否检查新连接轴上的重复情况,如果发现则引发异常,默认为False。sort如果参数join=”out
3、er”,则非连接轴在“联接”时尚未对齐,则对其进行排序;join=”inner”时,则不排序。默认为False。copy表示是否复制数据,默认为True。又称横向堆叠,是将两个数据子集在X轴方向进行拼接,即保持行对齐,合并各列的数据,以生成一个新的数据集。横向合并,大多使用pandas.concat()函数完成,该函数的基本语法:concat(objs, axis=0, join=outer, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True
4、)弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行横向合并当函数concat()的参数axis=1时,可以对数据进行行对齐,然后将不同列索引的两个或多个数据子集进行横向合并。(1) 当两个表索引不完全一样时,可以使用join参数选择是内连接还是外连接。join=”inner”时,仅返回索引重叠部分,join=”outer”时,则显示索引的并集部分数据,不足的地方则使用空值填补,其原理如下图。(2) 当两张表完全一样时,不论join参数取值是inner或者outer,结果都是将两个表完全按照X轴拼接起来。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行横向合并横向合并示例
5、 df1=pd.DataFrame(letter:a,b,number:1,2) df4 = pd.DataFrame(bird, polly, monkey, george, columns=animal, name) pd.concat(df1, df4, axis=1) #按列方向合并数据letternumberanimal name0a1birdpolly1b2monkeygeorge弘 德 明 志 博 学 笃 行02纵向合并弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行纵向合并又称纵向堆叠,是将数据子集按照Y轴方向进行拼接,即保持列对齐,合并各行的数据,以生成一个新的数
6、据集。1. 使用concat()函数使用concat()函数时,在默认情况下,即axis=0时,concat做列对齐,将不同行索引的两张或多张表纵向合并。(1) 在两张表的列名并不完全相同的情况下,当join参数取值为inner时,返回的仅仅是列名交集所代表的列,取值为outer时,返回的是两者列名的并集所代表的列,其原理如右图。(2) 不论join参数取值是inner或者outer,结果都是将两个表完全按照Y轴拼接起来。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行纵向合并使用concat()函数进行纵向合并示例 s1 = pd.Series(a, b) #创建Series对象
7、 s2 = pd.Series(c, d) pd.concat(s1, s2) #横向堆叠,返回一个新的Series对象 pd.concat(s1, s2,ignore_index=True) #忽略原索引,自动创建新索引 pd.concat(s1, s2,keys=s1, s2) #合并时创建分层索引,并定义外层索引的值 pd.concat(s1, s2,keys=s1,s2,names=Obj Name,Row Idx) #定义各层索引的名称 df1 = pd.DataFrame(a,1,b,2,columns=letter,number) #创建DataFrame对象 df2 = pd.
8、DataFrame(c,3,d,4,columns=letter, number) pd.concat(df1, df2) #横向连接,保持原对象索引 df3 =pd.DataFrame(c,3,cat,d,4,dog,columns=letter,number,animal) pd.concat(df1, df3, sort=False) #连接时不改变列索引的顺序 pd.concat(df1, df3, join=inner) #以交集方式合并数据 df5 = pd.DataFrame(1, index=a) df6 = pd.DataFrame(2, index=a) pd.concat
9、(df5, df6, verify_integrity=True) #合并时不允许索引重复,否则报错弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行纵向合并2. 使用append()函数数据子集的纵向堆叠,也可以使用DataFrame.append()方法,但append()方法实现纵向堆叠的前提条件是两个数据子集的列名需要完全一致。append()append()方法的基本语法如下:方法的基本语法如下:append(other, ignore_index=False, verify_integrity=False, sort=False)参数名称参数名称功能描述功能描述other
10、表示要添加的新数据子集ignore_indexbool值,为True时会自动产生新索引,并忽略原数据的索引。默认为Falseverify_integritybool值,若为True且ignore_idnex为False时,则检查添加的索引是否冲突。若索引冲突,则添加数据失败。默认为False。sortbool值,若为True,在合并的数据子集列索引没有对齐时,则按列排序。默认为False。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行纵向合并使用append()函数进行纵向合并示例 df1=pd.DataFrame(1,2,3,4,columns=list(AB) df1 A B
11、0 1 21 3 4 df2=pd.DataFrame(5,6,7,8,columns=list(AB) df2 A B0 5 617 8 df1.append(df2,ignore_index=True) #纵向合并,忽略原数据索引 A B0 1 21 3 42 5 63 7 8弘 德 明 志 博 学 笃 行03主键合并弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行主键合并主键合并,类似于关系数据库的join方式,即通过一个或多个键将不同数据集的行连接起来。针对同一个主键存在两个包含不同列名的表,将其根据某几个列关键字一一对应拼接起来,结果集列数为两个原数据集的列数之和减去用于
12、连接键的数量。例如,按照主键Key进行数据合并,结果如下图。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行主键合并1. 使用merge()函数merge()函数的基本语法如下:merge(left,right,how=inner,on=None,left_on=None,right_on=None,left_index=False,right_index=False, sort=False, suffixes=(_x, _y),copy=True,indicator=False,validate=None)参数名称参数名称功能功能描述描述left用于合并的DataFrame对象r
13、ight用于合并的DataFrame对象或命名的Series对象how设置数据合并时的连接方式,可以为”left”、”right”、”inner”、”outer”四种类型,默认为”inner”on用于连接的列或索引级别的名称或其列表,必须同时在左、右两个DataFrame中存在。若为列或索引级别名称的列表,则表示多键连接,默认以两个DataFrame列名的交集作为连接键。left_on表示左侧DataFrame作为连接键的列或索引级别名称。可以是列名、数组或与左侧DataFrame长度相等的数组的列表。right_on表示右侧DataFrame作为连接键的列或索引级别名称,同left_on。l
14、eft_indexbool型,默认为False,表示是否使用left_on参数指定的行索引作为连接键。right_indexbool型,默认为False,同left_index。sortbool型,默认为False,表示是否对合并的数据按主键的字典顺序排序。suffixes字符串组成的元组,用于指定左、右DataFrame列名重复时再列名后面附加的后缀名称,默认为(_x,_y)。copybool型,表示是否将数据复制到数据结构,默认为False。indicatorbool或str类型,默认为False。若为True,则在输出的DataFrame中增加一个名为“_merge”的列,指示每一行的来
15、源信息;若为str类型,则输出的DataFrame中增加的列信息为分类类型,可以为“left_only”、“right_only”和“both”,表明每一行的来源是否与参与合并的左右两侧的DataFrame有关。validatestr类型,可选项。用于检查数据合并时的联结类型,可以为“1:1”、“1:m”、“m:m”,即一对一、一对多、多对多的联结类型。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行主键合并(1)内连接:how=inner,使用两个表都有的键值,返回两个表的交集,即将左表与右表中键值相同的行进行匹配,键值不同的行将被舍弃。若左表和右表中没有键值相同的行存在,将返回
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 连接 合并 教学 课件 PPT
限制150内