pandas数据表关联操作

Pandas具有功能全面的高性能内存中连接操作,与SQL等关系数据库非常相似。
Pandas提供了一个单独的merge()函数,作为DataFrame对象之间所有标准数据库连接操作的入口。

合并两个DataFrame:

import pandas as pd
left = pd.DataFrame({'student_id':[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],'student_name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung', 'Billy', 'Brian', 'Bran', 'Bryce', 'Betty', 'Emma', 'Marry', 'Allen', 'Jean', 'Rose', 'David', 'Tom', 'Jack', 'Daniel', 'Andrew'],'class_id':[1,1,1,2,2,2,3,3,3,4,1,1,1,2,2,2,3,3,3,2], 'gender':['M', 'M', 'F', 'F', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F'], 'age':[20,21,22,20,21,22,23,20,21,22,20,21,22,23,20,21,22,20,21,22], 'score':[98,74,67,38,65,29,32,34,85,64,52,38,26,89,68,46,32,78,79,87]})
right = pd.DataFrame({'class_id':[1,2,3,5],'class_name': ['ClassA', 'ClassB', 'ClassC', 'ClassE']})
# 合并两个DataFrame
data = pd.merge(left,right)
print(data)

使用“how”参数合并DataFrame:

# 合并两个DataFrame (左连接)
rs = pd.merge(left, right, how='left')
print(rs)

其他合并方法同数据库相同:

合并方法 SQL等效 描述
left LEFT OUTER JOIN 使用左侧对象的键
right RIGHT OUTER JOIN 使用右侧对象的键
outer FULL OUTER JOIN 使用键的联合
inner INNER JOIN 使用键的交集

试验:

# 合并两个DataFrame (左连接)
rs = pd.merge(left,right,on='subject_id', how='right')
print(rs)
# 合并两个DataFrame (左连接)
rs = pd.merge(left,right,on='subject_id', how='outer')
print(rs)
# 合并两个DataFrame (左连接)
rs = pd.merge(left,right,on='subject_id', how='inner')
print(rs)

pandas透视表与交叉表

有如下数据:

import pandas as pd
left = pd.DataFrame({'student_id':[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],'student_name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung', 'Billy', 'Brian', 'Bran', 'Bryce', 'Betty', 'Emma', 'Marry', 'Allen', 'Jean', 'Rose', 'David', 'Tom', 'Jack', 'Daniel', 'Andrew'],'class_id':[1,1,1,2,2,2,3,3,3,4,1,1,1,2,2,2,3,3,3,2], 'gender':['M', 'M', 'F', 'F', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F'], 'age':[20,21,22,20,21,22,23,20,21,22,20,21,22,23,20,21,22,20,21,22], 'score':[98,74,67,38,65,29,32,34,85,64,52,38,26,89,68,46,32,78,79,87]})
right = pd.DataFrame({'class_id':[1,2,3,5],'class_name': ['ClassA', 'ClassB', 'ClassC', 'ClassE']})
# 合并两个DataFrame
data = pd.merge(left,right)
print(data)

透视表

透视表(pivot table)是各种电子表格程序和其他数据分析软件中一种常见的数据汇总工具。它根据一个或多个键对数据进行分组聚合,并根据每个分组进行数据汇总

# 以class_id与gender做分组汇总数据,默认聚合统计所有列
print(data.pivot_table(index=['class_id', 'gender']))# 以class_id与gender做分组汇总数据,聚合统计score列
print(data.pivot_table(index=['class_id', 'gender'], values=['score']))# 以class_id与gender做分组汇总数据,聚合统计score列,针对age的每个值列级分组统计
print(data.pivot_table(index=['class_id', 'gender'], values=['score'], columns=['age']))# 以class_id与gender做分组汇总数据,聚合统计score列,针对age的每个值列级分组统计,添加行、列小计
print(data.pivot_table(index=['class_id', 'gender'], values=['score'], columns=['age'], margins=True))# 以class_id与gender做分组汇总数据,聚合统计score列,针对age的每个值列级分组统计,添加行、列小计
print(data.pivot_table(index=['class_id', 'gender'], values=['score'], columns=['age'], margins=True, aggfunc='max'))

交叉表

交叉表(cross-tabulation, 简称crosstab)是一种用于计算分组频率的特殊透视表

# 按照class_id分组,针对不同的gender,统计数量
print(pd.crosstab(data.class_id, data.gender, margins=True))

Pandas数据表关联操作相关推荐

  1. mysql数据表关联操作步骤_MySQL数据库(三)—— 表相关操作(二)之约束条件、关联关系、复制表...

    表相关操作(二)之约束条件.关联关系.复制表 一.约束条件 1.何为约束 除了数据类型以外额外添加的约束 2.约束条件的作用 为了保证数据的合法性,完整性 3.主要的约束条件 NOT NULL #标识 ...

  2. MySQL基本操作命令和数据表高级操作

    数据库之MySQL基本操作命令 一.常用的数据类型 二.查看数据库.表和表结构 1.查看数据库 2.查看数据库包含的表 3.查看表结构 三.SQL语句 创建新的数据库 创建新的表 删除指定数据表 删除 ...

  3. MySQL数据库基础(mysql数据类型、数据表的操作)

    一.MySQL数据类型 1.数值类型 作为SQL标准的扩展,MySQL也支持整数类型TINYINT.MEDIUMINT和BIGINT.下面的表显示了需要的每个整数类型的存储和范围: MySQL数值类型 ...

  4. FleaPHP 开发指南 - 7. 数据表关联

    数据表关联是指两个或者多个数据表的记录之间的逻辑关系. 例如: 每一个公民都有一个身份证号码 每一位作者都写了多本(0-n)书籍,而每一本书籍都有多个(1-n)作者 每一篇文章都有多个(0-n)评论 ...

  5. 图表嵌入到数据表格下方_Excel中进行图表下方显示数据表的操作技巧

    Excel 中进行图表下方显示数据表的操作技巧 添加模拟运算 下面是虚拟数据源 ( 三种面膜在 1-3 月的销售量 ) . 选中 A1 : D4 单元格区域,单击插入 insert--- 柱形图 co ...

  6. MySQL第二讲 - 数据表简单操作 与 “增删查改的开头部分- 增”- 细节狂魔

    文章目录 前文知识点回顾   SQL语句 >>操作指令 (不区分大小写) 1.显示数据库:show databases; 2.创建数据库:create database 数据库名; [如果 ...

  7. 如何删除mysql数据库里的表_删除mysql数据表如何操作

    MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TABLE table_na ...

  8. 4、MySQL——向数据表中插入数据,修改数据表中的数据,数据表删除操作

    目录 一.数据表插入操作:INSERT 1. 给表中的所有字段插入数据 2.给表中的个别字段插入数据 3.向数据表中批量插入多条数据 二.数据表修改操作:UPDATE 1.修改所有字段的数据 2.修改 ...

  9. Springboot整合JPA 多表关联操作 @Query

    如果还没使用过JPA的可以去先看我这篇:https://blog.csdn.net/qq_35387940/article/details/102541311 这篇文章里我所采取的是使用Map来 替代 ...

最新文章

  1. 关于sendmail报错“did not issue MAIL/EXPN/VRFY/ETRN during connection to
  2. Android:简易单词本(三)
  3. 人脸识别 | 你的论文离CVPR , 还有多远?
  4. 函数指针与指针函数(C++工厂设计最喜欢用这个)
  5. 7.18自学c++笔记
  6. 科技战疫丨SENSORO灵思智能安全服务助力疫情防控
  7. java对【配置文件的读取】与【读配置文件时的路径问题】代码总结
  8. C#海康解码器上大屏代码事例
  9. 微信web版swoole聊天室之 MongoDB安装
  10. linux安装monaco字体
  11. elementui的横向滚动,element-ui中隐藏组件el-scrollbar的使用
  12. 现实世界的补丁长什么样? [ICSME 18] A Closer Look at Real-World Patches (结尾附论文阅读反思)
  13. 一个复杂注塑件抽取中面一般操作
  14. 那个男人他不装了,他必须硬卷!
  15. Java 将控制台输出打印 输出到本地文件
  16. 第四章第二节数据资产盘点-数据资产盘点方法伦
  17. 人人旗下风车网CEO的创业失败教训总结
  18. 【微信】微信小程序前后端数据请求示例
  19. 基于STM32智能家居控制系统软件设计及实现
  20. ffmpeg sws_scale详细分析

热门文章

  1. Java代码执行顺序
  2. 谷歌也扛不住了!医疗AI探索再遇重挫,科技公司们节节败退
  3. 如何获取全年节假日信息以及计算当前日期属于第几周
  4. iPhone 14截屏带岛/ Shopee中国裁员/ 世界最快电动机诞生...今日更多新鲜事在此...
  5. android怎么实现手机号登录(2020最新版超详细Mob平台+SMSSDK)?
  6. 未来的交通工具(图)
  7. 京东量化手把手教你写“法玛三因子”策略
  8. 2021年起重机械指挥考试内容及起重机械指挥考试资料
  9. Android电视盒子最强看电视app-tvbox配置(视频源)教程
  10. 腾讯发布「云深智药」平台,新基建助力药物研发全流程