深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南【第72篇—python:数据连接】

深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南

Pandas是Python中最强大且广泛使用的数据处理库之一,提供了丰富的函数和工具,以便更轻松地处理和分析数据。在本文中,我们将深入探讨Pandas中一系列数据连接、合并、加入、添加、重构函数,包括merge、concat、join、append、stack和unstack。通过理解这些功能,你将能够更灵活地处理和转换数据,提高数据分析和清理的效率。

image-20240211142931700

1. merge函数

merge函数用于将两个数据框基于一个或多个键进行连接。以下是一个简单的示例:

import pandas as pd# 创建两个数据框
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],'value': [5, 6, 7, 8]})# 使用merge进行连接
merged_df = pd.merge(df1, df2, on='key')print(merged_df)

在这个例子中,我们使用merge函数基于’key’列连接了两个数据框。输出将是一个包含共同键的新数据框。

image-20240211142352520

2. concat函数

concat函数用于沿着指定轴连接多个数据框。以下是一个示例:

# 创建两个数据框
df1 = pd.DataFrame({'A': [1, 2],'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6],'B': [7, 8]})# 使用concat进行连接
concatenated_df = pd.concat([df1, df2])print(concatenated_df)

在这个例子中,我们使用concat函数沿着默认的行轴连接了两个数据框。你还可以通过指定axis参数来沿着列轴连接。

image-20240211142441586

3. join函数

join函数用于将两个数据框基于索引进行连接。以下是一个简单的例子:

# 创建两个数据框
df1 = pd.DataFrame({'value': [1, 2]}, index=['A', 'B'])
df2 = pd.DataFrame({'value': [3, 4]}, index=['B', 'C'])# 使用join进行连接
joined_df = df1.join(df2, how='inner')print(joined_df)

在这个例子中,我们使用join函数将两个数据框基于索引进行了内连接(inner join)。

4. append函数

append函数用于将一个数据框追加到另一个数据框的末尾。以下是一个例子:

# 创建两个数据框
df1 = pd.DataFrame({'A': [1, 2],'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6],'B': [7, 8]})# 使用append进行连接
appended_df = df1.append(df2)print(appended_df)

在这个例子中,我们使用append函数将df2追加到了df1的末尾。

5. stack和unstack函数

stackunstack函数用于在行和列之间进行数据重构。以下是一个示例:

# 创建一个多层索引的数据框
arrays = [['A', 'A', 'B', 'B'],[1, 2, 1, 2]]
multi_index = pd.MultiIndex.from_arrays(arrays, names=('letters', 'numbers'))
df = pd.DataFrame({'value': [1, 2, 3, 4]}, index=multi_index)# 使用stack进行数据重构
stacked_df = df.stack()print(stacked_df)

在这个例子中,我们使用stack函数将列标签的层次结构转移到行索引,创建了一个更紧凑的数据框。

6. stackunstack 函数

stackunstack 函数是用于在行和列之间进行数据重构的强大工具。下面是一个例子:

# 创建一个多层索引的数据框
arrays = [['A', 'A', 'B', 'B'],[1, 2, 1, 2]]
multi_index = pd.MultiIndex.from_arrays(arrays, names=('letters', 'numbers'))
df = pd.DataFrame({'value': [1, 2, 3, 4]}, index=multi_index)# 使用unstack进行数据重构
unstacked_df = df.unstack()print(unstacked_df)

在这个例子中,我们使用unstack函数将行索引的层次结构转移到列,使数据框更为直观。

image-20240211142522978

7. set_indexreset_index 函数

set_indexreset_index 函数用于重新设置数据框的索引,有助于灵活地处理数据框的结构。

# 创建一个简单的数据框
df = pd.DataFrame({'A': [1, 2, 3],'B': [4, 5, 6]})# 使用 set_index 将 'A' 列设置为新的索引
df_set_index = df.set_index('A')print(df_set_index)

在这个例子中,我们使用 set_index 将 ‘A’ 列设置为新的索引,这可以方便地基于该列进行数据检索。

# 使用 reset_index 重新设置索引
df_reset_index = df_set_index.reset_index()print(df_reset_index)

reset_index 则是用于将设置的新索引还原为默认整数索引。这在某些情况下很有用,特别是在进行一些索引操作后需要将数据框还原到初始状态。

8. pd.merge 的更高级用法

除了基本的连接操作,pd.merge 还提供了一些高级用法,如多键连接、不同连接方式等。

# 创建两个数据框
df1 = pd.DataFrame({'key1': ['A', 'B', 'C'],'key2': ['X', 'Y', 'Z'],'value': [1, 2, 3]})
df2 = pd.DataFrame({'key1': ['A', 'B', 'C'],'key2': ['X', 'Z', 'Y'],'value': [4, 5, 6]})# 多键连接
multikey_merge = pd.merge(df1, df2, on=['key1', 'key2'])print(multikey_merge)

在这个例子中,我们使用 pd.merge 进行多键连接,通过传递一个键的列表,实现更精确的匹配。

9. 分层索引的运用

分层索引是 Pandas 中一项重要的功能,通过它,你可以创建具有多层次的行或列索引,更灵活地组织和访问数据。

# 创建一个包含分层索引的数据框
data = {'value': [1, 2, 3, 4, 5, 6],'attribute': ['A', 'B', 'C', 'A', 'B', 'C']}
df_multiindex = pd.DataFrame(data, index=[['Group1', 'Group1', 'Group1', 'Group2', 'Group2', 'Group2'],['X', 'Y', 'Z', 'X', 'Y', 'Z']],columns=['value', 'attribute'])print(df_multiindex)

在这个例子中,我们创建了一个包含两层分层索引的数据框,其中第一层为 ‘Group1’ 和 ‘Group2’,第二层为 ‘X’、‘Y’ 和 ‘Z’。这样的数据结构使得我们可以更方便地进行多层次的数据分析和操作。

image-20240211142616907

10. 处理缺失数据

数据中经常会包含缺失值,而 Pandas 提供了一系列处理缺失数据的方法,例如 dropnafillna

# 创建一个包含缺失值的数据框
df_missing = pd.DataFrame({'A': [1, 2, np.nan, 4],'B': [5, np.nan, 7, 8]})# 使用 dropna 删除包含缺失值的行
df_cleaned = df_missing.dropna()print(df_cleaned)

在这个例子中,我们使用 dropna 删除包含缺失值的行。除此之外,你还可以使用 fillna 来填充缺失值,以便更好地保留数据。

总结:

通过本文,我们深入探讨了 Pandas 中一系列重要的数据连接、合并、加入、添加、重构函数,包括 mergeconcatjoinappendstackunstackset_indexreset_index 等。这些功能为数据科学家和分析师提供了强大的工具,使其能够更灵活地处理和分析各种数据。

我们学习了基本的连接和合并操作,了解了如何使用不同的连接方式以及处理多键连接。同时,介绍了分层索引的运用,使数据结构更为灵活。

此外,我们还探讨了处理缺失数据的方法,包括使用 dropna 删除缺失值所在的行和使用 fillna 填充缺失值,从而在数据清理和准备阶段更加得心应手。

通过不断练习和应用这些知识,你将更加熟练地处理不同类型的数据,并能够更高效地进行数据分析和挖掘。Pandas 提供的这些功能和技巧,无疑为数据科学领域的从业者提供了强大的支持,希望本文能够为你在数据处理的学习和实践中提供有益的指导。祝你在数据科学的旅程中取得更大的成功!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2779641.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

离线数仓(一)【数仓概念、需求架构】

前言 今天开始学习数仓的内容,之前花费一年半的时间已经学完了 Hadoop、Hive、Zookeeper、Spark、HBase、Flume、Sqoop、Kafka、Flink 等基础组件。把学过的内容用到实践这是最重要的,相信会有很大的收获。 1、数据仓库概念 1.1、概念 数据仓库&#x…

如何避免陷入穷忙的陷阱

哈喽,你好啊,我是雷工! 在2006年小日子过得不错的日本出了一部纪录片《穷忙族》, 记录了一些收入不多却整日奔波劳碌,虽然努力工作,却依然无法摆脱贫穷的一群人。 他们越忙越穷,越穷越忙&#…

C语言之预处理详解

目录 1. 预定义符号2. #define定义常量3. #define定义宏练习 4. 带有副作用的宏参数5. 宏替换的规则6. 宏函数的对比宏和函数的一个对比 7. #和###运算符##运算符 8. 命名约定9. #undef10. 命令行定义11. 条件编译常见的条件编译 12. 头文件的包含头文件的包含方式库文件包含嵌…

3d渲染100农场如何使用?渲染100邀请码1a12

3d渲染农场通常用于电影、动画或视觉效果的渲染,本文以广受好评的渲染100农场为例,来讲解它的使用方法。 1、注册账号 前往渲染100官网(http://www.xuanran100.com/?ycode1a12)注册账号, 新用户注册记得填邀请码1a12,有30元大礼…

Netty应用(五) 之 Netty引入 EventLoop

目录 第三章 Netty 1.什么是Netty? 2.为什么需要使用Netty? 3.Netty的发展历程 4.谁在使用Netty? 5.为什么上述这些分布式产品都使用Netty? 6.第一个Netty应用 7.如何理解Netty是NIO的封装 8.logback日志使用的加强 9.Ev…

腾讯2023年终奖揭秘:最高30个月!

腾讯2023年终奖揭秘:最高30个月! 关于腾讯公司2023年度年终奖的消息引起了广泛的关注。据报道,腾讯今年的年终奖金额可达到员工月薪的5个月,这无疑是许多互联网从业者梦寐以求的福利待遇。作为中国互联网行业的巨头之一&#xff…

Leecode之反转链表

一.题目及剖析 https://leetcode.cn/problems/reverse-linked-list/description/ 二.思路引入 设定三个指针,n1指向空, n2指向head,n3指向下一个元素,将n2->next指向n1,然后三个指针向后遍历重复即可 三.代码引入 /*** Definition for singly-linked list.* struct List…

【JavaEE】----SpringBoot的创建和使用

目录 1.Spring与SpringBoot的区别(面试) 2. SpringBoot的创建 3.SpringBoot创建时的问题及解决 4.SpringBoot的目录学习 5.创建一个SpringBoot 项目并且启动 1.Spring与SpringBoot的区别(面试) Spring 的诞⽣是为了简化 Java 程…

2024给你一些Android 应用性能优化的建议

2024给你一些Android 应用性能优化的建议 在当今激烈竞争的移动应用市场中,用户对应用性能和体验的要求越来越高。因此,进行 Android 应用性能优化是开发过程中必不可少的一环。下面将详细介绍如何提升应用的性能,以提升用户体验。 1. 优化…

罗德里格斯公式简要介绍

一、罗德里格斯公式(Rodrigues’ rotation formula)是一个用于计算绕任意轴旋转向量的数学公式。它是由欧仁罗德里格斯(Olinde Rodrigues)在1840年提出的。这个公式在三维空间中描述了一个向量绕着单位向量旋转θ角度后的结果。 …

【Linux】学习-文件的软硬链接

文件的软硬链接 在上一篇拓展篇—文件系统中我们介绍过文件元的概念: 我们在使用ls -l命令查看文件元信息的时候,有一个硬链接数,说明文件的硬链接数属于文件的属性之一,那么硬链接究竟是什么呢?软链接又是什么呢&…

【闲谈】开源软件的崛起与影响

随着信息技术的快速发展,开源软件已经成为软件开发的趋势,并产生了深远的影响。开源软件的低成本、可协作性和透明度等特点,使得越来越多的企业和个人选择使用开源软件,促进了软件行业的繁荣。然而,在使用开源软件的过…

CSS Selector—选择方法,和html自动——异步社区的爬取(动态网页)——爬虫(get和post的区别)

这里先说一下GET请求和POST请求: post我们平时是要加data的也就是信息,你会发现我们平时百度之类的 搜索都是post请求 get我们带的是params,是发送我们指定的内容。 要注意是get和post请求!!! 先说一下异…

STM32Cubmax DAC 采集

一、概念 DMA,全称为: Direct Memory Access,即直接存储器访问, DMA 传输将数据从一个 地址空间复制到另外一个地址空间。 当 CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器 来实行和完成。典型的例子就是移动…

【开源】基于JAVA+Vue+SpringBoot的假日旅社管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统介绍2.2 QA 问答 三、系统展示四、核心代码4.1 查询民宿4.2 新增民宿评论4.3 查询民宿新闻4.4 新建民宿预订单4.5 查询我的民宿预订单 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的假日旅社…

QGIS Desktop工具转换png文件为TIF文件

https://qgis.org/ QGIS Desktop 3.34.3 菜单 Layer -> Georeferencer 选择 文件 点击 加载的图片的左上角的点 弹窗中没有数据 录入 0 0 再加入右侧下面的点 调整下 数据 点击 绿色的箭头按钮 输出TIF文件 GeoServer中添加 存储仓库 点击 GeoTIFF 录入,选…

Docker Compose实例

目录 一、前提说明 二、简单的Docker容器部署案例 1. Dockerfile 配置 2. docker-compose.yml 配置 3. application-prod.properties 配置 4. pom.xml 配置 5. 上传文件 6. 创建基础Docker镜像 7. docker-compose.yml编排 8. 停止并删除容器编排 三、案例地址 一、前…

大模型实战营第二期——3. 基于 InternLM 和 LangChain 搭建你的知识库

github地址:InternLM/tutorial-书生浦语大模型实战营文档地址:基于 InternLM 和 LangChain 搭建你的知识库视频地址:基于 InternLM 和 LangChain 搭建你的知识库Intern Studio: https://studio.intern-ai.org.cn/console/instance动手学大模型…

Linux基础-配置网络

Linux配置网络的方式 1.图形界面 右上角-wired-配置 点加号-新建网络配置文件2.NetworkManager工具 2.1用图形终端nmtui 1.新建网络配置文件add 1.指定网络设备的类型Ethernet 2.配置网络配置文件的名称,名称可以有空格 3.配置网络配置文件对应的物理网络设备的…

《21天精通IPv4 to IPv6》第4天:理解IPv6子网划分规则——如何为不同的系统划分IPv6子网?

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …