【Python数据科学手册】Pandas——八、合并数据集: 合并(merge)与连接(join)

八、合并数据集: 合并与连接

1.关系代数

关系代数是处理关系型数据的通用理论,绝大部分数据库的可用操作都以此为理论基础。关系代数方法论的强大之处在于,它提出的若干简单操作规则经过组合就可以为任意数据集构建十分复杂的操作。

2.数据连接的类型

pd.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)

1)一对一连接

默认how=‘inner’,默认情况下,没有特殊指定,将相同列名作为ON条件,共同列的列名要相同,且这样的列只有1列,连接后索引或自动调整
在这里插入图片描述

2)多对一连接

在需要连接的两个列中,有一列的值有重复。通过多对一连接获得的结果 DataFrame 将会保留重复值。这样原本“一”的那一侧会被“多”的那一侧重复
在这里插入图片描述

3)多对多连接

如果左右两个输入的共同列都包含重复值,那么合并的结果就是一种多对多连接。
左*右=重复次数
在这里插入图片描述

3.设置数据合并的键

1). 参数on的用法

直接将参数 on 设置为一个列名字符串或者一个包含多列名称的列表,这个参数只能在两个DataFrame 有共同列名的时候才可以使用
在这里插入图片描述

2). left_on与right_on参数

当连接的字段,名称不一样时,需要分别指定字段名
连接之后的两个字段都会保留,如果需要删除某列,可以使用 DataFrame 的 drop() 方法将这列去掉。
在这里插入图片描述

3). left_index与right_index参数

注:set_index()将已存在的列设为index
left_index 和 / 或 right_index 参数将索引设置为键来实现合并
在这里插入图片描述
为了方便考虑, DataFrame 实现了 join() 方法,它可以按照索引进行数据合并
在这里插入图片描述
如果想将索引与列混合使用,那么可以通过结合 left_index 与 right_on,或者结合 left_on 与 right_index 来实现
在这里插入图片描述

4.设置数据连接的集合操作规则-how参数决定的内连接、左连接、右连接、外连接

默认how='inner’内连接(交集)
在这里插入图片描述
how=‘outer’(并集),所有缺失值都用 NaN 填充
在这里插入图片描述
左连接(left join)和右连接(right join)返回的结果分别只包含左列和右列
在这里插入图片描述

5.重复列名: suffixes参数

当出现非on列的列名重复时, pd.merge() 函数会自动为它们增加后缀 _x 或 _y
在这里插入图片描述
也可以通过 suffixes 参数自定义后缀名
在这里插入图片描述

6.案例: 美国各州的统计数据

知识点 释义
pd.read_csv() 读取csv
df.head() 默认显示前5行内容
df.isnull().any() 某一列是否存在空值
df[df.column.isnull()].head()
df[df[‘column’].isnull()].head()
查看column列为空的数据
Series.unique() 去重
df.drop() 删除列或行
df.query() 按照条件查询
df.set_index() 设置某列为index
Series.sort_values() 排序

读取数据并预览
在这里插入图片描述
查看数据是否有空值,空值部分数据
在这里插入图片描述
pop表本身这两个洲数据缺失,不做处理
连接洲名表
在这里插入图片描述
这里有空值的原因是这两个洲的全名没有对应的数据匹配,客观上可以填充
在这里插入图片描述
再去连接连接面积表,查看空值部分信息,删除空值数据
在这里插入图片描述
按条件查询
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章