Pandas Power Play: 构建数据帝国的两表JOIN和group by之旅

news/2025/2/27 20:43:07/

在数据分析的过程中,常常需要把多张表格进行合并,或者按照某些规则进行分组统计。Pandas是Python中一个非常强大的数据处理库,其中的JOIN和group by函数能够帮助我们轻松地完

成这些任务。本教程将详细介绍如何使用这两个函数,让你在数据分析的道路上更加游刃有余!

为什么要搞group by

JOIN操作允许你将多个数据表按照某个共同的字段进行连接,创建一个更完整、更有洞察力的数据集。这样做的好处有:

  1. 数据整合:通过JOIN操作,你可以将多个相关的数据源合并在一起,形成一个更全面的数据集。例如,你可以将客户信息表和销售记录表JOIN在一起,从而获取每个客户的购买历史和偏好。
  2. 数据拓展:JOIN操作可以通过连接多个表来增加数据的维度。通过关联不同的字段,你可以丰富数据集并探索更多的关联关系,提供更全面的洞察和决策支持。

其次,GROUP BY操作允许你根据一个或多个字段对数据进行分组,并对每个组应用聚合函数。这带来了以下好处:

  1. 汇总统计:通过GROUP BY操作,你可以对数据进行分组,并计算每个组内的统计指标,如平均值、总和、计数等。这可以帮助你发现数据的整体趋势和模式,并快速洞察不同组之间的差异。
  2. 数据探索:GROUP BY操作使你能够以更细粒度的方式分析数据,并深入了解不同组的特征。通过分组聚合,你可以揭示隐藏在数据中的细微变化、异常值或关联关系,从而发现更有价值的见解

JOIN函数的使用方式 🤝

JOIN函数是将两张表格按照某些关键词进行合并的函数,Pandas中提供了四种JOIN方式:

INNER JOIN 👥

内连接是对两张表格进行交集操作,只有两张表格中关键词完全匹配的行才会被保留。使用Pandas的JOIN函数进行INNER JOIN的代码如下:

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],'value2': [5, 6, 7, 8]})
result = df1.join(df2, how='inner', on='key')
print(result)

输出结果:

  key  value1  value2
1   B       2       5
3   D       4       6

OUTER JOIN 🤝

外连接是对两张表格进行合并,并且保留所有行,如果某些行不匹配,则用NaN填充。使用Pandas的JOIN函数进行OUTER JOIN的代码如下:

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],'value2': [5, 6, 7, 8]})
result = df1.join(df2, how='outer', on='key')
print(result)

输出结果:

  key  value1  value2
0   A     1.0     NaN
1   B     2.0     5.0
2   C     3.0     NaN
3   D     4.0     6.0
4   E     NaN     7.0
5   F     NaN     8.0

LEFT JOIN 👈

左连接是以左边的表格为基础,将右边的表格按照关键词进行合并,并保留所有行。如果右边的表格中某些行不匹配,则用NaN填充。使用Pandas的JOIN函数进行LEFT JOIN的代码如下:

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],'value2': [5, 6, 7, 8]})
result = df1.join(df2, how='left', on='key')
print(result)

输出结果:

  key  value1  value2
0   A       1     NaN
1   B       2     5.0
2   C       3     NaN
3   D       4     6.0

RIGHT JOIN 👉

右连接是以右边的表格为基础,将左边的表格按照关键词进行合并,并保留所有行。如果左边的表格中某些行不匹配,则用NaN填充。使用Pandas的JOIN函数进行RIGHT JOIN的代码如下:

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],'value2': [5, 6, 7, 8]})
result = df1.join(df2, how='right', on='key')
print(result)

输出结果:

  key  value1  value2
0   B     2.0       5
1   D     4.0       6
2   E     NaN       7
3   F     NaN       8

group by函数的使用方式 🧑‍🤝‍🧑

group by函数是按照某些规则对表格进行分组并统计的函数,Pandas中提供了非常丰富的group by函数,包括sum、count、mean等等。使用Pandas的group by函数进行分组统计的代码如下:

df = pd.DataFrame({'key1': ['A', 'A', 'B', 'B', 'A'],'key2': ['C', 'D', 'C', 'D', 'C'],'value1': [1, 2, 3, 4, 5],'value2': [6, 7, 8, 9, 10]})
result = df.groupby('key1').sum()
print(result)

输出结果:

      value1  value2
key1
A          8      23
B          7      17

其中,'column_name'是你要按照哪一列进行分组统计的列名。如果你要进行多列分组统计,可以使用一个列表来传递多个列名:

df = pd.DataFrame({'key1': ['A', 'A', 'B', 'B', 'A'],'key2': ['C', 'D', 'C', 'D', 'C'],'value1': [1, 2, 3, 4, 5],'value2': [6, 7, 8, 9, 10]})
result = df.groupby(['key1', 'key2']).mean()
print(result)

输出结果:

           value1  value2
key1 key2
A    C        3.0     8.0D        2.0     7.0
B    C        3.0     8.0D        4.0     9.0

结束语 🎉

以上就是Python Pandas的两表JOIN和group by教程的全部内容。希望这个教程能够帮助你更好地掌握Pandas中的这两个函数,并在数据分析中发挥更大的作用!


http://www.ppmy.cn/news/69860.html

相关文章

Vue--》探索Pinia:Vue状态管理的未来

目录 Pinia的讲解与使用 Pinia的安装与使用 store数据操作 解构store数据 actions-getters的使用 Pinia常用API 持久化插件 Pinia的讲解与使用 Pinia 是由 Eduardo San Martin Morote 创建的,这是一个轻量级的、使用 Vue3 Composition API 的状态管理库。Pi…

Java设计模式-组合模式

简介 在软件设计中,设计模式是一种被广泛接受和应用的经验总结,旨在解决常见问题并提供可复用的解决方案。 组合模式是一种结构型设计模式,它允许将对象组合成树形结构以表示“部分-整体”的层次结构。这种模式能够使客户端以一致的方式处理…

软测人正在杀死软测行业

前言、一个软件做出来,最不能少的人是谁? 不用说就是开发,因为开发是最了解软件运作的那个人,早期不少一人撸网站或者APP的例子,相当于一个人同时是产品、研发、测试、运维等等,这也是为何开发是地位和上限…

【小沐学Python】Python实现在线英语翻译功能

文章目录 1、简介2、在线翻译接口2.1 Google Translate API2.2 Microsoft Translator API2.2.1 开发简介2.2.2 开发费用2.2.3 开发API 2.3 百度翻译开放平台 API2.3.1 开发简介2.3.2 开发费用2.3.3 开发API 2.4 Tencent AI 开放平台的翻译 API2.4.1 开发简介2.4.2 开发API 2.5 …

python3+telnetlib实现简单自动测试

1 telnetlib介绍 1.1 简介 官方介绍文档:telnetlib – Telnet 客户端 — Python 3.9.6 文档 telnetlib 模块提供一个实现Telnet协议的类 Telnet。 1.2 库常用函数及使用 1.2.1 建立连接 建立连接有两种方式:1、实例化函数的时候,将可选参数…

【SpringCloud微服务实践】提供与消费

提供与消费 文章目录 提供与消费创建服务提供者初始化项目项目配置定义User编写UserMapper编写Service层定义api接口返回格式编写Controller层 创建服务消费者配置User服务的地址创建RestTemplate Bean创建UserApi编写Controller层 总结 微服务属于分布式系统,微服务…

MySQL 字段为 NULL 的5大坑,大部分人踩过

数据库字段允许空值(null)的问题,小伙伴你遇到过吗? 在验证问题之前,我们先建一张测试表及测试数据。 构建的测试数据,如下图所示: 有了上面的表及数据之后,我们就来看当列中存在 NULL 值时,究…

调用百度文心AI作画API实现中文-图像跨模态生成

作者介绍 乔冠华,女,西安工程大学电子信息学院,2020级硕士研究生,张宏伟人工智能课题组。 研究方向:机器视觉与人工智能。 电子邮件:1078914066qq.com 一.文心AI作画API介绍 1. 文心AI作画 文…