《Python for Excel》读书笔记连载11:使用pandas进行数据分析之组合数据
引言:本文为《Python for Excel》中第5章Chapter 5:Data Analysis with pandas的部分内容,主要讲解了pandas如何将数据组合,即concat、join和merge函数的使用。
说明:近期有点忙,这本书的更新慢了一些,深感抱歉!特将这部分免费呈现给有兴趣的朋友。前面的内容链接如下:
4.Python开发环境之 jupyter jupyter笔记本
5.Python开发环境之Visual Studio Code
9.使用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接受相当多的可选参数以适应更复杂的场景,因此你可以查看官方文档以了解关于它们的更多信息。
现在知道了如何操作一个或多个数据框架,是时候进入数据分析旅程的下一步:理解数据。
相关文章
- IT程序员的坏习惯有哪些?你中了吗?
- 认识人和鱼的AI,能识别美人鱼吗?阿里CVPR论文因果推理方法解答
- 前馈网络+线性交互层=残差MLP,Facebook纯MLP图像分类架构入场
- 科学家开发新的神经电子系统 可以读取和“操纵”大脑信号
- 美国宣布进入紧急状态!网络攻击,别只看这冰山一角
- AI识图驴唇不对马嘴?Google AI:用交错训练集提升图像描述准确性
- 华人小哥的“黑话”数据集,AI:你连dbq都不懂
- MIT开发能“感知”隐藏物体的机器人:“我们正试图赋予机器人超人的感知力”
- Google十年,我被彻底颠覆了!
- 碳基生物惨遭淘汰!AI在纵横字谜中首次获得胜利
- AI系统安全测试的自动化工具
- 人工智能寒冬又到?美国教授arxiv发文批判AI,遭Reddit网友狂喷
- 谷歌大脑最新操作玩“复古”:不用卷积注意力,图像分类接近SOTA
- Starlink已收到超过50万份预约申请
- 运维必看:从零开始搭建创业公司“后台”技术栈
- 2020,算法话题进入主流视野的一年
- 马斯克的90后合伙人离职Neuralink!5岁学编程,曾创立2家公司
- AI模型新革命来了?大脑记忆是旋转的?过去未来竟是「正交」空间
- AI玩填字游戏,赢得全国比赛冠军!官方:不是人,没有奖金和名次
- 10亿参数的AI模型SEER「一视同仁」:服务富人,也服务全世界