zl程序教程

您现在的位置是:首页 >  其他

当前栏目

《Python for Excel》读书笔记连载11:使用pandas进行数据分析之组合数据

2023-04-18 15:54:38 时间

引言:本文为《Python for Excel》中第5章Chapter 5:Data Analysis with pandas的部分内容,主要讲解了pandas如何将数据组合,即concat、join和merge函数的使用。

说明:近期有点忙,这本书的更新慢了一些,深感抱歉!特将这部分免费呈现给有兴趣的朋友。前面的内容链接如下:

1.为什么为Excel选择Python?

2.为什么为Excel选择Python?(续)

3.Python开发环境之Anaconda

4.Python开发环境之 jupyter jupyter笔记本

5.Python开发环境之Visual Studio Code

6.Python入门之基本数据类型和数据结构

7.Python入门之语句、函数和代码组织

8.NumPy入门

9.使用pandas进行数据分析之核心数据结构——数据框架和系列

10.使用pandas进行数据分析之数据操作

组合数据框架

在Excel中组合不同的数据集可能是一项繁琐的任务,通常涉及许多VLOOKUP公式。幸运的是,组合数据框架是pandas的杀手级功能之一,它的数据对齐功能将使工作变得非常轻松,从而大大减少引入错误的可能性。数据框架的组合和合并可以通过多种方式进行,本节只介绍使用concat、join和merge的最常见情况。虽然它们有重叠,但每个功能使特定任务非常简单。这里将从concat函数开始,然后解释join的不同选项,最后介绍merge,这三个函数中最通用的函数。

连接(concatenating)

要简单地将多个数据框架粘合在一起,最好使用concat函数。从函数的名称可以看出,其处理过程具有技术名称串联(concatenation)。默认情况下,concat会沿行将数据框架粘在一起,并自动对齐列。在下面的示例中,创建了另一个数据框架more_users,并将其附加到示例数据框架df的底部:

注意,现在有了重复的索引元素,因为concat将数据粘在指定的轴(行)上,并且只对齐另一个轴(列)上的数据,从而自动匹配列名,即使它们在两个数据框架中的顺序不同。如果要沿列将两个数据框架粘合在一起,设置axis=1:

concat的特殊和非常有用的特性是它接受两个以上的数据框架。在下一章中,我们将使用它从多个CSV文件中生成单个数据框架:

pd.concat([df1,df2, df3, …])

而join和merge只适用于两个数据框架,这是我们下面介绍的内容。

联接(joining)和合并(merging)

当联接(join)两个数据框架时,可以将每个数据框架的列组合成一个新的数据框架,同时依靠集理论来决定行的情况。如果你以前使用过关系数据库,那么它的概念与SQL查询中的JOIN子句相同。图5-3通过使用两个示例数据框架df1和df2,展示了四种联接类型(即内联接Inner、左联接Left、右联接Right和外联接Outer)如何工作。

图5-3.联接类型

使用join,pandas使用两个数据框架的索引来对齐行。内联接(innerjoin)返回的数据框架只包含索引重叠的行。左联接(leftjoin)获取左数据框架df1中的所有行,并在索引上匹配右数据框架df2中的行,在df2没有匹配行的地方,pandas将填充NaN。左联接对应于Excel中的VLOOKUP情况。右联接(rightjoin)获取右表df2中的所有行,并将它们与df1中索引相同的行相匹配。最后,外联接(outerjoin)是完全外联接(fullouter join)的缩写,它从两个数据框架中获取索引的并集,并尽可能匹配值。表5-5相当于图5-3的文本形式。

表5-5.联接类型

让我们看看它们在实践中是如何运作的,将图5-3中的示例付诸实践:

如果要在一个或多个数据框架列上联接而不是依赖索引,那么使用“合并”(merge)而不是“联接”(join)。merge接受on参数以提供一个或多个列作为联接条件(joincondition):这些列必须存在于两个数据框架中,用于匹配行:

由于join和merge接受相当多的可选参数以适应更复杂的场景,因此你可以查看官方文档以了解关于它们的更多信息。

现在知道了如何操作一个或多个数据框架,是时候进入数据分析旅程的下一步:理解数据。