pandas 数据合并与整形 3|学习笔记

简介: 快速学习 pandas 数据合并与整形 3

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践pandas 数据合并与整形 3】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1067/detail/15394


pandas 数据合并与整形 3

 

下面来学习交流合并数据集,这个数据集的合并,pandas 里有几种方式来合并数据。

1. Pandas.merge 按一个或多个 key 来将 DataFrame 中的行连接起来。这个和 SQL 或其他一些关系型数据库中的 join 操作很相似。

2. Pandas.concat 在一个 axis(轴)上,串联或堆叠(stack)多个对象。

3. Combine_first实例方法(instance method)能合并相互之间有重复的数据,并用一个对象里的值填满缺失值。

这就是提到的三种方式,主要使用的是 merge 和 concat。

Database-Style DataFrame Joins

那么先来学习具有数据库风格的 DataFrame joins 函数的合并方法,merge 和 join操作,都能够通过一个或多个 key(关键字段),可以把不同数据集的行连接在一起。这种操作主要集中于关系型数据库,和关系型数据库操作很类似,Pandas 中的 merge 函数具有这种功能,是操作的主要切入点。

下来可以查看加载数据包,然后这里做出数据框:df1=pd.DataFrame({‘key’:【‘b’,‘b’,‘a’,‘c’,‘a’,‘a’,‘b’】,‘data1’:range(7)})这里运行查看结果

结果有两列,分别为 key 和 data1,然后这左边是它的索引。

然后再看 df2=pd.DataFrame({‘key’:【‘a’,‘b’,‘d’】,然后这里也有 key 和 data2。然后,因为这两个数据框都有相同的 key 这一列,可以认为是列的索引。

下面的例子里是 many-to-one join(多个变为一个的连接),那为什么是多对一的连接呢?看后面的操作结果可以得知,在 df1中有标签 a 和 b 的行,而 df2中的 key 列,每一行只有对应的一个值,在 key 中是不重复的。那么调用 merge 函数来合并可以得到:

Pd.merge(df1,df2),其就按照 key 将其合并在一起,然后需要对应的去对应,如果 a 相同,就往数据里面合并,然后在第 df1里的 c 就忽略掉了,再来看合并后的结果。注意观察合并后的结果,只在相同的字段上面进行合并,等于扩展到一个新的列,把 df2里面的这个 data2进行列加上去,加的过程要注意按照关键字项。

那么这里并没有指定哪一列,如果没有指定的话,merge 会用两个对象中都存在的列名作为 key。因为刚刚两个都有 key,所以没有指定的情况下,其还是由共同的字段作为指定的列,然后进行合并,当然最好还是清楚的指定比较好。举个例子,这里合并 df1和 df2,也就是 pd.merge(df1,df2,on=;‘key’) key 项这一列上进行合并,运行然后查看结果。

那么如果每个对象中的列名不一会,可以分别指定。

可以查看下方代码:

df3=pd.DataFrame({‘lkey’:【‘b’,‘b’,‘a’,‘c’,‘a’,‘a’,‘b’】,‘data1’:range(7)})

是这样的数据框,其 key 变为 lkey。

Df4=pd.DataFrame({‘rkey’:【‘a’,‘b’,‘d’】,‘data1’:range(3)})

然后 df4的数据框,是将 key 变为rkey。

含义一个是左一个是右,所以来看数据,如果需要显示,可以增加一个单元格去显示。然后看看代码:pd.merge(df3,df4,Left_on=‘lkey’,right_on=‘rkey’),所以 lkey 和 rkey,在这里面会被用上,是按照这样的 key 去合并。因为 df3和 df4之间的两个数据、表中,其列的名字不一样,那么df3左边的表里,以 lkey 对齐,然后 df4右边的表里面有 right,也就是 rkey 作为对齐,所以以这两个关键字作为对齐,把这两张表的两个数据框进行合并。

这个需要进行理解,同时这份合并后的数据里并没有 c 和 d,因为merge 合并的方式等于是数据库里面的 inner join 内连接,结果中的 key 只是交集的结果,或者在两个表格中都有的集合。如果需要做其并集的情况下。其 how=‘outer’,所以 outer 叫外连接,它是取 key 的合集。这里来运行查看效果,然后显示其就有了 c 和 d,那也可以用它的 df1和 df2这两份数据,它里面控制对应这段是 key。

另外还可以补充 how 的一些选项,那么下来可以看一下例子,这是数据 df1=pd.DataFrame({‘key’:【‘b’,‘b’,‘a’,‘c’,‘a’,‘b’】}),‘data1’:range(6)})

然后是数据 df2=pd.DataFrame({‘key’:【‘a’,‘b’,‘a’,‘b’,‘d’】}),‘data2’:range(5)})

它们都有共同的列(key),然后下面来使用 how 选项,这里是 df1和 df2进行合并。用参数 on = key在 key 上合并,那 how = left。how 合并的方式还有inner outer left right等。这里举个例子,合并是how=left,表示是把 df1和 df2,df1是左边的数据框,将左边的数据框固定,固定情况看上面的数据,df1也就是这六个值(0,1,2,3,4,5)固定起来,然后 df2和 df1,然后做 data 空间的计算,这个可能大家需要去看例子思考原因?比如在 df1里 b 有三个,然后在 df2里面的 b 有两个,当它们合并时,按照 data 的计算最终是3*2=6个,所以看看合并后的结果也是 b 有6个,所以注意,df1是以它作为基准,所有的数据线保持不变。然后 df2按照 key 值与 df1做 data 空间的计算,最终得到的主题结果。

还有 inner 、outer、left、right等。下面有解释,就是 many-to-many join的连接合并是对行进行笛卡尔集运算。(两个集合 x 和 y 的笛卡尔积),也称为直积,在集合论中表示为 x*y,是所有里面可能的有序对组成的集合。这种例子也很简单,很直接。

如果是 how = inner 就是内部的交易,然后上面像 C 和 D 也保留了,所以要注意这个差别。

那么用多个 key 来连接的话,用一个含有多个列名的 list来制定:像这里做了两个数据框:

Left=pd.dataframe({‘key1’:【‘foo’,‘foo’,‘bar’】,

‘key2’:【‘one’,‘two’,‘one’】,

‘lval’:【1,2,3】})

Right=pd.dataframe({‘key1’:【‘foo’,‘foo’,‘bar’,‘bar’】,

‘key2’:【‘one’,‘one’,‘one’,‘two’,】,

‘rval’:【4,5,6,7】})

那么运行看这两份数据,这里需要合并 left 数据框和 right 数据框,on=【‘key1’,‘key2’】,how=‘outer’。这个操作是可以进行的。

那么选择哪一种 key 组合会出现在结果取决于 merge 方法的选择。那么可以把多个 key 当做一个 tuple 组成的单一 key,然后让数据去使用,那么还有一个问题,就是在做 merge 操作时,如何处理重叠的列名?当想手动解决重叠列名问题时,可以加后缀,这里注意下面的例子:

Pd.merge(left,right,on=‘key1’),left 和 right里面都有key1,那么按照它们合并时,去看一下这里有了 key2_X,key2_Y 这样的结果,其命名也是可以自己添加的,也可以指定。下面就有指定的添加的后缀:suffixes=(‘_left’,‘_right’),所以运行结果如下。

上面显示也是用 X 和 Y,等于相当于两个坐标轴之间操作,但也要注意其之间的差距。

相关文章
|
JSON 数据可视化 数据挖掘
python数据可视化开发(2):pandas读取Excel的数据格式处理(数据读取、指定列数据、DataFrame转json、数学运算、透视表运算输出)
python数据可视化开发(2):pandas读取Excel的数据格式处理(数据读取、指定列数据、DataFrame转json、数学运算、透视表运算输出)
319 0
|
3月前
|
数据采集 数据处理 索引
如何使用 Pandas 删除 DataFrame 中的非数字类型数据?
如何使用 Pandas 删除 DataFrame 中的非数字类型数据?
55 3
|
3月前
|
索引 Python
如何使用Pandas进行数据合并?
Pandas提供`merge()`, `join()`, `concat()`等方法进行数据合并。基本步骤包括导入pandas库、创建或加载DataFrame,然后调用这些方法合并数据。示例中展示了如何使用`merge()`和`join()`:创建两个DataFrame `df1`和`df2`,通过`merge()`基于索引合并,以及`join()`进行外连接合并。
37 0
|
索引 Python
pandas数据合并
pandas数据合并
62 0
|
11月前
|
SQL 数据处理 索引
pandas数据处理之合并与拼接
在许多应用中,数据可能来自不同的渠道,在数据处理的过程中常常需要将这些数据集进行组合合并拼接,形成更加丰富的数据集。pandas提供了多种方法完全可以满足数据处理的常用需求。具体来说包括有join、merge、concat、append等。
201 0
|
10月前
|
数据采集 SQL 数据挖掘
【100天精通Python】Day56:Python 数据分析_Pandas数据清洗和处理(删除填充插值,数据类型转换,去重,连接与合并)
【100天精通Python】Day56:Python 数据分析_Pandas数据清洗和处理(删除填充插值,数据类型转换,去重,连接与合并)
99 0
|
开发者 索引 Python
pandas 数据合并与整形 4|学习笔记
快速学习 pandas 数据合并与整形 4
75 1
|
数据挖掘 索引 Python
【Python数据分析 - 12】:Series结构、pandas中值的获取和修改、切片操作与排序(pandas篇)
【Python数据分析 - 12】:Series结构、pandas中值的获取和修改、切片操作与排序(pandas篇)
204 0
【Python数据分析 - 12】:Series结构、pandas中值的获取和修改、切片操作与排序(pandas篇)